]> git.puffer.fish Git - mirror/frr.git/commitdiff
[zebra] For solaris IPv6 PtP interfaces, try to support prefixlen != 128
authorAndrew J. Schorr <ajschorr@alumni.princeton.edu>
Wed, 13 Dec 2006 15:44:15 +0000 (15:44 +0000)
committerAndrew J. Schorr <ajschorr@alumni.princeton.edu>
Wed, 13 Dec 2006 15:44:15 +0000 (15:44 +0000)
2006-12-13 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

* 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/ChangeLog
zebra/if_ioctl_solaris.c

index 6b50cf0f9e270e57a43483d868edbb1ce314d77a..4139e859c1dd69a78ddf705af60a1ae8be75f5f3 100644 (file)
@@ -1,3 +1,10 @@
+2006-12-13 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * 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.
+
 2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
        * connected.c: (connected_up_ipv4, connected_down_ipv4,
index 4cb16c7f4c571fc1e3a4582fc69647a3f8cae0f2..4267a4245a38f9d43fd45f17aa973cd4aa2071bd 100644 (file)
@@ -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 */