Browse Source

Fixed ioctl_solaris.c:if_get_mtu() for IPv6'less operation

Denis Ovsienko 13 years ago
parent
commit
a13663ae74
2 changed files with 16 additions and 14 deletions
  1. 6 0
      zebra/ChangeLog
  2. 10 14
      zebra/ioctl_solaris.c

+ 6 - 0
zebra/ChangeLog

@@ -1,3 +1,9 @@
+2007-08-21 Denis Ovsienko
+
+	* ioctl_solaris.c: (if_get_mtu) Don't break things if either
+	  IPv6 was disabled at compile time or the current interface
+	  hasn't it enabled.
+
 2007-08-17 Denis Ovsienko
 
 	* kernel_socket.c: (rtm_read) Ignore any routing socket messages

+ 10 - 14
zebra/ioctl_solaris.c

@@ -176,31 +176,27 @@ if_get_mtu (struct interface *ifp)
     }
 
 #ifdef HAVE_IPV6
-  if ((ifp->flags & IFF_IPV6) == 0)
-    {
-      if (changed)
-        zebra_interface_up_update(ifp);
-      return;
-    }
-    
-  memset(&lifreq, 0, sizeof(lifreq));
-  lifreq_set_name (&lifreq, ifp->name);
+  if (ifp->flags & IFF_IPV6)
+  {
+    memset(&lifreq, 0, sizeof(lifreq));
+    lifreq_set_name (&lifreq, ifp->name);
 
-  ret = AF_IOCTL (AF_INET6, SIOCGLIFMTU, (caddr_t) & lifreq);
-  if (ret < 0)
+    ret = AF_IOCTL (AF_INET6, SIOCGLIFMTU, (caddr_t) & lifreq);
+    if (ret < 0)
     {
       zlog_info ("Can't lookup mtu6 on %s by ioctl(SIOCGIFMTU)", ifp->name);
       ifp->mtu6 = -1;
     }
-  else
+    else
     {
       ifp->mtu6 = lifreq.lifr_metric;
       changed = 1;
     }
-  
+  }
+#endif /* HAVE_IPV6 */
+
   if (changed)
     zebra_interface_up_update(ifp);
-#endif /* HAVE_IPV6 */
 }
 
 /* Set up interface's address, netmask (and broadcast? ).