blob: be8ead05c3164a7ae258ee1b4b7f4e25dc82d183 [file] [log] [blame]
Patrick McHardyc4b88512006-03-20 18:03:40 -08001#ifndef _XT_POLICY_H
2#define _XT_POLICY_H
3
Arnd Bergmann60c195c2009-02-26 00:51:43 +01004#include <linux/types.h>
5
Patrick McHardyc4b88512006-03-20 18:03:40 -08006#define XT_POLICY_MAX_ELEM 4
7
Eric Dumazetd94d9fe2009-11-04 09:50:58 -08008enum xt_policy_flags {
Patrick McHardyc4b88512006-03-20 18:03:40 -08009 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
Eric Dumazetd94d9fe2009-11-04 09:50:58 -080015enum xt_policy_modes {
Patrick McHardyc4b88512006-03-20 18:03:40 -080016 XT_POLICY_MODE_TRANSPORT,
17 XT_POLICY_MODE_TUNNEL
18};
19
Eric Dumazetd94d9fe2009-11-04 09:50:58 -080020struct xt_policy_spec {
Arnd Bergmann60c195c2009-02-26 00:51:43 +010021 __u8 saddr:1,
Patrick McHardyc4b88512006-03-20 18:03:40 -080022 daddr:1,
23 proto:1,
24 mode:1,
25 spi:1,
26 reqid:1;
27};
28
Jan Engelhardt917b6fb2008-01-14 23:42:06 -080029#ifndef __KERNEL__
Eric Dumazetd94d9fe2009-11-04 09:50:58 -080030union xt_policy_addr {
Patrick McHardyc4b88512006-03-20 18:03:40 -080031 struct in_addr a4;
32 struct in6_addr a6;
33};
Jan Engelhardt917b6fb2008-01-14 23:42:06 -080034#endif
Patrick McHardyc4b88512006-03-20 18:03:40 -080035
Eric Dumazetd94d9fe2009-11-04 09:50:58 -080036struct xt_policy_elem {
Jan Engelhardt917b6fb2008-01-14 23:42:06 -080037 union {
38#ifdef __KERNEL__
39 struct {
40 union nf_inet_addr saddr;
41 union nf_inet_addr smask;
42 union nf_inet_addr daddr;
43 union nf_inet_addr dmask;
44 };
45#else
46 struct {
47 union xt_policy_addr saddr;
48 union xt_policy_addr smask;
49 union xt_policy_addr daddr;
50 union xt_policy_addr dmask;
51 };
52#endif
53 };
Al Viro98a4a862006-11-08 00:26:51 -080054 __be32 spi;
Arnd Bergmann60c195c2009-02-26 00:51:43 +010055 __u32 reqid;
56 __u8 proto;
57 __u8 mode;
Patrick McHardyc4b88512006-03-20 18:03:40 -080058
59 struct xt_policy_spec match;
60 struct xt_policy_spec invert;
61};
62
Eric Dumazetd94d9fe2009-11-04 09:50:58 -080063struct xt_policy_info {
Patrick McHardyc4b88512006-03-20 18:03:40 -080064 struct xt_policy_elem pol[XT_POLICY_MAX_ELEM];
Arnd Bergmann60c195c2009-02-26 00:51:43 +010065 __u16 flags;
66 __u16 len;
Patrick McHardyc4b88512006-03-20 18:03:40 -080067};
68
69#endif /* _XT_POLICY_H */