On Thu, 21 Jan 2021 23:00:44 +0100 Justin Iurman wrote:
> Following RFC 6554 [1], the current order of fields is wrong for big
> endian definition. Indeed, here is how the header looks like:
>
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> | Next Header | Hdr Ext Len | Routing Type | Segments Left |
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
> | CmprI | CmprE | Pad | Reserved |
> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
>
> This patch reorders fields so that big endian definition is now correct.
>
> [1] https://tools.ietf.org/html/rfc6554#section-3
>
> Signed-off-by: Justin Iurman <[email protected]>
Are you sure? This looks right to me.
> diff --git a/include/uapi/linux/rpl.h b/include/uapi/linux/rpl.h
> index 1dccb55cf8c6..708adddf9f13 100644
> --- a/include/uapi/linux/rpl.h
> +++ b/include/uapi/linux/rpl.h
> @@ -28,10 +28,10 @@ struct ipv6_rpl_sr_hdr {
> pad:4,
> reserved1:16;
> #elif defined(__BIG_ENDIAN_BITFIELD)
> - __u32 reserved:20,
> + __u32 cmpri:4,
> + cmpre:4,
> pad:4,
> - cmpri:4,
> - cmpre:4;
> + reserved:20;
> #else
> #error "Please fix <asm/byteorder.h>"
> #endif