GNU Linux-libre 6.1.90-gnu
[releases.git] / include / uapi / linux / netfilter / nf_nat.h
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
25 struct 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
33 struct nf_nat_ipv4_multi_range_compat {
34         unsigned int                    rangesize;
35         struct nf_nat_ipv4_range        range[1];
36 };
37
38 struct 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
46 struct 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 */