0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _UAPI_LINUX_RPL_H
0010 #define _UAPI_LINUX_RPL_H
0011
0012 #include <asm/byteorder.h>
0013 #include <linux/types.h>
0014 #include <linux/in6.h>
0015
0016
0017
0018
0019 struct ipv6_rpl_sr_hdr {
0020 __u8 nexthdr;
0021 __u8 hdrlen;
0022 __u8 type;
0023 __u8 segments_left;
0024 #if defined(__LITTLE_ENDIAN_BITFIELD)
0025 __u32 cmpre:4,
0026 cmpri:4,
0027 reserved:4,
0028 pad:4,
0029 reserved1:16;
0030 #elif defined(__BIG_ENDIAN_BITFIELD)
0031 __u32 cmpri:4,
0032 cmpre:4,
0033 pad:4,
0034 reserved:20;
0035 #else
0036 #error "Please fix <asm/byteorder.h>"
0037 #endif
0038
0039 union {
0040 struct in6_addr addr[0];
0041 __u8 data[0];
0042 } segments;
0043 } __attribute__((packed));
0044
0045 #define rpl_segaddr segments.addr
0046 #define rpl_segdata segments.data
0047
0048 #endif