rpl: remove rpl_get_my_dodag() dependency in rpl_delete_all_parents()
This commit is contained in:
parent
1af6126000
commit
19c2ab8bc2
@ -43,7 +43,7 @@ bool rpl_equal_id(ipv6_addr_t *id1, ipv6_addr_t *id2);
|
|||||||
ipv6_addr_t *rpl_get_my_preferred_parent(void);
|
ipv6_addr_t *rpl_get_my_preferred_parent(void);
|
||||||
void rpl_delete_parent(rpl_parent_t *parent);
|
void rpl_delete_parent(rpl_parent_t *parent);
|
||||||
void rpl_delete_worst_parent(void);
|
void rpl_delete_worst_parent(void);
|
||||||
void rpl_delete_all_parents(void);
|
void rpl_delete_all_parents(rpl_dodag_t *dodag);
|
||||||
rpl_parent_t *rpl_find_preferred_parent(rpl_dodag_t *dodag);
|
rpl_parent_t *rpl_find_preferred_parent(rpl_dodag_t *dodag);
|
||||||
void rpl_parent_update(rpl_dodag_t *dodag, rpl_parent_t *parent);
|
void rpl_parent_update(rpl_dodag_t *dodag, rpl_parent_t *parent);
|
||||||
void rpl_global_repair(rpl_dodag_t *dodag, ipv6_addr_t *p_addr, uint16_t rank);
|
void rpl_global_repair(rpl_dodag_t *dodag, ipv6_addr_t *p_addr, uint16_t rank);
|
||||||
|
|||||||
@ -143,7 +143,7 @@ void rpl_leave_dodag(rpl_dodag_t *dodag)
|
|||||||
{
|
{
|
||||||
dodag->joined = 0;
|
dodag->joined = 0;
|
||||||
dodag->my_preferred_parent = NULL;
|
dodag->my_preferred_parent = NULL;
|
||||||
rpl_delete_all_parents();
|
rpl_delete_all_parents(dodag);
|
||||||
trickle_stop(&dodag->trickle);
|
trickle_stop(&dodag->trickle);
|
||||||
vtimer_remove(&dodag->dao_timer);
|
vtimer_remove(&dodag->dao_timer);
|
||||||
}
|
}
|
||||||
@ -204,13 +204,9 @@ rpl_parent_t *rpl_find_parent(rpl_dodag_t *dodag, ipv6_addr_t *address)
|
|||||||
|
|
||||||
void rpl_delete_parent(rpl_parent_t *parent)
|
void rpl_delete_parent(rpl_parent_t *parent)
|
||||||
{
|
{
|
||||||
rpl_dodag_t *my_dodag = rpl_get_my_dodag();
|
if (parent == parent->dodag->my_preferred_parent) {
|
||||||
|
parent->dodag->my_preferred_parent = NULL;
|
||||||
if ((my_dodag != NULL) && rpl_equal_id(&my_dodag->my_preferred_parent->addr,
|
|
||||||
&parent->addr)) {
|
|
||||||
my_dodag->my_preferred_parent = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(parent, 0, sizeof(*parent));
|
memset(parent, 0, sizeof(*parent));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -235,17 +231,16 @@ void rpl_delete_worst_parent(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rpl_delete_all_parents(void)
|
void rpl_delete_all_parents(rpl_dodag_t *dodag)
|
||||||
{
|
{
|
||||||
rpl_dodag_t *my_dodag = rpl_get_my_dodag();
|
|
||||||
|
|
||||||
if (my_dodag != NULL) {
|
|
||||||
my_dodag->my_preferred_parent = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
dodag->my_preferred_parent = NULL;
|
||||||
for (int i = 0; i < RPL_MAX_PARENTS; i++) {
|
for (int i = 0; i < RPL_MAX_PARENTS; i++) {
|
||||||
|
if (parents[i].dodag && (dodag->instance->id == parents[i].dodag->instance->id) &&
|
||||||
|
(!memcmp(&dodag->dodag_id, &parents[i].dodag->dodag_id, sizeof(ipv6_addr_t)))) {
|
||||||
memset(&parents[i], 0, sizeof(parents[i]));
|
memset(&parents[i], 0, sizeof(parents[i]));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl_parent_t *rpl_find_preferred_parent(rpl_dodag_t *my_dodag)
|
rpl_parent_t *rpl_find_preferred_parent(rpl_dodag_t *my_dodag)
|
||||||
@ -401,7 +396,8 @@ void rpl_global_repair(rpl_dodag_t *my_dodag, ipv6_addr_t *p_addr, uint16_t rank
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl_delete_all_parents();
|
rpl_delete_all_parents(my_dodag);
|
||||||
|
my_dodag->version = my_dodag->version;
|
||||||
my_dodag->dtsn++;
|
my_dodag->dtsn++;
|
||||||
my_dodag->my_preferred_parent = rpl_new_parent(my_dodag, p_addr, rank);
|
my_dodag->my_preferred_parent = rpl_new_parent(my_dodag, p_addr, rank);
|
||||||
|
|
||||||
@ -433,7 +429,7 @@ void rpl_local_repair(rpl_dodag_t *my_dodag)
|
|||||||
|
|
||||||
my_dodag->my_rank = INFINITE_RANK;
|
my_dodag->my_rank = INFINITE_RANK;
|
||||||
my_dodag->dtsn++;
|
my_dodag->dtsn++;
|
||||||
rpl_delete_all_parents();
|
rpl_delete_all_parents(my_dodag);
|
||||||
trickle_reset_timer(&my_dodag->trickle);
|
trickle_reset_timer(&my_dodag->trickle);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user