From 8fdcfdecd5900d7ffeaff9686c65eb2b9e6beb50 Mon Sep 17 00:00:00 2001 From: paul Date: Sun, 19 Jan 2003 20:52:55 +0000 Subject: Add work around for RFC3021 patch and its problem with certain IPv6 interfaces 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 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'zebra/rt_netlink.c') diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index 91f6e0da..94573aa5 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -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) -- cgit v1.2.1