Updated the RPL code to better match the Contiki code style
This commit is contained in:
parent
0cb4bf4808
commit
db7cb567f5
|
@ -57,18 +57,18 @@
|
||||||
|
|
||||||
#include "net/neighbor-info.h"
|
#include "net/neighbor-info.h"
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
extern rpl_of_t RPL_OF;
|
extern rpl_of_t RPL_OF;
|
||||||
static rpl_of_t * const objective_functions[] = {&RPL_OF};
|
static rpl_of_t * const objective_functions[] = {&RPL_OF};
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
#ifndef RPL_CONF_MAX_PARENTS_PER_DAG
|
#ifndef RPL_CONF_MAX_PARENTS_PER_DAG
|
||||||
#define RPL_MAX_PARENTS_PER_DAG 8
|
#define RPL_MAX_PARENTS_PER_DAG 8
|
||||||
#else
|
#else
|
||||||
#define RPL_MAX_PARENTS_PER_DAG RPL_CONF_MAX_PARENTS_PER_DAG
|
#define RPL_MAX_PARENTS_PER_DAG RPL_CONF_MAX_PARENTS_PER_DAG
|
||||||
#endif /* !RPL_CONF_MAX_PARENTS_PER_DAG */
|
#endif /* !RPL_CONF_MAX_PARENTS_PER_DAG */
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* RPL definitions. */
|
/* RPL definitions. */
|
||||||
|
|
||||||
#ifndef RPL_CONF_GROUNDED
|
#ifndef RPL_CONF_GROUNDED
|
||||||
|
@ -77,17 +77,17 @@ static rpl_of_t * const objective_functions[] = {&RPL_OF};
|
||||||
#define RPL_GROUNDED RPL_CONF_GROUNDED
|
#define RPL_GROUNDED RPL_CONF_GROUNDED
|
||||||
#endif /* !RPL_CONF_GROUNDED */
|
#endif /* !RPL_CONF_GROUNDED */
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* Allocate parents from the same static MEMB chunk to reduce memory waste. */
|
/* Allocate parents from the same static MEMB chunk to reduce memory waste. */
|
||||||
MEMB(parent_memb, struct rpl_parent,
|
MEMB(parent_memb, struct rpl_parent,
|
||||||
RPL_MAX_PARENTS_PER_DAG * RPL_MAX_INSTANCES * RPL_MAX_DAG_PER_INSTANCE);
|
RPL_MAX_PARENTS_PER_DAG * RPL_MAX_INSTANCES * RPL_MAX_DAG_PER_INSTANCE);
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* Allocate instance table. */
|
/* Allocate instance table. */
|
||||||
rpl_instance_t instance_table[RPL_MAX_INSTANCES];
|
rpl_instance_t instance_table[RPL_MAX_INSTANCES];
|
||||||
rpl_instance_t *default_instance;
|
rpl_instance_t *default_instance;
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* Greater-than function for the lollipop counter. */
|
/* Greater-than function for the lollipop counter. */
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static int
|
static int
|
||||||
lollipop_greater_than(int a, int b)
|
lollipop_greater_than(int a, int b)
|
||||||
{
|
{
|
||||||
|
@ -101,7 +101,7 @@ lollipop_greater_than(int a, int b)
|
||||||
(a < b && (b - a) > (RPL_LOLLIPOP_CIRCULAR_REGION + 1-
|
(a < b && (b - a) > (RPL_LOLLIPOP_CIRCULAR_REGION + 1-
|
||||||
RPL_LOLLIPOP_SEQUENCE_WINDOWS));
|
RPL_LOLLIPOP_SEQUENCE_WINDOWS));
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* Remove DAG parents with a rank that is at least the same as minimum_rank. */
|
/* Remove DAG parents with a rank that is at least the same as minimum_rank. */
|
||||||
static void
|
static void
|
||||||
remove_parents(rpl_dag_t *dag, rpl_rank_t minimum_rank)
|
remove_parents(rpl_dag_t *dag, rpl_rank_t minimum_rank)
|
||||||
|
@ -118,7 +118,7 @@ remove_parents(rpl_dag_t *dag, rpl_rank_t minimum_rank)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
nullify_parents(rpl_dag_t *dag, rpl_rank_t minimum_rank)
|
nullify_parents(rpl_dag_t *dag, rpl_rank_t minimum_rank)
|
||||||
{
|
{
|
||||||
|
@ -134,7 +134,7 @@ nullify_parents(rpl_dag_t *dag, rpl_rank_t minimum_rank)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
remove_worst_parent(rpl_dag_t *dag, rpl_rank_t min_worst_rank)
|
remove_worst_parent(rpl_dag_t *dag, rpl_rank_t min_worst_rank)
|
||||||
{
|
{
|
||||||
|
@ -155,7 +155,7 @@ remove_worst_parent(rpl_dag_t *dag, rpl_rank_t min_worst_rank)
|
||||||
rpl_remove_parent(dag, worst);
|
rpl_remove_parent(dag, worst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static int
|
static int
|
||||||
should_send_dao(rpl_instance_t *instance, rpl_dio_t *dio, rpl_parent_t *p)
|
should_send_dao(rpl_instance_t *instance, rpl_dio_t *dio, rpl_parent_t *p)
|
||||||
{
|
{
|
||||||
|
@ -167,7 +167,7 @@ should_send_dao(rpl_instance_t *instance, rpl_dio_t *dio, rpl_parent_t *p)
|
||||||
return p == instance->current_dag->preferred_parent &&
|
return p == instance->current_dag->preferred_parent &&
|
||||||
(lollipop_greater_than(dio->dtsn, p->dtsn));
|
(lollipop_greater_than(dio->dtsn, p->dtsn));
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static int
|
static int
|
||||||
acceptable_rank(rpl_dag_t *dag, rpl_rank_t rank)
|
acceptable_rank(rpl_dag_t *dag, rpl_rank_t rank)
|
||||||
{
|
{
|
||||||
|
@ -175,7 +175,7 @@ acceptable_rank(rpl_dag_t *dag, rpl_rank_t rank)
|
||||||
((dag->instance->max_rankinc == 0) ||
|
((dag->instance->max_rankinc == 0) ||
|
||||||
DAG_RANK(rank, dag->instance) <= DAG_RANK(dag->min_rank + dag->instance->max_rankinc, dag->instance));
|
DAG_RANK(rank, dag->instance) <= DAG_RANK(dag->min_rank + dag->instance->max_rankinc, dag->instance));
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static rpl_dag_t *
|
static rpl_dag_t *
|
||||||
get_dag(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
get_dag(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
||||||
{
|
{
|
||||||
|
@ -197,7 +197,7 @@ get_dag(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_dag_t *
|
rpl_dag_t *
|
||||||
rpl_set_root(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
rpl_set_root(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
||||||
{
|
{
|
||||||
|
@ -270,7 +270,7 @@ rpl_set_root(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
||||||
|
|
||||||
return dag;
|
return dag;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
rpl_repair_root(uint8_t instance_id)
|
rpl_repair_root(uint8_t instance_id)
|
||||||
{
|
{
|
||||||
|
@ -287,7 +287,7 @@ rpl_repair_root(uint8_t instance_id)
|
||||||
rpl_reset_dio_timer(instance);
|
rpl_reset_dio_timer(instance);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
set_ip_from_prefix(uip_ipaddr_t *ipaddr, rpl_prefix_t *prefix)
|
set_ip_from_prefix(uip_ipaddr_t *ipaddr, rpl_prefix_t *prefix)
|
||||||
{
|
{
|
||||||
|
@ -295,7 +295,7 @@ set_ip_from_prefix(uip_ipaddr_t *ipaddr, rpl_prefix_t *prefix)
|
||||||
memcpy(ipaddr, &prefix->prefix, (prefix->length + 7) / 8);
|
memcpy(ipaddr, &prefix->prefix, (prefix->length + 7) / 8);
|
||||||
uip_ds6_set_addr_iid(ipaddr, &uip_lladdr);
|
uip_ds6_set_addr_iid(ipaddr, &uip_lladdr);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
check_prefix(rpl_prefix_t *last_prefix, rpl_prefix_t *new_prefix)
|
check_prefix(rpl_prefix_t *last_prefix, rpl_prefix_t *new_prefix)
|
||||||
{
|
{
|
||||||
|
@ -331,7 +331,7 @@ check_prefix(rpl_prefix_t *last_prefix, rpl_prefix_t *new_prefix)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
rpl_set_prefix(rpl_dag_t *dag, uip_ipaddr_t *prefix, unsigned len)
|
rpl_set_prefix(rpl_dag_t *dag, uip_ipaddr_t *prefix, unsigned len)
|
||||||
{
|
{
|
||||||
|
@ -349,7 +349,7 @@ rpl_set_prefix(rpl_dag_t *dag, uip_ipaddr_t *prefix, unsigned len)
|
||||||
check_prefix(NULL, &dag->prefix_info);
|
check_prefix(NULL, &dag->prefix_info);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
rpl_set_default_route(rpl_instance_t *instance, uip_ipaddr_t *from)
|
rpl_set_default_route(rpl_instance_t *instance, uip_ipaddr_t *from)
|
||||||
{
|
{
|
||||||
|
@ -376,13 +376,14 @@ rpl_set_default_route(rpl_instance_t *instance, uip_ipaddr_t *from)
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_instance_t *
|
rpl_instance_t *
|
||||||
rpl_alloc_instance(uint8_t instance_id)
|
rpl_alloc_instance(uint8_t instance_id)
|
||||||
{
|
{
|
||||||
rpl_instance_t *instance, *end;
|
rpl_instance_t *instance, *end;
|
||||||
|
|
||||||
for(instance = &instance_table[0], end = instance + RPL_MAX_INSTANCES; instance < end; ++instance) {
|
for(instance = &instance_table[0], end = instance + RPL_MAX_INSTANCES;
|
||||||
|
instance < end; ++instance) {
|
||||||
if(instance->used == 0) {
|
if(instance->used == 0) {
|
||||||
memset(instance, 0, sizeof(*instance));
|
memset(instance, 0, sizeof(*instance));
|
||||||
instance->instance_id = instance_id;
|
instance->instance_id = instance_id;
|
||||||
|
@ -393,7 +394,7 @@ rpl_alloc_instance(uint8_t instance_id)
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_dag_t *
|
rpl_dag_t *
|
||||||
rpl_alloc_dag(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
rpl_alloc_dag(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
||||||
{
|
{
|
||||||
|
@ -425,13 +426,13 @@ rpl_alloc_dag(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
||||||
rpl_free_instance(instance);
|
rpl_free_instance(instance);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_set_default_instance(rpl_instance_t *instance)
|
rpl_set_default_instance(rpl_instance_t *instance)
|
||||||
{
|
{
|
||||||
default_instance = instance;
|
default_instance = instance;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_free_instance(rpl_instance_t *instance)
|
rpl_free_instance(rpl_instance_t *instance)
|
||||||
{
|
{
|
||||||
|
@ -458,7 +459,7 @@ rpl_free_instance(rpl_instance_t *instance)
|
||||||
|
|
||||||
instance->used = 0;
|
instance->used = 0;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_free_dag(rpl_dag_t *dag)
|
rpl_free_dag(rpl_dag_t *dag)
|
||||||
{
|
{
|
||||||
|
@ -480,7 +481,7 @@ rpl_free_dag(rpl_dag_t *dag)
|
||||||
}
|
}
|
||||||
dag->used = 0;
|
dag->used = 0;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_parent_t *
|
rpl_parent_t *
|
||||||
rpl_add_parent(rpl_dag_t *dag, rpl_dio_t *dio, uip_ipaddr_t *addr)
|
rpl_add_parent(rpl_dag_t *dag, rpl_dio_t *dio, uip_ipaddr_t *addr)
|
||||||
{
|
{
|
||||||
|
@ -504,7 +505,7 @@ rpl_add_parent(rpl_dag_t *dag, rpl_dio_t *dio, uip_ipaddr_t *addr)
|
||||||
list_add(dag->parents, p);
|
list_add(dag->parents, p);
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_parent_t *
|
rpl_parent_t *
|
||||||
rpl_find_parent(rpl_dag_t *dag, uip_ipaddr_t *addr)
|
rpl_find_parent(rpl_dag_t *dag, uip_ipaddr_t *addr)
|
||||||
{
|
{
|
||||||
|
@ -518,7 +519,7 @@ rpl_find_parent(rpl_dag_t *dag, uip_ipaddr_t *addr)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static rpl_dag_t *
|
static rpl_dag_t *
|
||||||
find_parent_dag(rpl_instance_t *instance, uip_ipaddr_t *addr)
|
find_parent_dag(rpl_instance_t *instance, uip_ipaddr_t *addr)
|
||||||
{
|
{
|
||||||
|
@ -536,7 +537,7 @@ find_parent_dag(rpl_instance_t *instance, uip_ipaddr_t *addr)
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_parent_t *
|
rpl_parent_t *
|
||||||
rpl_find_parent_any_dag(rpl_instance_t *instance, uip_ipaddr_t *addr)
|
rpl_find_parent_any_dag(rpl_instance_t *instance, uip_ipaddr_t *addr)
|
||||||
{
|
{
|
||||||
|
@ -554,7 +555,7 @@ rpl_find_parent_any_dag(rpl_instance_t *instance, uip_ipaddr_t *addr)
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_dag_t *
|
rpl_dag_t *
|
||||||
rpl_select_dag(rpl_instance_t *instance, rpl_parent_t *p)
|
rpl_select_dag(rpl_instance_t *instance, rpl_parent_t *p)
|
||||||
{
|
{
|
||||||
|
@ -645,7 +646,7 @@ rpl_select_dag(rpl_instance_t *instance, rpl_parent_t *p)
|
||||||
}
|
}
|
||||||
return best_dag;
|
return best_dag;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_parent_t *
|
rpl_parent_t *
|
||||||
rpl_select_parent(rpl_dag_t *dag)
|
rpl_select_parent(rpl_dag_t *dag)
|
||||||
{
|
{
|
||||||
|
@ -668,7 +669,7 @@ rpl_select_parent(rpl_dag_t *dag)
|
||||||
|
|
||||||
return best;
|
return best;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_remove_parent(rpl_dag_t *dag, rpl_parent_t *parent)
|
rpl_remove_parent(rpl_dag_t *dag, rpl_parent_t *parent)
|
||||||
{
|
{
|
||||||
|
@ -681,7 +682,7 @@ rpl_remove_parent(rpl_dag_t *dag, rpl_parent_t *parent)
|
||||||
list_remove(dag->parents, parent);
|
list_remove(dag->parents, parent);
|
||||||
memb_free(&parent_memb, parent);
|
memb_free(&parent_memb, parent);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_nullify_parent(rpl_dag_t *dag, rpl_parent_t *parent)
|
rpl_nullify_parent(rpl_dag_t *dag, rpl_parent_t *parent)
|
||||||
{
|
{
|
||||||
|
@ -706,7 +707,7 @@ rpl_nullify_parent(rpl_dag_t *dag, rpl_parent_t *parent)
|
||||||
PRINT6ADDR(&parent->addr);
|
PRINT6ADDR(&parent->addr);
|
||||||
PRINTF("\n");
|
PRINTF("\n");
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_move_parent(rpl_dag_t *dag_src, rpl_dag_t *dag_dst, rpl_parent_t *parent)
|
rpl_move_parent(rpl_dag_t *dag_src, rpl_dag_t *dag_dst, rpl_parent_t *parent)
|
||||||
{
|
{
|
||||||
|
@ -735,7 +736,7 @@ rpl_move_parent(rpl_dag_t *dag_src, rpl_dag_t *dag_dst, rpl_parent_t *parent)
|
||||||
parent->dag = dag_dst;
|
parent->dag = dag_dst;
|
||||||
list_add(dag_dst->parents, parent);
|
list_add(dag_dst->parents, parent);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_dag_t *
|
rpl_dag_t *
|
||||||
rpl_get_any_dag(void)
|
rpl_get_any_dag(void)
|
||||||
{
|
{
|
||||||
|
@ -748,7 +749,7 @@ rpl_get_any_dag(void)
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_instance_t *
|
rpl_instance_t *
|
||||||
rpl_get_instance(uint8_t instance_id)
|
rpl_get_instance(uint8_t instance_id)
|
||||||
{
|
{
|
||||||
|
@ -761,7 +762,7 @@ rpl_get_instance(uint8_t instance_id)
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
rpl_of_t *
|
rpl_of_t *
|
||||||
rpl_find_of(rpl_ocp_t ocp)
|
rpl_find_of(rpl_ocp_t ocp)
|
||||||
{
|
{
|
||||||
|
@ -777,7 +778,7 @@ rpl_find_of(rpl_ocp_t ocp)
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_join_instance(uip_ipaddr_t *from, rpl_dio_t *dio)
|
rpl_join_instance(uip_ipaddr_t *from, rpl_dio_t *dio)
|
||||||
{
|
{
|
||||||
|
@ -874,7 +875,7 @@ rpl_join_instance(uip_ipaddr_t *from, rpl_dio_t *dio)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_add_dag(uip_ipaddr_t *from, rpl_dio_t *dio)
|
rpl_add_dag(uip_ipaddr_t *from, rpl_dio_t *dio)
|
||||||
{
|
{
|
||||||
|
@ -954,7 +955,7 @@ rpl_add_dag(uip_ipaddr_t *from, rpl_dio_t *dio)
|
||||||
p->dtsn = dio->dtsn;
|
p->dtsn = dio->dtsn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
global_repair(uip_ipaddr_t *from, rpl_dag_t *dag, rpl_dio_t *dio)
|
global_repair(uip_ipaddr_t *from, rpl_dag_t *dag, rpl_dio_t *dio)
|
||||||
{
|
{
|
||||||
|
@ -981,7 +982,7 @@ global_repair(uip_ipaddr_t *from, rpl_dag_t *dag, rpl_dio_t *dio)
|
||||||
|
|
||||||
RPL_STAT(rpl_stats.global_repairs++);
|
RPL_STAT(rpl_stats.global_repairs++);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_local_repair(rpl_instance_t *instance)
|
rpl_local_repair(rpl_instance_t *instance)
|
||||||
{
|
{
|
||||||
|
@ -999,7 +1000,7 @@ rpl_local_repair(rpl_instance_t *instance)
|
||||||
|
|
||||||
RPL_STAT(rpl_stats.local_repairs++);
|
RPL_STAT(rpl_stats.local_repairs++);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_recalculate_ranks(void)
|
rpl_recalculate_ranks(void)
|
||||||
{
|
{
|
||||||
|
@ -1035,7 +1036,7 @@ rpl_recalculate_ranks(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
rpl_process_parent_event(rpl_instance_t *instance, rpl_parent_t *p)
|
rpl_process_parent_event(rpl_instance_t *instance, rpl_parent_t *p)
|
||||||
{
|
{
|
||||||
|
@ -1082,7 +1083,7 @@ rpl_process_parent_event(rpl_instance_t *instance, rpl_parent_t *p)
|
||||||
|
|
||||||
return return_value;
|
return return_value;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_process_dio(uip_ipaddr_t *from, rpl_dio_t *dio)
|
rpl_process_dio(uip_ipaddr_t *from, rpl_dio_t *dio)
|
||||||
{
|
{
|
||||||
|
@ -1219,4 +1220,4 @@ rpl_process_dio(uip_ipaddr_t *from, rpl_dio_t *dio)
|
||||||
}
|
}
|
||||||
p->dtsn = dio->dtsn;
|
p->dtsn = dio->dtsn;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
#define UIP_IP_BUF ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN])
|
#define UIP_IP_BUF ((struct uip_ip_hdr *)&uip_buf[UIP_LLH_LEN])
|
||||||
#define UIP_EXT_BUF ((struct uip_ext_hdr *)&uip_buf[uip_l2_l3_hdr_len])
|
#define UIP_EXT_BUF ((struct uip_ext_hdr *)&uip_buf[uip_l2_l3_hdr_len])
|
||||||
#define UIP_HBHO_BUF ((struct uip_hbho_hdr *)&uip_buf[uip_l2_l3_hdr_len])
|
#define UIP_HBHO_BUF ((struct uip_hbho_hdr *)&uip_buf[uip_l2_l3_hdr_len])
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
#define UIP_EXT_HDR_OPT_BUF ((struct uip_ext_hdr_opt *)&uip_buf[uip_l2_l3_hdr_len + uip_ext_opt_offset])
|
#define UIP_EXT_HDR_OPT_BUF ((struct uip_ext_hdr_opt *)&uip_buf[uip_l2_l3_hdr_len + uip_ext_opt_offset])
|
||||||
#define UIP_EXT_HDR_OPT_PADN_BUF ((struct uip_ext_hdr_opt_padn *)&uip_buf[uip_l2_l3_hdr_len + uip_ext_opt_offset])
|
#define UIP_EXT_HDR_OPT_PADN_BUF ((struct uip_ext_hdr_opt_padn *)&uip_buf[uip_l2_l3_hdr_len + uip_ext_opt_offset])
|
||||||
#define UIP_EXT_HDR_OPT_RPL_BUF ((struct uip_ext_hdr_opt_rpl *)&uip_buf[uip_l2_l3_hdr_len + uip_ext_opt_offset])
|
#define UIP_EXT_HDR_OPT_RPL_BUF ((struct uip_ext_hdr_opt_rpl *)&uip_buf[uip_l2_l3_hdr_len + uip_ext_opt_offset])
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
rpl_verify_header(int uip_ext_opt_offset)
|
rpl_verify_header(int uip_ext_opt_offset)
|
||||||
{
|
{
|
||||||
|
@ -118,7 +118,7 @@ rpl_verify_header(int uip_ext_opt_offset)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
set_rpl_opt(unsigned uip_ext_opt_offset)
|
set_rpl_opt(unsigned uip_ext_opt_offset)
|
||||||
{
|
{
|
||||||
|
@ -141,7 +141,7 @@ set_rpl_opt(unsigned uip_ext_opt_offset)
|
||||||
UIP_IP_BUF->len[0]++;
|
UIP_IP_BUF->len[0]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_update_header_empty(void)
|
rpl_update_header_empty(void)
|
||||||
{
|
{
|
||||||
|
@ -192,7 +192,7 @@ rpl_update_header_empty(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
rpl_update_header_final(uip_ipaddr_t *addr)
|
rpl_update_header_final(uip_ipaddr_t *addr)
|
||||||
{
|
{
|
||||||
|
@ -230,7 +230,7 @@ rpl_update_header_final(uip_ipaddr_t *addr)
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_remove_header(void)
|
rpl_remove_header(void)
|
||||||
{
|
{
|
||||||
|
@ -257,7 +257,7 @@ rpl_remove_header(void)
|
||||||
PRINTF("RPL: No hop-by-hop Option found\n");
|
PRINTF("RPL: No hop-by-hop Option found\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
uint8_t
|
uint8_t
|
||||||
rpl_invert_header(void)
|
rpl_invert_header(void)
|
||||||
{
|
{
|
||||||
|
@ -292,4 +292,4 @@ rpl_invert_header(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
#define DEBUG DEBUG_NONE
|
#define DEBUG DEBUG_NONE
|
||||||
#include "net/uip-debug.h"
|
#include "net/uip-debug.h"
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static struct ctimer periodic_timer;
|
static struct ctimer periodic_timer;
|
||||||
|
|
||||||
static void handle_periodic_timer(void *ptr);
|
static void handle_periodic_timer(void *ptr);
|
||||||
|
@ -59,7 +59,7 @@ static uint16_t next_dis;
|
||||||
/* dio_send_ok is true if the node is ready to send DIOs */
|
/* dio_send_ok is true if the node is ready to send DIOs */
|
||||||
static uint8_t dio_send_ok;
|
static uint8_t dio_send_ok;
|
||||||
|
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
handle_periodic_timer(void *ptr)
|
handle_periodic_timer(void *ptr)
|
||||||
{
|
{
|
||||||
|
@ -76,7 +76,7 @@ handle_periodic_timer(void *ptr)
|
||||||
#endif
|
#endif
|
||||||
ctimer_reset(&periodic_timer);
|
ctimer_reset(&periodic_timer);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
new_dio_interval(rpl_instance_t *instance)
|
new_dio_interval(rpl_instance_t *instance)
|
||||||
{
|
{
|
||||||
|
@ -122,7 +122,7 @@ new_dio_interval(rpl_instance_t *instance)
|
||||||
PRINTF("RPL: Scheduling DIO timer %lu ticks in future (Interval)\n", time);
|
PRINTF("RPL: Scheduling DIO timer %lu ticks in future (Interval)\n", time);
|
||||||
ctimer_set(&instance->dio_timer, time, &handle_dio_timer, instance);
|
ctimer_set(&instance->dio_timer, time, &handle_dio_timer, instance);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
handle_dio_timer(void *ptr)
|
handle_dio_timer(void *ptr)
|
||||||
{
|
{
|
||||||
|
@ -165,14 +165,14 @@ handle_dio_timer(void *ptr)
|
||||||
new_dio_interval(instance);
|
new_dio_interval(instance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_reset_periodic_timer(void)
|
rpl_reset_periodic_timer(void)
|
||||||
{
|
{
|
||||||
next_dis = RPL_DIS_INTERVAL - RPL_DIS_START_DELAY;
|
next_dis = RPL_DIS_INTERVAL - RPL_DIS_START_DELAY;
|
||||||
ctimer_set(&periodic_timer, CLOCK_SECOND, handle_periodic_timer, NULL);
|
ctimer_set(&periodic_timer, CLOCK_SECOND, handle_periodic_timer, NULL);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
/* Resets the DIO timer in the instance to its minimal interval. */
|
/* Resets the DIO timer in the instance to its minimal interval. */
|
||||||
void
|
void
|
||||||
rpl_reset_dio_timer(rpl_instance_t *instance)
|
rpl_reset_dio_timer(rpl_instance_t *instance)
|
||||||
|
@ -190,7 +190,7 @@ rpl_reset_dio_timer(rpl_instance_t *instance)
|
||||||
#endif /* RPL_CONF_STATS */
|
#endif /* RPL_CONF_STATS */
|
||||||
#endif /* RPL_LEAF_ONLY */
|
#endif /* RPL_LEAF_ONLY */
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
handle_dao_timer(void *ptr)
|
handle_dao_timer(void *ptr)
|
||||||
{
|
{
|
||||||
|
@ -214,7 +214,7 @@ handle_dao_timer(void *ptr)
|
||||||
}
|
}
|
||||||
ctimer_stop(&instance->dao_timer);
|
ctimer_stop(&instance->dao_timer);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_schedule_dao(rpl_instance_t *instance)
|
rpl_schedule_dao(rpl_instance_t *instance)
|
||||||
{
|
{
|
||||||
|
@ -233,4 +233,4 @@ rpl_schedule_dao(rpl_instance_t *instance)
|
||||||
handle_dao_timer, instance);
|
handle_dao_timer, instance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -74,7 +74,7 @@ rpl_purge_routes(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_remove_routes(rpl_dag_t *dag)
|
rpl_remove_routes(rpl_dag_t *dag)
|
||||||
{
|
{
|
||||||
|
@ -86,7 +86,7 @@ rpl_remove_routes(rpl_dag_t *dag)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_remove_routes_by_nexthop(uip_ipaddr_t *nexthop, rpl_dag_t *dag)
|
rpl_remove_routes_by_nexthop(uip_ipaddr_t *nexthop, rpl_dag_t *dag)
|
||||||
{
|
{
|
||||||
|
@ -103,7 +103,7 @@ rpl_remove_routes_by_nexthop(uip_ipaddr_t *nexthop, rpl_dag_t *dag)
|
||||||
}
|
}
|
||||||
ANNOTATE("#L %u 0\n",nexthop->u8[sizeof(uip_ipaddr_t) - 1]);
|
ANNOTATE("#L %u 0\n",nexthop->u8[sizeof(uip_ipaddr_t) - 1]);
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
uip_ds6_route_t *
|
uip_ds6_route_t *
|
||||||
rpl_add_route(rpl_dag_t *dag, uip_ipaddr_t *prefix, int prefix_len,
|
rpl_add_route(rpl_dag_t *dag, uip_ipaddr_t *prefix, int prefix_len,
|
||||||
uip_ipaddr_t *next_hop)
|
uip_ipaddr_t *next_hop)
|
||||||
|
@ -136,7 +136,7 @@ rpl_add_route(rpl_dag_t *dag, uip_ipaddr_t *prefix, int prefix_len,
|
||||||
|
|
||||||
return rep;
|
return rep;
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
rpl_link_neighbor_callback(const rimeaddr_t *addr, int known, int etx)
|
rpl_link_neighbor_callback(const rimeaddr_t *addr, int known, int etx)
|
||||||
{
|
{
|
||||||
|
@ -179,7 +179,7 @@ rpl_link_neighbor_callback(const rimeaddr_t *addr, int known, int etx)
|
||||||
uip_ds6_route_rm_by_nexthop(&ipaddr);
|
uip_ds6_route_rm_by_nexthop(&ipaddr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_ipv6_neighbor_callback(uip_ds6_nbr_t *nbr)
|
rpl_ipv6_neighbor_callback(uip_ds6_nbr_t *nbr)
|
||||||
{
|
{
|
||||||
|
@ -203,7 +203,7 @@ rpl_ipv6_neighbor_callback(uip_ds6_nbr_t *nbr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
rpl_init(void)
|
rpl_init(void)
|
||||||
{
|
{
|
||||||
|
@ -222,4 +222,4 @@ rpl_init(void)
|
||||||
memset(&rpl_stats, 0, sizeof(rpl_stats));
|
memset(&rpl_stats, 0, sizeof(rpl_stats));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
/************************************************************************/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
Loading…
Reference in a new issue