1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linu 1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2 /* 2 /* 3 * SR-IPv6 implementation 3 * SR-IPv6 implementation 4 * 4 * 5 * Author: 5 * Author: 6 * David Lebrun <david.lebrun@uclouvain.be> 6 * David Lebrun <david.lebrun@uclouvain.be> 7 * 7 * 8 * 8 * 9 * This program is free software; you can red 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU G 10 * modify it under the terms of the GNU General Public License 11 * as published by the Free Software Foun 11 * as published by the Free Software Foundation; either version 12 * 2 of the License, or (at your option) 12 * 2 of the License, or (at your option) any later version. 13 */ 13 */ 14 14 15 #ifndef _UAPI_LINUX_SEG6_H 15 #ifndef _UAPI_LINUX_SEG6_H 16 #define _UAPI_LINUX_SEG6_H 16 #define _UAPI_LINUX_SEG6_H 17 17 18 #include <linux/types.h> 18 #include <linux/types.h> 19 #include <linux/in6.h> /* For struct 19 #include <linux/in6.h> /* For struct in6_addr. */ 20 20 21 /* 21 /* 22 * SRH 22 * SRH 23 */ 23 */ 24 struct ipv6_sr_hdr { 24 struct ipv6_sr_hdr { 25 __u8 nexthdr; 25 __u8 nexthdr; 26 __u8 hdrlen; 26 __u8 hdrlen; 27 __u8 type; 27 __u8 type; 28 __u8 segments_left; 28 __u8 segments_left; 29 __u8 first_segment; /* Represents t 29 __u8 first_segment; /* Represents the last_entry field of SRH */ 30 __u8 flags; 30 __u8 flags; 31 __u16 tag; 31 __u16 tag; 32 32 33 struct in6_addr segments[]; !! 33 struct in6_addr segments[0]; 34 }; 34 }; 35 35 36 #define SR6_FLAG1_PROTECTED (1 << 6) 36 #define SR6_FLAG1_PROTECTED (1 << 6) 37 #define SR6_FLAG1_OAM (1 << 5) 37 #define SR6_FLAG1_OAM (1 << 5) 38 #define SR6_FLAG1_ALERT (1 << 4) 38 #define SR6_FLAG1_ALERT (1 << 4) 39 #define SR6_FLAG1_HMAC (1 << 3) 39 #define SR6_FLAG1_HMAC (1 << 3) 40 40 41 #define SR6_TLV_INGRESS 1 41 #define SR6_TLV_INGRESS 1 42 #define SR6_TLV_EGRESS 2 42 #define SR6_TLV_EGRESS 2 43 #define SR6_TLV_OPAQUE 3 43 #define SR6_TLV_OPAQUE 3 44 #define SR6_TLV_PADDING 4 44 #define SR6_TLV_PADDING 4 45 #define SR6_TLV_HMAC 5 45 #define SR6_TLV_HMAC 5 46 46 47 #define sr_has_hmac(srh) ((srh)->flags & SR6_F 47 #define sr_has_hmac(srh) ((srh)->flags & SR6_FLAG1_HMAC) 48 48 49 struct sr6_tlv { 49 struct sr6_tlv { 50 __u8 type; 50 __u8 type; 51 __u8 len; 51 __u8 len; 52 __u8 data[]; !! 52 __u8 data[0]; 53 }; 53 }; 54 54 55 #endif 55 #endif 56 56
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.