Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note *//* * IPv6 IOAM implementation * * Author: * Justin Iurman <justin.iurman@uliege.be> */
#ifndef _UAPI_LINUX_IOAM6_H#define _UAPI_LINUX_IOAM6_H
#include <asm/byteorder.h>#include <linux/types.h>
#define IOAM6_U16_UNAVAILABLE U16_MAX#define IOAM6_U32_UNAVAILABLE U32_MAX#define IOAM6_U64_UNAVAILABLE U64_MAX
#define IOAM6_DEFAULT_ID (IOAM6_U32_UNAVAILABLE >> 8)#define IOAM6_DEFAULT_ID_WIDE (IOAM6_U64_UNAVAILABLE >> 8)#define IOAM6_DEFAULT_IF_ID IOAM6_U16_UNAVAILABLE#define IOAM6_DEFAULT_IF_ID_WIDE IOAM6_U32_UNAVAILABLE
/* * IPv6 IOAM Option Header */struct ioam6_hdr { __u8 opt_type; __u8 opt_len; __u8 :8; /* reserved */#define IOAM6_TYPE_PREALLOC 0 __u8 type;} __attribute__((packed));
/* * IOAM Trace Header */struct ioam6_trace_hdr { __be16 namespace_id;
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u8 :1, /* unused */ :1, /* unused */ overflow:1, nodelen:5;
__u8 remlen:7, :1; /* unused */
union { __be32 type_be32;
struct { __u32 bit7:1, bit6:1, bit5:1, bit4:1, bit3:1, bit2:1, bit1:1, bit0:1, bit15:1, /* unused */ bit14:1, /* unused */ bit13:1, /* unused */ bit12:1, /* unused */ bit11:1, bit10:1, bit9:1, bit8:1, bit23:1, /* reserved */ bit22:1, bit21:1, /* unused */ bit20:1, /* unused */ bit19:1, /* unused */ bit18:1, /* unused */ bit17:1, /* unused */ bit16:1, /* unused */ :8; /* reserved */ } type; };
#elif defined(__BIG_ENDIAN_BITFIELD)
__u8 nodelen:5, overflow:1, :1, /* unused */ :1; /* unused */
__u8 :1, /* unused */ remlen:7;
union { __be32 type_be32;
struct { __u32 bit0:1, bit1:1, bit2:1, bit3:1, bit4:1, bit5:1, bit6:1, bit7:1, bit8:1, bit9:1, bit10:1, bit11:1, bit12:1, /* unused */ bit13:1, /* unused */ bit14:1, /* unused */ bit15:1, /* unused */ bit16:1, /* unused */ bit17:1, /* unused */ bit18:1, /* unused */ bit19:1, /* unused */ bit20:1, /* unused */ bit21:1, /* unused */ bit22:1, bit23:1, /* reserved */ :8; /* reserved */ } type; };
#else#error "Please fix <asm/byteorder.h>"#endif
#define IOAM6_TRACE_DATA_SIZE_MAX 244 __u8 data[];} __attribute__((packed));
#endif /* _UAPI_LINUX_IOAM6_H */