* Make uaodv_rt_add return meaningful value.

* uaodv_rt_lru() moves route to head of list.

* Configurable number of routes.
This commit is contained in:
bg- 2007-04-04 11:50:54 +00:00
parent 8c0fa5bc8a
commit 1d7932c6b3

View File

@ -28,7 +28,7 @@
* *
* This file is part of the Contiki operating system. * This file is part of the Contiki operating system.
* *
* $Id: uaodv-rt.c,v 1.2 2006/08/09 16:13:39 bg- Exp $ * $Id: uaodv-rt.c,v 1.3 2007/04/04 11:50:54 bg- Exp $
*/ */
/** /**
@ -42,13 +42,15 @@
#include "net/uaodv-rt.h" #include "net/uaodv-rt.h"
#include "contiki-net.h" #include "contiki-net.h"
#define NUM_RT_ENTRIES 8 #ifndef UAODV_NUM_RT_ENTRIES
#define UAODV_NUM_RT_ENTRIES 8
#endif
/* /*
* LRU (with respect to insertion time) list of route entries. * LRU (with respect to insertion time) list of route entries.
*/ */
LIST(route_table); LIST(route_table);
MEMB(route_mem, struct uaodv_rt_entry, NUM_RT_ENTRIES); MEMB(route_mem, struct uaodv_rt_entry, UAODV_NUM_RT_ENTRIES);
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
void void
@ -58,9 +60,9 @@ uaodv_rt_init(void)
memb_init(&route_mem); memb_init(&route_mem);
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
int struct uaodv_rt_entry *
uaodv_rt_add(uip_ipaddr_t *dest, uip_ipaddr_t *nexthop, uaodv_rt_add(uip_ipaddr_t *dest, uip_ipaddr_t *nexthop,
u16_t hop_count, u32_t seqno) unsigned hop_count, u32_t seqno)
{ {
struct uaodv_rt_entry *e; struct uaodv_rt_entry *e;
@ -84,7 +86,7 @@ uaodv_rt_add(uip_ipaddr_t *dest, uip_ipaddr_t *nexthop,
/* New entry goes first. */ /* New entry goes first. */
list_push(route_table, e); list_push(route_table, e);
return 0; return e;
} }
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
struct uaodv_rt_entry * struct uaodv_rt_entry *
@ -116,6 +118,15 @@ uaodv_rt_remove(struct uaodv_rt_entry *e)
list_remove(route_table, e); list_remove(route_table, e);
memb_free(&route_mem, e); memb_free(&route_mem, e);
} }
void
uaodv_rt_lru(struct uaodv_rt_entry *e)
{
if(e != list_head(route_table)) {
list_remove(route_table, e);
list_push(route_table, e);
}
}
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
void void
uaodv_rt_flush_all(void) uaodv_rt_flush_all(void)