* const'ified functions
[olsrd.git] / src / local_hna_set.c
index b52cf8b..6e52e12 100644 (file)
@@ -36,7 +36,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: local_hna_set.c,v 1.10 2005/02/27 18:39:43 kattemat Exp $
+ * $Id: local_hna_set.c,v 1.14 2007/10/15 20:58:33 bernd67 Exp $
  */
 
 #include "defs.h"
@@ -44,7 +44,7 @@
 #include "olsr.h"
 
 void
-add_local_hna4_entry(union olsr_ip_addr *net, union olsr_ip_addr *mask)
+add_local_hna4_entry(const union olsr_ip_addr *net, const union olsr_ip_addr *mask)
 {
   struct hna4_entry *new_entry;
 
@@ -60,14 +60,14 @@ add_local_hna4_entry(union olsr_ip_addr *net, union olsr_ip_addr *mask)
 
 
 void
-add_local_hna6_entry(union olsr_ip_addr *net, olsr_u16_t prefix_len)
+add_local_hna6_entry(const union olsr_ip_addr *net, const olsr_u16_t prefix_len)
 {
   struct hna6_entry *new_entry;
 
   new_entry = olsr_malloc(sizeof(struct hna6_entry), "Add local HNA entry 6");
   
   memcpy(&new_entry->net, net, sizeof(struct in6_addr));
-  prefix_len = prefix_len;
+  new_entry->prefix_len = prefix_len;
 
   /* Queue */
   new_entry->next = olsr_cnf->hna6_entries;
@@ -76,7 +76,7 @@ add_local_hna6_entry(union olsr_ip_addr *net, olsr_u16_t prefix_len)
 
 
 int
-remove_local_hna4_entry(union olsr_ip_addr *net, union olsr_ip_addr *mask)
+remove_local_hna4_entry(const union olsr_ip_addr *net, const union olsr_ip_addr *mask)
 {
   struct hna4_entry *h4 = olsr_cnf->hna4_entries, *h4prev = NULL;
 
@@ -104,13 +104,13 @@ remove_local_hna4_entry(union olsr_ip_addr *net, union olsr_ip_addr *mask)
 
 
 int
-remove_local_hna6_entry(union olsr_ip_addr *net, olsr_u16_t prefix_len)
+remove_local_hna6_entry(const union olsr_ip_addr *net, const olsr_u16_t prefix_len)
 {
-  struct hna6_entry *h6 = olsr_cnf->hna6_entries, *h6prev = NULL;
+  struct hna6_entry *h6, *h6prev = NULL;
 
-  while(h6)
+  for(h6 = olsr_cnf->hna6_entries; h6; h6 = h6->next)
     {
-      if((memcmp(net, &h6->net, ipsize) == 0) && 
+      if((memcmp(net, &h6->net, olsr_cnf->ipsize) == 0) && 
         (prefix_len == h6->prefix_len))
        {
          /* Dequeue */
@@ -123,28 +123,62 @@ remove_local_hna6_entry(union olsr_ip_addr *net, olsr_u16_t prefix_len)
          return 1;
        }
       h6prev = h6;
+    }
+  return 0;
+}
+
+struct hna4_entry *
+find_local_hna4_entry(const union olsr_ip_addr *net, const olsr_u32_t mask)
+{
+  struct hna4_entry *h4 = olsr_cnf->hna4_entries;
+
+  while(h4)
+    {
+      if((net->v4 == h4->net.v4) && 
+        (mask == h4->netmask.v4))
+       {
+         return h4;
+       }
+      h4 = h4->next;
+    }
+
+  return NULL;
+}
+
+
+
+struct hna6_entry *
+find_local_hna6_entry(const union olsr_ip_addr *net, const olsr_u16_t prefix_len)
+{
+  struct hna6_entry *h6 = olsr_cnf->hna6_entries;
+
+  while(h6)
+    {
+      if((memcmp(net, &h6->net, olsr_cnf->ipsize) == 0) && 
+        (prefix_len == h6->prefix_len))
+       {
+         return h6;
+       }
       h6 = h6->next;
     }
 
-  return 0;
+  return NULL;
 }
 
 
 
+
 int
-check_inet_gw()
+check_inet_gw(void)
 {
-  struct hna4_entry *h4 = olsr_cnf->hna4_entries;
-
   if(olsr_cnf->ip_version == AF_INET)
     {
-      while(h4)
+      struct hna4_entry *h4;
+      for(h4 = olsr_cnf->hna4_entries; h4; h4 = h4->next)
        {
          if(h4->netmask.v4 == 0 && h4->net.v4 == 0)
            return 1;
-         h4 = h4->next;
        }
-      return 0;
     }
   return 0;