Commit graph

435 commits

Author SHA1 Message Date
Joakim Nohlgård 52e7ea9cc4 core/net/rpl/rpl-dag.c: fix warning: function declaration isn't a prototype 2016-03-02 07:00:57 +01:00
Simon Duquennoy 521cc7600d Minor debug output fixes 2016-02-03 17:10:24 +01:00
Simon Duquennoy 08bcfd6972 RPL: added callback for parent switches 2015-12-04 15:21:46 +01:00
Simon Duquennoy b6d599b712 RPL: added callback for DIO interval update 2015-12-04 15:21:45 +01:00
Nicolas Tsiftes 35fb0614de Merge pull request #1406 from simonduq/pr/fix-rpl-multi-dag
RPL multiple DAG bugfix
2015-12-02 11:19:37 +01:00
Simon Duquennoy 94c26b90d0 Merge pull request #1091 from simonduq/rpl-loop-repair
Enhanced RPL loop repair
2015-12-01 15:36:53 +01:00
Simon Duquennoy ecc16645ad RPL: do not return from rpl_process_dio after adding a DAG 2015-11-30 19:21:18 +01:00
Simon Duquennoy c679046d7a RPL: improved debug messages for No-Path DAOs 2015-11-26 11:36:05 +01:00
Simon Duquennoy 92840e7adc Simplify uip-ds6-nbr module further when NDP is disabled. Avoids known issue https://github.com/contiki-os/contiki/issues/1380 of neighbors in non-REACHABLE state. 2015-11-20 22:40:19 +01:00
Simon Duquennoy 33f8db0dd3 RPL: clearer naming and documentation of DAO delay constants 2015-11-18 14:06:18 +01:00
Simon Duquennoy 79c436ac03 rpl_verify_header: sanity-check 'sender' before updating rank 2015-11-16 11:15:36 +01:00
Andreas Urke 857d69a338 Remove stray stars in comments 2015-11-02 13:23:40 +01:00
Andreas Urke 8159297bfd Add configuration of DIS interval and DIS start delay to rpl-conf.h
Make a define for configuration of DIS start delay and move it + existing DIS interval conf into RPL-conf.h
2015-11-02 13:23:33 +01:00
Valentin Sawadski b0c7dabf4c Removes duplicate of uip_is_addr_linklocal
A simple search and replace of `uip_is_addr_link_local` to ensure the more
commonly used `uip_is_addr_linklocal` is used consistently.
2015-10-20 11:18:46 +02:00
Laurent Deru 15bc0c6daa Update rank of parent when it has changed DODAG 2015-09-30 15:48:36 +02:00
Laurent Deru 34126173b4 Add DAG lifetime 2015-09-30 15:48:36 +02:00
Joakim Eriksson 24a38a3aa8 check if objective function is supported before adding as parent and creating a dag 2015-09-29 21:10:03 +02:00
Simon Duquennoy 66ec94fd74 Minor improvements to RPL probing 2015-09-17 22:54:38 +02:00
Simon Duquennoy a7ce312ee3 Enhanced RPL loop repair: send unicast DIO to source when detecting a loop from ext header, update rank along the path (when rank error is signaled) 2015-09-17 22:53:12 +02:00
Nicolas Tsiftes 70b3585f76 Merge pull request #1249 from simonduq/fix-rpl-icmp-warnings
Fix compiler warnings in rpl-icmp6.c
2015-09-10 14:44:04 +02:00
Simon Duquennoy 5329c42034 Remove unused variables 2015-09-08 23:38:43 +02:00
Adam Dunkels 92c1a68b94 Merge pull request #1215 from joakimeriksson/rpl-child-locking
Move locking of neighbors / children from RPL to uip-ds6-route module
2015-09-02 19:42:45 +02:00
Joakim Eriksson 9e16d93278 removed pointer to next parent since it is not used anymore 2015-08-28 19:15:23 +02:00
Joakim Eriksson 4d5c749cf7 removed locking of rpl-parent since it was never unlocked - moved to routing module 2015-08-27 18:45:06 +02:00
Adam Dunkels 2b549f3789 Bugfix: need to explictly drop RPL packets by setting uip_len = 0, otherwise those packets are forwarded, with the wrong link layer address as a sender, causing the mesh to create false routes 2015-08-27 10:28:54 +02:00
Adam Dunkels 9cd84563cb Send a no-path DAO when becoming feather mode, so that the network can drop routes to us, which are no longer needed 2015-08-27 10:27:56 +02:00
Adam Dunkels bfb29d2f11 Merge pull request #1116 from cetic/pr-uip-clear-buffer
Add uip_clear_buf() macro and replace all instances of uip_len = 0
2015-08-27 10:27:08 +02:00
Pablo Corbalán aa04f8afbf Changed RPL IPv6 NBR Callback print statement 2015-08-04 19:54:32 +01:00
Laurent Deru 1784338b2e Add uip_clear_buf() macro and replace all instances of uip_len = 0; with it 2015-06-15 11:10:51 +02:00
Nicolas Tsiftes 5a26d25647 Merge pull request #918 from cetic/pr-multi-dodag-support
Multi DODAG support
2015-05-26 16:32:10 +02:00
Nicolas Tsiftes be891c0554 Merge pull request #915 from cetic/pr-rpl-default-route-infinite
Allow rpl default route lifetime to be infinite
2015-05-26 16:26:58 +02:00
Laurent Deru 9782a760b1 rpl_process_dio: Update parent rank 2015-05-22 17:21:53 +02:00
Laurent Deru ccd3c58280 rpl_select_parent: Update dag rank according to new parent 2015-05-22 17:21:53 +02:00
Laurent Deru fc8415e1ad Allow rpl default route lifetime to be infinite 2015-05-22 13:00:06 +02:00
Simon Duquennoy fc178dab87 rpl_print_neighbor_list(): cast clock_time_t to unsigned for portable printout 2015-05-13 09:03:40 +02:00
Nicolas Tsiftes 05d2d843da Merge pull request #1053 from simonduq/rpl-probing
RPL probing
2015-05-10 17:22:10 +02:00
Nicolas Tsiftes 71427ed4cc Merge pull request #1016 from cetic/pr-cleanup-dodag-when-root
Remove all the DODAG from the instance when the node is set as Root
2015-05-10 17:15:25 +02:00
Nicolas Tsiftes 44af0fa66b Merge pull request #1003 from adamdunkels/pr/http-socket-dns64-tcp-socket
New HTTP socket, DNS64, IP64 Cooja tests
2015-05-10 17:14:31 +02:00
Nicolas Tsiftes f8e13758e3 Merge pull request #1017 from cetic/pr-dont-delete-instance
Do not delete instance when a new DODAG can not be created
2015-05-10 15:09:59 +02:00
Simon Duquennoy 9ced5b7bac RPL: when no probing target is found, probe least recently updated parent 2015-05-10 13:28:00 +02:00
Simon Duquennoy 832a4d3e01 Make probing expiration time configurable 2015-05-10 13:19:56 +02:00
Adam Dunkels 4bd725130c Code for starting a RPL DAG root with a delay, to allow any existing RPL networks to be joined first 2015-05-10 10:51:12 +02:00
Adam Dunkels 06daa08ffc Added a function for getting the default RPL instance 2015-05-10 10:51:11 +02:00
Simon Duquennoy 6a5f238255 RPL probing: make delay function user-configurable 2015-05-10 09:47:04 +02:00
Simon Duquennoy 2dd182f4a8 Modified the default RPL probing selection process. Will now probe the least recently updated parent from time to time 2015-05-08 14:32:52 +02:00
Simon Duquennoy 47ba4c0c4b Implement RPL probing 2015-05-08 14:32:00 +02:00
Simon Duquennoy 529376be77 Added rpl_print_neighbor_list function for RPL state monitoring 2015-05-08 14:29:26 +02:00
Simon Duquennoy be47673d40 Fix debug message 2015-05-08 14:28:38 +02:00
Nicolas Tsiftes 7d06494331 Merge pull request #917 from cetic/pr-hbh-user-conf
Allow user configuration of RPL hop-by-hop option
2015-04-03 22:19:51 +02:00
Laurent Deru 0efa9f2046 Allow user configuration of RPL hop-by-hop option 2015-04-03 09:52:36 +02:00
Nicolas Tsiftes 2734c97234 Merge pull request #914 from cetic/pr-always-send-no-path-dao
Send no-path DAO only when the dag has a preferred parent
2015-03-06 14:33:07 +01:00
Laurent Deru 9d94c4efae Remove all the DODAG from the instance when the node is set as Root 2015-03-04 09:55:11 +01:00
Laurent Deru 49bfb1308d Do not delete instance when a new DODAG can not be created 2015-03-04 09:43:28 +01:00
Nicolas Tsiftes f9e5e24cf4 Merge pull request #895 from simonduq/rpl-single-dag
Do not use rpl_add_dag when RPL is used with a single dag per instance
2015-02-26 11:41:24 +01:00
Nicolas Tsiftes d57634d417 Merge pull request #936 from skaterdude/master
Update rpl.c and uip.c (in ipv4)
2015-02-17 09:03:55 +01:00
kshpylon db444e14c3 Update rpl-icmp6.c 2015-02-11 17:26:51 +09:00
Nicolas Tsiftes 5de85e5335 Merge pull request #906 from joakimeriksson/rpl-conf-copy
fixed so that trickle timer and route lifetime rpl config is updated at global repair
2015-02-07 21:23:29 +01:00
Joakim Eriksson 6edccf35a6 fixed so that trickle timer rpl config is updated at global repair 2015-02-06 13:50:26 +01:00
Nicolas Tsiftes 010a338630 Merge pull request #904 from joakimeriksson/move-etx
moved ETX storage variable from RPL to ds6-nbr
2015-02-06 12:25:35 +01:00
Joakim Eriksson e7fc14c7a1 fixed comments 2015-02-06 09:22:16 +01:00
Roger S 605551f62c Update rpl.c
Removed change to "a RPL"
2015-01-04 23:54:02 -05:00
Roger S d62f51d9e7 Update rpl.c
Very minor grammar / spelling edits to comments
2015-01-04 18:09:47 -05:00
Nicolas Tsiftes 7841eface3 Merge pull request #911 from cetic/pr-reset-dao-flag
Reset nopath_received flag when new DAO is received
2015-01-03 11:38:35 +01:00
Nicolas Tsiftes 79517eb477 Merge pull request #910 from cetic/pr-dio-suppr-disabling
Allow disabling of DIO suppression as required by RFC
2015-01-03 11:35:08 +01:00
Nicolas Tsiftes f2f49f18f5 Merge pull request #913 from cetic/pr-rpl-stats
Fix and add more RPL stats
2014-12-19 22:15:38 +01:00
Laurent Deru bb1e0c1cbc Add missing return values in rpl_update_header_empty() 2014-12-19 11:23:19 +01:00
Laurent Deru 81a92bd692 Send no-path DAO only when the dag has a preferred parent 2014-12-19 10:53:01 +01:00
Laurent Deru ccbfa388f6 Add more RPL stats 2014-12-19 10:51:03 +01:00
Laurent Deru 21253370b8 Reset nopath_received flag when new DAO is received 2014-12-19 10:49:56 +01:00
Laurent Deru d540d2b5af Allow disabling of DIO suppression as required in RFC 2014-12-19 09:51:26 +01:00
Adam Dunkels fc4a83085a style fixes, cherry-pick this and fixup with ae87790 2014-12-10 09:32:06 +01:00
Joakim Eriksson 5be43c6f8d moved ETX storage variable from RPL to ds6-nbr 2014-12-10 09:11:53 +01:00
Simon Duquennoy 29d631c6f5 Do not use rpl_add_dag when RPL is used with a single dag per instance 2014-12-03 17:40:40 +01:00
Simon Duquennoy e6d758e6f5 Remove now unneeded UIP_CONF_IPV6 guards in net/ipv6 and net/rpl code 2014-12-01 20:13:09 +01:00
Nicolas Tsiftes 63563ed8df Merge pull request #652 from cetic/pr-rpl-rank-and-fw-errors
RPL rank and forward errors
2014-12-01 17:41:51 +01:00
Niclas Finne d160943f16 Bug fix: Stop the DAO lifetime timer in RPL instances when released.
Clearing the memory for an active etimer/ctimer might corrupt the
timer list and cause other timers to be lost or infinite loops. The
DAO lifetime timer is only used when RPL route lifetime is not
infinite but then the timer will cause problems if not stopped.
2014-11-29 00:22:34 +01:00
Laurent Deru 29f894c07e Drop forwarding error packet and send back DAO to originating parent 2014-11-14 09:40:05 +01:00
Laurent Deru a964380155 Rank error packet should not be forwarded 2014-11-14 09:40:04 +01:00
Laurent Deru 778d40dab7 Do not trigger global repair when forwarding error is detected 2014-11-14 09:40:04 +01:00
Enrico Joerns 85b494c16b [doc] Give files a common structure by placing license first (partial)
Followed by doxyen file and group tags.
This patch is only a first attempt to make provide a clean structure,
many more files require rework, too.
2014-11-10 23:54:49 +01:00
Laurent Deru 02972e6514 Improve RPL hop-by-hop option detection 2014-06-27 09:45:57 +02:00
Laurent Deru d45782fbcd Insert properly Hop-by-Hop option at first hop 2014-06-27 09:45:51 +02:00
Laurent Deru 2dfe2c377f Setting uip_ext_len again breaks hop-by-hop option 2014-06-27 09:43:53 +02:00
Laurent Deru b6742e5eb5 Sender rank in Hop-by-Hop option has inverted bytes 2014-06-27 09:43:53 +02:00
George Oikonomou 32bc98b0da Fix code style in rpl_set_root prototype 2014-06-11 23:59:17 +01:00
Adam Dunkels 0516927677 Merge pull request #666 from simonduq/rpl-etx-init
Set initial link ETX to 2
2014-06-11 22:42:48 +02:00
Rémy Léone 25c8b0835d Closing doxygen groups 2014-05-30 11:01:20 +02:00
Nicolas Tsiftes 443bbd3948 Merge pull request #664 from simonduq/rpl-link-metric-init-fix
RPL MRHOF: bypass EWMA when setting a parent's link metric for the first time
2014-05-14 16:42:29 +02:00
Simon Duquennoy 5aab392a22 Set default link ETX to 2 2014-05-07 16:27:24 +02:00
Nicolas Tsiftes f34165bda4 Merge pull request #647 from cetic/pr-select-dag-fix
rpl_select_parent: Only check parents belonging to the given dag
2014-05-07 16:13:47 +02:00
Nicolas Tsiftes 812a0299a8 Merge pull request #649 from cetic/pr-dio-preference-fix
Add user configuration of DIO preference field
2014-05-07 16:12:56 +02:00
Simon Duquennoy 33cfd92475 RPL MRHOF with ETX: bypass weighted moving average when setting a parent's link metric for the first time 2014-04-29 16:25:16 +02:00
Laurent Deru 3b503da680 Add user configuration of DIO preference field 2014-04-18 16:26:23 +02:00
Laurent Deru 3fb0d69be6 Remove duplicated configuration parameters definition 2014-04-18 15:37:31 +02:00
Laurent Deru 79537a6dd7 rpl_select_parent: Only check parents belonging to the given dag 2014-04-18 11:39:33 +02:00
Nicolas Tsiftes ce2ed95b93 Merge pull request #585 from g-oikonomou/generic-icmp6-in-hooks
Generic ICMPv6 input hooks
2014-04-14 16:12:10 +02:00
George Oikonomou 017697f91d Register generic ICMPv6 handlers for RPL 2014-04-04 00:09:27 +01:00
Nicolas Tsiftes 0a202d3952 Cleaned up some of the comments and output strings. 2014-03-28 13:38:52 +01:00
Nicolas Tsiftes afbb82030e Ensure that the objective function's reset function is called at least once. This will enable the objective function to initialize itself during run-time. 2014-03-28 13:38:52 +01:00
Nicolas Tsiftes 7f4d3e3d7b Avoid calling rpl_lock_parent for uninitialized memory. Renamed p to parent to make reading easier. 2014-03-27 15:55:38 +01:00
Nicolas Tsiftes 1c560fb9db The check should be whether RPL_DIS_SEND is non-zero, not whether it is defined. 2014-03-27 15:44:18 +01:00
Nicolas Tsiftes 5aca90e73d Use the same scale for ETX calculation as for rank calculations to avoid conversion errors between the two. 2014-03-27 15:44:15 +01:00
George Oikonomou da4ce5b54d RPL Multicast group management with MOP 3 2014-03-05 20:31:15 +00:00
George Oikonomou 067bbc9ee0 Check for DAO fwd loop early, before processing DAO options 2014-03-05 20:18:14 +00:00
Adam Dunkels 45265249fc Changed the name of the rimeaddr module to linkaddr 2014-01-29 20:12:24 +01:00
Adam Dunkels bddd96d5c8 Removed all module makefiles. Instead, all .c files in a module directory are compiled. 2014-01-26 23:20:46 +01:00
Adam Dunkels 7e29601639 Turn core/net/rpl into a module 2014-01-26 23:20:29 +01:00
Adam Dunkels 5f3fe7f7c7 Updated include paths for the moved files under net/ 2014-01-26 23:20:23 +01:00
Adam Dunkels b0460317b8 Moved variable declaration to the start of the function block 2013-11-24 15:17:52 +01:00
Adam Dunkels faff1c2a7e Preliminary support for RPL node types. This change allows a node to be in any of three given types:
* Mesh: this is the normal case. Nodes route data on behalf of others and the node can be reached via a DAO route.
* Leaf: the node does not route data on behalf of others, but others can route data to the node (it has a RPL DAO route).
* Feather: this is a new type of node. A feather node routes data on behalf of others, but does not install DAO routes in the network. Feather nodes allow having a larger number of nodes than the RPL network can sustain in terms of routing tables.

