GNU Linux-libre 4.19.281-gnu1
[releases.git] / include / uapi / linux / netfilter / nf_conntrack_tuple_common.h
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 */