1cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy#ifndef _NETFILTER_NF_NAT_H
2cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy#define _NETFILTER_NF_NAT_H
3cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy
4cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy#include <linux/netfilter.h>
5cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy#include <linux/netfilter/nf_conntrack_tuple_common.h>
6cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy
734ce324019e76f6d93768d68343a0e78f464d754Daniel Borkmann#define NF_NAT_RANGE_MAP_IPS			(1 << 0)
834ce324019e76f6d93768d68343a0e78f464d754Daniel Borkmann#define NF_NAT_RANGE_PROTO_SPECIFIED		(1 << 1)
934ce324019e76f6d93768d68343a0e78f464d754Daniel Borkmann#define NF_NAT_RANGE_PROTO_RANDOM		(1 << 2)
1034ce324019e76f6d93768d68343a0e78f464d754Daniel Borkmann#define NF_NAT_RANGE_PERSISTENT			(1 << 3)
1134ce324019e76f6d93768d68343a0e78f464d754Daniel Borkmann#define NF_NAT_RANGE_PROTO_RANDOM_FULLY		(1 << 4)
1234ce324019e76f6d93768d68343a0e78f464d754Daniel Borkmann
1334ce324019e76f6d93768d68343a0e78f464d754Daniel Borkmann#define NF_NAT_RANGE_PROTO_RANDOM_ALL		\
1434ce324019e76f6d93768d68343a0e78f464d754Daniel Borkmann	(NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
15cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy
16e42eff8a32f8b7bde88ea3c5a56391407cbe84f3Arturo Borrero#define NF_NAT_RANGE_MASK					\
17e42eff8a32f8b7bde88ea3c5a56391407cbe84f3Arturo Borrero	(NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED |	\
18e42eff8a32f8b7bde88ea3c5a56391407cbe84f3Arturo Borrero	 NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT |	\
19e42eff8a32f8b7bde88ea3c5a56391407cbe84f3Arturo Borrero	 NF_NAT_RANGE_PROTO_RANDOM_FULLY)
20e42eff8a32f8b7bde88ea3c5a56391407cbe84f3Arturo Borrero
21cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardystruct nf_nat_ipv4_range {
22cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy	unsigned int			flags;
23cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy	__be32				min_ip;
24cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy	__be32				max_ip;
25cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy	union nf_conntrack_man_proto	min;
26cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy	union nf_conntrack_man_proto	max;
27cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy};
28cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy
29cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardystruct nf_nat_ipv4_multi_range_compat {
30cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy	unsigned int			rangesize;
31cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy	struct nf_nat_ipv4_range	range[1];
32cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy};
33cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy
34c7232c9979cba684c50b64c513c4a83c9aa70563Patrick McHardystruct nf_nat_range {
35c7232c9979cba684c50b64c513c4a83c9aa70563Patrick McHardy	unsigned int			flags;
36c7232c9979cba684c50b64c513c4a83c9aa70563Patrick McHardy	union nf_inet_addr		min_addr;
37c7232c9979cba684c50b64c513c4a83c9aa70563Patrick McHardy	union nf_inet_addr		max_addr;
38c7232c9979cba684c50b64c513c4a83c9aa70563Patrick McHardy	union nf_conntrack_man_proto	min_proto;
39c7232c9979cba684c50b64c513c4a83c9aa70563Patrick McHardy	union nf_conntrack_man_proto	max_proto;
40c7232c9979cba684c50b64c513c4a83c9aa70563Patrick McHardy};
41c7232c9979cba684c50b64c513c4a83c9aa70563Patrick McHardy
42cbc9f2f4fcd70d5a627558ca9a881fa9391abf69Patrick McHardy#endif /* _NETFILTER_NF_NAT_H */
43