From 81a92bd692978055d2b7512d11c9fd1f270a8206 Mon Sep 17 00:00:00 2001 From: Laurent Deru Date: Wed, 15 Jan 2014 16:22:39 +0100 Subject: [PATCH] Send no-path DAO only when the dag has a preferred parent --- core/net/rpl/rpl-dag.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/net/rpl/rpl-dag.c b/core/net/rpl/rpl-dag.c index 53ba956fa..cf296d937 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -765,7 +765,6 @@ rpl_nullify_parent(rpl_parent_t *parent) /* 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) { - rpl_set_preferred_parent(dag, NULL); dag->rank = INFINITE_RANK; if(dag->joined) { if(dag->instance->def_route != NULL) { @@ -775,7 +774,11 @@ rpl_nullify_parent(rpl_parent_t *parent) uip_ds6_defrt_rm(dag->instance->def_route); dag->instance->def_route = NULL; } - dao_output(parent, RPL_ZERO_LIFETIME); + /* Send no-path DAO only to preferred parent, if any */ + if(parent == dag->preferred_parent) { + dao_output(parent, RPL_ZERO_LIFETIME); + rpl_set_preferred_parent(dag, NULL); + } } }