]> git.puffer.fish Git - mirror/frr.git/commitdiff
[link-detect] Improve BSD support.
authorAndrew J. Schorr <ajschorr@alumni.princeton.edu>
Fri, 11 Jan 2008 15:57:13 +0000 (15:57 +0000)
committerAndrew J. Schorr <ajschorr@alumni.princeton.edu>
Fri, 11 Jan 2008 15:57:13 +0000 (15:57 +0000)
2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

* lib/zebra.h: Revert previous change, no need to include
  <net/if_media.h> here.
* zebra/ioctl.c: If HAVE_BSD_LINK_DETECT is defined, include
  <net/if_media.h>
  (if_get_flags) Remove debug messages about BSD link state.
* zebra/kernel_socket.c: (bsd_linkdetect_translate) If link state
  is unknown, we should set the IFF_RUNNING flag.

lib/ChangeLog
lib/zebra.h
zebra/ChangeLog
zebra/ioctl.c
zebra/kernel_socket.c

index 21d08dd031bbbca76ee5129d12f2c8a6d2cfe56c..2263c03cccdc26323f5ac754724f6c0e49740ec7 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * zebra.h: Revert previous change, no need to include <net/if_media.h>
+         here.
+
 2008-01-10 Ingo Flaschberger <if@xip.at>
 
        * zebra.h: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h>.
index 1c9eb39ff81533c1271520090ac9d647bc2d783a..150aa2c59cf977ddc31545ffaa20d10f49a77448 100644 (file)
@@ -116,9 +116,6 @@ typedef int socklen_t;
 #endif /* !va_copy */
 #endif /* !C99 */
 
-#ifdef HAVE_BSD_LINK_DETECT
-#include <net/if_media.h>
-#endif /* HAVE_BSD_LINK_DETECT*/
 
 #ifdef HAVE_LCAPS
 #include <sys/capability.h>
index ba6d30701732021856428eb48e381201f2cd01bf..0aabc3c21793870d77b003d8c0ae1cabbd1dc4fe 100644 (file)
@@ -1,3 +1,10 @@
+2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+       * ioctl.c: If HAVE_BSD_LINK_DETECT is defined, include <net/if_media.h>
+         (if_get_flags) Remove debug messages about BSD link state.
+       * kernel_socket.c: (bsd_linkdetect_translate) If link state
+         is unknown, we should set the IFF_RUNNING flag.
+
 2008-01-10 Ingo Flaschberger <if@xip.at>
 
        * ioctl.c: (if_get_flags) If HAVE_BSD_LINK_DETECT, use the SIOCGIFMEDIA
index 4f99a6cd62dc294d936cda9d38dd8f22729c0230..7bb4da1f0e175ee32ba29131451c88030ff17fe6 100644 (file)
 #include "zebra/rt.h"
 #include "zebra/interface.h"
 
+#ifdef HAVE_BSD_LINK_DETECT
+#include <net/if_media.h>
+#endif /* HAVE_BSD_LINK_DETECT*/
+
 extern struct zebra_privs_t zserv_privs;
 
 /* clear and set interface name string */
@@ -367,24 +371,12 @@ if_get_flags (struct interface *ifp)
   if (ifmr.ifm_status & IFM_AVALID) /* Link state is valid */
     {
       if (ifmr.ifm_status & IFM_ACTIVE)
-        {
-         SET_FLAG(ifreq.ifr_flags, IFF_RUNNING);
-         zlog_debug("%s: BSD link state to up at interface %s, ifindex %d",
-                    __func__, ifp->name, ifp->ifindex);
-        }
+       SET_FLAG(ifreq.ifr_flags, IFF_RUNNING);
       else
-        {
-         UNSET_FLAG(ifreq.ifr_flags, IFF_RUNNING);
-         zlog_debug("%s: BSD link state to down at interface %s, ifindex %d",
-                    __func__, ifp->name, ifp->ifindex);
-        }
+       UNSET_FLAG(ifreq.ifr_flags, IFF_RUNNING);
     }
   else /* Force always up */
-    {
-      SET_FLAG(ifreq.ifr_flags, IFF_RUNNING);
-      zlog_debug("%s: BSD link state invalid, forced up at interface %s, ifindex %d",
-                __func__, ifp->name, ifp->ifindex);
-    }
+    SET_FLAG(ifreq.ifr_flags, IFF_RUNNING);
 #endif /* HAVE_BSD_LINK_DETECT */
 
   if_flags_update (ifp, (ifreq.ifr_flags & 0x0000ffff));
index cd30631b38f48800a1fbe2cb0378b9393218bd72..2e04b031ea4871cc7ce528255ae5bfd59dec88a3 100644 (file)
@@ -300,7 +300,8 @@ ifan_read (struct if_announcemsghdr *ifan)
 static void
 bsd_linkdetect_translate (struct if_msghdr *ifm)
 {
-  if (ifm->ifm_data.ifi_link_state >= LINK_STATE_UP)
+  if ((ifm->ifm_data.ifi_link_state >= LINK_STATE_UP) ||
+      (ifm->ifm_data.ifi_link_state == LINK_STATE_UNKNOWN))
     SET_FLAG(ifm->ifm_flags, IFF_RUNNING);
   else
     UNSET_FLAG(ifm->ifm_flags, IFF_RUNNING);