From 9dd5af78c845b1081634d010df6e7261e317f0dd Mon Sep 17 00:00:00 2001 From: Jens Dede Date: Tue, 23 Jul 2013 15:35:47 +0200 Subject: [PATCH 1/2] fix: default routes are removed correctly if no DAG with preferred parent is available --- core/net/rpl/rpl-dag.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/net/rpl/rpl-dag.c b/core/net/rpl/rpl-dag.c index baad9946b..c404f6f4f 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -703,7 +703,9 @@ rpl_remove_parent(rpl_dag_t *dag, rpl_parent_t *parent) void rpl_nullify_parent(rpl_dag_t *dag, rpl_parent_t *parent) { - if(parent == dag->preferred_parent) { + // local repair calls nullification because the preferred parent is NULL! + // So check if parent is NULL to trigger uip_ds6_defrt_rm. + if(parent == dag->preferred_parent || dag->preferred_parent == NULL) { dag->preferred_parent = NULL; dag->rank = INFINITE_RANK; if(dag->joined) { From 2f1bf730aff5ea47394742b040da881344d9cd61 Mon Sep 17 00:00:00 2001 From: Jens Dede Date: Tue, 23 Jul 2013 20:01:10 +0200 Subject: [PATCH 2/2] Adapted comment --- core/net/rpl/rpl-dag.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/net/rpl/rpl-dag.c b/core/net/rpl/rpl-dag.c index c404f6f4f..bc624cf85 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -703,8 +703,8 @@ rpl_remove_parent(rpl_dag_t *dag, rpl_parent_t *parent) void rpl_nullify_parent(rpl_dag_t *dag, rpl_parent_t *parent) { - // local repair calls nullification because the preferred parent is NULL! - // So check if parent is NULL to trigger uip_ds6_defrt_rm. + /* This function can be called when the preferred parent is NULL, so we + need to handle this condition in order to trigger uip_ds6_defrt_rm. */ if(parent == dag->preferred_parent || dag->preferred_parent == NULL) { dag->preferred_parent = NULL; dag->rank = INFINITE_RANK;