1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/**************************************************************************** 2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng **************************************************************************** 3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** This header was automatically generated from a Linux kernel header 5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** of the same name, to make information necessary for userspace to 6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** call into the kernel available to libc. It contains only constants, 7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** structures, and macros generated from the original header, and thus, 8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** contains no copyrightable information. 9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** To edit the content of this header, modify the corresponding 11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** source file (e.g. under external/kernel-headers/original/) then 12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** run bionic/libc/kernel/tools/update_all.py 13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** Any manual change here will be lost the next time this script will 15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** be run. You've been warned! 16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng *** 17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng **************************************************************************** 18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/ 19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef _UAPI_IPTABLES_H 20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI_IPTABLES_H 21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h> 22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/compiler.h> 23106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#include <linux/if.h> 24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/netfilter_ipv4.h> 25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/netfilter/x_tables.h> 26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN 27106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN 28655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_match xt_match 29655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_target xt_target 30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_table xt_table 31106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define ipt_get_revision xt_get_revision 32655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_entry_match xt_entry_match 33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_entry_target xt_entry_target 34655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_standard_target xt_standard_target 35106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define ipt_error_target xt_error_target 36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_counters xt_counters 37655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_CONTINUE XT_CONTINUE 38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_RETURN XT_RETURN 39106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#include <linux/netfilter/xt_tcpudp.h> 40655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_udp xt_udp 41655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_tcp xt_tcp 42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_TCP_INV_SRCPT XT_TCP_INV_SRCPT 43106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IPT_TCP_INV_DSTPT XT_TCP_INV_DSTPT 44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_TCP_INV_FLAGS XT_TCP_INV_FLAGS 45655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_TCP_INV_OPTION XT_TCP_INV_OPTION 46655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_TCP_INV_MASK XT_TCP_INV_MASK 47106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IPT_UDP_INV_SRCPT XT_UDP_INV_SRCPT 48655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_UDP_INV_DSTPT XT_UDP_INV_DSTPT 49655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_UDP_INV_MASK XT_UDP_INV_MASK 50655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ipt_counters_info xt_counters_info 51106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IPT_STANDARD_TARGET XT_STANDARD_TARGET 52655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_ERROR_TARGET XT_ERROR_TARGET 53d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IPT_MATCH_ITERATE(e,fn,args...) XT_MATCH_ITERATE(struct ipt_entry, e, fn, ##args) 54d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IPT_ENTRY_ITERATE(entries,size,fn,args...) XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ##args) 55106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct ipt_ip { 56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct in_addr src, dst; 57d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct in_addr smsk, dmsk; 58d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao char iniface[IFNAMSIZ], outiface[IFNAMSIZ]; 59106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ]; 60d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u16 proto; 61d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 flags; 62d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 invflags; 63106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris}; 64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_F_FRAG 0x01 65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_F_GOTO 0x02 66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_F_MASK 0x03 67106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IPT_INV_VIA_IN 0x01 68655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_INV_VIA_OUT 0x02 69655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_INV_TOS 0x04 70655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_INV_SRCIP 0x08 71106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IPT_INV_DSTIP 0x10 72655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_INV_FRAG 0x20 73655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_INV_PROTO XT_INV_PROTO 74655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_INV_MASK 0x7F 75106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct ipt_entry { 76d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct ipt_ip ip; 77d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int nfcache; 78d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u16 target_offset; 79106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris __u16 next_offset; 80d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int comefrom; 81d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct xt_counters counters; 82d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned char elems[0]; 83106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris}; 84655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_BASE_CTL 64 85655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_SO_SET_REPLACE (IPT_BASE_CTL) 86655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_SO_SET_ADD_COUNTERS (IPT_BASE_CTL + 1) 87106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IPT_SO_SET_MAX IPT_SO_SET_ADD_COUNTERS 88655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_SO_GET_INFO (IPT_BASE_CTL) 89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_SO_GET_ENTRIES (IPT_BASE_CTL + 1) 90655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_SO_GET_REVISION_MATCH (IPT_BASE_CTL + 2) 91106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IPT_SO_GET_REVISION_TARGET (IPT_BASE_CTL + 3) 92655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_SO_GET_MAX IPT_SO_GET_REVISION_TARGET 93655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ipt_icmp { 94d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 type; 95106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris __u8 code[2]; 96d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 invflags; 97655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 98655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IPT_ICMP_INV 0x01 99106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct ipt_getinfo { 100d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao char name[XT_TABLE_MAXNAMELEN]; 101d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int valid_hooks; 102d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int hook_entry[NF_INET_NUMHOOKS]; 103106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris unsigned int underflow[NF_INET_NUMHOOKS]; 104d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int num_entries; 105d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int size; 106655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 107106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct ipt_replace { 108d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao char name[XT_TABLE_MAXNAMELEN]; 109d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int valid_hooks; 110d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int num_entries; 111106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris unsigned int size; 112d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int hook_entry[NF_INET_NUMHOOKS]; 113d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int underflow[NF_INET_NUMHOOKS]; 114d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int num_counters; 115106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris struct xt_counters __user * counters; 116d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct ipt_entry entries[0]; 117655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 118655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ipt_get_entries { 119106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris char name[XT_TABLE_MAXNAMELEN]; 120d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int size; 121d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct ipt_entry entrytable[0]; 122655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 123106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstatic __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) { 124d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao return(void *) e + e->target_offset; 125655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} 126655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 127