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_IP6_TABLES_H 20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI_IP6_TABLES_H 21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h> 22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/compiler.h> 23106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#include <linux/if.h> 24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/netfilter_ipv6.h> 25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/netfilter/x_tables.h> 26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN 27106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN 28655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_match xt_match 29655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_target xt_target 30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_table xt_table 31106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define ip6t_get_revision xt_get_revision 32655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_entry_match xt_entry_match 33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_entry_target xt_entry_target 34655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_standard_target xt_standard_target 35106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define ip6t_error_target xt_error_target 36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_counters xt_counters 37655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_CONTINUE XT_CONTINUE 38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_RETURN XT_RETURN 39106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#include <linux/netfilter/xt_tcpudp.h> 40655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_tcp xt_tcp 41655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_udp xt_udp 42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT 43106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT 44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS 45655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION 46655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_TCP_INV_MASK XT_TCP_INV_MASK 47106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT 48655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT 49655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_UDP_INV_MASK XT_UDP_INV_MASK 50655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ip6t_counters_info xt_counters_info 51106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_STANDARD_TARGET XT_STANDARD_TARGET 52655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_ERROR_TARGET XT_ERROR_TARGET 53d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IP6T_MATCH_ITERATE(e,fn,args...) XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ##args) 54d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IP6T_ENTRY_ITERATE(entries,size,fn,args...) XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ##args) 55106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct ip6t_ip6 { 56d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct in6_addr src, dst; 57d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct in6_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 tos; 62d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 flags; 63106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris __u8 invflags; 64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_F_PROTO 0x01 66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_F_TOS 0x02 67106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_F_GOTO 0x04 68655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_F_MASK 0x07 69655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_INV_VIA_IN 0x01 70655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_INV_VIA_OUT 0x02 71106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_INV_TOS 0x04 72655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_INV_SRCIP 0x08 73655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_INV_DSTIP 0x10 74655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_INV_FRAG 0x20 75106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_INV_PROTO XT_INV_PROTO 76655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_INV_MASK 0x7F 77655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ip6t_entry { 78d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct ip6t_ip6 ipv6; 79106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris unsigned int nfcache; 80d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u16 target_offset; 81d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u16 next_offset; 82d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int comefrom; 83106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris struct xt_counters counters; 84d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned char elems[0]; 85655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 86655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ip6t_standard { 87106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris struct ip6t_entry entry; 88d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct xt_standard_target target; 89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 90655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ip6t_error { 91106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris struct ip6t_entry entry; 92d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct xt_error_target target; 93655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 94d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IP6T_ENTRY_INIT(__size) \ 95d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao{.target_offset = sizeof(struct ip6t_entry),.next_offset = (__size), \ 96d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao} 97d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IP6T_STANDARD_INIT(__verdict) \ 98d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao{.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)),.target = XT_TARGET_INIT(XT_STANDARD_TARGET, sizeof(struct xt_standard_target)),.target.verdict = - (__verdict) - 1, \ 99d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao} 100d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define IP6T_ERROR_INIT \ 101d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao{.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)),.target = XT_TARGET_INIT(XT_ERROR_TARGET, sizeof(struct xt_error_target)),.target.errorname = "ERROR", \ 102d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao} 103655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_BASE_CTL 64 104655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_SO_SET_REPLACE (IP6T_BASE_CTL) 105106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_SO_SET_ADD_COUNTERS (IP6T_BASE_CTL + 1) 106655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_SO_SET_MAX IP6T_SO_SET_ADD_COUNTERS 107655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_SO_GET_INFO (IP6T_BASE_CTL) 108655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_SO_GET_ENTRIES (IP6T_BASE_CTL + 1) 109106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#define IP6T_SO_GET_REVISION_MATCH (IP6T_BASE_CTL + 4) 110655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_SO_GET_REVISION_TARGET (IP6T_BASE_CTL + 5) 111655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_SO_GET_MAX IP6T_SO_GET_REVISION_TARGET 112655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_SO_ORIGINAL_DST 80 113106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferrisstruct ip6t_icmp { 114d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 type; 115d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 code[2]; 116d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao __u8 invflags; 117106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris}; 118655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define IP6T_ICMP_INV 0x01 119655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ip6t_getinfo { 120d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao char name[XT_TABLE_MAXNAMELEN]; 121106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris unsigned int valid_hooks; 122d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int hook_entry[NF_INET_NUMHOOKS]; 123d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int underflow[NF_INET_NUMHOOKS]; 124d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int num_entries; 125106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris unsigned int size; 126655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 127655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ip6t_replace { 128d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao char name[XT_TABLE_MAXNAMELEN]; 129106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris unsigned int valid_hooks; 130d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int num_entries; 131d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int size; 132d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int hook_entry[NF_INET_NUMHOOKS]; 133106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris unsigned int underflow[NF_INET_NUMHOOKS]; 134d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int num_counters; 135d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct xt_counters __user * counters; 136d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao struct ip6t_entry entries[0]; 137106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris}; 138655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct ip6t_get_entries { 139d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao char name[XT_TABLE_MAXNAMELEN]; 140d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao unsigned int size; 141106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris struct ip6t_entry entrytable[0]; 142655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 143d7db594b8d1dab36b711bd887a9dd21675c87243Tao Baostatic __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) { 144d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao return(void *) e + e->target_offset; 145106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris} 146655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 147