This commit introduces the RPL node types and the feather mode, but does not add support for the leaf node type.
2013-11-24 15:17:52 +01:00
Adam Dunkels af24d07848 Forward no-path DAOs up the tree to allow the root to repair the network if needed 2013-11-24 15:17:52 +01:00
Adam Dunkels 9039b0ecd8 Remove references to the now unused dag->parents list 2013-11-24 15:17:52 +01:00
Adam Dunkels 4e6fe7dda6 Add a neighbor table entry if a DAO is received from a node where we don't yet have a neighbor table entry. 2013-11-24 15:17:52 +01:00
Adam Dunkels 490791eaa4 Add a check for the case when the parent neighbor may have gone away to avoid using a NULL pointer 2013-11-24 15:17:52 +01:00
Adam Dunkels 0ed7db0f9b Slight improvements in debug messages 2013-11-24 15:17:52 +01:00
Adam Dunkels fc1adec1b8 Made it a bit more clear what function that gets called when a neighbor is removed 2013-11-24 15:17:51 +01:00
Adam Dunkels 61ea7fbb1c RPL DAO timers and management:
* Added a DAO lifetime timer that sends out a new DAO after half the lifetime of the DAO. This allows implementing DAO route soft state that avoids routing tables in the network keeping stale routes for ever.
* Added ways to schedule a new DAO transmission as well as cancelling an active DAO transmit timer, which makes it possible to do nodes that don't send DAOs.
2013-11-24 15:17:51 +01:00
Adam Dunkels f9cb6ec2fa Added the const keyword to IP address arguments that are not (and should not be) changed by the callee 2013-11-18 00:55:57 +01:00
Laurent Deru fd97136fee As RPL Root, drop an incoming DIO from the same instance but different DAG 2013-11-15 08:48:29 +01:00
Sébastien Dawans a60d3bf6cf Removed duplicate code in rpl-icmp6 2013-10-23 15:43:16 +02:00
Simon Duquennoy 677b5ede16 Fixed printout that used deprectated rpl_parent_t structure 2013-10-08 14:46:55 +02:00
Nicolas Tsiftes 43b5425493 Cleaned up various fragments and fixed a compilation error that occured when switching metric container.
Fixed a wrapping problem in the ETX EWMA calculation.

