rpl: pass dodag to the rpl_find_parent function
This commit is contained in:
parent
631977fba6
commit
5fb526fde8
@ -38,7 +38,7 @@ rpl_dodag_t *rpl_get_my_dodag(void);
|
|||||||
void rpl_join_dodag(rpl_dodag_t *dodag, ipv6_addr_t *parent, uint16_t parent_rank);
|
void rpl_join_dodag(rpl_dodag_t *dodag, ipv6_addr_t *parent, uint16_t parent_rank);
|
||||||
void rpl_del_dodag(rpl_dodag_t *dodag);
|
void rpl_del_dodag(rpl_dodag_t *dodag);
|
||||||
rpl_parent_t *rpl_new_parent(rpl_dodag_t *dodag, ipv6_addr_t *address, uint16_t rank);
|
rpl_parent_t *rpl_new_parent(rpl_dodag_t *dodag, ipv6_addr_t *address, uint16_t rank);
|
||||||
rpl_parent_t *rpl_find_parent(ipv6_addr_t *address);
|
rpl_parent_t *rpl_find_parent(rpl_dodag_t *dodag, ipv6_addr_t *address);
|
||||||
void rpl_leave_dodag(rpl_dodag_t *dodag);
|
void rpl_leave_dodag(rpl_dodag_t *dodag);
|
||||||
bool rpl_equal_id(ipv6_addr_t *id1, ipv6_addr_t *id2);
|
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);
|
||||||
|
|||||||
@ -736,7 +736,7 @@ void rpl_recv_DIO(void)
|
|||||||
/********************* Parent Handling *********************/
|
/********************* Parent Handling *********************/
|
||||||
|
|
||||||
rpl_parent_t *parent;
|
rpl_parent_t *parent;
|
||||||
parent = rpl_find_parent(&ipv6_buf->srcaddr);
|
parent = rpl_find_parent(my_dodag, &ipv6_buf->srcaddr);
|
||||||
|
|
||||||
if (parent == NULL) {
|
if (parent == NULL) {
|
||||||
/* add new parent candidate */
|
/* add new parent candidate */
|
||||||
|
|||||||
@ -188,13 +188,16 @@ rpl_parent_t *rpl_new_parent(rpl_dodag_t *dodag, ipv6_addr_t *address, uint16_t
|
|||||||
return rpl_new_parent(dodag, address, rank);
|
return rpl_new_parent(dodag, address, rank);
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl_parent_t *rpl_find_parent(ipv6_addr_t *address)
|
rpl_parent_t *rpl_find_parent(rpl_dodag_t *dodag, ipv6_addr_t *address)
|
||||||
{
|
{
|
||||||
rpl_parent_t *parent;
|
rpl_parent_t *parent;
|
||||||
rpl_parent_t *end;
|
rpl_parent_t *end;
|
||||||
|
|
||||||
for (parent = &parents[0], end = parents + RPL_MAX_PARENTS; parent < end; parent++) {
|
for (parent = &parents[0], end = parents + RPL_MAX_PARENTS; parent < end; parent++) {
|
||||||
if ((parent->used) && (rpl_equal_id(address, &parent->addr))) {
|
if ((parent->used) && (rpl_equal_id(address, &parent->addr)
|
||||||
|
&& (parent->dodag->instance->id == dodag->instance->id)
|
||||||
|
&& (!memcmp(&parent->dodag->dodag_id,
|
||||||
|
&dodag->dodag_id, sizeof(ipv6_addr_t))))) {
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user