In the tests fixed in this commit, the header tells that there is a PAN
ID in the header, but no PAN ID was provided in the test vector. This
amends the test vector with the PAN ID (as done in other tests in this
test suite) and adds a check if the PAN was correct.
This fixes the handling when the source address is neither short nor
long. For the reserved address mode no PAN behavior is defined, so
rather check, if the source address is in reserved mode before trying to
read the destination PAN.
Also brutally silence -Wcast-align warnings in OS_MBUF_PKTHDR()
and OS_MBUF_PKTHDR_TO_MBUF(), as those are used by nimble users.
It might make sense to check if the silenced / disabled warnings do
indeed point out unaligned memory accesses.
Using `container_of()` to translate from `netif_t *` to the containing
`gnrc_netif_t *` adds a bit of plausibility: It will fail when `gnrc_netif_t`
stops to contain `netif_t` as member. Additionally, this silences false
positives of -Wcast-align
For consistency with `gnrc_netif_iter()`, add the `const` qualifier to the
parameter of `netif_iter()`. This allows calling it on `const` pointers without
having to cast `netif_t *`, which (apart of dropping the `const` qualifier)
disables a lot of type safety checks offered by the compiler.
The peripheral register addresses are fixed, properly aligned addresses. Storing
them as uintptr_t makes live easier when casting them to helper structs, as no
intermediate cast to uintptr_t is needed to silence -Wcast-align.
There is a corner cases in which the counting of allocated memory
previously was wrong: When the allocation of the chunk succeeded but the
allocation of the next struct node fails. This was relatively unlikely
to happen, as the chunk size was much bigger than the memory required by
the struct node. But it happens on the ESP32 boards resulting in failing
nightlies. This fixes the issue.