xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/rpl.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker /*
3*f80ad8b4SAndroid Build Coastguard Worker  *  IPv6 RPL-SR implementation
4*f80ad8b4SAndroid Build Coastguard Worker  *
5*f80ad8b4SAndroid Build Coastguard Worker  *  Author:
6*f80ad8b4SAndroid Build Coastguard Worker  *  (C) 2020 Alexander Aring <[email protected]>
7*f80ad8b4SAndroid Build Coastguard Worker  */
8*f80ad8b4SAndroid Build Coastguard Worker 
9*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_RPL_H
10*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_RPL_H
11*f80ad8b4SAndroid Build Coastguard Worker 
12*f80ad8b4SAndroid Build Coastguard Worker #include <asm/byteorder.h>
13*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
14*f80ad8b4SAndroid Build Coastguard Worker #include <linux/in6.h>
15*f80ad8b4SAndroid Build Coastguard Worker 
16*f80ad8b4SAndroid Build Coastguard Worker /*
17*f80ad8b4SAndroid Build Coastguard Worker  * RPL SR Header
18*f80ad8b4SAndroid Build Coastguard Worker  */
19*f80ad8b4SAndroid Build Coastguard Worker struct ipv6_rpl_sr_hdr {
20*f80ad8b4SAndroid Build Coastguard Worker 	__u8	nexthdr;
21*f80ad8b4SAndroid Build Coastguard Worker 	__u8	hdrlen;
22*f80ad8b4SAndroid Build Coastguard Worker 	__u8	type;
23*f80ad8b4SAndroid Build Coastguard Worker 	__u8	segments_left;
24*f80ad8b4SAndroid Build Coastguard Worker #if defined(__LITTLE_ENDIAN_BITFIELD)
25*f80ad8b4SAndroid Build Coastguard Worker 	__u32	cmpre:4,
26*f80ad8b4SAndroid Build Coastguard Worker 		cmpri:4,
27*f80ad8b4SAndroid Build Coastguard Worker 		reserved:4,
28*f80ad8b4SAndroid Build Coastguard Worker 		pad:4,
29*f80ad8b4SAndroid Build Coastguard Worker 		reserved1:16;
30*f80ad8b4SAndroid Build Coastguard Worker #elif defined(__BIG_ENDIAN_BITFIELD)
31*f80ad8b4SAndroid Build Coastguard Worker 	__u32	cmpri:4,
32*f80ad8b4SAndroid Build Coastguard Worker 		cmpre:4,
33*f80ad8b4SAndroid Build Coastguard Worker 		pad:4,
34*f80ad8b4SAndroid Build Coastguard Worker 		reserved:20;
35*f80ad8b4SAndroid Build Coastguard Worker #else
36*f80ad8b4SAndroid Build Coastguard Worker #error  "Please fix <asm/byteorder.h>"
37*f80ad8b4SAndroid Build Coastguard Worker #endif
38*f80ad8b4SAndroid Build Coastguard Worker 
39*f80ad8b4SAndroid Build Coastguard Worker 	union {
40*f80ad8b4SAndroid Build Coastguard Worker 		__DECLARE_FLEX_ARRAY(struct in6_addr, addr);
41*f80ad8b4SAndroid Build Coastguard Worker 		__DECLARE_FLEX_ARRAY(__u8, data);
42*f80ad8b4SAndroid Build Coastguard Worker 	} segments;
43*f80ad8b4SAndroid Build Coastguard Worker } __attribute__((packed));
44*f80ad8b4SAndroid Build Coastguard Worker 
45*f80ad8b4SAndroid Build Coastguard Worker #define rpl_segaddr	segments.addr
46*f80ad8b4SAndroid Build Coastguard Worker #define rpl_segdata	segments.data
47*f80ad8b4SAndroid Build Coastguard Worker 
48*f80ad8b4SAndroid Build Coastguard Worker #endif
49