Skip to content

Commit

Permalink
include: uapi: linux: add rpl sr header definition
Browse files Browse the repository at this point in the history
This patch adds a uapi header for rpl struct definition. The segments
data can be accessed over rpl_segaddr or rpl_segdata macros. In case of
compri and compre is zero the segment data is not compressed and can be
accessed by rpl_segaddr. In the other case the compressed data can be
accessed by rpl_segdata and interpreted as byte array.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
alexaring authored and davem330 committed Mar 30, 2020
1 parent c189b54 commit cfa933d
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions include/uapi/linux/rpl.h
@@ -0,0 +1,48 @@
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
/*
* IPv6 RPL-SR implementation
*
* Author:
* (C) 2020 Alexander Aring <alex.aring@gmail.com>
*/

#ifndef _UAPI_LINUX_RPL_H
#define _UAPI_LINUX_RPL_H

#include <asm/byteorder.h>
#include <linux/types.h>
#include <linux/in6.h>

/*
* RPL SR Header
*/
struct ipv6_rpl_sr_hdr {
__u8 nexthdr;
__u8 hdrlen;
__u8 type;
__u8 segments_left;
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u32 cmpre:4,
cmpri:4,
reserved:4,
pad:4,
reserved1:16;
#elif defined(__BIG_ENDIAN_BITFIELD)
__u32 reserved:20,
pad:4,
cmpri:4,
cmpre:4;
#else
#error "Please fix <asm/byteorder.h>"
#endif

union {
struct in6_addr addr[0];
__u8 data[0];
} segments;
} __attribute__((packed));

#define rpl_segaddr segments.addr
#define rpl_segdata segments.data

#endif

0 comments on commit cfa933d

Please sign in to comment.