Linux 6.1.31 headers
This commit is contained in:
270
linux/netfilter_ipv6/ip6_tables.h
Normal file
270
linux/netfilter_ipv6/ip6_tables.h
Normal file
@ -0,0 +1,270 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* 25-Jul-1998 Major changes to allow for ip chain table
|
||||
*
|
||||
* 3-Jan-2000 Named tables to allow packet selection for different uses.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Format of an IP6 firewall descriptor
|
||||
*
|
||||
* src, dst, src_mask, dst_mask are always stored in network byte order.
|
||||
* flags are stored in host byte order (of course).
|
||||
* Port numbers are stored in HOST byte order.
|
||||
*/
|
||||
|
||||
#ifndef _IP6_TABLES_H
|
||||
#define _IP6_TABLES_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#include <linux/if.h>
|
||||
#include <linux/netfilter_ipv6.h>
|
||||
|
||||
#include <linux/netfilter/x_tables.h>
|
||||
|
||||
#define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
|
||||
#define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
|
||||
#define ip6t_match xt_match
|
||||
#define ip6t_target xt_target
|
||||
#define ip6t_table xt_table
|
||||
#define ip6t_get_revision xt_get_revision
|
||||
#define ip6t_entry_match xt_entry_match
|
||||
#define ip6t_entry_target xt_entry_target
|
||||
#define ip6t_standard_target xt_standard_target
|
||||
#define ip6t_error_target xt_error_target
|
||||
#define ip6t_counters xt_counters
|
||||
#define IP6T_CONTINUE XT_CONTINUE
|
||||
#define IP6T_RETURN XT_RETURN
|
||||
|
||||
/* Pre-iptables-1.4.0 */
|
||||
#include <linux/netfilter/xt_tcpudp.h>
|
||||
#define ip6t_tcp xt_tcp
|
||||
#define ip6t_udp xt_udp
|
||||
#define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT
|
||||
#define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT
|
||||
#define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS
|
||||
#define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION
|
||||
#define IP6T_TCP_INV_MASK XT_TCP_INV_MASK
|
||||
#define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT
|
||||
#define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT
|
||||
#define IP6T_UDP_INV_MASK XT_UDP_INV_MASK
|
||||
|
||||
#define ip6t_counters_info xt_counters_info
|
||||
#define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
|
||||
#define IP6T_ERROR_TARGET XT_ERROR_TARGET
|
||||
#define IP6T_MATCH_ITERATE(e, fn, args...) \
|
||||
XT_MATCH_ITERATE(struct ip6t_entry, e, fn, ## args)
|
||||
#define IP6T_ENTRY_ITERATE(entries, size, fn, args...) \
|
||||
XT_ENTRY_ITERATE(struct ip6t_entry, entries, size, fn, ## args)
|
||||
|
||||
/* Yes, Virginia, you have to zero the padding. */
|
||||
struct ip6t_ip6 {
|
||||
/* Source and destination IP6 addr */
|
||||
struct in6_addr src, dst;
|
||||
/* Mask for src and dest IP6 addr */
|
||||
struct in6_addr smsk, dmsk;
|
||||
char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
|
||||
unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
|
||||
|
||||
/* Upper protocol number
|
||||
* - The allowed value is 0 (any) or protocol number of last parsable
|
||||
* header, which is 50 (ESP), 59 (No Next Header), 135 (MH), or
|
||||
* the non IPv6 extension headers.
|
||||
* - The protocol numbers of IPv6 extension headers except of ESP and
|
||||
* MH do not match any packets.
|
||||
* - You also need to set IP6T_FLAGS_PROTO to "flags" to check protocol.
|
||||
*/
|
||||
__u16 proto;
|
||||
/* TOS to match iff flags & IP6T_F_TOS */
|
||||
__u8 tos;
|
||||
|
||||
/* Flags word */
|
||||
__u8 flags;
|
||||
/* Inverse flags */
|
||||
__u8 invflags;
|
||||
};
|
||||
|
||||
/* Values for "flag" field in struct ip6t_ip6 (general ip6 structure). */
|
||||
#define IP6T_F_PROTO 0x01 /* Set if rule cares about upper
|
||||
protocols */
|
||||
#define IP6T_F_TOS 0x02 /* Match the TOS. */
|
||||
#define IP6T_F_GOTO 0x04 /* Set if jump is a goto */
|
||||
#define IP6T_F_MASK 0x07 /* All possible flag bits mask. */
|
||||
|
||||
/* Values for "inv" field in struct ip6t_ip6. */
|
||||
#define IP6T_INV_VIA_IN 0x01 /* Invert the sense of IN IFACE. */
|
||||
#define IP6T_INV_VIA_OUT 0x02 /* Invert the sense of OUT IFACE */
|
||||
#define IP6T_INV_TOS 0x04 /* Invert the sense of TOS. */
|
||||
#define IP6T_INV_SRCIP 0x08 /* Invert the sense of SRC IP. */
|
||||
#define IP6T_INV_DSTIP 0x10 /* Invert the sense of DST OP. */
|
||||
#define IP6T_INV_FRAG 0x20 /* Invert the sense of FRAG. */
|
||||
#define IP6T_INV_PROTO XT_INV_PROTO
|
||||
#define IP6T_INV_MASK 0x7F /* All possible flag bits mask. */
|
||||
|
||||
/* This structure defines each of the firewall rules. Consists of 3
|
||||
parts which are 1) general IP header stuff 2) match specific
|
||||
stuff 3) the target to perform if the rule matches */
|
||||
struct ip6t_entry {
|
||||
struct ip6t_ip6 ipv6;
|
||||
|
||||
/* Mark with fields that we care about. */
|
||||
unsigned int nfcache;
|
||||
|
||||
/* Size of ipt_entry + matches */
|
||||
__u16 target_offset;
|
||||
/* Size of ipt_entry + matches + target */
|
||||
__u16 next_offset;
|
||||
|
||||
/* Back pointer */
|
||||
unsigned int comefrom;
|
||||
|
||||
/* Packet and byte counters. */
|
||||
struct xt_counters counters;
|
||||
|
||||
/* The matches (if any), then the target. */
|
||||
unsigned char elems[0];
|
||||
};
|
||||
|
||||
/* Standard entry */
|
||||
struct ip6t_standard {
|
||||
struct ip6t_entry entry;
|
||||
struct xt_standard_target target;
|
||||
};
|
||||
|
||||
struct ip6t_error {
|
||||
struct ip6t_entry entry;
|
||||
struct xt_error_target target;
|
||||
};
|
||||
|
||||
#define IP6T_ENTRY_INIT(__size) \
|
||||
{ \
|
||||
.target_offset = sizeof(struct ip6t_entry), \
|
||||
.next_offset = (__size), \
|
||||
}
|
||||
|
||||
#define IP6T_STANDARD_INIT(__verdict) \
|
||||
{ \
|
||||
.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_standard)), \
|
||||
.target = XT_TARGET_INIT(XT_STANDARD_TARGET, \
|
||||
sizeof(struct xt_standard_target)), \
|
||||
.target.verdict = -(__verdict) - 1, \
|
||||
}
|
||||
|
||||
#define IP6T_ERROR_INIT \
|
||||
{ \
|
||||
.entry = IP6T_ENTRY_INIT(sizeof(struct ip6t_error)), \
|
||||
.target = XT_TARGET_INIT(XT_ERROR_TARGET, \
|
||||
sizeof(struct xt_error_target)), \
|
||||
.target.errorname = "ERROR", \
|
||||
}
|
||||
|
||||
/*
|
||||
* New IP firewall options for [gs]etsockopt at the RAW IP level.
|
||||
* Unlike BSD Linux inherits IP options so you don't have to use
|
||||
* a raw socket for this. Instead we check rights in the calls.
|
||||
*
|
||||
* ATTENTION: check linux/in6.h before adding new number here.
|
||||
*/
|
||||
#define IP6T_BASE_CTL 64
|
||||
|
||||
#define IP6T_SO_SET_REPLACE (IP6T_BASE_CTL)
|
||||
#define IP6T_SO_SET_ADD_COUNTERS (IP6T_BASE_CTL + 1)
|
||||
#define IP6T_SO_SET_MAX IP6T_SO_SET_ADD_COUNTERS
|
||||
|
||||
#define IP6T_SO_GET_INFO (IP6T_BASE_CTL)
|
||||
#define IP6T_SO_GET_ENTRIES (IP6T_BASE_CTL + 1)
|
||||
#define IP6T_SO_GET_REVISION_MATCH (IP6T_BASE_CTL + 4)
|
||||
#define IP6T_SO_GET_REVISION_TARGET (IP6T_BASE_CTL + 5)
|
||||
#define IP6T_SO_GET_MAX IP6T_SO_GET_REVISION_TARGET
|
||||
|
||||
/* obtain original address if REDIRECT'd connection */
|
||||
#define IP6T_SO_ORIGINAL_DST 80
|
||||
|
||||
/* ICMP matching stuff */
|
||||
struct ip6t_icmp {
|
||||
__u8 type; /* type to match */
|
||||
__u8 code[2]; /* range of code */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
};
|
||||
|
||||
/* Values for "inv" field for struct ipt_icmp. */
|
||||
#define IP6T_ICMP_INV 0x01 /* Invert the sense of type/code test */
|
||||
|
||||
/* The argument to IP6T_SO_GET_INFO */
|
||||
struct ip6t_getinfo {
|
||||
/* Which table: caller fills this in. */
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* Kernel fills these in. */
|
||||
/* Which hook entry points are valid: bitmask */
|
||||
unsigned int valid_hooks;
|
||||
|
||||
/* Hook entry points: one per netfilter hook. */
|
||||
unsigned int hook_entry[NF_INET_NUMHOOKS];
|
||||
|
||||
/* Underflow points. */
|
||||
unsigned int underflow[NF_INET_NUMHOOKS];
|
||||
|
||||
/* Number of entries */
|
||||
unsigned int num_entries;
|
||||
|
||||
/* Size of entries. */
|
||||
unsigned int size;
|
||||
};
|
||||
|
||||
/* The argument to IP6T_SO_SET_REPLACE. */
|
||||
struct ip6t_replace {
|
||||
/* Which table. */
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* Which hook entry points are valid: bitmask. You can't
|
||||
change this. */
|
||||
unsigned int valid_hooks;
|
||||
|
||||
/* Number of entries */
|
||||
unsigned int num_entries;
|
||||
|
||||
/* Total size of new entries */
|
||||
unsigned int size;
|
||||
|
||||
/* Hook entry points. */
|
||||
unsigned int hook_entry[NF_INET_NUMHOOKS];
|
||||
|
||||
/* Underflow points. */
|
||||
unsigned int underflow[NF_INET_NUMHOOKS];
|
||||
|
||||
/* Information about old entries: */
|
||||
/* Number of counters (must be equal to current number of entries). */
|
||||
unsigned int num_counters;
|
||||
/* The old entries' counters. */
|
||||
struct xt_counters *counters;
|
||||
|
||||
/* The entries (hang off end: not really an array). */
|
||||
struct ip6t_entry entries[];
|
||||
};
|
||||
|
||||
/* The argument to IP6T_SO_GET_ENTRIES. */
|
||||
struct ip6t_get_entries {
|
||||
/* Which table: user fills this in. */
|
||||
char name[XT_TABLE_MAXNAMELEN];
|
||||
|
||||
/* User fills this in: total entry size. */
|
||||
unsigned int size;
|
||||
|
||||
/* The entries. */
|
||||
struct ip6t_entry entrytable[];
|
||||
};
|
||||
|
||||
/* Helper functions */
|
||||
static __inline__ struct xt_entry_target *
|
||||
ip6t_get_target(struct ip6t_entry *e)
|
||||
{
|
||||
return (struct xt_entry_target *)((char *)e + e->target_offset);
|
||||
}
|
||||
|
||||
/*
|
||||
* Main firewall chains definitions and global var's definitions.
|
||||
*/
|
||||
|
||||
#endif /* _IP6_TABLES_H */
|
25
linux/netfilter_ipv6/ip6t_HL.h
Normal file
25
linux/netfilter_ipv6/ip6t_HL.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* Hop Limit modification module for ip6tables
|
||||
* Maciej Soltysiak <solt@dns.toxicfilms.tv>
|
||||
* Based on HW's TTL module */
|
||||
|
||||
#ifndef _IP6T_HL_H
|
||||
#define _IP6T_HL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
IP6T_HL_SET = 0,
|
||||
IP6T_HL_INC,
|
||||
IP6T_HL_DEC
|
||||
};
|
||||
|
||||
#define IP6T_HL_MAXMODE IP6T_HL_DEC
|
||||
|
||||
struct ip6t_HL_info {
|
||||
__u8 mode;
|
||||
__u8 hop_limit;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
20
linux/netfilter_ipv6/ip6t_LOG.h
Normal file
20
linux/netfilter_ipv6/ip6t_LOG.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _IP6T_LOG_H
|
||||
#define _IP6T_LOG_H
|
||||
|
||||
/* make sure not to change this without changing netfilter.h:NF_LOG_* (!) */
|
||||
#define IP6T_LOG_TCPSEQ 0x01 /* Log TCP sequence numbers */
|
||||
#define IP6T_LOG_TCPOPT 0x02 /* Log TCP options */
|
||||
#define IP6T_LOG_IPOPT 0x04 /* Log IP options */
|
||||
#define IP6T_LOG_UID 0x08 /* Log UID owning local socket */
|
||||
#define IP6T_LOG_NFLOG 0x10 /* Unsupported, don't use */
|
||||
#define IP6T_LOG_MACDECODE 0x20 /* Decode MAC header */
|
||||
#define IP6T_LOG_MASK 0x2f
|
||||
|
||||
struct ip6t_log_info {
|
||||
unsigned char level;
|
||||
unsigned char logflags;
|
||||
char prefix[30];
|
||||
};
|
||||
|
||||
#endif /* _IP6T_LOG_H */
|
17
linux/netfilter_ipv6/ip6t_NPT.h
Normal file
17
linux/netfilter_ipv6/ip6t_NPT.h
Normal file
@ -0,0 +1,17 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef __NETFILTER_IP6T_NPT
|
||||
#define __NETFILTER_IP6T_NPT
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netfilter.h>
|
||||
|
||||
struct ip6t_npt_tginfo {
|
||||
union nf_inet_addr src_pfx;
|
||||
union nf_inet_addr dst_pfx;
|
||||
__u8 src_pfx_len;
|
||||
__u8 dst_pfx_len;
|
||||
/* Used internally by the kernel */
|
||||
__sum16 adjustment;
|
||||
};
|
||||
|
||||
#endif /* __NETFILTER_IP6T_NPT */
|
23
linux/netfilter_ipv6/ip6t_REJECT.h
Normal file
23
linux/netfilter_ipv6/ip6t_REJECT.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _IP6T_REJECT_H
|
||||
#define _IP6T_REJECT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum ip6t_reject_with {
|
||||
IP6T_ICMP6_NO_ROUTE,
|
||||
IP6T_ICMP6_ADM_PROHIBITED,
|
||||
IP6T_ICMP6_NOT_NEIGHBOUR,
|
||||
IP6T_ICMP6_ADDR_UNREACH,
|
||||
IP6T_ICMP6_PORT_UNREACH,
|
||||
IP6T_ICMP6_ECHOREPLY,
|
||||
IP6T_TCP_RESET,
|
||||
IP6T_ICMP6_POLICY_FAIL,
|
||||
IP6T_ICMP6_REJECT_ROUTE
|
||||
};
|
||||
|
||||
struct ip6t_reject_info {
|
||||
__u32 with; /* reject type */
|
||||
};
|
||||
|
||||
#endif /*_IP6T_REJECT_H*/
|
23
linux/netfilter_ipv6/ip6t_ah.h
Normal file
23
linux/netfilter_ipv6/ip6t_ah.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _IP6T_AH_H
|
||||
#define _IP6T_AH_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct ip6t_ah {
|
||||
__u32 spis[2]; /* Security Parameter Index */
|
||||
__u32 hdrlen; /* Header Length */
|
||||
__u8 hdrres; /* Test of the Reserved Filed */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
};
|
||||
|
||||
#define IP6T_AH_SPI 0x01
|
||||
#define IP6T_AH_LEN 0x02
|
||||
#define IP6T_AH_RES 0x04
|
||||
|
||||
/* Values for "invflags" field in struct ip6t_ah. */
|
||||
#define IP6T_AH_INV_SPI 0x01 /* Invert the sense of spi. */
|
||||
#define IP6T_AH_INV_LEN 0x02 /* Invert the sense of length. */
|
||||
#define IP6T_AH_INV_MASK 0x03 /* All possible flags. */
|
||||
|
||||
#endif /*_IP6T_AH_H*/
|
26
linux/netfilter_ipv6/ip6t_frag.h
Normal file
26
linux/netfilter_ipv6/ip6t_frag.h
Normal file
@ -0,0 +1,26 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _IP6T_FRAG_H
|
||||
#define _IP6T_FRAG_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct ip6t_frag {
|
||||
__u32 ids[2]; /* Identification range */
|
||||
__u32 hdrlen; /* Header Length */
|
||||
__u8 flags; /* Flags */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
};
|
||||
|
||||
#define IP6T_FRAG_IDS 0x01
|
||||
#define IP6T_FRAG_LEN 0x02
|
||||
#define IP6T_FRAG_RES 0x04
|
||||
#define IP6T_FRAG_FST 0x08
|
||||
#define IP6T_FRAG_MF 0x10
|
||||
#define IP6T_FRAG_NMF 0x20
|
||||
|
||||
/* Values for "invflags" field in struct ip6t_frag. */
|
||||
#define IP6T_FRAG_INV_IDS 0x01 /* Invert the sense of ids. */
|
||||
#define IP6T_FRAG_INV_LEN 0x02 /* Invert the sense of length. */
|
||||
#define IP6T_FRAG_INV_MASK 0x03 /* All possible flags. */
|
||||
|
||||
#endif /*_IP6T_FRAG_H*/
|
25
linux/netfilter_ipv6/ip6t_hl.h
Normal file
25
linux/netfilter_ipv6/ip6t_hl.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* ip6tables module for matching the Hop Limit value
|
||||
* Maciej Soltysiak <solt@dns.toxicfilms.tv>
|
||||
* Based on HW's ttl module */
|
||||
|
||||
#ifndef _IP6T_HL_H
|
||||
#define _IP6T_HL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
IP6T_HL_EQ = 0, /* equals */
|
||||
IP6T_HL_NE, /* not equals */
|
||||
IP6T_HL_LT, /* less than */
|
||||
IP6T_HL_GT, /* greater than */
|
||||
};
|
||||
|
||||
|
||||
struct ip6t_hl_info {
|
||||
__u8 mode;
|
||||
__u8 hop_limit;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
29
linux/netfilter_ipv6/ip6t_ipv6header.h
Normal file
29
linux/netfilter_ipv6/ip6t_ipv6header.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* ipv6header match - matches IPv6 packets based
|
||||
on whether they contain certain headers */
|
||||
|
||||
/* Original idea: Brad Chapman
|
||||
* Rewritten by: Andras Kis-Szabo <kisza@sch.bme.hu> */
|
||||
|
||||
|
||||
#ifndef __IPV6HEADER_H
|
||||
#define __IPV6HEADER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct ip6t_ipv6header_info {
|
||||
__u8 matchflags;
|
||||
__u8 invflags;
|
||||
__u8 modeflag;
|
||||
};
|
||||
|
||||
#define MASK_HOPOPTS 128
|
||||
#define MASK_DSTOPTS 64
|
||||
#define MASK_ROUTING 32
|
||||
#define MASK_FRAGMENT 16
|
||||
#define MASK_AH 8
|
||||
#define MASK_ESP 4
|
||||
#define MASK_NONE 2
|
||||
#define MASK_PROTO 1
|
||||
|
||||
#endif /* __IPV6HEADER_H */
|
17
linux/netfilter_ipv6/ip6t_mh.h
Normal file
17
linux/netfilter_ipv6/ip6t_mh.h
Normal file
@ -0,0 +1,17 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _IP6T_MH_H
|
||||
#define _IP6T_MH_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* MH matching stuff */
|
||||
struct ip6t_mh {
|
||||
__u8 types[2]; /* MH type range */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
};
|
||||
|
||||
/* Values for "invflags" field in struct ip6t_mh. */
|
||||
#define IP6T_MH_INV_TYPE 0x01 /* Invert the sense of type. */
|
||||
#define IP6T_MH_INV_MASK 0x01 /* All possible flags. */
|
||||
|
||||
#endif /*_IP6T_MH_H*/
|
25
linux/netfilter_ipv6/ip6t_opts.h
Normal file
25
linux/netfilter_ipv6/ip6t_opts.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _IP6T_OPTS_H
|
||||
#define _IP6T_OPTS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define IP6T_OPTS_OPTSNR 16
|
||||
|
||||
struct ip6t_opts {
|
||||
__u32 hdrlen; /* Header Length */
|
||||
__u8 flags; /* */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
__u16 opts[IP6T_OPTS_OPTSNR]; /* opts */
|
||||
__u8 optsnr; /* Nr of OPts */
|
||||
};
|
||||
|
||||
#define IP6T_OPTS_LEN 0x01
|
||||
#define IP6T_OPTS_OPTS 0x02
|
||||
#define IP6T_OPTS_NSTRICT 0x04
|
||||
|
||||
/* Values for "invflags" field in struct ip6t_rt. */
|
||||
#define IP6T_OPTS_INV_LEN 0x01 /* Invert the sense of length. */
|
||||
#define IP6T_OPTS_INV_MASK 0x01 /* All possible flags. */
|
||||
|
||||
#endif /*_IP6T_OPTS_H*/
|
34
linux/netfilter_ipv6/ip6t_rt.h
Normal file
34
linux/netfilter_ipv6/ip6t_rt.h
Normal file
@ -0,0 +1,34 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _IP6T_RT_H
|
||||
#define _IP6T_RT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/in6.h>
|
||||
|
||||
#define IP6T_RT_HOPS 16
|
||||
|
||||
struct ip6t_rt {
|
||||
__u32 rt_type; /* Routing Type */
|
||||
__u32 segsleft[2]; /* Segments Left */
|
||||
__u32 hdrlen; /* Header Length */
|
||||
__u8 flags; /* */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
struct in6_addr addrs[IP6T_RT_HOPS]; /* Hops */
|
||||
__u8 addrnr; /* Nr of Addresses */
|
||||
};
|
||||
|
||||
#define IP6T_RT_TYP 0x01
|
||||
#define IP6T_RT_SGS 0x02
|
||||
#define IP6T_RT_LEN 0x04
|
||||
#define IP6T_RT_RES 0x08
|
||||
#define IP6T_RT_FST_MASK 0x30
|
||||
#define IP6T_RT_FST 0x10
|
||||
#define IP6T_RT_FST_NSTRICT 0x20
|
||||
|
||||
/* Values for "invflags" field in struct ip6t_rt. */
|
||||
#define IP6T_RT_INV_TYP 0x01 /* Invert the sense of type. */
|
||||
#define IP6T_RT_INV_SGS 0x02 /* Invert the sense of Segments. */
|
||||
#define IP6T_RT_INV_LEN 0x04 /* Invert the sense of length. */
|
||||
#define IP6T_RT_INV_MASK 0x07 /* All possible flags. */
|
||||
|
||||
#endif /*_IP6T_RT_H*/
|
96
linux/netfilter_ipv6/ip6t_srh.h
Normal file
96
linux/netfilter_ipv6/ip6t_srh.h
Normal file
@ -0,0 +1,96 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _IP6T_SRH_H
|
||||
#define _IP6T_SRH_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netfilter.h>
|
||||
|
||||
/* Values for "mt_flags" field in struct ip6t_srh */
|
||||
#define IP6T_SRH_NEXTHDR 0x0001
|
||||
#define IP6T_SRH_LEN_EQ 0x0002
|
||||
#define IP6T_SRH_LEN_GT 0x0004
|
||||
#define IP6T_SRH_LEN_LT 0x0008
|
||||
#define IP6T_SRH_SEGS_EQ 0x0010
|
||||
#define IP6T_SRH_SEGS_GT 0x0020
|
||||
#define IP6T_SRH_SEGS_LT 0x0040
|
||||
#define IP6T_SRH_LAST_EQ 0x0080
|
||||
#define IP6T_SRH_LAST_GT 0x0100
|
||||
#define IP6T_SRH_LAST_LT 0x0200
|
||||
#define IP6T_SRH_TAG 0x0400
|
||||
#define IP6T_SRH_PSID 0x0800
|
||||
#define IP6T_SRH_NSID 0x1000
|
||||
#define IP6T_SRH_LSID 0x2000
|
||||
#define IP6T_SRH_MASK 0x3FFF
|
||||
|
||||
/* Values for "mt_invflags" field in struct ip6t_srh */
|
||||
#define IP6T_SRH_INV_NEXTHDR 0x0001
|
||||
#define IP6T_SRH_INV_LEN_EQ 0x0002
|
||||
#define IP6T_SRH_INV_LEN_GT 0x0004
|
||||
#define IP6T_SRH_INV_LEN_LT 0x0008
|
||||
#define IP6T_SRH_INV_SEGS_EQ 0x0010
|
||||
#define IP6T_SRH_INV_SEGS_GT 0x0020
|
||||
#define IP6T_SRH_INV_SEGS_LT 0x0040
|
||||
#define IP6T_SRH_INV_LAST_EQ 0x0080
|
||||
#define IP6T_SRH_INV_LAST_GT 0x0100
|
||||
#define IP6T_SRH_INV_LAST_LT 0x0200
|
||||
#define IP6T_SRH_INV_TAG 0x0400
|
||||
#define IP6T_SRH_INV_PSID 0x0800
|
||||
#define IP6T_SRH_INV_NSID 0x1000
|
||||
#define IP6T_SRH_INV_LSID 0x2000
|
||||
#define IP6T_SRH_INV_MASK 0x3FFF
|
||||
|
||||
/**
|
||||
* struct ip6t_srh - SRH match options
|
||||
* @ next_hdr: Next header field of SRH
|
||||
* @ hdr_len: Extension header length field of SRH
|
||||
* @ segs_left: Segments left field of SRH
|
||||
* @ last_entry: Last entry field of SRH
|
||||
* @ tag: Tag field of SRH
|
||||
* @ mt_flags: match options
|
||||
* @ mt_invflags: Invert the sense of match options
|
||||
*/
|
||||
|
||||
struct ip6t_srh {
|
||||
__u8 next_hdr;
|
||||
__u8 hdr_len;
|
||||
__u8 segs_left;
|
||||
__u8 last_entry;
|
||||
__u16 tag;
|
||||
__u16 mt_flags;
|
||||
__u16 mt_invflags;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ip6t_srh1 - SRH match options (revision 1)
|
||||
* @ next_hdr: Next header field of SRH
|
||||
* @ hdr_len: Extension header length field of SRH
|
||||
* @ segs_left: Segments left field of SRH
|
||||
* @ last_entry: Last entry field of SRH
|
||||
* @ tag: Tag field of SRH
|
||||
* @ psid_addr: Address of previous SID in SRH SID list
|
||||
* @ nsid_addr: Address of NEXT SID in SRH SID list
|
||||
* @ lsid_addr: Address of LAST SID in SRH SID list
|
||||
* @ psid_msk: Mask of previous SID in SRH SID list
|
||||
* @ nsid_msk: Mask of next SID in SRH SID list
|
||||
* @ lsid_msk: MAsk of last SID in SRH SID list
|
||||
* @ mt_flags: match options
|
||||
* @ mt_invflags: Invert the sense of match options
|
||||
*/
|
||||
|
||||
struct ip6t_srh1 {
|
||||
__u8 next_hdr;
|
||||
__u8 hdr_len;
|
||||
__u8 segs_left;
|
||||
__u8 last_entry;
|
||||
__u16 tag;
|
||||
struct in6_addr psid_addr;
|
||||
struct in6_addr nsid_addr;
|
||||
struct in6_addr lsid_addr;
|
||||
struct in6_addr psid_msk;
|
||||
struct in6_addr nsid_msk;
|
||||
struct in6_addr lsid_msk;
|
||||
__u16 mt_flags;
|
||||
__u16 mt_invflags;
|
||||
};
|
||||
|
||||
#endif /*_IP6T_SRH_H*/
|
Reference in New Issue
Block a user