111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   To edit the content of this header, modify the corresponding
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   source file (e.g. under external/kernel-headers/original/) then
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   run bionic/libc/kernel/tools/update_all.py
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   Any manual change here will be lost the next time this script will
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   be run. You've been warned!
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _UAPI_X_TABLES_H
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _UAPI_X_TABLES_H
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/kernel.h>
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/types.h>
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_FUNCTION_MAXNAMELEN 30
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_EXTENSION_MAXNAMELEN 29
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_TABLE_MAXNAMELEN 32
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct xt_entry_match {
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union {
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct {
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 match_size;
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char name[XT_EXTENSION_MAXNAMELEN];
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 revision;
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } user;
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct {
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 match_size;
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xt_match *match;
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } kernel;
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 match_size;
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } u;
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char data[0];
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct xt_entry_target {
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union {
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct {
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 target_size;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char name[XT_EXTENSION_MAXNAMELEN];
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 revision;
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } user;
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct {
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 target_size;
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xt_target *target;
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } kernel;
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 target_size;
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert } u;
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char data[0];
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_TARGET_INIT(__name, __size)  {   .target.u.user = {   .target_size = XT_ALIGN(__size),   .name = __name,   },  }
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct xt_standard_target {
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xt_entry_target target;
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int verdict;
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct xt_error_target {
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xt_entry_target target;
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char errorname[XT_FUNCTION_MAXNAMELEN];
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct xt_get_revision {
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char name[XT_EXTENSION_MAXNAMELEN];
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 revision;
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_CONTINUE 0xFFFFFFFF
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_RETURN (-NF_REPEAT - 1)
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct _xt_align {
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 u8;
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 u16;
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 u32;
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 u64;
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_ALIGN(s) __ALIGN_KERNEL((s), __alignof__(struct _xt_align))
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_STANDARD_TARGET ""
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_ERROR_TARGET "ERROR"
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0)
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0)
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct xt_counters {
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 pcnt, bcnt;
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct xt_counters_info {
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char name[XT_TABLE_MAXNAMELEN];
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int num_counters;
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xt_counters counters[0];
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_INV_PROTO 0x40
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#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;  })
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#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;  })
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XT_ENTRY_ITERATE(type, entries, size, fn, args...)   XT_ENTRY_ITERATE_CONTINUE(type, entries, size, 0, fn, args)
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#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))
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#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))
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
116