ipv6 aswell (bug #16)
authorMarkus Kittenberger <markus@markit.unassigned-domain>
Sun, 17 Oct 2010 22:56:37 +0000 (00:56 +0200)
committerMarkus Kittenberger <markus@markit.unassigned-domain>
Sun, 17 Oct 2010 22:56:37 +0000 (00:56 +0200)
src/interfaces.c
src/unix/ifnet.c

index 999807f..abc8a44 100644 (file)
@@ -124,7 +124,6 @@ olsr_trigger_ifchange(int if_index, struct interface *ifp, enum olsr_ifchg_flag
   struct ifchgf *tmp_ifchgf_list = ifchgf_list;
 
   while (tmp_ifchgf_list != NULL) {
-printf("trigger ifchange");
     tmp_ifchgf_list->function(if_index, ifp, flag);
     tmp_ifchgf_list = tmp_ifchgf_list->next;
   }
index 3ce9718..0555edd 100644 (file)
@@ -268,9 +268,9 @@ chk_if_changed(struct olsr_if *iface)
 
       olsr_trigger_ifchange(ifp->if_index, ifp, IFCHG_IF_UPDATE);
 
-      /*the interface sockets should be recreated (to use new source adress) !?*/
-
-      return 1;
+      /* we have to make sure that olsrd uses the new source address of this interface */
+      olsr_remove_interface(iface); /* so we remove the interface completely */
+      chk_if_up(iface,3); /* and create it again to get new sockets,..*/
     }
     return 0;
 
@@ -306,10 +306,10 @@ chk_if_changed(struct olsr_if *iface)
 #endif
       memcpy(&ifp->ip_addr, &((struct sockaddr_in *)ARM_NOWARN_ALIGN(&ifr.ifr_addr))->sin_addr.s_addr, olsr_cnf->ipsize);
 
-      /* we have to make sure that olsrd uses the new source address */
-        olsr_remove_interface(iface); /* so we remove the interface completely */
-        chk_if_up(iface,3); /* and create it again to get new sockets,..*/
-        return 0;
+      /* we have to make sure that olsrd uses the new source address of this interface */
+      olsr_remove_interface(iface); /* so we remove the interface completely */
+      chk_if_up(iface,3); /* and create it again to get new sockets,..*/
+      return 0;
     }
 
     /* Check netmask */