From 75967438e3fff7f6fbaec150bce157ee89b6263d Mon Sep 17 00:00:00 2001 From: Simon Duquennoy Date: Thu, 4 Feb 2016 22:51:39 +0100 Subject: [PATCH] RPL ext header: check if sender is closer only after updating its rank --- core/net/rpl/rpl-ext-header.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/core/net/rpl/rpl-ext-header.c b/core/net/rpl/rpl-ext-header.c index a2392c124..fd7cf8604 100644 --- a/core/net/rpl/rpl-ext-header.c +++ b/core/net/rpl/rpl-ext-header.c @@ -125,14 +125,6 @@ rpl_verify_header(int uip_ext_opt_offset) } sender_rank = UIP_HTONS(UIP_EXT_HDR_OPT_RPL_BUF->senderrank); - sender_closer = sender_rank < instance->current_dag->rank; - - PRINTF("RPL: Packet going %s, sender closer %d (%d < %d)\n", down == 1 ? "down" : "up", - sender_closer, - sender_rank, - instance->current_dag->rank - ); - sender = nbr_table_get_from_lladdr(rpl_parents, packetbuf_addr(PACKETBUF_ADDR_SENDER)); if(sender != NULL && (UIP_EXT_HDR_OPT_RPL_BUF->flags & RPL_HDR_OPT_RANK_ERR)) { @@ -142,6 +134,14 @@ rpl_verify_header(int uip_ext_opt_offset) rpl_select_dag(instance, sender); } + sender_closer = sender_rank < instance->current_dag->rank; + + PRINTF("RPL: Packet going %s, sender closer %d (%d < %d)\n", down == 1 ? "down" : "up", + sender_closer, + sender_rank, + instance->current_dag->rank + ); + if((down && !sender_closer) || (!down && sender_closer)) { PRINTF("RPL: Loop detected - senderrank: %d my-rank: %d sender_closer: %d\n", sender_rank, instance->current_dag->rank,