[riot-devel] Mandatory netif header?

Oleg Hahm oliver.hahm at inria.fr
Wed Apr 6 13:06:36 CEST 2016

Dear resolving IOTlers,

in several lengthy discussions on Github we (mostly Martine and me) discussed
if the netif header in GNRC should be mandatory. As a context: the netif
header in GNRC is a pseudo-header that contains (optional) link-layer
information such as the source and destination address, the information about
the used interface, and some additional, again optional, information about
link-layer metrics (RSSI and LQI).

Until recently, it was optional to include this header while passing the
packet up the stack. However, recently, I introduced a patch to change this,
by asserting the presence of the netif header while receiving a packet in the
IPv6 implementation. The current discussion is about reverting this change.

My rationale to _keep_ this change is the following:
* In my opinion a protocol running logically directly above the link-layer,
  such as IP (adaptation layers like 6LoWPAN may exist in between) will
  typically require information about the interface that received the packet.
  (The same is true for other layers, e.g. UDP cannot work without information
  from the IP header.)
* Not in all cases a physical interface may be involved, but for those cases
  there should typically be a pseudo-interface. The only case, where we do not
  have a pseudo-interface right now (as far as I know) is the loopback case.
  In my opinion, it is - for efficiency reasons - completely okay not to
  provide a loopback device in GNRC, but I still don't see a reason why a
  netif header indicating a pseudo interface should do any harm here. 
  Implementation detail:
  So far, KERNEL_PID_UNDEF is used as identifier in my proposal, but we could
  also define the PID of the IPv6 thread as loopback device identifier.
* Finally, I think asserting a present netif header makes the code easier,
  because one does not have to cover exception cases and provide different
  branches for netif-header-is-present and netif-header-is-NOT-present.

The bad thing about HTML DOM jokes is that everyone has their own
interpretations, so you have to tell them 9000 different ways.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.riot-os.org/pipermail/devel/attachments/20160406/334cd006/attachment.sig>

More information about the devel mailing list