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 <justin.iur...@uliege.be>

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

Reply via email to