1e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy#ifndef _XT_POLICY_H
2e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy#define _XT_POLICY_H
3e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
4350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt#include <linux/types.h>
5350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt
6e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy#define XT_POLICY_MAX_ELEM	4
7e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
8350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardtenum xt_policy_flags {
9e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	XT_POLICY_MATCH_IN	= 0x1,
10e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	XT_POLICY_MATCH_OUT	= 0x2,
11e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	XT_POLICY_MATCH_NONE	= 0x4,
12e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	XT_POLICY_MATCH_STRICT	= 0x8,
13e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy};
14e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
15350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardtenum xt_policy_modes {
16e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	XT_POLICY_MODE_TRANSPORT,
17e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	XT_POLICY_MODE_TUNNEL
18e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy};
19e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
20350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardtstruct xt_policy_spec {
21350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u8	saddr:1,
22e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			daddr:1,
23e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			proto:1,
24e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			mode:1,
25e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			spi:1,
26e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			reqid:1;
27e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy};
28e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
29350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardtunion xt_policy_addr {
30e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	struct in_addr	a4;
31e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	struct in6_addr	a6;
32e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy};
33e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
34350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardtstruct xt_policy_elem {
35e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	union {
36e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy		struct {
37e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			union xt_policy_addr saddr;
38e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			union xt_policy_addr smask;
39e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			union xt_policy_addr daddr;
40e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy			union xt_policy_addr dmask;
41e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy		};
42e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	};
43e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	__be32			spi;
44350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u32		reqid;
45350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u8		proto;
46350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u8		mode;
47e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
48e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	struct xt_policy_spec	match;
49e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	struct xt_policy_spec	invert;
50e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy};
51e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
52350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardtstruct xt_policy_info {
53e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy	struct xt_policy_elem pol[XT_POLICY_MAX_ELEM];
54350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u16 flags;
55350661a6eb089f3e54e67e022db9e16ea280499fJan Engelhardt	__u16 len;
56e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy};
57e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy
58e0bba47e550420e371c97425cc6d39909a6e059bPatrick McHardy#endif /* _XT_POLICY_H */
59