1cfa933d9SAlexander Aring /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2cfa933d9SAlexander Aring /* 3cfa933d9SAlexander Aring * IPv6 RPL-SR implementation 4cfa933d9SAlexander Aring * 5cfa933d9SAlexander Aring * Author: 6cfa933d9SAlexander Aring * (C) 2020 Alexander Aring <alex.aring@gmail.com> 7cfa933d9SAlexander Aring */ 8cfa933d9SAlexander Aring 9cfa933d9SAlexander Aring #ifndef _UAPI_LINUX_RPL_H 10cfa933d9SAlexander Aring #define _UAPI_LINUX_RPL_H 11cfa933d9SAlexander Aring 12cfa933d9SAlexander Aring #include <asm/byteorder.h> 13cfa933d9SAlexander Aring #include <linux/types.h> 14cfa933d9SAlexander Aring #include <linux/in6.h> 15cfa933d9SAlexander Aring 16cfa933d9SAlexander Aring /* 17cfa933d9SAlexander Aring * RPL SR Header 18cfa933d9SAlexander Aring */ 19cfa933d9SAlexander Aring struct ipv6_rpl_sr_hdr { 20cfa933d9SAlexander Aring __u8 nexthdr; 21cfa933d9SAlexander Aring __u8 hdrlen; 22cfa933d9SAlexander Aring __u8 type; 23cfa933d9SAlexander Aring __u8 segments_left; 24cfa933d9SAlexander Aring #if defined(__LITTLE_ENDIAN_BITFIELD) 25cfa933d9SAlexander Aring __u32 cmpre:4, 26cfa933d9SAlexander Aring cmpri:4, 27cfa933d9SAlexander Aring reserved:4, 28cfa933d9SAlexander Aring pad:4, 29cfa933d9SAlexander Aring reserved1:16; 30cfa933d9SAlexander Aring #elif defined(__BIG_ENDIAN_BITFIELD) 3107d46d93SJustin Iurman __u32 cmpri:4, 3207d46d93SJustin Iurman cmpre:4, 33cfa933d9SAlexander Aring pad:4, 3407d46d93SJustin Iurman reserved:20; 35cfa933d9SAlexander Aring #else 36cfa933d9SAlexander Aring #error "Please fix <asm/byteorder.h>" 37cfa933d9SAlexander Aring #endif 38cfa933d9SAlexander Aring 39cfa933d9SAlexander Aring union { 40*e8d283b6SKees Cook __DECLARE_FLEX_ARRAY(struct in6_addr, addr); 41*e8d283b6SKees Cook __DECLARE_FLEX_ARRAY(__u8, data); 42cfa933d9SAlexander Aring } segments; 43cfa933d9SAlexander Aring } __attribute__((packed)); 44cfa933d9SAlexander Aring 45cfa933d9SAlexander Aring #define rpl_segaddr segments.addr 46cfa933d9SAlexander Aring #define rpl_segdata segments.data 47cfa933d9SAlexander Aring 48cfa933d9SAlexander Aring #endif 49