Additional cleanup when becoming DODAG Root (rpl-classic)
This commit is contained in:
parent
ab0d8f8dd0
commit
a79fa13805
@ -370,6 +370,7 @@ rpl_set_root(uint8_t instance_id, uip_ipaddr_t *dag_id)
|
|||||||
}
|
}
|
||||||
if(dag == dag->instance->current_dag) {
|
if(dag == dag->instance->current_dag) {
|
||||||
PRINTF("RPL: Dropping a joined DAG when setting this node as root");
|
PRINTF("RPL: Dropping a joined DAG when setting this node as root");
|
||||||
|
rpl_set_default_route(instance, NULL);
|
||||||
dag->instance->current_dag = NULL;
|
dag->instance->current_dag = NULL;
|
||||||
} else {
|
} else {
|
||||||
PRINTF("RPL: Dropping a DAG when setting this node as root");
|
PRINTF("RPL: Dropping a DAG when setting this node as root");
|
||||||
@ -665,6 +666,10 @@ rpl_free_dag(rpl_dag_t *dag)
|
|||||||
if(RPL_IS_STORING(dag->instance)) {
|
if(RPL_IS_STORING(dag->instance)) {
|
||||||
rpl_remove_routes(dag);
|
rpl_remove_routes(dag);
|
||||||
}
|
}
|
||||||
|
/* Stop the DAO retransmit timer */
|
||||||
|
#if RPL_WITH_DAO_ACK
|
||||||
|
ctimer_stop(&dag->instance->dao_retransmit_timer);
|
||||||
|
#endif /* RPL_WITH_DAO_ACK */
|
||||||
|
|
||||||
/* Remove autoconfigured address */
|
/* Remove autoconfigured address */
|
||||||
if((dag->prefix_info.flags & UIP_ND6_RA_FLAG_AUTONOMOUS)) {
|
if((dag->prefix_info.flags & UIP_ND6_RA_FLAG_AUTONOMOUS)) {
|
||||||
@ -1323,6 +1328,9 @@ rpl_local_repair(rpl_instance_t *instance)
|
|||||||
|
|
||||||
/* no downward route anymore */
|
/* no downward route anymore */
|
||||||
instance->has_downward_route = 0;
|
instance->has_downward_route = 0;
|
||||||
|
#if RPL_WITH_DAO_ACK
|
||||||
|
ctimer_stop(&instance->dao_retransmit_timer);
|
||||||
|
#endif /* RPL_WITH_DAO_ACK */
|
||||||
|
|
||||||
rpl_reset_dio_timer(instance);
|
rpl_reset_dio_timer(instance);
|
||||||
if(RPL_IS_STORING(instance)) {
|
if(RPL_IS_STORING(instance)) {
|
||||||
|
@ -1282,6 +1282,12 @@ dao_ack_input(void)
|
|||||||
parent = NULL;
|
parent = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(instance->current_dag->rank == ROOT_RANK(instance)) {
|
||||||
|
PRINTF("RPL: DODAG root received a DAO ACK, ignoring it\n");
|
||||||
|
uip_clear_buf();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PRINTF("RPL: Received a DAO %s with sequence number %d (%d) and status %d from ",
|
PRINTF("RPL: Received a DAO %s with sequence number %d (%d) and status %d from ",
|
||||||
status < 128 ? "ACK" : "NACK",
|
status < 128 ? "ACK" : "NACK",
|
||||||
sequence, instance->my_dao_seqno, status);
|
sequence, instance->my_dao_seqno, status);
|
||||||
|
Loading…
Reference in New Issue
Block a user