Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: point2point network interfaces cannot receive ipv6 packets



Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost> wrote:
>On 2015/04/03 16:14, Takahiro HAYASHI wrote:
>> It seems that IFF_POINTTOPOINT interfaces like tun and gif cannot
>> receive ipv6 packets.
>> This occurs on NetBSD/amd64 -current since Feb 27 2015.
>> 
>> For example, establishing gif tunnnel between 2 hosts.
>> 
>> [host1] <---> [host2]
>> 192.168.0.1   192.168.0.2  ipv4 address of real interface
>> fd00::1       fd00::2      gif address
>> 
>> When I ping6, a host can send ICMPv6 ECHO(128), but the other host
>> returns ICMPv6 DST_UNREACH(1) code UNREACH_ADDR(3) to pinging host.
>
>I think the reason of this issue is below commit:
>    http://www.nerv.org/netbsd/?q=id:20150226T095446Z.75354d997222ae09acc944ba1c6cf573c3ea724b

The following patch helps for me. It results in the RTF_LLINFO flag getting
set for the route for the interface.

The comment looks to be incorrect in any case.

Robert Swindells

Index: in6.c
===================================================================
RCS file: /cvsroot/src/sys/netinet6/in6.c,v
retrieving revision 1.186
diff -u -r1.186 in6.c
--- in6.c       7 Apr 2015 23:30:36 -0000       1.186
+++ in6.c       10 Apr 2015 16:10:31 -0000
@@ -1695,7 +1695,7 @@
        /* Add ownaddr as loopback rtentry, if necessary (ex. on p2p link). */
        if (newhost) {
                /* set the rtrequest function to create llinfo */
-               if ((ifp->if_flags & (IFF_LOOPBACK | IFF_POINTOPOINT)) == 0)
+               if ((ifp->if_flags & IFF_LOOPBACK) == 0)
                        ia->ia_ifa.ifa_rtrequest = nd6_rtrequest;
                in6_ifaddlocal(&ia->ia_ifa);
        } else {


Home | Main Index | Thread Index | Old Index