1/**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19#ifndef _XT_POLICY_H 20#define _XT_POLICY_H 21#include <linux/types.h> 22#include <linux/in.h> 23#include <linux/in6.h> 24#define XT_POLICY_MAX_ELEM 4 25enum xt_policy_flags { 26 XT_POLICY_MATCH_IN = 0x1, 27 XT_POLICY_MATCH_OUT = 0x2, 28 XT_POLICY_MATCH_NONE = 0x4, 29 XT_POLICY_MATCH_STRICT = 0x8, 30}; 31enum xt_policy_modes { 32 XT_POLICY_MODE_TRANSPORT, 33 XT_POLICY_MODE_TUNNEL 34}; 35struct xt_policy_spec { 36 __u8 saddr : 1, daddr : 1, proto : 1, mode : 1, spi : 1, reqid : 1; 37}; 38union xt_policy_addr { 39 struct in_addr a4; 40 struct in6_addr a6; 41}; 42struct xt_policy_elem { 43 union { 44 struct { 45 union xt_policy_addr saddr; 46 union xt_policy_addr smask; 47 union xt_policy_addr daddr; 48 union xt_policy_addr dmask; 49 }; 50 }; 51 __be32 spi; 52 __u32 reqid; 53 __u8 proto; 54 __u8 mode; 55 struct xt_policy_spec match; 56 struct xt_policy_spec invert; 57}; 58struct xt_policy_info { 59 struct xt_policy_elem pol[XT_POLICY_MAX_ELEM]; 60 __u16 flags; 61 __u16 len; 62}; 63#endif 64