From 91e016e2122e082fe065a2ffad45e33a4d2a8c68 Mon Sep 17 00:00:00 2001 From: ajs Date: Wed, 13 Dec 2006 15:44:15 +0000 Subject: [zebra] For solaris IPv6 PtP interfaces, try to support prefixlen != 128 2006-12-13 Andrew J. Schorr * if_ioctl_solaris.c: (if_get_addr) For IPv6, stop assuming that all IFF_POINTOPOINT have prefixlen of IPV6_MAX_BITLEN. Instead, always try the SIOCGLIFSUBNET ioctl; if that fails, then we fall back to IPV6_MAX_BITLEN for PtP interfaces. --- zebra/if_ioctl_solaris.c | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) (limited to 'zebra/if_ioctl_solaris.c') diff --git a/zebra/if_ioctl_solaris.c b/zebra/if_ioctl_solaris.c index 4cb16c7f..4267a424 100644 --- a/zebra/if_ioctl_solaris.c +++ b/zebra/if_ioctl_solaris.c @@ -309,23 +309,18 @@ if_get_addr (struct interface *ifp, struct sockaddr *addr, const char *label) #ifdef HAVE_IPV6 else if (af == AF_INET6) { - if (ifp->flags & IFF_POINTOPOINT) - { - prefixlen = IPV6_MAX_BITLEN; - } + if (if_ioctl_ipv6 (SIOCGLIFSUBNET, (caddr_t) & lifreq) < 0) + { + if (ifp->flags & IFF_POINTOPOINT) + prefixlen = IPV6_MAX_BITLEN; + else + zlog_warn ("SIOCGLIFSUBNET (%s) fail: %s", + ifp->name, safe_strerror (errno)); + } else - { - ret = if_ioctl_ipv6 (SIOCGLIFSUBNET, (caddr_t) & lifreq); - if (ret < 0) - { - zlog_warn ("SIOCGLIFSUBNET (%s) fail: %s", - ifp->name, safe_strerror (errno)); - } - else - { - prefixlen = lifreq.lifr_addrlen; - } - } + { + prefixlen = lifreq.lifr_addrlen; + } } #endif /* HAVE_IPV6 */ -- cgit v1.2.3