]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Add work around for RFC3021 patch and its problem with certain IPv6 interfaces
authorpaul <paul>
Sun, 19 Jan 2003 20:52:55 +0000 (20:52 +0000)
committerpaul <paul>
Sun, 19 Jan 2003 20:52:55 +0000 (20:52 +0000)
addresses.

It seems so far that netlink only ever returns IFA_ADDRESS for IPv6 interfaces
and never IFA_LOCAL, regardless of whether it is PtP or not. Need to investigate
precisely how IPv6 and netlink are supposed to behave wrt broadcast vs
PtP links.

zebra/rt_netlink.c

index 91f6e0da6925c44b3cc5a46e3918b04e1f2c5bc1..94573aa53f2df3fa3c58cfd3ccfd0a4e723888aa 100644 (file)
@@ -442,10 +442,15 @@ netlink_interface_addr (struct sockaddr_nl *snl, struct nlmsghdr *h)
     peeronly = if_is_pointopoint (ifp) ||
               ifa->ifa_prefixlen >= IPV4_MAX_PREFIXLEN - 1;
 #ifdef HAVE_IPV6
-  if (ifa->ifa_family == AF_INET6)
+  if (ifa->ifa_family == AF_INET6) {
     peeronly = if_is_pointopoint (ifp) ||
               ifa->ifa_prefixlen >= IPV6_MAX_PREFIXLEN - 1;
+  }
 #endif /* HAVE_IPV6*/
+  if (!(tb[IFA_LOCAL] && tb[IFA_ADDRESS])) {
+       /* FIXME: IPv6 Appears to have only IFA_ADDRESS */
+       peeronly=0;
+  }
 
   /* network. prefixlen applies to IFA_ADDRESS rather than IFA_LOCAL */
   if (tb[IFA_ADDRESS] && !peeronly)