1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 #ifndef _IP6T_SRH_H 3 #define _IP6T_SRH_H 4 5 #include <linux/types.h> 6 #include <linux/netfilter.h> 7 8 /* Values for "mt_flags" field in struct ip6t_srh */ 9 #define IP6T_SRH_NEXTHDR 0x0001 10 #define IP6T_SRH_LEN_EQ 0x0002 11 #define IP6T_SRH_LEN_GT 0x0004 12 #define IP6T_SRH_LEN_LT 0x0008 13 #define IP6T_SRH_SEGS_EQ 0x0010 14 #define IP6T_SRH_SEGS_GT 0x0020 15 #define IP6T_SRH_SEGS_LT 0x0040 16 #define IP6T_SRH_LAST_EQ 0x0080 17 #define IP6T_SRH_LAST_GT 0x0100 18 #define IP6T_SRH_LAST_LT 0x0200 19 #define IP6T_SRH_TAG 0x0400 20 #define IP6T_SRH_PSID 0x0800 21 #define IP6T_SRH_NSID 0x1000 22 #define IP6T_SRH_LSID 0x2000 23 #define IP6T_SRH_MASK 0x3FFF 24 25 /* Values for "mt_invflags" field in struct ip6t_srh */ 26 #define IP6T_SRH_INV_NEXTHDR 0x0001 27 #define IP6T_SRH_INV_LEN_EQ 0x0002 28 #define IP6T_SRH_INV_LEN_GT 0x0004 29 #define IP6T_SRH_INV_LEN_LT 0x0008 30 #define IP6T_SRH_INV_SEGS_EQ 0x0010 31 #define IP6T_SRH_INV_SEGS_GT 0x0020 32 #define IP6T_SRH_INV_SEGS_LT 0x0040 33 #define IP6T_SRH_INV_LAST_EQ 0x0080 34 #define IP6T_SRH_INV_LAST_GT 0x0100 35 #define IP6T_SRH_INV_LAST_LT 0x0200 36 #define IP6T_SRH_INV_TAG 0x0400 37 #define IP6T_SRH_INV_PSID 0x0800 38 #define IP6T_SRH_INV_NSID 0x1000 39 #define IP6T_SRH_INV_LSID 0x2000 40 #define IP6T_SRH_INV_MASK 0x3FFF 41 42 /** 43 * struct ip6t_srh - SRH match options 44 * @ next_hdr: Next header field of SRH 45 * @ hdr_len: Extension header length field of SRH 46 * @ segs_left: Segments left field of SRH 47 * @ last_entry: Last entry field of SRH 48 * @ tag: Tag field of SRH 49 * @ mt_flags: match options 50 * @ mt_invflags: Invert the sense of match options 51 */ 52 53 struct ip6t_srh { 54 __u8 next_hdr; 55 __u8 hdr_len; 56 __u8 segs_left; 57 __u8 last_entry; 58 __u16 tag; 59 __u16 mt_flags; 60 __u16 mt_invflags; 61 }; 62 63 /** 64 * struct ip6t_srh1 - SRH match options (revision 1) 65 * @ next_hdr: Next header field of SRH 66 * @ hdr_len: Extension header length field of SRH 67 * @ segs_left: Segments left field of SRH 68 * @ last_entry: Last entry field of SRH 69 * @ tag: Tag field of SRH 70 * @ psid_addr: Address of previous SID in SRH SID list 71 * @ nsid_addr: Address of NEXT SID in SRH SID list 72 * @ lsid_addr: Address of LAST SID in SRH SID list 73 * @ psid_msk: Mask of previous SID in SRH SID list 74 * @ nsid_msk: Mask of next SID in SRH SID list 75 * @ lsid_msk: MAsk of last SID in SRH SID list 76 * @ mt_flags: match options 77 * @ mt_invflags: Invert the sense of match options 78 */ 79 80 struct ip6t_srh1 { 81 __u8 next_hdr; 82 __u8 hdr_len; 83 __u8 segs_left; 84 __u8 last_entry; 85 __u16 tag; 86 struct in6_addr psid_addr; 87 struct in6_addr nsid_addr; 88 struct in6_addr lsid_addr; 89 struct in6_addr psid_msk; 90 struct in6_addr nsid_msk; 91 struct in6_addr lsid_msk; 92 __u16 mt_flags; 93 __u16 mt_invflags; 94 }; 95 96 #endif /*_IP6T_SRH_H*/ 97