1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 #ifndef _NF_CONNTRACK_TUPLE_COMMON_H 3 #define _NF_CONNTRACK_TUPLE_COMMON_H 4 5 #include <linux/types.h> 6 #ifndef __KERNEL__ 7 #include <linux/netfilter.h> 8 #endif 9 #include <linux/netfilter/nf_conntrack_common.h> /* IP_CT_IS_REPLY */ 10 11 enum ip_conntrack_dir { 12 IP_CT_DIR_ORIGINAL, 13 IP_CT_DIR_REPLY, 14 IP_CT_DIR_MAX 15 }; 16 17 /* The protocol-specific manipulable parts of the tuple: always in 18 * network order 19 */ 20 union nf_conntrack_man_proto { 21 /* Add other protocols here. */ 22 __be16 all; 23 24 struct { 25 __be16 port; 26 } tcp; 27 struct { 28 __be16 port; 29 } udp; 30 struct { 31 __be16 id; 32 } icmp; 33 struct { 34 __be16 port; 35 } dccp; 36 struct { 37 __be16 port; 38 } sctp; 39 struct { 40 __be16 key; /* GRE key is 32bit, PPtP only uses 16bit */ 41 } gre; 42 }; 43 44 #define CTINFO2DIR(ctinfo) ((ctinfo) >= IP_CT_IS_REPLY ? IP_CT_DIR_REPLY : IP_CT_DIR_ORIGINAL) 45 46 #endif /* _NF_CONNTRACK_TUPLE_COMMON_H */ 47