diff options
Diffstat (limited to 'include/uapi/linux/seg6.h')
| -rw-r--r-- | include/uapi/linux/seg6.h | 54 | 
1 files changed, 54 insertions, 0 deletions
| diff --git a/include/uapi/linux/seg6.h b/include/uapi/linux/seg6.h new file mode 100644 index 000000000000..c396a8052f73 --- /dev/null +++ b/include/uapi/linux/seg6.h @@ -0,0 +1,54 @@ +/* + *  SR-IPv6 implementation + * + *  Author: + *  David Lebrun <[email protected]> + * + * + *  This program is free software; you can redistribute it and/or + *      modify it under the terms of the GNU General Public License + *      as published by the Free Software Foundation; either version + *      2 of the License, or (at your option) any later version. + */ + +#ifndef _UAPI_LINUX_SEG6_H +#define _UAPI_LINUX_SEG6_H + +/* + * SRH + */ +struct ipv6_sr_hdr { +	__u8	nexthdr; +	__u8	hdrlen; +	__u8	type; +	__u8	segments_left; +	__u8	first_segment; +	__u8	flag_1; +	__u8	flag_2; +	__u8	reserved; + +	struct in6_addr segments[0]; +}; + +#define SR6_FLAG1_CLEANUP	(1 << 7) +#define SR6_FLAG1_PROTECTED	(1 << 6) +#define SR6_FLAG1_OAM		(1 << 5) +#define SR6_FLAG1_ALERT		(1 << 4) +#define SR6_FLAG1_HMAC		(1 << 3) + +#define SR6_TLV_INGRESS		1 +#define SR6_TLV_EGRESS		2 +#define SR6_TLV_OPAQUE		3 +#define SR6_TLV_PADDING		4 +#define SR6_TLV_HMAC		5 + +#define sr_has_cleanup(srh) ((srh)->flag_1 & SR6_FLAG1_CLEANUP) +#define sr_has_hmac(srh) ((srh)->flag_1 & SR6_FLAG1_HMAC) + +struct sr6_tlv { +	__u8 type; +	__u8 len; +	__u8 data[0]; +}; + +#endif |