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