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?



Reply via email to