for restructuring RPL I was wondering where to put common Routing Layer functions like ETX. My first and obvious impression was to move them in the subfolder routing_layer, but it is also possible to put such functions into the include folder of net directly. Any suggestions?
A subfolder to organize the common used functions sounds good to me. Especially when they are probably used across distinct routing protocols .
Im not sure about the name routing_layer, it sounds a little bit too general.
I would propose e.g. forwarding_layer.
Hi,
I think Fabian meant the already existing directory sys/net/routing_layer/.
Though they might not be used by anything else but the routing layer, I think it is most clearly to put the function prototypes into sys/net/include/etx.h and the implementations into sys/net/routing_layer/etx/. In the optimal case all the other headers in there would be used by their respective upper or layer protocols, too, and experience showed that moving the implementation around later-on (e.g. to rename routing_layer to forwarding_layer ;-)) is heavily simplified, when public headers are not in those directories.
I think Fabian meant the already existing directory
``sys/net/routing_layer/``.
The folder is called `sys/net/routing`, since routing is no layer (and
forwarding isn't, either).
Though they might not be used by anything else but the routing layer, I
think it is most clearly to put the function prototypes into
sys/net/include/etx.h and the implementations into
sys/net/routing_layer/etx/. In the optimal case all the other headers in
there would be used by their respective upper or layer protocols, too, and
experience showed that moving the implementation around later-on (e.g. to
rename routing_layer to forwarding_layer ;-)) is heavily simplified, when
public headers are not in those directories.
Definitely a good idea.
The question where to put the ETX implementation is difficult. You could
either vote for putting it into the routing folder (or a metrics
subdirectory), because ETX is mostly used as a metric for routing protocols.
But you could also locate it in the link_layer folder, because the current
implementation measures link layer metrics. Or we could put it into
cross_layer, because it can provide information for more than one service and
might be extended to return path metrics, too.
I think, currently `sys/net/routing` or a metrics subdirectory seems the best
solution to me.