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