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 ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _IP6_TABLES_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _IP6_TABLES_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/compiler.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/netfilter_ipv6.h>
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/netfilter/x_tables.h>
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_match xt_match
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_target xt_target
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_table xt_table
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_get_revision xt_get_revision
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip6t_ip6 {
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in6_addr src, dst;
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct in6_addr smsk, dmsk;
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int16_t proto;
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int8_t tos;
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int8_t flags;
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int8_t invflags;
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_entry_match xt_entry_match
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_entry_target xt_entry_target
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_standard_target xt_standard_target
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_counters xt_counters
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_F_PROTO 0x01
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_F_TOS 0x02
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_F_GOTO 0x04
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_F_MASK 0x07
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_INV_VIA_IN 0x01
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_INV_VIA_OUT 0x02
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_INV_TOS 0x04
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_INV_SRCIP 0x08
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_INV_DSTIP 0x10
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_INV_FRAG 0x20
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_INV_PROTO XT_INV_PROTO
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_INV_MASK 0x7F
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip6t_entry
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct ip6t_ip6 ipv6;
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int nfcache;
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int16_t target_offset;
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int16_t next_offset;
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int comefrom;
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xt_counters counters;
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char elems[0];
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_BASE_CTL XT_BASE_CTL
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_SO_SET_REPLACE XT_SO_SET_REPLACE
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_SO_SET_ADD_COUNTERS XT_SO_SET_ADD_COUNTERS
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_SO_SET_MAX XT_SO_SET_MAX
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_SO_GET_INFO XT_SO_GET_INFO
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_SO_GET_ENTRIES XT_SO_GET_ENTRIES
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_SO_GET_REVISION_MATCH XT_SO_GET_REVISION_MATCH
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_SO_GET_REVISION_TARGET XT_SO_GET_REVISION_TARGET
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_SO_GET_MAX XT_SO_GET_REVISION_TARGET
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_CONTINUE XT_CONTINUE
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_RETURN XT_RETURN
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/netfilter/xt_tcpudp.h>
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_tcp xt_tcp
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_udp xt_udp
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_TCP_INV_MASK XT_TCP_INV_MASK
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_UDP_INV_MASK XT_UDP_INV_MASK
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip6t_icmp
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int8_t type;
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int8_t code[2];
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert u_int8_t invflags;
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_ICMP_INV 0x01
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip6t_getinfo
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char name[IP6T_TABLE_MAXNAMELEN];
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int valid_hooks;
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int hook_entry[NF_IP6_NUMHOOKS];
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int underflow[NF_IP6_NUMHOOKS];
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int num_entries;
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int size;
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip6t_replace
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char name[IP6T_TABLE_MAXNAMELEN];
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int valid_hooks;
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int num_entries;
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int size;
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int hook_entry[NF_IP6_NUMHOOKS];
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int underflow[NF_IP6_NUMHOOKS];
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int num_counters;
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct xt_counters __user *counters;
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct ip6t_entry entries[0];
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ip6t_counters_info xt_counters_info
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ip6t_get_entries
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char name[IP6T_TABLE_MAXNAMELEN];
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int size;
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct ip6t_entry entrytable[0];
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_ERROR_TARGET XT_ERROR_TARGET
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_MATCH_ITERATE(e, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ip6t_entry_match *__m;     for (__i = sizeof(struct ip6t_entry);   __i < (e)->target_offset;   __i += __m->u.match_size) {   __m = (void *)(e) + __i;     __ret = fn(__m , ## args);   if (__ret != 0)   break;   }   __ret;  })
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define IP6T_ENTRY_ITERATE(entries, size, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ip6t_entry *__e;     for (__i = 0; __i < (size); __i += __e->next_offset) {   __e = (void *)(entries) + __i;     __ret = fn(__e , ## args);   if (__ret != 0)   break;   }   __ret;  })
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
179