Though technically it does not make a difference here, tabs have
a different semantic meaning than spaces in Makefiles. To be consistent
in RIOT we agreed to use two spaces for if conditions -> see #2626.
It appears that the values defined for RPL_NODE_IS_ROOT and
RPL_MAX_ROUTING_ENTRIES in the Makefile via CFLAGS are not recognized in
sc_rpl.c (my guess: they are only visible to the rpl module?)
Therefore RPL_MAX_ROUTING_ENTRIES is always set to 0, no matter how the
binary is compiled, thus resulting in the output "No routing table
available" for root nodes.
This PR removes code depending on a routing table with an entries
size > 0. Currently, all those functions and symbols are compiled into the binary,
even when there is no effective space in the routing table (as it is the
case for normal nodes in non-storing mode)
Rationale 1: The common part made only sense for (some) NXP ARM7 MCUs,
but was misleading for MCUs like the LPC1768.
Rationale 2: The common part was only used by one specific MCU
implementation - no need to outsource it.
This implementation is based on RFC 6550 with addition of RFC 6554 (Source Routing Header for RPL). Both can be found under the following links:
- http://tools.ietf.org/html/rfc6550
- http://tools.ietf.org/html/rfc6554
The PR provides basic functionality for handling and forwarding packages in non-storing mode. In addition the structure of the previous implemented RPL storing mode is now revised, so that readability and modularity is increased. The following features are implemented:
- building function for a SRH and integration in common packets
- source-route build algorithm based on the structure of the DODAG
- an RPL-based interpretation of the SRH and removal at destination
- new structure for RPl-module with extracted beaconing-functionality
- leaf nodes are now supported
There are some missed goals and should be included in future updates:
- building a common routing table structure for different types of routing protocols
- routing tables are statically assigned via source code, future update should have an optional variable at build-time, which sets the size of the routing table depending on the desired functionality of a node in the network (root, node, leaf)