On 02/23/2016 03:28 AM, Samuel Thibault wrote: > From: Guillaume Subiron <maet...@subiron.org> > > This patch adds the functions needed to handle IPv6 packets. ICMPv6 and > NDP headers are implemented. > > Slirp is now able to send NDP Router or Neighbor Advertisement when it > receives Router or Neighbor Solicitation. Using a 64bit-sized IPv6 > prefix, the guest is now able to perform stateless autoconfiguration > (SLAAC) and to compute its IPv6 address. > > This patch adds an ndp_table, mainly inspired by arp_table, to keep an > NDP cache and manage network address resolution. > Slirp regularly sends NDP Neighbor Advertisement, as recommended by the > RFC, to make the guest refresh its route. > > This also adds ip6_cksum() to compute ICMPv6 checksums using IPv6 > pseudo-header. > > Some #define ETH_* are moved upper in slirp.h to make them accessible to > other slirp/*.h > > Signed-off-by: Guillaume Subiron <maet...@subiron.org> > Signed-off-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> > Reviewed-by: Thomas Huth <th...@redhat.com> > --- > slirp/Makefile.objs | 6 +- > slirp/cksum.c | 25 ++++ > slirp/if.c | 2 +- > slirp/ip6.h | 138 +++++++++++++++++++++ > slirp/ip6_icmp.c | 347 > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > slirp/ip6_icmp.h | 203 ++++++++++++++++++++++++++++++ > slirp/ip6_input.c | 69 +++++++++++ > slirp/ip6_output.c | 38 ++++++ > slirp/ndp_table.c | 84 +++++++++++++ > slirp/slirp.c | 51 +++++++- > slirp/slirp.h | 37 ++++++ > slirp/socket.h | 7 ++ > 12 files changed, 1001 insertions(+), 6 deletions(-) > create mode 100644 slirp/ip6.h > create mode 100644 slirp/ip6_icmp.c > create mode 100644 slirp/ip6_icmp.h > create mode 100644 slirp/ip6_input.c > create mode 100644 slirp/ip6_output.c > create mode 100644 slirp/ndp_table.c >
[...] > + > + /* > + * Switch out to protocol's input routine. > + */ > + switch (ip6->ip_nh) { > +#if 0 > + case IPPROTO_TCP: > + tcp_input(m, hlen, (struct socket *)NULL); > + break; > + case IPPROTO_UDP: > + udp_input(m, hlen); > + break; > +#endif This looks odd, why need this?