From Sven-Ola Tuecke: 136-optimize-invalidip-check
authorHannes Gredler <hannes@gredler.at>
Fri, 28 Dec 2007 10:52:53 +0000 (11:52 +0100)
committerHannes Gredler <hannes@gredler.at>
Fri, 28 Dec 2007 10:52:53 +0000 (11:52 +0100)
src/lq_packet.c
src/mid_set.c
src/net_olsr.c
src/parser.c
src/process_package.c
src/tc_set.c

index 1d7892d..916e54a 100644 (file)
@@ -583,12 +583,6 @@ deserialize_lq_hello(struct hello_message *hello,
     }
     pkt_get_double(&curr, &hello->vtime);
     pkt_get_u16(&curr, &size);
-
-    // Sven-Ola: Check the message source addr
-    if (!olsr_validate_address((const union olsr_ip_addr *)curr)) {
-        /* No need to do anything more */
-        return 1;
-    }
     pkt_get_ipaddress(&curr, &hello->source_addr);
 
     pkt_get_u8(&curr, &hello->ttl);
index 7ca3ea6..403d20f 100644 (file)
@@ -236,6 +236,7 @@ insert_mid_alias(union olsr_ip_addr *main_add, const union olsr_ip_addr *alias,
   struct ipaddr_str buf1, buf2;
 #endif
   struct mid_address *adr;
+  if (!olsr_validate_address(alias)) return;
   
   OLSR_PRINTF(1, "Inserting alias %s for ", olsr_ip_to_string(&buf1, alias));
   OLSR_PRINTF(1, "%s\n", olsr_ip_to_string(&buf1, main_add));
index 765ac1b..a721020 100644 (file)
@@ -476,6 +476,7 @@ olsr_validate_address(const union olsr_ip_addr *adr)
       OLSR_PRINTF(1, "Validation of address %s failed!\n", olsr_ip_to_string(&buf, adr));
       return OLSR_FALSE;
     }
+    if (deny_entry == (struct deny_address_entry *)&olsr_cnf->main_addr) break;
   }
   return OLSR_TRUE;
 }
index 3781d73..eff85e9 100644 (file)
@@ -306,13 +306,14 @@ parse_packet(struct olsr *olsr, int size, struct interface *in_if, union olsr_ip
        */
 
       /* Should be the same for IPv4 and IPv6 */
-      if(m->v4.originator == olsr_cnf->main_addr.v4.s_addr)
-       {
+      if(ipequal((union olsr_ip_addr *)&m->v4.originator, &olsr_cnf->main_addr) || !olsr_validate_address((union olsr_ip_addr *)&m->v4.originator))
+        {
 #ifdef DEBUG
-         OLSR_PRINTF(3, "Not processing message originating from us!\n");
+         OLSR_PRINTF(3, "Not processing message originating from %s!\n",
+           olsr_ip_to_string((union olsr_ip_addr *)&m->v4.originator));
 #endif
-         continue;
-       }
+          continue;
+        }
 
 
       //printf("MESSAGETYPE: %d\n", m->v4.olsr_msgtype);
index d47db99..06c4b58 100644 (file)
@@ -571,12 +571,6 @@ olsr_process_received_hello(union olsr_message *m,
 
   hello_chgestruct(&message, m);
 
-  if(!olsr_validate_address(&message.source_addr))
-    {
-      olsr_free_hello_packet(&message);
-      return;
-    }
-
   olsr_hello_tap(&message, in_if, from_addr);
 }
 
@@ -718,10 +712,6 @@ olsr_process_received_hna(union olsr_message *m,
   /* validate originator */
   pkt_get_ipaddress(&curr, &originator);
   //printf("HNA from %s\n\n", olsr_ip_to_string(&buf, &originator));
-  if (!olsr_validate_address(&originator)) {
-    OLSR_PRINTF(0, "invalid address!\n");
-    return;
-  }
 
   /* ttl */
   pkt_ignore_u8(&curr);
index 6e96122..4daa451 100644 (file)
@@ -701,7 +701,6 @@ olsr_input_tc(union olsr_message *msg, struct interface *input_if,
   double vtime;
   unsigned int vtime_s;
   union olsr_ip_addr originator;
-  union olsr_ip_addr *main_addr;
   const unsigned char *limit, *curr;
   struct tc_entry *tc;
 
@@ -750,20 +749,6 @@ olsr_input_tc(union olsr_message *msg, struct interface *input_if,
   }
 #endif
 
-  /* Check the sender address. */
-  if (!olsr_validate_address(&originator)) {
-    return;
-  }
-
-  /* Check the main address. */
-  main_addr = mid_lookup_main_addr(from_addr);
-  if (!main_addr) {
-    main_addr = from_addr;
-  }
-  if (!olsr_validate_address(main_addr)) {
-    return;
-  }
-
   /*
    * Generate an new tc_entry in the lsdb and store the sequence number.
    */