linux: netlink_process_link: always determine the interface name
authorFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 10 Feb 2016 09:45:58 +0000 (10:45 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 10 Feb 2016 13:32:41 +0000 (14:32 +0100)
This simplifies it a bit more.

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/linux/kernel_routes_nl.c

index 9687b3c..3f363c7 100644 (file)
@@ -117,16 +117,21 @@ static void netlink_process_link(struct nlmsghdr *h)
   struct interface_olsr *iface;
   struct olsr_if *oif;
   char namebuffer[IF_NAMESIZE];
+  char * ifaceName = NULL;
 
   iface = if_ifwithindex(ifi->ifi_index);
   oif = NULL;
 
+  if (!iface) {
+    ifaceName = if_indextoname(ifi->ifi_index, namebuffer);
+  } else {
+    ifaceName = iface->int_name;
+  }
+
   if (!iface && ((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 */
-        chk_if_up(oif, 3);
-      }
+    if (ifaceName && ((oif = olsrif_ifwithname(ifaceName)) != NULL)) {
+      /* try to take interface up, will trigger ifchange */
+      chk_if_up(oif, 3);
     }
   }
   else if (iface && ((ifi->ifi_flags & IFF_UP) == 0)) {