| * Guillaume Subiron, Yann Bordenave, Serigne Modou Wagne. |
| * IP initialization: fill in IP protocol switch table. |
| * All protocols not implemented in kernel go to raw IP protocol handler. |
| void ip6_init(Slirp *slirp) |
| void ip6_cleanup(Slirp *slirp) |
| void ip6_input(struct mbuf *m) |
| if (!slirp->in6_enabled) { |
| DEBUG_ARG("m = %lx", (long)m); |
| DEBUG_ARG("m_len = %d", m->m_len); |
| if (m->m_len < sizeof(struct ip6)) { |
| ip6 = mtod(m, struct ip6 *); |
| if (ip6->ip_v != IP6VERSION) { |
| if (ntohs(ip6->ip_pl) > IF_MTU) { |
| icmp6_send_error(m, ICMP6_TOOBIG, 0); |
| /* check ip_ttl for a correct ICMP reply */ |
| icmp6_send_error(m, ICMP6_TIMXCEED, ICMP6_TIMXCEED_INTRANS); |
| * Switch out to protocol's input routine. |
| tcp_input(m, sizeof(struct ip6), (struct socket *)NULL, AF_INET6); |