Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
0002 /*
0003  *  IPv6 RPL-SR implementation
0004  *
0005  *  Author:
0006  *  (C) 2020 Alexander Aring <alex.aring@gmail.com>
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  * RPL SR Header
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