Do not trigger global repair when forwarding error is detected

This commit is contained in:
Laurent Deru 2014-01-22 15:26:43 +01:00
parent fb05d22623
commit 778d40dab7

View file

@ -105,19 +105,12 @@ rpl_verify_header(int uip_ext_opt_offset)
route = uip_ds6_route_lookup(&UIP_IP_BUF->destipaddr); route = uip_ds6_route_lookup(&UIP_IP_BUF->destipaddr);
if(route != NULL) { if(route != NULL) {
uip_ds6_route_rm(route); uip_ds6_route_rm(route);
/* If we are the root and just needed to remove a DAO route,
chances are that the network needs to be repaired. The
rpl_repair_root() function will cause a global repair if we
happen to be the root node of the dag. */
PRINTF("RPL: initiate global repair\n");
rpl_repair_root(instance->instance_id);
} }
RPL_STAT(rpl_stats.forward_errors++);
/* Remove the forwarding error flag and return 0 to let the packet /* Trigger DAO retransmission */
be forwarded again. */ rpl_reset_dio_timer(instance);
UIP_EXT_HDR_OPT_RPL_BUF->flags &= ~RPL_HDR_OPT_FWD_ERR; /* drop the packet as it is not routable */
return 0; return 1;
} }
if(!instance->current_dag->joined) { if(!instance->current_dag->joined) {