From 65b854fceee9c67a1f056a37516519b500b6010b Mon Sep 17 00:00:00 2001 From: Simon Duquennoy Date: Thu, 4 Feb 2016 22:45:25 +0100 Subject: [PATCH] RPL: trigger a local repair only the first time no parent is found in a DODAG --- core/net/rpl/rpl-dag.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/core/net/rpl/rpl-dag.c b/core/net/rpl/rpl-dag.c index 5b176167b..a534a7c92 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -1290,6 +1290,7 @@ int rpl_process_parent_event(rpl_instance_t *instance, rpl_parent_t *p) { int return_value; + rpl_parent_t *last_parent = instance->current_dag->preferred_parent; #if DEBUG rpl_rank_t old_rank; @@ -1312,10 +1313,12 @@ rpl_process_parent_event(rpl_instance_t *instance, rpl_parent_t *p) } if(rpl_select_dag(instance, p) == NULL) { - /* No suitable parent; trigger a local repair. */ - PRINTF("RPL: No parents found in any DAG\n"); - rpl_local_repair(instance); - return 0; + if(last_parent != NULL) { + /* No suitable parent anymore; trigger a local repair. */ + PRINTF("RPL: No parents found in any DAG\n"); + rpl_local_repair(instance); + return 0; + } } #if DEBUG