Corrected the multiplier of the link metric, and simplified the configuration
so that the user does not need to specify the multiplier.
2013-09-23 15:58:42 +02:00
Sébastien Dawans 78e807403c Inserts missing IPv6 Hop-By-Hop RPL Option at first hop 2013-08-19 21:40:24 +02:00
Adam Dunkels 86e247025a Removed debugging printout that came before a local variable declaration, which seems to have broken sdcc 2013-08-19 17:48:33 +02:00
Adam Dunkels d0a939afb0 Bugfix: must multiply with ETX divisor to turn into fixed-point format. 2013-08-19 17:48:32 +02:00
Adam Dunkels 4d0ecaae02 Make sure our parent's IP address isn't NULL. 2013-08-19 17:48:32 +02:00
Adam Dunkels e5a6565137 Loop detection via DAO: if we get a DAO from a parent, that parent thinks we are its parent. We poison it and recalulate our parents. 2013-08-19 17:48:32 +02:00
Adam Dunkels 34119b7ef2 Poor man's loop reparation: reset the DIO timer and hope the neighbor learns a better route. 2013-08-19 17:48:32 +02:00
Adam Dunkels d830e9df3f Implement forwarding error handling: if a packet changes direction, we set the FWD_ERR flag. If we see the FWD_ERR flag, we drop the route that we sent it to. If we are the root node, we also initiate a global repair. 2013-08-19 17:48:31 +02:00
Adam Dunkels abb3ef9b3b Bugfix: don't set the parent if the dag is NULL 2013-08-19 17:48:31 +02:00
Adam Dunkels a027832f94 Fixed a bunch of compiler warnings 2013-08-19 17:48:31 +02:00
Adam Dunkels 9a74ada90c Added a function rpl_get_parent_link_metric() for obtaining the link metric of a given parent 2013-08-19 17:48:31 +02:00
Adam Dunkels c52fc2fd19 Defensive programming: check for the argument being NULL. 2013-08-19 17:48:31 +02:00
Adam Dunkels b42ccaed1b Added function prototypes to a number of functions with void arguments 2013-08-19 17:48:31 +02:00
Adam Dunkels 82e8eb420d Added and updated debugging printouts and reformatted code to make it a little easier to read. 2013-08-19 17:48:31 +02:00
Simon Duquennoy 248301a041 Fix naming issues and includes in uip-ds6-nbr.h 2013-08-19 17:48:30 +02:00
Simon Duquennoy c3f62b24c8 Moved ETX management from neighbor-info to rpl-of-etx. Avoids conversions between different fixed point representations, and simplifies neighbor management. Makes more clear how default-ETX and noack-ETX actually affect the rank. Removed neighbor-info and neighbor-attr. 2013-08-19 17:48:30 +02:00
Simon Duquennoy c50d10aa53 Make RPL use neighbor tables. RPL locks the neighbor used as preferred parent. 2013-08-19 17:48:30 +02:00
Simon Duquennoy 09d26f8060 Make uip-ds6-route use neighbor table. Instead of storing a global list of routing entries that contain both the next hop and the destination, we have a separate list of reachable destination for each neighbor in the global table. 2013-08-19 17:48:30 +02:00
Simon Duquennoy ec609b49eb Make DS6 neighbors use neighbor-table, and move all DS6 neighbor management from uip-ds6 to a new uip-ds6-neighbor module. 2013-08-19 17:48:30 +02:00
Adam Dunkels 54f2109134 Merge pull request #290 from simonduq/rpl-mrhof-etx-nomc
Update of RPL MRHOF (use no metric container with ETX [RFC6719])
2013-07-29 00:56:25 -07:00
Nicolas Tsiftes d228cb57a5 Merge pull request #301 from adamdunkels/hotfix-rpl-max-dio
RPL bugfix: don't ignore infinite rank DIOs
2013-07-26 06:48:26 -07:00
Adam Dunkels 500d9cc3e4 Merge pull request #300 from cetic/rpl-nopath-dao
RPL No-Path DAOs
2013-07-26 03:53:56 -07:00
Adam Dunkels 4913792d41 Minor code style fix 2013-07-26 12:38:43 +02:00
Adam Dunkels 512a339c50 Bugfix: DIOs with infinite ranks should not be ignored as they are used by RPL as a signal by nodes that have lost their routes. Instead of ignoring them, we should send out our latest information to let the node with infinite rank find their way into the network again. 2013-07-26 12:38:25 +02:00
Sébastien Dawans a05d635512 Improve readability of DAO output variables 2013-07-25 11:22:38 +02:00
Sébastien Dawans 0bd26d83c8 Ignore No-Path DAO if target is already reachable through a different route than the DAO sender 2013-07-25 11:21:04 +02:00
Sébastien Dawans c4a121bf18 No-Path DAO Propagation 2013-07-25 11:19:56 +02:00
Jens Dede 2f1bf730af Adapted comment 2013-07-23 20:01:10 +02:00
Simon Duquennoy defcc639ce Use no metric container when having MRHOF with ETX, as specified in RFC6719. Renamed rpl-of-etx to rpl-mrhof. 2013-07-23 19:36:38 +02:00