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