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