Ignore IFF_RUNNING when checking if an interface is up or down.
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Wed, 13 Nov 2013 08:24:50 +0000 (09:24 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Wed, 13 Nov 2013 08:24:50 +0000 (09:24 +0100)
src/linux/kernel_routes_nl.c
src/unix/ifnet.c

index 4bf2210..0732494 100644 (file)
@@ -121,7 +121,7 @@ static void netlink_process_link(struct nlmsghdr *h)
   iface = if_ifwithindex(ifi->ifi_index);
   oif = NULL;
 
-  if (iface == NULL && (ifi->ifi_flags & (IFF_UP|IFF_RUNNING)) == (IFF_UP|IFF_RUNNING)) {
+  if (iface == NULL && (ifi->ifi_flags & IFF_UP) == IFF_UP) {
     if (if_indextoname(ifi->ifi_index, namebuffer)) {
       if ((oif = olsrif_ifwithname(namebuffer)) != NULL) {
         /* try to take interface up, will trigger ifchange */
@@ -136,10 +136,10 @@ static void netlink_process_link(struct nlmsghdr *h)
 
   if (iface == NULL && oif == NULL) {
     /* this is not an OLSR interface */
-    if ((ifi->ifi_flags & IFF_UP) != 0 && (ifi->ifi_flags & IFF_RUNNING) != 0) {
+    if ((ifi->ifi_flags & IFF_UP) != 0) {
       olsr_trigger_ifchange(ifi->ifi_index, NULL, IFCHG_IF_ADD);
     }
-    else if ((ifi->ifi_flags & IFF_UP) == 0 && (ifi->ifi_flags & IFF_RUNNING) == 0){
+    else if ((ifi->ifi_flags & IFF_UP) == 0){
       olsr_trigger_ifchange(ifi->ifi_index, NULL, IFCHG_IF_REMOVE);
     }
   }
index 5ec8e32..206fc25 100644 (file)
@@ -96,7 +96,7 @@ set_flag(char *ifname, short flag __attribute__ ((unused)))
 
   //printf("Setting flags for if \"%s\"\n", ifr.ifr_name);
 
-  if (!(ifr.ifr_flags & (IFF_UP | IFF_RUNNING))) {
+  if (!(ifr.ifr_flags & IFF_UP)) {
     /* Add UP */
     ifr.ifr_flags |= (IFF_UP | IFF_RUNNING);
     /* Set flags + UP */
@@ -190,7 +190,7 @@ chk_if_changed(struct olsr_if *iface)
    * First check if the interface is set DOWN
    */
 
-  if ((ifp->int_flags & IFF_UP) == 0 || (ifp->int_flags & IFF_RUNNING) == 0) {
+  if ((ifp->int_flags & IFF_UP) == 0) {
     OLSR_PRINTF(1, "\tInterface %s not up and running - removing it...\n", iface->name);
     goto remove_interface;
   }
@@ -552,7 +552,7 @@ chk_if_up(struct olsr_if *iface, int debuglvl __attribute__ ((unused)))
 
   ifs.int_flags = ifr.ifr_flags;
 
-  if ( ( (ifs.int_flags & IFF_UP) == 0) || ( (ifs.int_flags & IFF_RUNNING) == 0) ) {
+  if ( (ifs.int_flags & IFF_UP) == 0) {
     OLSR_PRINTF(debuglvl, "\tInterface not up & running - skipping it...\n");
     return 0;
   }