Move and rename mid_input and hna_input
authorSven-Ola Tuecke <sven-ola@gmx.de>
Fri, 21 Nov 2008 07:46:11 +0000 (08:46 +0100)
committerSven-Ola Tuecke <sven-ola@gmx.de>
Fri, 21 Nov 2008 07:46:11 +0000 (08:46 +0100)
src/hna_set.c
src/hna_set.h
src/mid_set.c
src/mid_set.h
src/process_package.c
src/process_package.h

index 459383e..f581c4a 100644 (file)
@@ -360,6 +360,131 @@ olsr_print_hna_set (void)
 #endif
 }
 
+/**
+ *Process incoming HNA message.
+ *Forwards the message if that is to be done.
+ *
+ *@param m the incoming OLSR message
+ *the OLSR message.
+ *@return 1 on success
+ */
+
+void
+olsr_input_hna (union olsr_message *m, struct interface *in_if
+                __attribute__ ((unused)), union olsr_ip_addr *from_addr)
+{
+
+  olsr_u8_t olsr_msgtype;
+  olsr_reltime vtime;
+  olsr_u16_t olsr_msgsize;
+  union olsr_ip_addr originator;
+  olsr_u8_t hop_count;
+  olsr_u16_t packet_seq_number;
+
+  int hnasize;
+  const olsr_u8_t *curr, *curr_end;
+
+#ifdef DEBUG
+  OLSR_PRINTF (5, "Processing HNA\n");
+#endif
+
+  /* Check if everyting is ok */
+  if (!m)
+    {
+      return;
+    }
+  curr = (const olsr_u8_t *) m;
+
+  /* olsr_msgtype */
+  pkt_get_u8 (&curr, &olsr_msgtype);
+  if (olsr_msgtype != HNA_MESSAGE)
+    {
+      OLSR_PRINTF (0, "not a HNA message!\n");
+      return;
+    }
+  /* Get vtime */
+  pkt_get_reltime (&curr, &vtime);
+
+  /* olsr_msgsize */
+  pkt_get_u16 (&curr, &olsr_msgsize);
+  hnasize =
+    olsr_msgsize - (olsr_cnf->ip_version ==
+                    AF_INET ? offsetof (struct olsrmsg,
+                                        message) : offsetof (struct olsrmsg6,
+                                                             message));
+  if (hnasize < 0)
+    {
+      OLSR_PRINTF (0, "message size %d too small (at least %lu)!\n",
+                   olsr_msgsize,
+                   (unsigned long) (olsr_cnf->ip_version ==
+                                    AF_INET ? offsetof (struct olsrmsg,
+                                                        message) :
+                                    offsetof (struct olsrmsg6, message)));
+      return;
+    }
+  if ((hnasize % (2 * olsr_cnf->ipsize)) != 0)
+    {
+      OLSR_PRINTF (0, "Illegal message size %d!\n", olsr_msgsize);
+      return;
+    }
+  curr_end = (const olsr_u8_t *) m + olsr_msgsize;
+
+  /* validate originator */
+  pkt_get_ipaddress (&curr, &originator);
+  /*printf("HNA from %s\n\n", olsr_ip_to_string(&buf, &originator)); */
+
+  /* ttl */
+  pkt_ignore_u8 (&curr);
+
+  /* hopcnt */
+  pkt_get_u8 (&curr, &hop_count);
+
+  /* seqno */
+  pkt_get_u16 (&curr, &packet_seq_number);
+
+  /*
+   *      If the sender interface (NB: not originator) of this message
+   *      is not in the symmetric 1-hop neighborhood of this node, the
+   *      message MUST be discarded.
+   */
+  if (check_neighbor_link (from_addr) != SYM_LINK)
+    {
+      struct ipaddr_str buf;
+      OLSR_PRINTF (2, "Received HNA from NON SYM neighbor %s\n",
+                   olsr_ip_to_string (&buf, from_addr));
+      return;
+    }
+#if 1
+  while (curr < curr_end)
+    {
+      union olsr_ip_addr net;
+      olsr_u8_t prefixlen;
+      struct ip_prefix_list *entry;
+
+      pkt_get_ipaddress (&curr, &net);
+      pkt_get_prefixlen (&curr, &prefixlen);
+      entry = ip_prefix_list_find (olsr_cnf->hna_entries, &net, prefixlen);
+      if (entry == NULL)
+        {
+          /* only update if it's not from us */
+          olsr_update_hna_entry (&originator, &net, prefixlen, vtime);
+        }
+    }
+#else
+  while (hna_tmp)
+    {
+      /* Don't add an HNA entry that we are advertising ourselves. */
+      if (!ip_prefix_list_find
+          (olsr_cnf->hna_entries, &hna_tmp->net, hna_tmp->prefixlen))
+        {
+          olsr_update_hna_entry (&message.originator, &hna_tmp->net,
+                                 hna_tmp->prefixlen, message.vtime);
+        }
+    }
+#endif
+  olsr_forward_message (m, from_addr);
+}
+
 /*
  * Local Variables:
  * c-basic-offset: 2
index 57ca4fe..5c6b98b 100644 (file)
@@ -43,6 +43,7 @@
 
 #include "hashing.h"
 #include "olsr_types.h"
+#include "olsr_protocol.h"
 #include "mantissa.h"
 
 #include <time.h>
@@ -98,6 +99,9 @@ void olsr_update_hna_entry (const union olsr_ip_addr *,
 
 void olsr_print_hna_set (void);
 
+void olsr_input_hna (union olsr_message *, struct interface *,
+                     union olsr_ip_addr *);
+
 #endif
 
 /*
index e901970..ac9a38f 100644 (file)
@@ -44,6 +44,7 @@
 #include "two_hop_neighbor_table.h"
 #include "mid_set.h"
 #include "olsr.h"
+#include "rebuild_packet.h"
 #include "scheduler.h"
 #include "neighbor_table.h"
 #include "link_set.h"
@@ -577,6 +578,78 @@ olsr_print_mid_set (void)
     }
 }
 
+/**
+ *Process a received(and parsed) MID message
+ *For every address check if there is a topology node
+ *registered with it and update its addresses.
+ *
+ *@param m the OLSR message received.
+ *@return 1 on success
+ */
+
+void
+olsr_input_mid (union olsr_message *m, struct interface *in_if
+                __attribute__ ((unused)), union olsr_ip_addr *from_addr)
+{
+#ifdef DEBUG
+  struct ipaddr_str buf;
+#endif
+  struct mid_alias *tmp_adr;
+  struct mid_message message;
+
+  mid_chgestruct (&message, m);
+
+  if (!olsr_validate_address (&message.mid_origaddr))
+    {
+      olsr_free_mid_packet (&message);
+      return;
+    }
+
+#ifdef DEBUG
+  OLSR_PRINTF (5, "Processing MID from %s...\n",
+               olsr_ip_to_string (&buf, &message.mid_origaddr));
+#endif
+  tmp_adr = message.mid_addr;
+
+  /*
+   *      If the sender interface (NB: not originator) of this message
+   *      is not in the symmetric 1-hop neighborhood of this node, the
+   *      message MUST be discarded.
+   */
+
+  if (check_neighbor_link (from_addr) != SYM_LINK)
+    {
+      struct ipaddr_str buf;
+      OLSR_PRINTF (2, "Received MID from NON SYM neighbor %s\n",
+                   olsr_ip_to_string (&buf, from_addr));
+      olsr_free_mid_packet (&message);
+      return;
+    }
+
+  /* Update the timeout of the MID */
+  olsr_update_mid_table (&message.mid_origaddr, message.vtime);
+
+  while (tmp_adr)
+    {
+      if (!mid_lookup_main_addr (&tmp_adr->alias_addr))
+        {
+          struct ipaddr_str buf;
+          OLSR_PRINTF (1, "MID new: (%s, ",
+                       olsr_ip_to_string (&buf, &message.mid_origaddr));
+          OLSR_PRINTF (1, "%s)\n",
+                       olsr_ip_to_string (&buf, &tmp_adr->alias_addr));
+          insert_mid_alias (&message.mid_origaddr, &tmp_adr->alias_addr,
+                            message.vtime);
+        }
+      tmp_adr = tmp_adr->next;
+    }
+
+  olsr_prune_aliases (&message.mid_origaddr, message.mid_addr);
+
+  olsr_forward_message (m, from_addr);
+  olsr_free_mid_packet (&message);
+}
+
 /*
  * Local Variables:
  * c-basic-offset: 2
index 3d8e520..0e1f20e 100644 (file)
@@ -88,6 +88,8 @@ void olsr_print_mid_set (void);
 void olsr_prune_aliases (const union olsr_ip_addr *, struct mid_alias *);
 int olsr_update_mid_table (const union olsr_ip_addr *, olsr_reltime);
 void olsr_delete_mid_entry (struct mid_entry *);
+void olsr_input_mid (union olsr_message *, struct interface *,
+                     union olsr_ip_addr *);
 
 #endif
 
index 389ffb4..6597635 100644 (file)
@@ -50,7 +50,6 @@
 #include "olsr.h"
 #include "parser.h"
 #include "duplicate_set.h"
-#include "rebuild_packet.h"
 #include "scheduler.h"
 #include "net_olsr.h"
 #include "lq_plugin.h"
@@ -478,8 +477,8 @@ olsr_init_package_process (void)
       olsr_parser_add_function (&olsr_input_tc, LQ_TC_MESSAGE, 1);
     }
 
-  olsr_parser_add_function (&olsr_process_received_mid, MID_MESSAGE, 1);
-  olsr_parser_add_function (&olsr_process_received_hna, HNA_MESSAGE, 1);
+  olsr_parser_add_function (&olsr_input_mid, MID_MESSAGE, 1);
+  olsr_parser_add_function (&olsr_input_hna, HNA_MESSAGE, 1);
 }
 
 void
@@ -557,205 +556,6 @@ olsr_hello_tap (struct hello_message *message, struct interface *in_if,
   return;
 }
 
-/**
- *Process a received(and parsed) MID message
- *For every address check if there is a topology node
- *registered with it and update its addresses.
- *
- *@param m the OLSR message received.
- *@return 1 on success
- */
-
-void
-olsr_process_received_mid (union olsr_message *m, struct interface *in_if
-                           __attribute__ ((unused)),
-                           union olsr_ip_addr *from_addr)
-{
-#ifdef DEBUG
-  struct ipaddr_str buf;
-#endif
-  struct mid_alias *tmp_adr;
-  struct mid_message message;
-
-  mid_chgestruct (&message, m);
-
-  if (!olsr_validate_address (&message.mid_origaddr))
-    {
-      olsr_free_mid_packet (&message);
-      return;
-    }
-
-#ifdef DEBUG
-  OLSR_PRINTF (5, "Processing MID from %s...\n",
-               olsr_ip_to_string (&buf, &message.mid_origaddr));
-#endif
-  tmp_adr = message.mid_addr;
-
-  /*
-   *      If the sender interface (NB: not originator) of this message
-   *      is not in the symmetric 1-hop neighborhood of this node, the
-   *      message MUST be discarded.
-   */
-
-  if (check_neighbor_link (from_addr) != SYM_LINK)
-    {
-      struct ipaddr_str buf;
-      OLSR_PRINTF (2, "Received MID from NON SYM neighbor %s\n",
-                   olsr_ip_to_string (&buf, from_addr));
-      olsr_free_mid_packet (&message);
-      return;
-    }
-
-  /* Update the timeout of the MID */
-  olsr_update_mid_table (&message.mid_origaddr, message.vtime);
-
-  while (tmp_adr)
-    {
-      if (!mid_lookup_main_addr (&tmp_adr->alias_addr))
-        {
-          struct ipaddr_str buf;
-          OLSR_PRINTF (1, "MID new: (%s, ",
-                       olsr_ip_to_string (&buf, &message.mid_origaddr));
-          OLSR_PRINTF (1, "%s)\n",
-                       olsr_ip_to_string (&buf, &tmp_adr->alias_addr));
-          insert_mid_alias (&message.mid_origaddr, &tmp_adr->alias_addr,
-                            message.vtime);
-        }
-      tmp_adr = tmp_adr->next;
-    }
-
-  olsr_prune_aliases (&message.mid_origaddr, message.mid_addr);
-
-  olsr_forward_message (m, from_addr);
-  olsr_free_mid_packet (&message);
-}
-
-/**
- *Process incoming HNA message.
- *Forwards the message if that is to be done.
- *
- *@param m the incoming OLSR message
- *the OLSR message.
- *@return 1 on success
- */
-
-void
-olsr_process_received_hna (union olsr_message *m, struct interface *in_if
-                           __attribute__ ((unused)),
-                           union olsr_ip_addr *from_addr)
-{
-
-  olsr_u8_t olsr_msgtype;
-  olsr_reltime vtime;
-  olsr_u16_t olsr_msgsize;
-  union olsr_ip_addr originator;
-  olsr_u8_t hop_count;
-  olsr_u16_t packet_seq_number;
-
-  int hnasize;
-  const olsr_u8_t *curr, *curr_end;
-
-#ifdef DEBUG
-  OLSR_PRINTF (5, "Processing HNA\n");
-#endif
-
-  /* Check if everyting is ok */
-  if (!m)
-    {
-      return;
-    }
-  curr = (const olsr_u8_t *) m;
-
-  /* olsr_msgtype */
-  pkt_get_u8 (&curr, &olsr_msgtype);
-  if (olsr_msgtype != HNA_MESSAGE)
-    {
-      OLSR_PRINTF (0, "not a HNA message!\n");
-      return;
-    }
-  /* Get vtime */
-  pkt_get_reltime (&curr, &vtime);
-
-  /* olsr_msgsize */
-  pkt_get_u16 (&curr, &olsr_msgsize);
-  hnasize =
-    olsr_msgsize - (olsr_cnf->ip_version ==
-                    AF_INET ? offsetof (struct olsrmsg,
-                                        message) : offsetof (struct olsrmsg6,
-                                                             message));
-  if (hnasize < 0)
-    {
-      OLSR_PRINTF (0, "message size %d too small (at least %lu)!\n",
-                   olsr_msgsize,
-                   (unsigned long) (olsr_cnf->ip_version ==
-                                    AF_INET ? offsetof (struct olsrmsg,
-                                                        message) :
-                                    offsetof (struct olsrmsg6, message)));
-      return;
-    }
-  if ((hnasize % (2 * olsr_cnf->ipsize)) != 0)
-    {
-      OLSR_PRINTF (0, "Illegal message size %d!\n", olsr_msgsize);
-      return;
-    }
-  curr_end = (const olsr_u8_t *) m + olsr_msgsize;
-
-  /* validate originator */
-  pkt_get_ipaddress (&curr, &originator);
-  /*printf("HNA from %s\n\n", olsr_ip_to_string(&buf, &originator)); */
-
-  /* ttl */
-  pkt_ignore_u8 (&curr);
-
-  /* hopcnt */
-  pkt_get_u8 (&curr, &hop_count);
-
-  /* seqno */
-  pkt_get_u16 (&curr, &packet_seq_number);
-
-  /*
-   *      If the sender interface (NB: not originator) of this message
-   *      is not in the symmetric 1-hop neighborhood of this node, the
-   *      message MUST be discarded.
-   */
-  if (check_neighbor_link (from_addr) != SYM_LINK)
-    {
-      struct ipaddr_str buf;
-      OLSR_PRINTF (2, "Received HNA from NON SYM neighbor %s\n",
-                   olsr_ip_to_string (&buf, from_addr));
-      return;
-    }
-#if 1
-  while (curr < curr_end)
-    {
-      union olsr_ip_addr net;
-      olsr_u8_t prefixlen;
-      struct ip_prefix_list *entry;
-
-      pkt_get_ipaddress (&curr, &net);
-      pkt_get_prefixlen (&curr, &prefixlen);
-      entry = ip_prefix_list_find (olsr_cnf->hna_entries, &net, prefixlen);
-      if (entry == NULL)
-        {
-          /* only update if it's not from us */
-          olsr_update_hna_entry (&originator, &net, prefixlen, vtime);
-        }
-    }
-#else
-  while (hna_tmp)
-    {
-      /* Don't add an HNA entry that we are advertising ourselves. */
-      if (!ip_prefix_list_find
-          (olsr_cnf->hna_entries, &hna_tmp->net, hna_tmp->prefixlen))
-        {
-          olsr_update_hna_entry (&message.originator, &hna_tmp->net,
-                                 hna_tmp->prefixlen, message.vtime);
-        }
-    }
-#endif
-  olsr_forward_message (m, from_addr);
-}
-
 /*
  * Local Variables:
  * c-basic-offset: 2
index 98caf2b..4430d75 100644 (file)
@@ -53,13 +53,7 @@ void olsr_init_package_process (void);
 void olsr_hello_tap (struct hello_message *, struct interface *,
                      const union olsr_ip_addr *);
 
-void olsr_process_received_hello (union olsr_message *, struct interface *,
-                                  union olsr_ip_addr *);
-
-void olsr_process_received_mid (union olsr_message *, struct interface *,
-                                union olsr_ip_addr *);
-
-void olsr_process_received_hna (union olsr_message *, struct interface *,
-                                union olsr_ip_addr *);
+void olsr_input_hello (union olsr_message *, struct interface *,
+                       union olsr_ip_addr *);
 
 #endif