osd-contiki/core/net
Timofei Istomin 65ef375bdb Re-create a routing table entry if the next hop is changed.
The next-hop address did not get updated in the routing table
in case an entry for the destination already existed.

This patch resolves the issue by removing the entry and
having it re-created from scratch.

The issue causes a routing error triggering reconstruction of
the DODAG through version increase.

In case of somewhat frequent downward traffic in not (yet) stabilized DODAG
a vicious circle is formed: unstable topology means churn, downward
routing under churn causes reconstruction of DODAG. In this situation
the network does not have chance to stabilize.

We encountered a constant churn caused by this bug
in a network of 50 nodes and a periodic traffic (a packet every 5
seconds) generated at the root.

More info and a PCAP demonstrating the issue can be found here:
https://github.com/contiki-os/contiki/issues/496
2014-06-13 13:31:15 +02:00
..
ip Merge pull request #620 from adamdunkels/push/socket-api 2014-04-09 22:12:59 +02:00
ipv4 Closing doxygen groups 2014-05-30 11:01:20 +02:00
ipv6 Re-create a routing table entry if the next hop is changed. 2014-06-13 13:31:15 +02:00
mac Closing doxygen groups 2014-05-30 11:01:20 +02:00
rime Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
rpl Closing doxygen groups 2014-05-30 11:01:20 +02:00
linkaddr.c Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
linkaddr.h Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
nbr-table.c Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
nbr-table.h Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
netstack.c Added support for encryption and decryption of the packetbuf if macros 2012-11-25 12:05:00 +01:00
netstack.h Removed all old RCS tags in the Contiki source tree. Those RCS tags are not used any more, as we are now using git to manage the Contiki source tree 2012-10-26 15:54:49 +02:00
packetbuf.c Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
packetbuf.h Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
packetqueue.c Removed all old RCS tags in the Contiki source tree. Those RCS tags are not used any more, as we are now using git to manage the Contiki source tree 2012-10-26 15:54:49 +02:00
packetqueue.h A massive all-tree automated update of all double inclusion guard #defines that changes from using two underscores as a prefix, which are reserved, to not using two underscores as a prefix 2013-11-24 20:20:11 +01:00
queuebuf.c Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
queuebuf.h Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00