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_X_TABLES_H 20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define _UAPI_X_TABLES_H 21655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/kernel.h> 22655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#include <linux/types.h> 23655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 24655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_FUNCTION_MAXNAMELEN 30 25655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_EXTENSION_MAXNAMELEN 29 26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_TABLE_MAXNAMELEN 32 27655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct xt_entry_match { 28655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 29655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng union { 30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct { 31655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u16 match_size; 32655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng char name[XT_EXTENSION_MAXNAMELEN]; 33655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 34655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u8 revision; 35655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng } user; 36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct { 37655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u16 match_size; 38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 39655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct xt_match *match; 40655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng } kernel; 41655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u16 match_size; 42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng } u; 43655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng unsigned char data[0]; 45655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 46655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct xt_entry_target { 47655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng union { 48655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 49655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct { 50655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u16 target_size; 51655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng char name[XT_EXTENSION_MAXNAMELEN]; 52655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u8 revision; 53655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 54655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng } user; 55655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct { 56655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u16 target_size; 57655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct xt_target *target; 58655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 59655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng } kernel; 60655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u16 target_size; 61655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng } u; 62655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng unsigned char data[0]; 63655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 64655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 65655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_TARGET_INIT(__name, __size) { .target.u.user = { .target_size = XT_ALIGN(__size), .name = __name, }, } 66655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct xt_standard_target { 67655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct xt_entry_target target; 68655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 69655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng int verdict; 70655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 71655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct xt_error_target { 72655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct xt_entry_target target; 73655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 74655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng char errorname[XT_FUNCTION_MAXNAMELEN]; 75655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 76655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct xt_get_revision { 77655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng char name[XT_EXTENSION_MAXNAMELEN]; 78655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 79655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u8 revision; 80655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 81655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_CONTINUE 0xFFFFFFFF 82655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_RETURN (-NF_REPEAT - 1) 83655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 84655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct _xt_align { 85655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u8 u8; 86655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u16 u16; 87655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u32 u32; 88655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 89655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u64 u64; 90655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 91655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _xt_align)) 92655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_STANDARD_TARGET "" 93655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 94655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_ERROR_TARGET "ERROR" 95655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0) 96655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0) 97655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct xt_counters { 98655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 99655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng __u64 pcnt, bcnt; 100655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 101655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengstruct xt_counters_info { 102655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng char name[XT_TABLE_MAXNAMELEN]; 103655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 104655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng unsigned int num_counters; 105655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng struct xt_counters counters[0]; 106655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng}; 107655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_INV_PROTO 0x40 108655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 109655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_MATCH_ITERATE(type, e, fn, args...) ({ unsigned int __i; int __ret = 0; struct xt_entry_match *__m; for (__i = sizeof(type); __i < (e)->target_offset; __i += __m->u.match_size) { __m = (void *)e + __i; __ret = fn(__m , ## args); if (__ret != 0) break; } __ret; }) 110655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_ENTRY_ITERATE_CONTINUE(type, entries, size, n, fn, args...) ({ unsigned int __i, __n; int __ret = 0; type *__entry; for (__i = 0, __n = 0; __i < (size); __i += __entry->next_offset, __n++) { __entry = (void *)(entries) + __i; if (__n < n) continue; __ret = fn(__entry , ## args); if (__ret != 0) break; } __ret; }) 111655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define XT_ENTRY_ITERATE(type, entries, size, fn, args...) XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args) 112655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define xt_entry_foreach(pos, ehead, esize) for ((pos) = (typeof(pos))(ehead); (pos) < (typeof(pos))((char *)(ehead) + (esize)); (pos) = (typeof(pos))((char *)(pos) + (pos)->next_offset)) 113655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ 114655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define xt_ematch_foreach(pos, entry) for ((pos) = (struct xt_entry_match *)entry->elems; (pos) < (struct xt_entry_match *)((char *)(entry) + (entry)->target_offset); (pos) = (struct xt_entry_match *)((char *)(pos) + (pos)->u.match_size)) 115655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif 116