mirror of
https://github.com/oliverschmidt/contiki.git
synced 2025-02-08 19:31:03 +00:00
RPL ext header: check if sender is closer only after updating its rank
This commit is contained in:
parent
36dd282eb7
commit
75967438e3
@ -125,14 +125,6 @@ rpl_verify_header(int uip_ext_opt_offset)
|
|||||||
}
|
}
|
||||||
|
|
||||||
sender_rank = UIP_HTONS(UIP_EXT_HDR_OPT_RPL_BUF->senderrank);
|
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));
|
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)) {
|
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);
|
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)) {
|
if((down && !sender_closer) || (!down && sender_closer)) {
|
||||||
PRINTF("RPL: Loop detected - senderrank: %d my-rank: %d sender_closer: %d\n",
|
PRINTF("RPL: Loop detected - senderrank: %d my-rank: %d sender_closer: %d\n",
|
||||||
sender_rank, instance->current_dag->rank,
|
sender_rank, instance->current_dag->rank,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user