From ccd3c582807972d69ab3f66a1ea37bb06b72cb60 Mon Sep 17 00:00:00 2001 From: Laurent Deru Date: Sat, 11 Jan 2014 09:00:20 +0100 Subject: [PATCH 1/2] rpl_select_parent: Update dag rank according to new parent --- core/net/rpl/rpl-dag.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/net/rpl/rpl-dag.c b/core/net/rpl/rpl-dag.c index 53ba956fa..07364e656 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -741,6 +741,9 @@ rpl_select_parent(rpl_dag_t *dag) if(best != NULL) { rpl_set_preferred_parent(dag, best); + dag->rank = dag->instance->of->calculate_rank(dag->preferred_parent, 0); + } else { + dag->rank = INFINITE_RANK; } return best; From 9782a760b1165af7849a742a7a30767f2d4c7137 Mon Sep 17 00:00:00 2001 From: Laurent Deru Date: Tue, 16 Dec 2014 11:30:16 +0100 Subject: [PATCH 2/2] rpl_process_dio: Update parent rank --- core/net/rpl/rpl-dag.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/net/rpl/rpl-dag.c b/core/net/rpl/rpl-dag.c index 07364e656..c7791d4ff 100644 --- a/core/net/rpl/rpl-dag.c +++ b/core/net/rpl/rpl-dag.c @@ -1285,6 +1285,9 @@ rpl_process_dio(uip_ipaddr_t *from, rpl_dio_t *dio) } } + /* Parent info has been updated, trigger rank recalculation */ + p->flags |= RPL_PARENT_FLAG_UPDATED; + PRINTF("RPL: preferred DAG "); PRINT6ADDR(&instance->current_dag->dag_id); PRINTF(", rank %u, min_rank %u, ",