From 17bbb1f1c158fbfd80a216014971235da0600ce8 Mon Sep 17 00:00:00 2001 From: Joakim Eriksson Date: Mon, 17 Oct 2011 14:16:19 +0200 Subject: [PATCH] fixed so that rpl avoids sending no-path DAOs when changing parent when in NO_DOWNWARD mode of operation --- 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 c304be4e8..00c3400d6 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -355,9 +355,10 @@ rpl_select_parent(rpl_dag_t *dag) } if(dag->preferred_parent != best) { - PRINTF("RPL: Sending a No-Path DAO to old DAO parent\n"); - dao_output(dag->preferred_parent, ZERO_LIFETIME); - + if(dag->mop != RPL_MOP_NO_DOWNWARD_ROUTES) { + PRINTF("RPL: Sending a No-Path DAO to old DAO parent\n"); + dao_output(dag->preferred_parent, ZERO_LIFETIME); + } dag->preferred_parent = best; /* Cache the value. */ dag->of->update_metric_container(dag); rpl_set_default_route(dag, &best->addr); @@ -378,7 +379,9 @@ rpl_select_parent(rpl_dag_t *dag) dag->min_rank = dag->rank; } else if(!acceptable_rank(dag, best->rank)) { /* Send a No-Path DAO to the soon-to-be-removed preferred parent. */ - dao_output(best, ZERO_LIFETIME); + if(dag->mop != RPL_MOP_NO_DOWNWARD_ROUTES) { + dao_output(best, ZERO_LIFETIME); + } remove_parents(dag, 0); return NULL;