Prevent originator IP from changing during runtime... ever !
authorHenning Rogge <hrogge@googlemail.com>
Thu, 12 Mar 2009 19:26:14 +0000 (20:26 +0100)
committerHenning Rogge <hrogge@googlemail.com>
Thu, 12 Mar 2009 19:26:14 +0000 (20:26 +0100)
src/unix/ifnet.c
src/win32/ifnet.c

index 9010d16..e864443 100644 (file)
@@ -260,12 +260,14 @@ chk_if_changed(struct olsr_if *iface)
       OLSR_PRINTF(1, "\tOld: %s\n", ip6_to_string(&buf, &ifp->int6_addr.sin6_addr));
       OLSR_PRINTF(1, "\tNew: %s\n", ip6_to_string(&buf, &tmp_saddr6.sin6_addr));
 
+      /* deactivated to prevent change of originator IP */
+#if 0
       /* Check main addr */
       if (memcmp(&olsr_cnf->main_addr, &tmp_saddr6.sin6_addr, olsr_cnf->ipsize) == 0) {
         /* Update main addr */
         memcpy(&olsr_cnf->main_addr, &tmp_saddr6.sin6_addr, olsr_cnf->ipsize);
       }
-
+#endif
       /* Update address */
       memcpy(&ifp->int6_addr.sin6_addr, &tmp_saddr6.sin6_addr, olsr_cnf->ipsize);
       memcpy(&ifp->ip_addr, &tmp_saddr6.sin6_addr, olsr_cnf->ipsize);
@@ -298,13 +300,14 @@ chk_if_changed(struct olsr_if *iface)
       OLSR_PRINTF(1, "\tNew:%s\n", sockaddr4_to_string(&buf, &ifr.ifr_addr));
 
       ifp->int_addr = *(struct sockaddr_in *)&ifr.ifr_addr;
-
+      /* deactivated to prevent change of originator IP */
+#if 0
       if (memcmp(&olsr_cnf->main_addr, &ifp->ip_addr, olsr_cnf->ipsize) == 0) {
         OLSR_PRINTF(1, "New main address: %s\n", sockaddr4_to_string(&buf, &ifr.ifr_addr));
         olsr_syslog(OLSR_LOG_INFO, "New main address: %s\n", sockaddr4_to_string(&buf, &ifr.ifr_addr));
         memcpy(&olsr_cnf->main_addr, &((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr, olsr_cnf->ipsize);
       }
-
+#endif
       memcpy(&ifp->ip_addr, &((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr, olsr_cnf->ipsize);
 
       if_changes = 1;
@@ -387,6 +390,8 @@ remove_interface:
   net_remove_buffer(ifp);
 
   /* Check main addr */
+  /* deactivated to prevent change of originator IP */
+#if 0
   if (ipequal(&olsr_cnf->main_addr, &ifp->ip_addr)) {
     if (ifnet == NULL) {
       /* No more interfaces */
@@ -399,7 +404,7 @@ remove_interface:
       olsr_syslog(OLSR_LOG_INFO, "New main address: %s\n", olsr_ip_to_string(&buf, &olsr_cnf->main_addr));
     }
   }
-
+#endif
   /*
    * Deregister functions for periodic message generation
    */
index 7aedcb4..75faa74 100644 (file)
@@ -506,6 +506,8 @@ RemoveInterface(struct olsr_if *IntConf)
     Prev->int_next = Int->int_next;
   }
 
+  /* deactivated to prevent change of originator IP */
+#if 0
   if (ipequal(&olsr_cnf->main_addr, &Int->ip_addr)) {
     if (ifnet == NULL) {
       memset(&olsr_cnf->main_addr, 0, olsr_cnf->ipsize);
@@ -518,7 +520,7 @@ RemoveInterface(struct olsr_if *IntConf)
       OLSR_PRINTF(1, "New main address: %s.\n", olsr_ip_to_string(&buf, &olsr_cnf->main_addr));
     }
   }
-
+#endif
   /*
    * Deregister functions for periodic message generation
    */
@@ -763,12 +765,14 @@ chk_if_changed(struct olsr_if *IntConf)
     AddrIn->sin_port = 0;
     AddrIn->sin_addr = NewVal.v4;
 
+    /* deactivated to prevent change of originator IP */
+#if 0
     if (olsr_cnf->main_addr.v4.s_addr == OldVal.v4.s_addr) {
       OLSR_PRINTF(1, "\tMain address change.\n");
 
       olsr_cnf->main_addr.v4 = NewVal.v4;
     }
-
+#endif
     Res = 1;
   }