inline small functions
[olsrd.git] / src / routing_table.c
index 7f0aa23..036a442 100644 (file)
 #include "olsr.h"
 #include "link_set.h"
 #include "common/avl.h"
-#include "lq_route.h"
+#include "olsr_spf.h"
 #include "net_olsr.h"
 
 #include <assert.h>
 
+/* Cookies */
+struct olsr_cookie_info *rt_mem_cookie = NULL;
+struct olsr_cookie_info *rtp_mem_cookie = NULL;
+
 /*
  * Sven-Ola: if the current internet gateway is switched, the
  * NAT connection info is lost for any active TCP/UDP session.
@@ -148,9 +152,20 @@ avl_comp_ipv6_prefix (const void *prefix1, const void *prefix2)
 void
 olsr_init_routing_table(void)
 {
+  OLSR_PRINTF(5, "RIB: init routing tree\n");
+
   /* the routing tree */
   avl_init(&routingtree, avl_comp_prefix_default);
   routingtree_version = 0;
+
+  /*
+   * Get some cookies for memory stats and memory recycling.
+   */
+  rt_mem_cookie = olsr_alloc_cookie("rt_entry", OLSR_COOKIE_TYPE_MEMORY);
+  olsr_cookie_set_memory_size(rt_mem_cookie, sizeof(struct rt_entry));
+
+  rtp_mem_cookie = olsr_alloc_cookie("rt_path", OLSR_COOKIE_TYPE_MEMORY);
+  olsr_cookie_set_memory_size(rtp_mem_cookie, sizeof(struct rt_path));
 }
 
 /**
@@ -202,7 +217,7 @@ olsr_update_rt_path(struct rt_path *rtp, struct tc_entry *tc,
 static struct rt_entry *
 olsr_alloc_rt_entry(struct olsr_ip_prefix *prefix)
 {
-  struct rt_entry *rt = olsr_malloc(sizeof(struct rt_entry), __FUNCTION__);
+  struct rt_entry *rt = olsr_cookie_malloc(rt_mem_cookie);
   if (!rt) {
     return NULL;
   }
@@ -231,7 +246,7 @@ static struct rt_path *
 olsr_alloc_rt_path(struct tc_entry *tc,
                    struct olsr_ip_prefix *prefix, olsr_u8_t origin)
 {
-  struct rt_path *rtp = olsr_malloc(sizeof(struct rt_path), __FUNCTION__);
+  struct rt_path *rtp = olsr_cookie_malloc(rtp_mem_cookie);
 
   if (!rtp) {
     return NULL;
@@ -342,7 +357,7 @@ olsr_delete_rt_path(struct rt_path *rtp)
     current_inetgw = NULL;
   }
 
-  free(rtp);
+  olsr_cookie_free(rtp_mem_cookie, rtp);
 }
 
 #if 0