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