1#ifndef _XT_POLICY_H
2#define _XT_POLICY_H
3
4#include <linux/types.h>
5
6#define XT_POLICY_MAX_ELEM	4
7
8enum xt_policy_flags {
9	XT_POLICY_MATCH_IN	= 0x1,
10	XT_POLICY_MATCH_OUT	= 0x2,
11	XT_POLICY_MATCH_NONE	= 0x4,
12	XT_POLICY_MATCH_STRICT	= 0x8,
13};
14
15enum xt_policy_modes {
16	XT_POLICY_MODE_TRANSPORT,
17	XT_POLICY_MODE_TUNNEL
18};
19
20struct xt_policy_spec {
21	__u8	saddr:1,
22			daddr:1,
23			proto:1,
24			mode:1,
25			spi:1,
26			reqid:1;
27};
28
29union xt_policy_addr {
30	struct in_addr	a4;
31	struct in6_addr	a6;
32};
33
34struct xt_policy_elem {
35	union {
36		struct {
37			union xt_policy_addr saddr;
38			union xt_policy_addr smask;
39			union xt_policy_addr daddr;
40			union xt_policy_addr dmask;
41		};
42	};
43	__be32			spi;
44	__u32		reqid;
45	__u8		proto;
46	__u8		mode;
47
48	struct xt_policy_spec	match;
49	struct xt_policy_spec	invert;
50};
51
52struct xt_policy_info {
53	struct xt_policy_elem pol[XT_POLICY_MAX_ELEM];
54	__u16 flags;
55	__u16 len;
56};
57
58#endif /* _XT_POLICY_H */
59