1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2#ifndef _NETFILTER_NF_NAT_H
3#define _NETFILTER_NF_NAT_H
4
5#include <linux/netfilter.h>
6#include <linux/netfilter/nf_conntrack_tuple_common.h>
7
8#define NF_NAT_RANGE_MAP_IPS (1 << 0)
9#define NF_NAT_RANGE_PROTO_SPECIFIED (1 << 1)
10#define NF_NAT_RANGE_PROTO_RANDOM (1 << 2)
11#define NF_NAT_RANGE_PERSISTENT (1 << 3)
12#define NF_NAT_RANGE_PROTO_RANDOM_FULLY (1 << 4)
13#define NF_NAT_RANGE_PROTO_OFFSET (1 << 5)
14#define NF_NAT_RANGE_NETMAP (1 << 6)
15
16#define NF_NAT_RANGE_PROTO_RANDOM_ALL \
17 (NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
18
19#define NF_NAT_RANGE_MASK \
20 (NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED | \
21 NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT | \
22 NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \
23 NF_NAT_RANGE_NETMAP)
24
25struct nf_nat_ipv4_range {
26 unsigned int flags;
27 __be32 min_ip;
28 __be32 max_ip;
29 union nf_conntrack_man_proto min;
30 union nf_conntrack_man_proto max;
31};
32
33struct nf_nat_ipv4_multi_range_compat {
34 unsigned int rangesize;
35 struct nf_nat_ipv4_range range[1];
36};
37
38struct nf_nat_range {
39 unsigned int flags;
40 union nf_inet_addr min_addr;
41 union nf_inet_addr max_addr;
42 union nf_conntrack_man_proto min_proto;
43 union nf_conntrack_man_proto max_proto;
44};
45
46struct nf_nat_range2 {
47 unsigned int flags;
48 union nf_inet_addr min_addr;
49 union nf_inet_addr max_addr;
50 union nf_conntrack_man_proto min_proto;
51 union nf_conntrack_man_proto max_proto;
52 union nf_conntrack_man_proto base_proto;
53};
54
55#endif /* _NETFILTER_NF_NAT_H */
56

source code of linux/include/uapi/linux/netfilter/nf_nat.h