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
11enum 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 */
20union 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