mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1480 commits) bonding: enable netpoll without checking link status xfrm: Refcount destination entry on xfrm_lookup net: introduce rx_handler results and logic around that bonding: get rid of IFF_SLAVE_INACTIVE netdev->priv_flag bonding: wrap slave state work net: get rid of multiple bond-related netdevice->priv_flags bonding: register slave pointer for rx_handler be2net: Bump up the version number be2net: Copyright notice change. Update to Emulex instead of ServerEngines e1000e: fix kconfig for crc32 dependency netfilter ebtables: fix xt_AUDIT to work with ebtables xen network backend driver bonding: Improve syslog message at device creation time bonding: Call netif_carrier_off after register_netdevice bonding: Incorrect TX queue offset net_sched: fix ip_tos2prio xfrm: fix __xfrm_route_forward() be2net: Fix UDP packet detected status in RX compl Phonet: fix aligned-mode pipe socket buffer header reserve netxen: support for GbE port settings ... Fix up conflicts in drivers/staging/brcm80211/brcmsmac/wl_mac80211.c with the staging updates.
This commit is contained in:
commit
7a6362800c
1143 changed files with 119266 additions and 38053 deletions
|
|
@ -103,6 +103,8 @@
|
|||
#define AUDIT_BPRM_FCAPS 1321 /* Information about fcaps increasing perms */
|
||||
#define AUDIT_CAPSET 1322 /* Record showing argument to sys_capset */
|
||||
#define AUDIT_MMAP 1323 /* Record showing descriptor and flags in mmap */
|
||||
#define AUDIT_NETFILTER_PKT 1324 /* Packets traversing netfilter chains */
|
||||
#define AUDIT_NETFILTER_CFG 1325 /* Netfilter chain modifications */
|
||||
|
||||
#define AUDIT_AVC 1400 /* SE Linux avc denial or grant */
|
||||
#define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */
|
||||
|
|
|
|||
73
include/linux/cpu_rmap.h
Normal file
73
include/linux/cpu_rmap.h
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* cpu_rmap.c: CPU affinity reverse-map support
|
||||
* Copyright 2011 Solarflare Communications Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation, incorporated herein by reference.
|
||||
*/
|
||||
|
||||
#include <linux/cpumask.h>
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
/**
|
||||
* struct cpu_rmap - CPU affinity reverse-map
|
||||
* @size: Number of objects to be reverse-mapped
|
||||
* @used: Number of objects added
|
||||
* @obj: Pointer to array of object pointers
|
||||
* @near: For each CPU, the index and distance to the nearest object,
|
||||
* based on affinity masks
|
||||
*/
|
||||
struct cpu_rmap {
|
||||
u16 size, used;
|
||||
void **obj;
|
||||
struct {
|
||||
u16 index;
|
||||
u16 dist;
|
||||
} near[0];
|
||||
};
|
||||
#define CPU_RMAP_DIST_INF 0xffff
|
||||
|
||||
extern struct cpu_rmap *alloc_cpu_rmap(unsigned int size, gfp_t flags);
|
||||
|
||||
/**
|
||||
* free_cpu_rmap - free CPU affinity reverse-map
|
||||
* @rmap: Reverse-map allocated with alloc_cpu_rmap(), or %NULL
|
||||
*/
|
||||
static inline void free_cpu_rmap(struct cpu_rmap *rmap)
|
||||
{
|
||||
kfree(rmap);
|
||||
}
|
||||
|
||||
extern int cpu_rmap_add(struct cpu_rmap *rmap, void *obj);
|
||||
extern int cpu_rmap_update(struct cpu_rmap *rmap, u16 index,
|
||||
const struct cpumask *affinity);
|
||||
|
||||
static inline u16 cpu_rmap_lookup_index(struct cpu_rmap *rmap, unsigned int cpu)
|
||||
{
|
||||
return rmap->near[cpu].index;
|
||||
}
|
||||
|
||||
static inline void *cpu_rmap_lookup_obj(struct cpu_rmap *rmap, unsigned int cpu)
|
||||
{
|
||||
return rmap->obj[rmap->near[cpu].index];
|
||||
}
|
||||
|
||||
#ifdef CONFIG_GENERIC_HARDIRQS
|
||||
|
||||
/**
|
||||
* alloc_irq_cpu_rmap - allocate CPU affinity reverse-map for IRQs
|
||||
* @size: Number of objects to be mapped
|
||||
*
|
||||
* Must be called in process context.
|
||||
*/
|
||||
static inline struct cpu_rmap *alloc_irq_cpu_rmap(unsigned int size)
|
||||
{
|
||||
return alloc_cpu_rmap(size, GFP_KERNEL);
|
||||
}
|
||||
extern void free_irq_cpu_rmap(struct cpu_rmap *rmap);
|
||||
|
||||
extern int irq_cpu_rmap_add(struct cpu_rmap *rmap, int irq);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2008, Intel Corporation.
|
||||
* Copyright (c) 2008-2011, Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
|
|
@ -25,9 +25,14 @@
|
|||
/* IEEE 802.1Qaz std supported values */
|
||||
#define IEEE_8021QAZ_MAX_TCS 8
|
||||
|
||||
#define IEEE_8021QAZ_TSA_STRICT 0
|
||||
#define IEEE_8021QAZ_TSA_CB_SHAPER 1
|
||||
#define IEEE_8021QAZ_TSA_ETS 2
|
||||
#define IEEE_8021QAZ_TSA_VENDOR 255
|
||||
|
||||
/* This structure contains the IEEE 802.1Qaz ETS managed object
|
||||
*
|
||||
* @willing: willing bit in ETS configuratin TLV
|
||||
* @willing: willing bit in ETS configuration TLV
|
||||
* @ets_cap: indicates supported capacity of ets feature
|
||||
* @cbs: credit based shaper ets algorithm supported
|
||||
* @tc_tx_bw: tc tx bandwidth indexed by traffic class
|
||||
|
|
@ -82,6 +87,50 @@ struct ieee_pfc {
|
|||
__u64 indications[IEEE_8021QAZ_MAX_TCS];
|
||||
};
|
||||
|
||||
/* CEE DCBX std supported values */
|
||||
#define CEE_DCBX_MAX_PGS 8
|
||||
#define CEE_DCBX_MAX_PRIO 8
|
||||
|
||||
/**
|
||||
* struct cee_pg - CEE Priority-Group managed object
|
||||
*
|
||||
* @willing: willing bit in the PG tlv
|
||||
* @error: error bit in the PG tlv
|
||||
* @pg_en: enable bit of the PG feature
|
||||
* @tcs_supported: number of traffic classes supported
|
||||
* @pg_bw: bandwidth percentage for each priority group
|
||||
* @prio_pg: priority to PG mapping indexed by priority
|
||||
*/
|
||||
struct cee_pg {
|
||||
__u8 willing;
|
||||
__u8 error;
|
||||
__u8 pg_en;
|
||||
__u8 tcs_supported;
|
||||
__u8 pg_bw[CEE_DCBX_MAX_PGS];
|
||||
__u8 prio_pg[CEE_DCBX_MAX_PGS];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cee_pfc - CEE PFC managed object
|
||||
*
|
||||
* @willing: willing bit in the PFC tlv
|
||||
* @error: error bit in the PFC tlv
|
||||
* @pfc_en: bitmap indicating pfc enabled traffic classes
|
||||
* @tcs_supported: number of traffic classes supported
|
||||
*/
|
||||
struct cee_pfc {
|
||||
__u8 willing;
|
||||
__u8 error;
|
||||
__u8 pfc_en;
|
||||
__u8 tcs_supported;
|
||||
};
|
||||
|
||||
/* IEEE 802.1Qaz std supported values */
|
||||
#define IEEE_8021QAZ_APP_SEL_ETHERTYPE 1
|
||||
#define IEEE_8021QAZ_APP_SEL_STREAM 2
|
||||
#define IEEE_8021QAZ_APP_SEL_DGRAM 3
|
||||
#define IEEE_8021QAZ_APP_SEL_ANY 4
|
||||
|
||||
/* This structure contains the IEEE 802.1Qaz APP managed object. This
|
||||
* object is also used for the CEE std as well. There is no difference
|
||||
* between the objects.
|
||||
|
|
@ -105,6 +154,20 @@ struct dcb_app {
|
|||
__u16 protocol;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dcb_peer_app_info - APP feature information sent by the peer
|
||||
*
|
||||
* @willing: willing bit in the peer APP tlv
|
||||
* @error: error bit in the peer APP tlv
|
||||
*
|
||||
* In addition to this information the full peer APP tlv also contains
|
||||
* a table of 'app_count' APP objects defined above.
|
||||
*/
|
||||
struct dcb_peer_app_info {
|
||||
__u8 willing;
|
||||
__u8 error;
|
||||
};
|
||||
|
||||
struct dcbmsg {
|
||||
__u8 dcb_family;
|
||||
__u8 cmd;
|
||||
|
|
@ -139,6 +202,7 @@ struct dcbmsg {
|
|||
* @DCB_CMD_SDCBX: set DCBX engine configuration
|
||||
* @DCB_CMD_GFEATCFG: get DCBX features flags
|
||||
* @DCB_CMD_SFEATCFG: set DCBX features negotiation flags
|
||||
* @DCB_CMD_CEE_GET: get CEE aggregated configuration
|
||||
*/
|
||||
enum dcbnl_commands {
|
||||
DCB_CMD_UNDEFINED,
|
||||
|
|
@ -181,6 +245,8 @@ enum dcbnl_commands {
|
|||
DCB_CMD_GFEATCFG,
|
||||
DCB_CMD_SFEATCFG,
|
||||
|
||||
DCB_CMD_CEE_GET,
|
||||
|
||||
__DCB_CMD_ENUM_MAX,
|
||||
DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1,
|
||||
};
|
||||
|
|
@ -203,6 +269,7 @@ enum dcbnl_commands {
|
|||
* @DCB_ATTR_IEEE: IEEE 802.1Qaz supported attributes (NLA_NESTED)
|
||||
* @DCB_ATTR_DCBX: DCBX engine configuration in the device (NLA_U8)
|
||||
* @DCB_ATTR_FEATCFG: DCBX features flags (NLA_NESTED)
|
||||
* @DCB_ATTR_CEE: CEE std supported attributes (NLA_NESTED)
|
||||
*/
|
||||
enum dcbnl_attrs {
|
||||
DCB_ATTR_UNDEFINED,
|
||||
|
|
@ -226,15 +293,32 @@ enum dcbnl_attrs {
|
|||
DCB_ATTR_DCBX,
|
||||
DCB_ATTR_FEATCFG,
|
||||
|
||||
/* CEE nested attributes */
|
||||
DCB_ATTR_CEE,
|
||||
|
||||
__DCB_ATTR_ENUM_MAX,
|
||||
DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ieee_attrs - IEEE 802.1Qaz get/set attributes
|
||||
*
|
||||
* @DCB_ATTR_IEEE_UNSPEC: unspecified
|
||||
* @DCB_ATTR_IEEE_ETS: negotiated ETS configuration
|
||||
* @DCB_ATTR_IEEE_PFC: negotiated PFC configuration
|
||||
* @DCB_ATTR_IEEE_APP_TABLE: negotiated APP configuration
|
||||
* @DCB_ATTR_IEEE_PEER_ETS: peer ETS configuration - get only
|
||||
* @DCB_ATTR_IEEE_PEER_PFC: peer PFC configuration - get only
|
||||
* @DCB_ATTR_IEEE_PEER_APP: peer APP tlv - get only
|
||||
*/
|
||||
enum ieee_attrs {
|
||||
DCB_ATTR_IEEE_UNSPEC,
|
||||
DCB_ATTR_IEEE_ETS,
|
||||
DCB_ATTR_IEEE_PFC,
|
||||
DCB_ATTR_IEEE_APP_TABLE,
|
||||
DCB_ATTR_IEEE_PEER_ETS,
|
||||
DCB_ATTR_IEEE_PEER_PFC,
|
||||
DCB_ATTR_IEEE_PEER_APP,
|
||||
__DCB_ATTR_IEEE_MAX
|
||||
};
|
||||
#define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
|
||||
|
|
@ -246,6 +330,31 @@ enum ieee_attrs_app {
|
|||
};
|
||||
#define DCB_ATTR_IEEE_APP_MAX (__DCB_ATTR_IEEE_APP_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum cee_attrs - CEE DCBX get attributes
|
||||
*
|
||||
* @DCB_ATTR_CEE_UNSPEC: unspecified
|
||||
* @DCB_ATTR_CEE_PEER_PG: peer PG configuration - get only
|
||||
* @DCB_ATTR_CEE_PEER_PFC: peer PFC configuration - get only
|
||||
* @DCB_ATTR_CEE_PEER_APP: peer APP tlv - get only
|
||||
*/
|
||||
enum cee_attrs {
|
||||
DCB_ATTR_CEE_UNSPEC,
|
||||
DCB_ATTR_CEE_PEER_PG,
|
||||
DCB_ATTR_CEE_PEER_PFC,
|
||||
DCB_ATTR_CEE_PEER_APP_TABLE,
|
||||
__DCB_ATTR_CEE_MAX
|
||||
};
|
||||
#define DCB_ATTR_CEE_MAX (__DCB_ATTR_CEE_MAX - 1)
|
||||
|
||||
enum peer_app_attr {
|
||||
DCB_ATTR_CEE_PEER_APP_UNSPEC,
|
||||
DCB_ATTR_CEE_PEER_APP_INFO,
|
||||
DCB_ATTR_CEE_PEER_APP,
|
||||
__DCB_ATTR_CEE_PEER_APP_MAX
|
||||
};
|
||||
#define DCB_ATTR_CEE_PEER_APP_MAX (__DCB_ATTR_CEE_PEER_APP_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum dcbnl_pfc_attrs - DCB Priority Flow Control user priority nested attrs
|
||||
*
|
||||
|
|
|
|||
|
|
@ -279,8 +279,6 @@ enum dccp_state {
|
|||
DCCP_MAX_STATES
|
||||
};
|
||||
|
||||
#define DCCP_STATE_MASK 0x1f
|
||||
|
||||
enum {
|
||||
DCCPF_OPEN = TCPF_ESTABLISHED,
|
||||
DCCPF_REQUESTING = TCPF_SYN_SENT,
|
||||
|
|
|
|||
|
|
@ -251,6 +251,7 @@ enum ethtool_stringset {
|
|||
ETH_SS_STATS,
|
||||
ETH_SS_PRIV_FLAGS,
|
||||
ETH_SS_NTUPLE_FILTERS,
|
||||
ETH_SS_FEATURES,
|
||||
};
|
||||
|
||||
/* for passing string sets for data tagging */
|
||||
|
|
@ -523,6 +524,92 @@ struct ethtool_flash {
|
|||
char data[ETHTOOL_FLASH_MAX_FILENAME];
|
||||
};
|
||||
|
||||
/* for returning and changing feature sets */
|
||||
|
||||
/**
|
||||
* struct ethtool_get_features_block - block with state of 32 features
|
||||
* @available: mask of changeable features
|
||||
* @requested: mask of features requested to be enabled if possible
|
||||
* @active: mask of currently enabled features
|
||||
* @never_changed: mask of features not changeable for any device
|
||||
*/
|
||||
struct ethtool_get_features_block {
|
||||
__u32 available;
|
||||
__u32 requested;
|
||||
__u32 active;
|
||||
__u32 never_changed;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_gfeatures - command to get state of device's features
|
||||
* @cmd: command number = %ETHTOOL_GFEATURES
|
||||
* @size: in: number of elements in the features[] array;
|
||||
* out: number of elements in features[] needed to hold all features
|
||||
* @features: state of features
|
||||
*/
|
||||
struct ethtool_gfeatures {
|
||||
__u32 cmd;
|
||||
__u32 size;
|
||||
struct ethtool_get_features_block features[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_set_features_block - block with request for 32 features
|
||||
* @valid: mask of features to be changed
|
||||
* @requested: values of features to be changed
|
||||
*/
|
||||
struct ethtool_set_features_block {
|
||||
__u32 valid;
|
||||
__u32 requested;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_sfeatures - command to request change in device's features
|
||||
* @cmd: command number = %ETHTOOL_SFEATURES
|
||||
* @size: array size of the features[] array
|
||||
* @features: feature change masks
|
||||
*/
|
||||
struct ethtool_sfeatures {
|
||||
__u32 cmd;
|
||||
__u32 size;
|
||||
struct ethtool_set_features_block features[0];
|
||||
};
|
||||
|
||||
/*
|
||||
* %ETHTOOL_SFEATURES changes features present in features[].valid to the
|
||||
* values of corresponding bits in features[].requested. Bits in .requested
|
||||
* not set in .valid or not changeable are ignored.
|
||||
*
|
||||
* Returns %EINVAL when .valid contains undefined or never-changable bits
|
||||
* or size is not equal to required number of features words (32-bit blocks).
|
||||
* Returns >= 0 if request was completed; bits set in the value mean:
|
||||
* %ETHTOOL_F_UNSUPPORTED - there were bits set in .valid that are not
|
||||
* changeable (not present in %ETHTOOL_GFEATURES' features[].available)
|
||||
* those bits were ignored.
|
||||
* %ETHTOOL_F_WISH - some or all changes requested were recorded but the
|
||||
* resulting state of bits masked by .valid is not equal to .requested.
|
||||
* Probably there are other device-specific constraints on some features
|
||||
* in the set. When %ETHTOOL_F_UNSUPPORTED is set, .valid is considered
|
||||
* here as though ignored bits were cleared.
|
||||
* %ETHTOOL_F_COMPAT - some or all changes requested were made by calling
|
||||
* compatibility functions. Requested offload state cannot be properly
|
||||
* managed by kernel.
|
||||
*
|
||||
* Meaning of bits in the masks are obtained by %ETHTOOL_GSSET_INFO (number of
|
||||
* bits in the arrays - always multiple of 32) and %ETHTOOL_GSTRINGS commands
|
||||
* for ETH_SS_FEATURES string set. First entry in the table corresponds to least
|
||||
* significant bit in features[0] fields. Empty strings mark undefined features.
|
||||
*/
|
||||
enum ethtool_sfeatures_retval_bits {
|
||||
ETHTOOL_F_UNSUPPORTED__BIT,
|
||||
ETHTOOL_F_WISH__BIT,
|
||||
ETHTOOL_F_COMPAT__BIT,
|
||||
};
|
||||
|
||||
#define ETHTOOL_F_UNSUPPORTED (1 << ETHTOOL_F_UNSUPPORTED__BIT)
|
||||
#define ETHTOOL_F_WISH (1 << ETHTOOL_F_WISH__BIT)
|
||||
#define ETHTOOL_F_COMPAT (1 << ETHTOOL_F_COMPAT__BIT)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/rculist.h>
|
||||
|
|
@ -543,7 +630,6 @@ struct net_device;
|
|||
|
||||
/* Some generic methods drivers may use in their ethtool_ops */
|
||||
u32 ethtool_op_get_link(struct net_device *dev);
|
||||
u32 ethtool_op_get_rx_csum(struct net_device *dev);
|
||||
u32 ethtool_op_get_tx_csum(struct net_device *dev);
|
||||
int ethtool_op_set_tx_csum(struct net_device *dev, u32 data);
|
||||
int ethtool_op_set_tx_hw_csum(struct net_device *dev, u32 data);
|
||||
|
|
@ -744,6 +830,9 @@ struct ethtool_ops {
|
|||
#define ETHTOOL_GRXFHINDIR 0x00000038 /* Get RX flow hash indir'n table */
|
||||
#define ETHTOOL_SRXFHINDIR 0x00000039 /* Set RX flow hash indir'n table */
|
||||
|
||||
#define ETHTOOL_GFEATURES 0x0000003a /* Get device offload settings */
|
||||
#define ETHTOOL_SFEATURES 0x0000003b /* Change device offload settings */
|
||||
|
||||
/* compatibility with older code */
|
||||
#define SPARC_ETH_GSET ETHTOOL_GSET
|
||||
#define SPARC_ETH_SSET ETHTOOL_SSET
|
||||
|
|
|
|||
|
|
@ -183,10 +183,10 @@ extern void icmpv6_cleanup(void);
|
|||
extern void icmpv6_param_prob(struct sk_buff *skb,
|
||||
u8 code, int pos);
|
||||
|
||||
struct flowi;
|
||||
struct flowi6;
|
||||
struct in6_addr;
|
||||
extern void icmpv6_flow_init(struct sock *sk,
|
||||
struct flowi *fl,
|
||||
struct flowi6 *fl6,
|
||||
u8 type,
|
||||
const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
|
|
|
|||
|
|
@ -1325,6 +1325,9 @@ enum {
|
|||
/* Although the spec says 8 I'm seeing 6 in practice */
|
||||
#define IEEE80211_COUNTRY_IE_MIN_LEN 6
|
||||
|
||||
/* The Country String field of the element shall be 3 octets in length */
|
||||
#define IEEE80211_COUNTRY_STRING_LEN 3
|
||||
|
||||
/*
|
||||
* For regulatory extension stuff see IEEE 802.11-2007
|
||||
* Annex I (page 1141) and Annex J (page 1147). Also
|
||||
|
|
|
|||
|
|
@ -71,11 +71,10 @@
|
|||
* release skb->dst
|
||||
*/
|
||||
#define IFF_DONT_BRIDGE 0x800 /* disallow bridging this ether dev */
|
||||
#define IFF_IN_NETPOLL 0x1000 /* whether we are processing netpoll */
|
||||
#define IFF_DISABLE_NETPOLL 0x2000 /* disable netpoll at run-time */
|
||||
#define IFF_MACVLAN_PORT 0x4000 /* device used as macvlan port */
|
||||
#define IFF_BRIDGE_PORT 0x8000 /* device used as bridge port */
|
||||
#define IFF_OVS_DATAPATH 0x10000 /* device used as Open vSwitch
|
||||
#define IFF_DISABLE_NETPOLL 0x1000 /* disable netpoll at run-time */
|
||||
#define IFF_MACVLAN_PORT 0x2000 /* device used as macvlan port */
|
||||
#define IFF_BRIDGE_PORT 0x4000 /* device used as bridge port */
|
||||
#define IFF_OVS_DATAPATH 0x8000 /* device used as Open vSwitch
|
||||
* datapath port */
|
||||
|
||||
#define IF_GET_IFACE 0x0001 /* for querying only */
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@ enum {
|
|||
IFLA_VF_PORTS,
|
||||
IFLA_PORT_SELF,
|
||||
IFLA_AF_SPEC,
|
||||
IFLA_GROUP, /* Group the device belongs to */
|
||||
__IFLA_MAX
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ struct ip_mc_list {
|
|||
#define IGMPV3_QQIC(value) IGMPV3_EXP(0x80, 4, 3, value)
|
||||
#define IGMPV3_MRC(value) IGMPV3_EXP(0x80, 4, 3, value)
|
||||
|
||||
extern int ip_check_mc(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u16 proto);
|
||||
extern int ip_check_mc_rcu(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u16 proto);
|
||||
extern int igmp_rcv(struct sk_buff *);
|
||||
extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr);
|
||||
extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr);
|
||||
|
|
|
|||
|
|
@ -144,6 +144,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
|
|||
#define IN_DEV_ARP_NOTIFY(in_dev) IN_DEV_MAXCONF((in_dev), ARP_NOTIFY)
|
||||
|
||||
struct in_ifaddr {
|
||||
struct hlist_node hash;
|
||||
struct in_ifaddr *ifa_next;
|
||||
struct in_device *ifa_dev;
|
||||
struct rcu_head rcu_head;
|
||||
|
|
|
|||
|
|
@ -89,6 +89,14 @@
|
|||
#define IP_VS_CONN_F_TEMPLATE 0x1000 /* template, not connection */
|
||||
#define IP_VS_CONN_F_ONE_PACKET 0x2000 /* forward only one packet */
|
||||
|
||||
#define IP_VS_CONN_F_BACKUP_MASK (IP_VS_CONN_F_FWD_MASK | \
|
||||
IP_VS_CONN_F_NOOUTPUT | \
|
||||
IP_VS_CONN_F_INACTIVE | \
|
||||
IP_VS_CONN_F_SEQ_MASK | \
|
||||
IP_VS_CONN_F_NO_CPORT | \
|
||||
IP_VS_CONN_F_TEMPLATE \
|
||||
)
|
||||
|
||||
/* Flags that are not sent to backup server start from bit 16 */
|
||||
#define IP_VS_CONN_F_NFCT (1 << 16) /* use netfilter conntrack */
|
||||
|
||||
|
|
|
|||
16
include/linux/micrel_phy.h
Normal file
16
include/linux/micrel_phy.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef _MICREL_PHY_H
|
||||
#define _MICREL_PHY_H
|
||||
|
||||
#define MICREL_PHY_ID_MASK 0x00fffff0
|
||||
|
||||
#define PHY_ID_KSZ9021 0x00221611
|
||||
#define PHY_ID_KS8737 0x00221720
|
||||
#define PHY_ID_KS8041 0x00221510
|
||||
#define PHY_ID_KS8051 0x00221550
|
||||
/* both for ks8001 Rev. A/B, and for ks8721 Rev 3. */
|
||||
#define PHY_ID_KS8001 0x0022161A
|
||||
|
||||
/* struct phy_device dev_flags definitions */
|
||||
#define MICREL_PHY_50MHZ_CLK 0x00000001
|
||||
|
||||
#endif /* _MICREL_PHY_H */
|
||||
|
|
@ -118,6 +118,7 @@ enum sock_shutdown_cmd {
|
|||
};
|
||||
|
||||
struct socket_wq {
|
||||
/* Note: wait MUST be first field of socket_wq */
|
||||
wait_queue_head_t wait;
|
||||
struct fasync_struct *fasync_list;
|
||||
struct rcu_head rcu;
|
||||
|
|
@ -142,7 +143,7 @@ struct socket {
|
|||
|
||||
unsigned long flags;
|
||||
|
||||
struct socket_wq *wq;
|
||||
struct socket_wq __rcu *wq;
|
||||
|
||||
struct file *file;
|
||||
struct sock *sk;
|
||||
|
|
|
|||
|
|
@ -138,6 +138,9 @@ static inline bool dev_xmit_complete(int rc)
|
|||
|
||||
#define MAX_ADDR_LEN 32 /* Largest hardware address length */
|
||||
|
||||
/* Initial net device group. All devices belong to group 0 by default. */
|
||||
#define INIT_NETDEV_GROUP 0
|
||||
|
||||
#ifdef __KERNEL__
|
||||
/*
|
||||
* Compute the worst case header length according to the protocols
|
||||
|
|
@ -387,7 +390,55 @@ enum gro_result {
|
|||
};
|
||||
typedef enum gro_result gro_result_t;
|
||||
|
||||
typedef struct sk_buff *rx_handler_func_t(struct sk_buff *skb);
|
||||
/*
|
||||
* enum rx_handler_result - Possible return values for rx_handlers.
|
||||
* @RX_HANDLER_CONSUMED: skb was consumed by rx_handler, do not process it
|
||||
* further.
|
||||
* @RX_HANDLER_ANOTHER: Do another round in receive path. This is indicated in
|
||||
* case skb->dev was changed by rx_handler.
|
||||
* @RX_HANDLER_EXACT: Force exact delivery, no wildcard.
|
||||
* @RX_HANDLER_PASS: Do nothing, passe the skb as if no rx_handler was called.
|
||||
*
|
||||
* rx_handlers are functions called from inside __netif_receive_skb(), to do
|
||||
* special processing of the skb, prior to delivery to protocol handlers.
|
||||
*
|
||||
* Currently, a net_device can only have a single rx_handler registered. Trying
|
||||
* to register a second rx_handler will return -EBUSY.
|
||||
*
|
||||
* To register a rx_handler on a net_device, use netdev_rx_handler_register().
|
||||
* To unregister a rx_handler on a net_device, use
|
||||
* netdev_rx_handler_unregister().
|
||||
*
|
||||
* Upon return, rx_handler is expected to tell __netif_receive_skb() what to
|
||||
* do with the skb.
|
||||
*
|
||||
* If the rx_handler consumed to skb in some way, it should return
|
||||
* RX_HANDLER_CONSUMED. This is appropriate when the rx_handler arranged for
|
||||
* the skb to be delivered in some other ways.
|
||||
*
|
||||
* If the rx_handler changed skb->dev, to divert the skb to another
|
||||
* net_device, it should return RX_HANDLER_ANOTHER. The rx_handler for the
|
||||
* new device will be called if it exists.
|
||||
*
|
||||
* If the rx_handler consider the skb should be ignored, it should return
|
||||
* RX_HANDLER_EXACT. The skb will only be delivered to protocol handlers that
|
||||
* are registred on exact device (ptype->dev == skb->dev).
|
||||
*
|
||||
* If the rx_handler didn't changed skb->dev, but want the skb to be normally
|
||||
* delivered, it should return RX_HANDLER_PASS.
|
||||
*
|
||||
* A device without a registered rx_handler will behave as if rx_handler
|
||||
* returned RX_HANDLER_PASS.
|
||||
*/
|
||||
|
||||
enum rx_handler_result {
|
||||
RX_HANDLER_CONSUMED,
|
||||
RX_HANDLER_ANOTHER,
|
||||
RX_HANDLER_EXACT,
|
||||
RX_HANDLER_PASS,
|
||||
};
|
||||
typedef enum rx_handler_result rx_handler_result_t;
|
||||
typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb);
|
||||
|
||||
extern void __napi_schedule(struct napi_struct *n);
|
||||
|
||||
|
|
@ -551,14 +602,16 @@ struct rps_map {
|
|||
#define RPS_MAP_SIZE(_num) (sizeof(struct rps_map) + (_num * sizeof(u16)))
|
||||
|
||||
/*
|
||||
* The rps_dev_flow structure contains the mapping of a flow to a CPU and the
|
||||
* tail pointer for that CPU's input queue at the time of last enqueue.
|
||||
* The rps_dev_flow structure contains the mapping of a flow to a CPU, the
|
||||
* tail pointer for that CPU's input queue at the time of last enqueue, and
|
||||
* a hardware filter index.
|
||||
*/
|
||||
struct rps_dev_flow {
|
||||
u16 cpu;
|
||||
u16 fill;
|
||||
u16 filter;
|
||||
unsigned int last_qtail;
|
||||
};
|
||||
#define RPS_NO_FILTER 0xffff
|
||||
|
||||
/*
|
||||
* The rps_dev_flow_table structure contains a table of flow mappings.
|
||||
|
|
@ -608,6 +661,11 @@ static inline void rps_reset_sock_flow(struct rps_sock_flow_table *table,
|
|||
|
||||
extern struct rps_sock_flow_table __rcu *rps_sock_flow_table;
|
||||
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
extern bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index,
|
||||
u32 flow_id, u16 filter_id);
|
||||
#endif
|
||||
|
||||
/* This structure contains an instance of an RX queue. */
|
||||
struct netdev_rx_queue {
|
||||
struct rps_map __rcu *rps_map;
|
||||
|
|
@ -643,6 +701,14 @@ struct xps_dev_maps {
|
|||
(nr_cpu_ids * sizeof(struct xps_map *)))
|
||||
#endif /* CONFIG_XPS */
|
||||
|
||||
#define TC_MAX_QUEUE 16
|
||||
#define TC_BITMASK 15
|
||||
/* HW offloaded queuing disciplines txq count and offset maps */
|
||||
struct netdev_tc_txq {
|
||||
u16 count;
|
||||
u16 offset;
|
||||
};
|
||||
|
||||
/*
|
||||
* This structure defines the management hooks for network devices.
|
||||
* The following hooks can be defined; unless noted otherwise, they are
|
||||
|
|
@ -753,6 +819,74 @@ struct xps_dev_maps {
|
|||
* int (*ndo_set_vf_port)(struct net_device *dev, int vf,
|
||||
* struct nlattr *port[]);
|
||||
* int (*ndo_get_vf_port)(struct net_device *dev, int vf, struct sk_buff *skb);
|
||||
* int (*ndo_setup_tc)(struct net_device *dev, u8 tc)
|
||||
* Called to setup 'tc' number of traffic classes in the net device. This
|
||||
* is always called from the stack with the rtnl lock held and netif tx
|
||||
* queues stopped. This allows the netdevice to perform queue management
|
||||
* safely.
|
||||
*
|
||||
* Fiber Channel over Ethernet (FCoE) offload functions.
|
||||
* int (*ndo_fcoe_enable)(struct net_device *dev);
|
||||
* Called when the FCoE protocol stack wants to start using LLD for FCoE
|
||||
* so the underlying device can perform whatever needed configuration or
|
||||
* initialization to support acceleration of FCoE traffic.
|
||||
*
|
||||
* int (*ndo_fcoe_disable)(struct net_device *dev);
|
||||
* Called when the FCoE protocol stack wants to stop using LLD for FCoE
|
||||
* so the underlying device can perform whatever needed clean-ups to
|
||||
* stop supporting acceleration of FCoE traffic.
|
||||
*
|
||||
* int (*ndo_fcoe_ddp_setup)(struct net_device *dev, u16 xid,
|
||||
* struct scatterlist *sgl, unsigned int sgc);
|
||||
* Called when the FCoE Initiator wants to initialize an I/O that
|
||||
* is a possible candidate for Direct Data Placement (DDP). The LLD can
|
||||
* perform necessary setup and returns 1 to indicate the device is set up
|
||||
* successfully to perform DDP on this I/O, otherwise this returns 0.
|
||||
*
|
||||
* int (*ndo_fcoe_ddp_done)(struct net_device *dev, u16 xid);
|
||||
* Called when the FCoE Initiator/Target is done with the DDPed I/O as
|
||||
* indicated by the FC exchange id 'xid', so the underlying device can
|
||||
* clean up and reuse resources for later DDP requests.
|
||||
*
|
||||
* int (*ndo_fcoe_ddp_target)(struct net_device *dev, u16 xid,
|
||||
* struct scatterlist *sgl, unsigned int sgc);
|
||||
* Called when the FCoE Target wants to initialize an I/O that
|
||||
* is a possible candidate for Direct Data Placement (DDP). The LLD can
|
||||
* perform necessary setup and returns 1 to indicate the device is set up
|
||||
* successfully to perform DDP on this I/O, otherwise this returns 0.
|
||||
*
|
||||
* int (*ndo_fcoe_get_wwn)(struct net_device *dev, u64 *wwn, int type);
|
||||
* Called when the underlying device wants to override default World Wide
|
||||
* Name (WWN) generation mechanism in FCoE protocol stack to pass its own
|
||||
* World Wide Port Name (WWPN) or World Wide Node Name (WWNN) to the FCoE
|
||||
* protocol stack to use.
|
||||
*
|
||||
* RFS acceleration.
|
||||
* int (*ndo_rx_flow_steer)(struct net_device *dev, const struct sk_buff *skb,
|
||||
* u16 rxq_index, u32 flow_id);
|
||||
* Set hardware filter for RFS. rxq_index is the target queue index;
|
||||
* flow_id is a flow ID to be passed to rps_may_expire_flow() later.
|
||||
* Return the filter ID on success, or a negative error code.
|
||||
*
|
||||
* Slave management functions (for bridge, bonding, etc). User should
|
||||
* call netdev_set_master() to set dev->master properly.
|
||||
* int (*ndo_add_slave)(struct net_device *dev, struct net_device *slave_dev);
|
||||
* Called to make another netdev an underling.
|
||||
*
|
||||
* int (*ndo_del_slave)(struct net_device *dev, struct net_device *slave_dev);
|
||||
* Called to release previously enslaved netdev.
|
||||
*
|
||||
* Feature/offload setting functions.
|
||||
* u32 (*ndo_fix_features)(struct net_device *dev, u32 features);
|
||||
* Adjusts the requested feature flags according to device-specific
|
||||
* constraints, and returns the resulting flags. Must not modify
|
||||
* the device state.
|
||||
*
|
||||
* int (*ndo_set_features)(struct net_device *dev, u32 features);
|
||||
* Called to update device configuration to new features. Passed
|
||||
* feature set might be less than what was returned by ndo_fix_features()).
|
||||
* Must return >0 or -errno if it changed dev->features itself.
|
||||
*
|
||||
*/
|
||||
#define HAVE_NET_DEVICE_OPS
|
||||
struct net_device_ops {
|
||||
|
|
@ -811,6 +945,7 @@ struct net_device_ops {
|
|||
struct nlattr *port[]);
|
||||
int (*ndo_get_vf_port)(struct net_device *dev,
|
||||
int vf, struct sk_buff *skb);
|
||||
int (*ndo_setup_tc)(struct net_device *dev, u8 tc);
|
||||
#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
|
||||
int (*ndo_fcoe_enable)(struct net_device *dev);
|
||||
int (*ndo_fcoe_disable)(struct net_device *dev);
|
||||
|
|
@ -820,11 +955,29 @@ struct net_device_ops {
|
|||
unsigned int sgc);
|
||||
int (*ndo_fcoe_ddp_done)(struct net_device *dev,
|
||||
u16 xid);
|
||||
int (*ndo_fcoe_ddp_target)(struct net_device *dev,
|
||||
u16 xid,
|
||||
struct scatterlist *sgl,
|
||||
unsigned int sgc);
|
||||
#define NETDEV_FCOE_WWNN 0
|
||||
#define NETDEV_FCOE_WWPN 1
|
||||
int (*ndo_fcoe_get_wwn)(struct net_device *dev,
|
||||
u64 *wwn, int type);
|
||||
#endif
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
int (*ndo_rx_flow_steer)(struct net_device *dev,
|
||||
const struct sk_buff *skb,
|
||||
u16 rxq_index,
|
||||
u32 flow_id);
|
||||
#endif
|
||||
int (*ndo_add_slave)(struct net_device *dev,
|
||||
struct net_device *slave_dev);
|
||||
int (*ndo_del_slave)(struct net_device *dev,
|
||||
struct net_device *slave_dev);
|
||||
u32 (*ndo_fix_features)(struct net_device *dev,
|
||||
u32 features);
|
||||
int (*ndo_set_features)(struct net_device *dev,
|
||||
u32 features);
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -876,8 +1029,18 @@ struct net_device {
|
|||
struct list_head napi_list;
|
||||
struct list_head unreg_list;
|
||||
|
||||
/* Net device features */
|
||||
unsigned long features;
|
||||
/* currently active device features */
|
||||
u32 features;
|
||||
/* user-changeable features */
|
||||
u32 hw_features;
|
||||
/* user-requested features */
|
||||
u32 wanted_features;
|
||||
/* VLAN feature mask */
|
||||
u32 vlan_features;
|
||||
|
||||
/* Net device feature bits; if you change something,
|
||||
* also update netdev_features_strings[] in ethtool.c */
|
||||
|
||||
#define NETIF_F_SG 1 /* Scatter/gather IO. */
|
||||
#define NETIF_F_IP_CSUM 2 /* Can checksum TCP/UDP over IPv4. */
|
||||
#define NETIF_F_NO_CSUM 4 /* Does not require checksum. F.e. loopack. */
|
||||
|
|
@ -902,6 +1065,7 @@ struct net_device {
|
|||
#define NETIF_F_FCOE_MTU (1 << 26) /* Supports max FCoE MTU, 2158 bytes*/
|
||||
#define NETIF_F_NTUPLE (1 << 27) /* N-tuple filters supported */
|
||||
#define NETIF_F_RXHASH (1 << 28) /* Receive hashing offload */
|
||||
#define NETIF_F_RXCSUM (1 << 29) /* Receive checksumming offload */
|
||||
|
||||
/* Segmentation offload features */
|
||||
#define NETIF_F_GSO_SHIFT 16
|
||||
|
|
@ -913,6 +1077,12 @@ struct net_device {
|
|||
#define NETIF_F_TSO6 (SKB_GSO_TCPV6 << NETIF_F_GSO_SHIFT)
|
||||
#define NETIF_F_FSO (SKB_GSO_FCOE << NETIF_F_GSO_SHIFT)
|
||||
|
||||
/* Features valid for ethtool to change */
|
||||
/* = all defined minus driver/device-class-related */
|
||||
#define NETIF_F_NEVER_CHANGE (NETIF_F_HIGHDMA | NETIF_F_VLAN_CHALLENGED | \
|
||||
NETIF_F_LLTX | NETIF_F_NETNS_LOCAL)
|
||||
#define NETIF_F_ETHTOOL_BITS (0x3f3fffff & ~NETIF_F_NEVER_CHANGE)
|
||||
|
||||
/* List of features with software fallbacks. */
|
||||
#define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | \
|
||||
NETIF_F_TSO6 | NETIF_F_UFO)
|
||||
|
|
@ -923,6 +1093,12 @@ struct net_device {
|
|||
#define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)
|
||||
#define NETIF_F_ALL_CSUM (NETIF_F_V4_CSUM | NETIF_F_V6_CSUM)
|
||||
|
||||
#define NETIF_F_ALL_TSO (NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_TSO_ECN)
|
||||
|
||||
#define NETIF_F_ALL_TX_OFFLOADS (NETIF_F_ALL_CSUM | NETIF_F_SG | \
|
||||
NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
|
||||
NETIF_F_SCTP_CSUM | NETIF_F_FCOE_CRC)
|
||||
|
||||
/*
|
||||
* If one device supports one of these features, then enable them
|
||||
* for all in netdev_increment_features.
|
||||
|
|
@ -931,6 +1107,9 @@ struct net_device {
|
|||
NETIF_F_SG | NETIF_F_HIGHDMA | \
|
||||
NETIF_F_FRAGLIST)
|
||||
|
||||
/* changeable features with no special hardware requirements */
|
||||
#define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO)
|
||||
|
||||
/* Interface index. Unique device identifier */
|
||||
int ifindex;
|
||||
int iflink;
|
||||
|
|
@ -1039,6 +1218,13 @@ struct net_device {
|
|||
|
||||
/* Number of RX queues currently active in device */
|
||||
unsigned int real_num_rx_queues;
|
||||
|
||||
#ifdef CONFIG_RFS_ACCEL
|
||||
/* CPU reverse-mapping for RX completion interrupts, indexed
|
||||
* by RX queue number. Assigned by driver. This must only be
|
||||
* set if the ndo_rx_flow_steer operation is defined. */
|
||||
struct cpu_rmap *rx_cpu_rmap;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
rx_handler_func_t __rcu *rx_handler;
|
||||
|
|
@ -1132,9 +1318,6 @@ struct net_device {
|
|||
/* rtnetlink link ops */
|
||||
const struct rtnl_link_ops *rtnl_link_ops;
|
||||
|
||||
/* VLAN feature mask */
|
||||
unsigned long vlan_features;
|
||||
|
||||
/* for setting kernel sock attribute on TCP connection setup */
|
||||
#define GSO_MAX_SIZE 65536
|
||||
unsigned int gso_max_size;
|
||||
|
|
@ -1143,6 +1326,9 @@ struct net_device {
|
|||
/* Data Center Bridging netlink ops */
|
||||
const struct dcbnl_rtnl_ops *dcbnl_ops;
|
||||
#endif
|
||||
u8 num_tc;
|
||||
struct netdev_tc_txq tc_to_txq[TC_MAX_QUEUE];
|
||||
u8 prio_tc_map[TC_BITMASK + 1];
|
||||
|
||||
#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE)
|
||||
/* max exchange id for FCoE LRO by ddp */
|
||||
|
|
@ -1153,11 +1339,65 @@ struct net_device {
|
|||
|
||||
/* phy device may attach itself for hardware timestamping */
|
||||
struct phy_device *phydev;
|
||||
|
||||
/* group the device belongs to */
|
||||
int group;
|
||||
};
|
||||
#define to_net_dev(d) container_of(d, struct net_device, dev)
|
||||
|
||||
#define NETDEV_ALIGN 32
|
||||
|
||||
static inline
|
||||
int netdev_get_prio_tc_map(const struct net_device *dev, u32 prio)
|
||||
{
|
||||
return dev->prio_tc_map[prio & TC_BITMASK];
|
||||
}
|
||||
|
||||
static inline
|
||||
int netdev_set_prio_tc_map(struct net_device *dev, u8 prio, u8 tc)
|
||||
{
|
||||
if (tc >= dev->num_tc)
|
||||
return -EINVAL;
|
||||
|
||||
dev->prio_tc_map[prio & TC_BITMASK] = tc & TC_BITMASK;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline
|
||||
void netdev_reset_tc(struct net_device *dev)
|
||||
{
|
||||
dev->num_tc = 0;
|
||||
memset(dev->tc_to_txq, 0, sizeof(dev->tc_to_txq));
|
||||
memset(dev->prio_tc_map, 0, sizeof(dev->prio_tc_map));
|
||||
}
|
||||
|
||||
static inline
|
||||
int netdev_set_tc_queue(struct net_device *dev, u8 tc, u16 count, u16 offset)
|
||||
{
|
||||
if (tc >= dev->num_tc)
|
||||
return -EINVAL;
|
||||
|
||||
dev->tc_to_txq[tc].count = count;
|
||||
dev->tc_to_txq[tc].offset = offset;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline
|
||||
int netdev_set_num_tc(struct net_device *dev, u8 num_tc)
|
||||
{
|
||||
if (num_tc > TC_MAX_QUEUE)
|
||||
return -EINVAL;
|
||||
|
||||
dev->num_tc = num_tc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline
|
||||
int netdev_get_num_tc(struct net_device *dev)
|
||||
{
|
||||
return dev->num_tc;
|
||||
}
|
||||
|
||||
static inline
|
||||
struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev,
|
||||
unsigned int index)
|
||||
|
|
@ -1300,7 +1540,7 @@ struct packet_type {
|
|||
struct packet_type *,
|
||||
struct net_device *);
|
||||
struct sk_buff *(*gso_segment)(struct sk_buff *skb,
|
||||
int features);
|
||||
u32 features);
|
||||
int (*gso_send_check)(struct sk_buff *skb);
|
||||
struct sk_buff **(*gro_receive)(struct sk_buff **head,
|
||||
struct sk_buff *skb);
|
||||
|
|
@ -1345,7 +1585,7 @@ static inline struct net_device *next_net_device_rcu(struct net_device *dev)
|
|||
struct net *net;
|
||||
|
||||
net = dev_net(dev);
|
||||
lh = rcu_dereference(dev->dev_list.next);
|
||||
lh = rcu_dereference(list_next_rcu(&dev->dev_list));
|
||||
return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
|
||||
}
|
||||
|
||||
|
|
@ -1355,6 +1595,13 @@ static inline struct net_device *first_net_device(struct net *net)
|
|||
net_device_entry(net->dev_base_head.next);
|
||||
}
|
||||
|
||||
static inline struct net_device *first_net_device_rcu(struct net *net)
|
||||
{
|
||||
struct list_head *lh = rcu_dereference(list_next_rcu(&net->dev_base_head));
|
||||
|
||||
return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
|
||||
}
|
||||
|
||||
extern int netdev_boot_setup_check(struct net_device *dev);
|
||||
extern unsigned long netdev_boot_base(const char *prefix, int unit);
|
||||
extern struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
|
||||
|
|
@ -1606,8 +1853,7 @@ static inline void netif_tx_wake_all_queues(struct net_device *dev)
|
|||
static inline void netif_tx_stop_queue(struct netdev_queue *dev_queue)
|
||||
{
|
||||
if (WARN_ON(!dev_queue)) {
|
||||
printk(KERN_INFO "netif_stop_queue() cannot be called before "
|
||||
"register_netdev()");
|
||||
pr_info("netif_stop_queue() cannot be called before register_netdev()\n");
|
||||
return;
|
||||
}
|
||||
set_bit(__QUEUE_STATE_XOFF, &dev_queue->state);
|
||||
|
|
@ -1844,6 +2090,7 @@ extern int dev_set_alias(struct net_device *, const char *, size_t);
|
|||
extern int dev_change_net_namespace(struct net_device *,
|
||||
struct net *, const char *);
|
||||
extern int dev_set_mtu(struct net_device *, int);
|
||||
extern void dev_set_group(struct net_device *, int);
|
||||
extern int dev_set_mac_address(struct net_device *,
|
||||
struct sockaddr *);
|
||||
extern int dev_hard_start_xmit(struct sk_buff *skb,
|
||||
|
|
@ -2267,8 +2514,10 @@ extern int netdev_max_backlog;
|
|||
extern int netdev_tstamp_prequeue;
|
||||
extern int weight_p;
|
||||
extern int netdev_set_master(struct net_device *dev, struct net_device *master);
|
||||
extern int netdev_set_bond_master(struct net_device *dev,
|
||||
struct net_device *master);
|
||||
extern int skb_checksum_help(struct sk_buff *skb);
|
||||
extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features);
|
||||
extern struct sk_buff *skb_gso_segment(struct sk_buff *skb, u32 features);
|
||||
#ifdef CONFIG_BUG
|
||||
extern void netdev_rx_csum_fault(struct net_device *dev);
|
||||
#else
|
||||
|
|
@ -2295,22 +2544,26 @@ extern char *netdev_drivername(const struct net_device *dev, char *buffer, int l
|
|||
|
||||
extern void linkwatch_run_queue(void);
|
||||
|
||||
unsigned long netdev_increment_features(unsigned long all, unsigned long one,
|
||||
unsigned long mask);
|
||||
unsigned long netdev_fix_features(unsigned long features, const char *name);
|
||||
static inline u32 netdev_get_wanted_features(struct net_device *dev)
|
||||
{
|
||||
return (dev->features & ~dev->hw_features) | dev->wanted_features;
|
||||
}
|
||||
u32 netdev_increment_features(u32 all, u32 one, u32 mask);
|
||||
u32 netdev_fix_features(struct net_device *dev, u32 features);
|
||||
void netdev_update_features(struct net_device *dev);
|
||||
|
||||
void netif_stacked_transfer_operstate(const struct net_device *rootdev,
|
||||
struct net_device *dev);
|
||||
|
||||
int netif_skb_features(struct sk_buff *skb);
|
||||
u32 netif_skb_features(struct sk_buff *skb);
|
||||
|
||||
static inline int net_gso_ok(int features, int gso_type)
|
||||
static inline int net_gso_ok(u32 features, int gso_type)
|
||||
{
|
||||
int feature = gso_type << NETIF_F_GSO_SHIFT;
|
||||
return (features & feature) == feature;
|
||||
}
|
||||
|
||||
static inline int skb_gso_ok(struct sk_buff *skb, int features)
|
||||
static inline int skb_gso_ok(struct sk_buff *skb, u32 features)
|
||||
{
|
||||
return net_gso_ok(features, skb_shinfo(skb)->gso_type) &&
|
||||
(!skb_has_frag_list(skb) || (features & NETIF_F_FRAGLIST));
|
||||
|
|
@ -2328,15 +2581,9 @@ static inline void netif_set_gso_max_size(struct net_device *dev,
|
|||
dev->gso_max_size = size;
|
||||
}
|
||||
|
||||
extern int __skb_bond_should_drop(struct sk_buff *skb,
|
||||
struct net_device *master);
|
||||
|
||||
static inline int skb_bond_should_drop(struct sk_buff *skb,
|
||||
struct net_device *master)
|
||||
static inline int netif_is_bond_slave(struct net_device *dev)
|
||||
{
|
||||
if (master)
|
||||
return __skb_bond_should_drop(skb, master);
|
||||
return 0;
|
||||
return dev->flags & IFF_SLAVE && dev->priv_flags & IFF_BONDING;
|
||||
}
|
||||
|
||||
extern struct pernet_operations __net_initdata loopback_net_ops;
|
||||
|
|
@ -2351,6 +2598,8 @@ static inline int dev_ethtool_get_settings(struct net_device *dev,
|
|||
|
||||
static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev)
|
||||
{
|
||||
if (dev->hw_features & NETIF_F_RXCSUM)
|
||||
return !!(dev->features & NETIF_F_RXCSUM);
|
||||
if (!dev->ethtool_ops || !dev->ethtool_ops->get_rx_csum)
|
||||
return 0;
|
||||
return dev->ethtool_ops->get_rx_csum(dev);
|
||||
|
|
|
|||
|
|
@ -24,16 +24,20 @@
|
|||
#define NF_MAX_VERDICT NF_STOP
|
||||
|
||||
/* we overload the higher bits for encoding auxiliary data such as the queue
|
||||
* number. Not nice, but better than additional function arguments. */
|
||||
#define NF_VERDICT_MASK 0x0000ffff
|
||||
#define NF_VERDICT_BITS 16
|
||||
* number or errno values. Not nice, but better than additional function
|
||||
* arguments. */
|
||||
#define NF_VERDICT_MASK 0x000000ff
|
||||
|
||||
/* extra verdict flags have mask 0x0000ff00 */
|
||||
#define NF_VERDICT_FLAG_QUEUE_BYPASS 0x00008000
|
||||
|
||||
/* queue number (NF_QUEUE) or errno (NF_DROP) */
|
||||
#define NF_VERDICT_QMASK 0xffff0000
|
||||
#define NF_VERDICT_QBITS 16
|
||||
|
||||
#define NF_QUEUE_NR(x) ((((x) << NF_VERDICT_BITS) & NF_VERDICT_QMASK) | NF_QUEUE)
|
||||
#define NF_QUEUE_NR(x) ((((x) << 16) & NF_VERDICT_QMASK) | NF_QUEUE)
|
||||
|
||||
#define NF_DROP_ERR(x) (((-x) << NF_VERDICT_BITS) | NF_DROP)
|
||||
#define NF_DROP_ERR(x) (((-x) << 16) | NF_DROP)
|
||||
|
||||
/* only for userspace compatibility */
|
||||
#ifndef __KERNEL__
|
||||
|
|
@ -41,6 +45,9 @@
|
|||
<= 0x2000 is used for protocol-flags. */
|
||||
#define NFC_UNKNOWN 0x4000
|
||||
#define NFC_ALTERED 0x8000
|
||||
|
||||
/* NF_VERDICT_BITS should be 8 now, but userspace might break if this changes */
|
||||
#define NF_VERDICT_BITS 16
|
||||
#endif
|
||||
|
||||
enum nf_inet_hooks {
|
||||
|
|
@ -72,6 +79,10 @@ union nf_inet_addr {
|
|||
|
||||
#ifdef __KERNEL__
|
||||
#ifdef CONFIG_NETFILTER
|
||||
static inline int NF_DROP_GETERR(int verdict)
|
||||
{
|
||||
return -(verdict >> NF_VERDICT_QBITS);
|
||||
}
|
||||
|
||||
static inline int nf_inet_addr_cmp(const union nf_inet_addr *a1,
|
||||
const union nf_inet_addr *a2)
|
||||
|
|
@ -267,7 +278,7 @@ struct nf_afinfo {
|
|||
int route_key_size;
|
||||
};
|
||||
|
||||
extern const struct nf_afinfo *nf_afinfo[NFPROTO_NUMPROTO];
|
||||
extern const struct nf_afinfo __rcu *nf_afinfo[NFPROTO_NUMPROTO];
|
||||
static inline const struct nf_afinfo *nf_get_afinfo(unsigned short family)
|
||||
{
|
||||
return rcu_dereference(nf_afinfo[family]);
|
||||
|
|
@ -357,9 +368,9 @@ nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, u_int8_t family)
|
|||
#endif /*CONFIG_NETFILTER*/
|
||||
|
||||
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
|
||||
extern void (*ip_ct_attach)(struct sk_buff *, struct sk_buff *);
|
||||
extern void (*ip_ct_attach)(struct sk_buff *, struct sk_buff *) __rcu;
|
||||
extern void nf_ct_attach(struct sk_buff *, struct sk_buff *);
|
||||
extern void (*nf_ct_destroy)(struct nf_conntrack *);
|
||||
extern void (*nf_ct_destroy)(struct nf_conntrack *) __rcu;
|
||||
#else
|
||||
static inline void nf_ct_attach(struct sk_buff *new, struct sk_buff *skb) {}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
header-y += ipset/
|
||||
|
||||
header-y += nf_conntrack_common.h
|
||||
header-y += nf_conntrack_ftp.h
|
||||
header-y += nf_conntrack_sctp.h
|
||||
|
|
@ -9,6 +11,7 @@ header-y += nfnetlink_conntrack.h
|
|||
header-y += nfnetlink_log.h
|
||||
header-y += nfnetlink_queue.h
|
||||
header-y += x_tables.h
|
||||
header-y += xt_AUDIT.h
|
||||
header-y += xt_CHECKSUM.h
|
||||
header-y += xt_CLASSIFY.h
|
||||
header-y += xt_CONNMARK.h
|
||||
|
|
@ -26,6 +29,7 @@ header-y += xt_TCPMSS.h
|
|||
header-y += xt_TCPOPTSTRIP.h
|
||||
header-y += xt_TEE.h
|
||||
header-y += xt_TPROXY.h
|
||||
header-y += xt_addrtype.h
|
||||
header-y += xt_cluster.h
|
||||
header-y += xt_comment.h
|
||||
header-y += xt_connbytes.h
|
||||
|
|
@ -34,6 +38,7 @@ header-y += xt_connmark.h
|
|||
header-y += xt_conntrack.h
|
||||
header-y += xt_cpu.h
|
||||
header-y += xt_dccp.h
|
||||
header-y += xt_devgroup.h
|
||||
header-y += xt_dscp.h
|
||||
header-y += xt_esp.h
|
||||
header-y += xt_hashlimit.h
|
||||
|
|
@ -54,7 +59,9 @@ header-y += xt_quota.h
|
|||
header-y += xt_rateest.h
|
||||
header-y += xt_realm.h
|
||||
header-y += xt_recent.h
|
||||
header-y += xt_set.h
|
||||
header-y += xt_sctp.h
|
||||
header-y += xt_socket.h
|
||||
header-y += xt_state.h
|
||||
header-y += xt_statistic.h
|
||||
header-y += xt_string.h
|
||||
|
|
|
|||
4
include/linux/netfilter/ipset/Kbuild
Normal file
4
include/linux/netfilter/ipset/Kbuild
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
header-y += ip_set.h
|
||||
header-y += ip_set_bitmap.h
|
||||
header-y += ip_set_hash.h
|
||||
header-y += ip_set_list.h
|
||||
452
include/linux/netfilter/ipset/ip_set.h
Normal file
452
include/linux/netfilter/ipset/ip_set.h
Normal file
|
|
@ -0,0 +1,452 @@
|
|||
#ifndef _IP_SET_H
|
||||
#define _IP_SET_H
|
||||
|
||||
/* Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu>
|
||||
* Patrick Schaaf <bof@bof.de>
|
||||
* Martin Josefsson <gandalf@wlug.westbo.se>
|
||||
* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
/* The protocol version */
|
||||
#define IPSET_PROTOCOL 6
|
||||
|
||||
/* The max length of strings including NUL: set and type identifiers */
|
||||
#define IPSET_MAXNAMELEN 32
|
||||
|
||||
/* Message types and commands */
|
||||
enum ipset_cmd {
|
||||
IPSET_CMD_NONE,
|
||||
IPSET_CMD_PROTOCOL, /* 1: Return protocol version */
|
||||
IPSET_CMD_CREATE, /* 2: Create a new (empty) set */
|
||||
IPSET_CMD_DESTROY, /* 3: Destroy a (empty) set */
|
||||
IPSET_CMD_FLUSH, /* 4: Remove all elements from a set */
|
||||
IPSET_CMD_RENAME, /* 5: Rename a set */
|
||||
IPSET_CMD_SWAP, /* 6: Swap two sets */
|
||||
IPSET_CMD_LIST, /* 7: List sets */
|
||||
IPSET_CMD_SAVE, /* 8: Save sets */
|
||||
IPSET_CMD_ADD, /* 9: Add an element to a set */
|
||||
IPSET_CMD_DEL, /* 10: Delete an element from a set */
|
||||
IPSET_CMD_TEST, /* 11: Test an element in a set */
|
||||
IPSET_CMD_HEADER, /* 12: Get set header data only */
|
||||
IPSET_CMD_TYPE, /* 13: Get set type */
|
||||
IPSET_MSG_MAX, /* Netlink message commands */
|
||||
|
||||
/* Commands in userspace: */
|
||||
IPSET_CMD_RESTORE = IPSET_MSG_MAX, /* 14: Enter restore mode */
|
||||
IPSET_CMD_HELP, /* 15: Get help */
|
||||
IPSET_CMD_VERSION, /* 16: Get program version */
|
||||
IPSET_CMD_QUIT, /* 17: Quit from interactive mode */
|
||||
|
||||
IPSET_CMD_MAX,
|
||||
|
||||
IPSET_CMD_COMMIT = IPSET_CMD_MAX, /* 18: Commit buffered commands */
|
||||
};
|
||||
|
||||
/* Attributes at command level */
|
||||
enum {
|
||||
IPSET_ATTR_UNSPEC,
|
||||
IPSET_ATTR_PROTOCOL, /* 1: Protocol version */
|
||||
IPSET_ATTR_SETNAME, /* 2: Name of the set */
|
||||
IPSET_ATTR_TYPENAME, /* 3: Typename */
|
||||
IPSET_ATTR_SETNAME2 = IPSET_ATTR_TYPENAME, /* Setname at rename/swap */
|
||||
IPSET_ATTR_REVISION, /* 4: Settype revision */
|
||||
IPSET_ATTR_FAMILY, /* 5: Settype family */
|
||||
IPSET_ATTR_FLAGS, /* 6: Flags at command level */
|
||||
IPSET_ATTR_DATA, /* 7: Nested attributes */
|
||||
IPSET_ATTR_ADT, /* 8: Multiple data containers */
|
||||
IPSET_ATTR_LINENO, /* 9: Restore lineno */
|
||||
IPSET_ATTR_PROTOCOL_MIN, /* 10: Minimal supported version number */
|
||||
IPSET_ATTR_REVISION_MIN = IPSET_ATTR_PROTOCOL_MIN, /* type rev min */
|
||||
__IPSET_ATTR_CMD_MAX,
|
||||
};
|
||||
#define IPSET_ATTR_CMD_MAX (__IPSET_ATTR_CMD_MAX - 1)
|
||||
|
||||
/* CADT specific attributes */
|
||||
enum {
|
||||
IPSET_ATTR_IP = IPSET_ATTR_UNSPEC + 1,
|
||||
IPSET_ATTR_IP_FROM = IPSET_ATTR_IP,
|
||||
IPSET_ATTR_IP_TO, /* 2 */
|
||||
IPSET_ATTR_CIDR, /* 3 */
|
||||
IPSET_ATTR_PORT, /* 4 */
|
||||
IPSET_ATTR_PORT_FROM = IPSET_ATTR_PORT,
|
||||
IPSET_ATTR_PORT_TO, /* 5 */
|
||||
IPSET_ATTR_TIMEOUT, /* 6 */
|
||||
IPSET_ATTR_PROTO, /* 7 */
|
||||
IPSET_ATTR_CADT_FLAGS, /* 8 */
|
||||
IPSET_ATTR_CADT_LINENO = IPSET_ATTR_LINENO, /* 9 */
|
||||
/* Reserve empty slots */
|
||||
IPSET_ATTR_CADT_MAX = 16,
|
||||
/* Create-only specific attributes */
|
||||
IPSET_ATTR_GC,
|
||||
IPSET_ATTR_HASHSIZE,
|
||||
IPSET_ATTR_MAXELEM,
|
||||
IPSET_ATTR_NETMASK,
|
||||
IPSET_ATTR_PROBES,
|
||||
IPSET_ATTR_RESIZE,
|
||||
IPSET_ATTR_SIZE,
|
||||
/* Kernel-only */
|
||||
IPSET_ATTR_ELEMENTS,
|
||||
IPSET_ATTR_REFERENCES,
|
||||
IPSET_ATTR_MEMSIZE,
|
||||
|
||||
__IPSET_ATTR_CREATE_MAX,
|
||||
};
|
||||
#define IPSET_ATTR_CREATE_MAX (__IPSET_ATTR_CREATE_MAX - 1)
|
||||
|
||||
/* ADT specific attributes */
|
||||
enum {
|
||||
IPSET_ATTR_ETHER = IPSET_ATTR_CADT_MAX + 1,
|
||||
IPSET_ATTR_NAME,
|
||||
IPSET_ATTR_NAMEREF,
|
||||
IPSET_ATTR_IP2,
|
||||
IPSET_ATTR_CIDR2,
|
||||
__IPSET_ATTR_ADT_MAX,
|
||||
};
|
||||
#define IPSET_ATTR_ADT_MAX (__IPSET_ATTR_ADT_MAX - 1)
|
||||
|
||||
/* IP specific attributes */
|
||||
enum {
|
||||
IPSET_ATTR_IPADDR_IPV4 = IPSET_ATTR_UNSPEC + 1,
|
||||
IPSET_ATTR_IPADDR_IPV6,
|
||||
__IPSET_ATTR_IPADDR_MAX,
|
||||
};
|
||||
#define IPSET_ATTR_IPADDR_MAX (__IPSET_ATTR_IPADDR_MAX - 1)
|
||||
|
||||
/* Error codes */
|
||||
enum ipset_errno {
|
||||
IPSET_ERR_PRIVATE = 4096,
|
||||
IPSET_ERR_PROTOCOL,
|
||||
IPSET_ERR_FIND_TYPE,
|
||||
IPSET_ERR_MAX_SETS,
|
||||
IPSET_ERR_BUSY,
|
||||
IPSET_ERR_EXIST_SETNAME2,
|
||||
IPSET_ERR_TYPE_MISMATCH,
|
||||
IPSET_ERR_EXIST,
|
||||
IPSET_ERR_INVALID_CIDR,
|
||||
IPSET_ERR_INVALID_NETMASK,
|
||||
IPSET_ERR_INVALID_FAMILY,
|
||||
IPSET_ERR_TIMEOUT,
|
||||
IPSET_ERR_REFERENCED,
|
||||
IPSET_ERR_IPADDR_IPV4,
|
||||
IPSET_ERR_IPADDR_IPV6,
|
||||
|
||||
/* Type specific error codes */
|
||||
IPSET_ERR_TYPE_SPECIFIC = 4352,
|
||||
};
|
||||
|
||||
/* Flags at command level */
|
||||
enum ipset_cmd_flags {
|
||||
IPSET_FLAG_BIT_EXIST = 0,
|
||||
IPSET_FLAG_EXIST = (1 << IPSET_FLAG_BIT_EXIST),
|
||||
};
|
||||
|
||||
/* Flags at CADT attribute level */
|
||||
enum ipset_cadt_flags {
|
||||
IPSET_FLAG_BIT_BEFORE = 0,
|
||||
IPSET_FLAG_BEFORE = (1 << IPSET_FLAG_BIT_BEFORE),
|
||||
};
|
||||
|
||||
/* Commands with settype-specific attributes */
|
||||
enum ipset_adt {
|
||||
IPSET_ADD,
|
||||
IPSET_DEL,
|
||||
IPSET_TEST,
|
||||
IPSET_ADT_MAX,
|
||||
IPSET_CREATE = IPSET_ADT_MAX,
|
||||
IPSET_CADT_MAX,
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/ip.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/netlink.h>
|
||||
#include <linux/netfilter.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <net/netlink.h>
|
||||
|
||||
/* Sets are identified by an index in kernel space. Tweak with ip_set_id_t
|
||||
* and IPSET_INVALID_ID if you want to increase the max number of sets.
|
||||
*/
|
||||
typedef u16 ip_set_id_t;
|
||||
|
||||
#define IPSET_INVALID_ID 65535
|
||||
|
||||
enum ip_set_dim {
|
||||
IPSET_DIM_ZERO = 0,
|
||||
IPSET_DIM_ONE,
|
||||
IPSET_DIM_TWO,
|
||||
IPSET_DIM_THREE,
|
||||
/* Max dimension in elements.
|
||||
* If changed, new revision of iptables match/target is required.
|
||||
*/
|
||||
IPSET_DIM_MAX = 6,
|
||||
};
|
||||
|
||||
/* Option flags for kernel operations */
|
||||
enum ip_set_kopt {
|
||||
IPSET_INV_MATCH = (1 << IPSET_DIM_ZERO),
|
||||
IPSET_DIM_ONE_SRC = (1 << IPSET_DIM_ONE),
|
||||
IPSET_DIM_TWO_SRC = (1 << IPSET_DIM_TWO),
|
||||
IPSET_DIM_THREE_SRC = (1 << IPSET_DIM_THREE),
|
||||
};
|
||||
|
||||
/* Set features */
|
||||
enum ip_set_feature {
|
||||
IPSET_TYPE_IP_FLAG = 0,
|
||||
IPSET_TYPE_IP = (1 << IPSET_TYPE_IP_FLAG),
|
||||
IPSET_TYPE_PORT_FLAG = 1,
|
||||
IPSET_TYPE_PORT = (1 << IPSET_TYPE_PORT_FLAG),
|
||||
IPSET_TYPE_MAC_FLAG = 2,
|
||||
IPSET_TYPE_MAC = (1 << IPSET_TYPE_MAC_FLAG),
|
||||
IPSET_TYPE_IP2_FLAG = 3,
|
||||
IPSET_TYPE_IP2 = (1 << IPSET_TYPE_IP2_FLAG),
|
||||
IPSET_TYPE_NAME_FLAG = 4,
|
||||
IPSET_TYPE_NAME = (1 << IPSET_TYPE_NAME_FLAG),
|
||||
/* Strictly speaking not a feature, but a flag for dumping:
|
||||
* this settype must be dumped last */
|
||||
IPSET_DUMP_LAST_FLAG = 7,
|
||||
IPSET_DUMP_LAST = (1 << IPSET_DUMP_LAST_FLAG),
|
||||
};
|
||||
|
||||
struct ip_set;
|
||||
|
||||
typedef int (*ipset_adtfn)(struct ip_set *set, void *value, u32 timeout);
|
||||
|
||||
/* Set type, variant-specific part */
|
||||
struct ip_set_type_variant {
|
||||
/* Kernelspace: test/add/del entries
|
||||
* returns negative error code,
|
||||
* zero for no match/success to add/delete
|
||||
* positive for matching element */
|
||||
int (*kadt)(struct ip_set *set, const struct sk_buff * skb,
|
||||
enum ipset_adt adt, u8 pf, u8 dim, u8 flags);
|
||||
|
||||
/* Userspace: test/add/del entries
|
||||
* returns negative error code,
|
||||
* zero for no match/success to add/delete
|
||||
* positive for matching element */
|
||||
int (*uadt)(struct ip_set *set, struct nlattr *tb[],
|
||||
enum ipset_adt adt, u32 *lineno, u32 flags);
|
||||
|
||||
/* Low level add/del/test functions */
|
||||
ipset_adtfn adt[IPSET_ADT_MAX];
|
||||
|
||||
/* When adding entries and set is full, try to resize the set */
|
||||
int (*resize)(struct ip_set *set, bool retried);
|
||||
/* Destroy the set */
|
||||
void (*destroy)(struct ip_set *set);
|
||||
/* Flush the elements */
|
||||
void (*flush)(struct ip_set *set);
|
||||
/* Expire entries before listing */
|
||||
void (*expire)(struct ip_set *set);
|
||||
/* List set header data */
|
||||
int (*head)(struct ip_set *set, struct sk_buff *skb);
|
||||
/* List elements */
|
||||
int (*list)(const struct ip_set *set, struct sk_buff *skb,
|
||||
struct netlink_callback *cb);
|
||||
|
||||
/* Return true if "b" set is the same as "a"
|
||||
* according to the create set parameters */
|
||||
bool (*same_set)(const struct ip_set *a, const struct ip_set *b);
|
||||
};
|
||||
|
||||
/* The core set type structure */
|
||||
struct ip_set_type {
|
||||
struct list_head list;
|
||||
|
||||
/* Typename */
|
||||
char name[IPSET_MAXNAMELEN];
|
||||
/* Protocol version */
|
||||
u8 protocol;
|
||||
/* Set features to control swapping */
|
||||
u8 features;
|
||||
/* Set type dimension */
|
||||
u8 dimension;
|
||||
/* Supported family: may be AF_UNSPEC for both AF_INET/AF_INET6 */
|
||||
u8 family;
|
||||
/* Type revision */
|
||||
u8 revision;
|
||||
|
||||
/* Create set */
|
||||
int (*create)(struct ip_set *set, struct nlattr *tb[], u32 flags);
|
||||
|
||||
/* Attribute policies */
|
||||
const struct nla_policy create_policy[IPSET_ATTR_CREATE_MAX + 1];
|
||||
const struct nla_policy adt_policy[IPSET_ATTR_ADT_MAX + 1];
|
||||
|
||||
/* Set this to THIS_MODULE if you are a module, otherwise NULL */
|
||||
struct module *me;
|
||||
};
|
||||
|
||||
/* register and unregister set type */
|
||||
extern int ip_set_type_register(struct ip_set_type *set_type);
|
||||
extern void ip_set_type_unregister(struct ip_set_type *set_type);
|
||||
|
||||
/* A generic IP set */
|
||||
struct ip_set {
|
||||
/* The name of the set */
|
||||
char name[IPSET_MAXNAMELEN];
|
||||
/* Lock protecting the set data */
|
||||
rwlock_t lock;
|
||||
/* References to the set */
|
||||
atomic_t ref;
|
||||
/* The core set type */
|
||||
struct ip_set_type *type;
|
||||
/* The type variant doing the real job */
|
||||
const struct ip_set_type_variant *variant;
|
||||
/* The actual INET family of the set */
|
||||
u8 family;
|
||||
/* The type specific data */
|
||||
void *data;
|
||||
};
|
||||
|
||||
/* register and unregister set references */
|
||||
extern ip_set_id_t ip_set_get_byname(const char *name, struct ip_set **set);
|
||||
extern void ip_set_put_byindex(ip_set_id_t index);
|
||||
extern const char * ip_set_name_byindex(ip_set_id_t index);
|
||||
extern ip_set_id_t ip_set_nfnl_get(const char *name);
|
||||
extern ip_set_id_t ip_set_nfnl_get_byindex(ip_set_id_t index);
|
||||
extern void ip_set_nfnl_put(ip_set_id_t index);
|
||||
|
||||
/* API for iptables set match, and SET target */
|
||||
extern int ip_set_add(ip_set_id_t id, const struct sk_buff *skb,
|
||||
u8 family, u8 dim, u8 flags);
|
||||
extern int ip_set_del(ip_set_id_t id, const struct sk_buff *skb,
|
||||
u8 family, u8 dim, u8 flags);
|
||||
extern int ip_set_test(ip_set_id_t id, const struct sk_buff *skb,
|
||||
u8 family, u8 dim, u8 flags);
|
||||
|
||||
/* Utility functions */
|
||||
extern void * ip_set_alloc(size_t size);
|
||||
extern void ip_set_free(void *members);
|
||||
extern int ip_set_get_ipaddr4(struct nlattr *nla, __be32 *ipaddr);
|
||||
extern int ip_set_get_ipaddr6(struct nlattr *nla, union nf_inet_addr *ipaddr);
|
||||
|
||||
static inline int
|
||||
ip_set_get_hostipaddr4(struct nlattr *nla, u32 *ipaddr)
|
||||
{
|
||||
__be32 ip;
|
||||
int ret = ip_set_get_ipaddr4(nla, &ip);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
*ipaddr = ntohl(ip);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Ignore IPSET_ERR_EXIST errors if asked to do so? */
|
||||
static inline bool
|
||||
ip_set_eexist(int ret, u32 flags)
|
||||
{
|
||||
return ret == -IPSET_ERR_EXIST && (flags & IPSET_FLAG_EXIST);
|
||||
}
|
||||
|
||||
/* Check the NLA_F_NET_BYTEORDER flag */
|
||||
static inline bool
|
||||
ip_set_attr_netorder(struct nlattr *tb[], int type)
|
||||
{
|
||||
return tb[type] && (tb[type]->nla_type & NLA_F_NET_BYTEORDER);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
ip_set_optattr_netorder(struct nlattr *tb[], int type)
|
||||
{
|
||||
return !tb[type] || (tb[type]->nla_type & NLA_F_NET_BYTEORDER);
|
||||
}
|
||||
|
||||
/* Useful converters */
|
||||
static inline u32
|
||||
ip_set_get_h32(const struct nlattr *attr)
|
||||
{
|
||||
return ntohl(nla_get_be32(attr));
|
||||
}
|
||||
|
||||
static inline u16
|
||||
ip_set_get_h16(const struct nlattr *attr)
|
||||
{
|
||||
return ntohs(nla_get_be16(attr));
|
||||
}
|
||||
|
||||
#define ipset_nest_start(skb, attr) nla_nest_start(skb, attr | NLA_F_NESTED)
|
||||
#define ipset_nest_end(skb, start) nla_nest_end(skb, start)
|
||||
|
||||
#define NLA_PUT_IPADDR4(skb, type, ipaddr) \
|
||||
do { \
|
||||
struct nlattr *__nested = ipset_nest_start(skb, type); \
|
||||
\
|
||||
if (!__nested) \
|
||||
goto nla_put_failure; \
|
||||
NLA_PUT_NET32(skb, IPSET_ATTR_IPADDR_IPV4, ipaddr); \
|
||||
ipset_nest_end(skb, __nested); \
|
||||
} while (0)
|
||||
|
||||
#define NLA_PUT_IPADDR6(skb, type, ipaddrptr) \
|
||||
do { \
|
||||
struct nlattr *__nested = ipset_nest_start(skb, type); \
|
||||
\
|
||||
if (!__nested) \
|
||||
goto nla_put_failure; \
|
||||
NLA_PUT(skb, IPSET_ATTR_IPADDR_IPV6, \
|
||||
sizeof(struct in6_addr), ipaddrptr); \
|
||||
ipset_nest_end(skb, __nested); \
|
||||
} while (0)
|
||||
|
||||
/* Get address from skbuff */
|
||||
static inline __be32
|
||||
ip4addr(const struct sk_buff *skb, bool src)
|
||||
{
|
||||
return src ? ip_hdr(skb)->saddr : ip_hdr(skb)->daddr;
|
||||
}
|
||||
|
||||
static inline void
|
||||
ip4addrptr(const struct sk_buff *skb, bool src, __be32 *addr)
|
||||
{
|
||||
*addr = src ? ip_hdr(skb)->saddr : ip_hdr(skb)->daddr;
|
||||
}
|
||||
|
||||
static inline void
|
||||
ip6addrptr(const struct sk_buff *skb, bool src, struct in6_addr *addr)
|
||||
{
|
||||
memcpy(addr, src ? &ipv6_hdr(skb)->saddr : &ipv6_hdr(skb)->daddr,
|
||||
sizeof(*addr));
|
||||
}
|
||||
|
||||
/* Calculate the bytes required to store the inclusive range of a-b */
|
||||
static inline int
|
||||
bitmap_bytes(u32 a, u32 b)
|
||||
{
|
||||
return 4 * ((((b - a + 8) / 8) + 3) / 4);
|
||||
}
|
||||
|
||||
/* Interface to iptables/ip6tables */
|
||||
|
||||
#define SO_IP_SET 83
|
||||
|
||||
union ip_set_name_index {
|
||||
char name[IPSET_MAXNAMELEN];
|
||||
ip_set_id_t index;
|
||||
};
|
||||
|
||||
#define IP_SET_OP_GET_BYNAME 0x00000006 /* Get set index by name */
|
||||
struct ip_set_req_get_set {
|
||||
unsigned op;
|
||||
unsigned version;
|
||||
union ip_set_name_index set;
|
||||
};
|
||||
|
||||
#define IP_SET_OP_GET_BYINDEX 0x00000007 /* Get set name by index */
|
||||
/* Uses ip_set_req_get_set */
|
||||
|
||||
#define IP_SET_OP_VERSION 0x00000100 /* Ask kernel version */
|
||||
struct ip_set_req_version {
|
||||
unsigned op;
|
||||
unsigned version;
|
||||
};
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /*_IP_SET_H */
|
||||
1074
include/linux/netfilter/ipset/ip_set_ahash.h
Normal file
1074
include/linux/netfilter/ipset/ip_set_ahash.h
Normal file
File diff suppressed because it is too large
Load diff
31
include/linux/netfilter/ipset/ip_set_bitmap.h
Normal file
31
include/linux/netfilter/ipset/ip_set_bitmap.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
#ifndef __IP_SET_BITMAP_H
|
||||
#define __IP_SET_BITMAP_H
|
||||
|
||||
/* Bitmap type specific error codes */
|
||||
enum {
|
||||
/* The element is out of the range of the set */
|
||||
IPSET_ERR_BITMAP_RANGE = IPSET_ERR_TYPE_SPECIFIC,
|
||||
/* The range exceeds the size limit of the set type */
|
||||
IPSET_ERR_BITMAP_RANGE_SIZE,
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#define IPSET_BITMAP_MAX_RANGE 0x0000FFFF
|
||||
|
||||
/* Common functions */
|
||||
|
||||
static inline u32
|
||||
range_to_mask(u32 from, u32 to, u8 *bits)
|
||||
{
|
||||
u32 mask = 0xFFFFFFFE;
|
||||
|
||||
*bits = 32;
|
||||
while (--(*bits) > 0 && mask && (to & mask) != from)
|
||||
mask <<= 1;
|
||||
|
||||
return mask;
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __IP_SET_BITMAP_H */
|
||||
21
include/linux/netfilter/ipset/ip_set_getport.h
Normal file
21
include/linux/netfilter/ipset/ip_set_getport.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#ifndef _IP_SET_GETPORT_H
|
||||
#define _IP_SET_GETPORT_H
|
||||
|
||||
extern bool ip_set_get_ip4_port(const struct sk_buff *skb, bool src,
|
||||
__be16 *port, u8 *proto);
|
||||
|
||||
#if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE)
|
||||
extern bool ip_set_get_ip6_port(const struct sk_buff *skb, bool src,
|
||||
__be16 *port, u8 *proto);
|
||||
#else
|
||||
static inline bool ip_set_get_ip6_port(const struct sk_buff *skb, bool src,
|
||||
__be16 *port, u8 *proto)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern bool ip_set_get_ip_port(const struct sk_buff *skb, u8 pf, bool src,
|
||||
__be16 *port);
|
||||
|
||||
#endif /*_IP_SET_GETPORT_H*/
|
||||
26
include/linux/netfilter/ipset/ip_set_hash.h
Normal file
26
include/linux/netfilter/ipset/ip_set_hash.h
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#ifndef __IP_SET_HASH_H
|
||||
#define __IP_SET_HASH_H
|
||||
|
||||
/* Hash type specific error codes */
|
||||
enum {
|
||||
/* Hash is full */
|
||||
IPSET_ERR_HASH_FULL = IPSET_ERR_TYPE_SPECIFIC,
|
||||
/* Null-valued element */
|
||||
IPSET_ERR_HASH_ELEM,
|
||||
/* Invalid protocol */
|
||||
IPSET_ERR_INVALID_PROTO,
|
||||
/* Protocol missing but must be specified */
|
||||
IPSET_ERR_MISSING_PROTO,
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define IPSET_DEFAULT_HASHSIZE 1024
|
||||
#define IPSET_MIMINAL_HASHSIZE 64
|
||||
#define IPSET_DEFAULT_MAXELEM 65536
|
||||
#define IPSET_DEFAULT_PROBES 4
|
||||
#define IPSET_DEFAULT_RESIZE 100
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __IP_SET_HASH_H */
|
||||
27
include/linux/netfilter/ipset/ip_set_list.h
Normal file
27
include/linux/netfilter/ipset/ip_set_list.h
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#ifndef __IP_SET_LIST_H
|
||||
#define __IP_SET_LIST_H
|
||||
|
||||
/* List type specific error codes */
|
||||
enum {
|
||||
/* Set name to be added/deleted/tested does not exist. */
|
||||
IPSET_ERR_NAME = IPSET_ERR_TYPE_SPECIFIC,
|
||||
/* list:set type is not permitted to add */
|
||||
IPSET_ERR_LOOP,
|
||||
/* Missing reference set */
|
||||
IPSET_ERR_BEFORE,
|
||||
/* Reference set does not exist */
|
||||
IPSET_ERR_NAMEREF,
|
||||
/* Set is full */
|
||||
IPSET_ERR_LIST_FULL,
|
||||
/* Reference set is not added to the set */
|
||||
IPSET_ERR_REF_EXIST,
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define IP_SET_LIST_DEFAULT_SIZE 8
|
||||
#define IP_SET_LIST_MIN_SIZE 4
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* __IP_SET_LIST_H */
|
||||
127
include/linux/netfilter/ipset/ip_set_timeout.h
Normal file
127
include/linux/netfilter/ipset/ip_set_timeout.h
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
#ifndef _IP_SET_TIMEOUT_H
|
||||
#define _IP_SET_TIMEOUT_H
|
||||
|
||||
/* Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/* How often should the gc be run by default */
|
||||
#define IPSET_GC_TIME (3 * 60)
|
||||
|
||||
/* Timeout period depending on the timeout value of the given set */
|
||||
#define IPSET_GC_PERIOD(timeout) \
|
||||
((timeout/3) ? min_t(u32, (timeout)/3, IPSET_GC_TIME) : 1)
|
||||
|
||||
/* Set is defined without timeout support: timeout value may be 0 */
|
||||
#define IPSET_NO_TIMEOUT UINT_MAX
|
||||
|
||||
#define with_timeout(timeout) ((timeout) != IPSET_NO_TIMEOUT)
|
||||
|
||||
static inline unsigned int
|
||||
ip_set_timeout_uget(struct nlattr *tb)
|
||||
{
|
||||
unsigned int timeout = ip_set_get_h32(tb);
|
||||
|
||||
/* Userspace supplied TIMEOUT parameter: adjust crazy size */
|
||||
return timeout == IPSET_NO_TIMEOUT ? IPSET_NO_TIMEOUT - 1 : timeout;
|
||||
}
|
||||
|
||||
#ifdef IP_SET_BITMAP_TIMEOUT
|
||||
|
||||
/* Bitmap specific timeout constants and macros for the entries */
|
||||
|
||||
/* Bitmap entry is unset */
|
||||
#define IPSET_ELEM_UNSET 0
|
||||
/* Bitmap entry is set with no timeout value */
|
||||
#define IPSET_ELEM_PERMANENT (UINT_MAX/2)
|
||||
|
||||
static inline bool
|
||||
ip_set_timeout_test(unsigned long timeout)
|
||||
{
|
||||
return timeout != IPSET_ELEM_UNSET &&
|
||||
(timeout == IPSET_ELEM_PERMANENT ||
|
||||
time_after(timeout, jiffies));
|
||||
}
|
||||
|
||||
static inline bool
|
||||
ip_set_timeout_expired(unsigned long timeout)
|
||||
{
|
||||
return timeout != IPSET_ELEM_UNSET &&
|
||||
timeout != IPSET_ELEM_PERMANENT &&
|
||||
time_before(timeout, jiffies);
|
||||
}
|
||||
|
||||
static inline unsigned long
|
||||
ip_set_timeout_set(u32 timeout)
|
||||
{
|
||||
unsigned long t;
|
||||
|
||||
if (!timeout)
|
||||
return IPSET_ELEM_PERMANENT;
|
||||
|
||||
t = timeout * HZ + jiffies;
|
||||
if (t == IPSET_ELEM_UNSET || t == IPSET_ELEM_PERMANENT)
|
||||
/* Bingo! */
|
||||
t++;
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
static inline u32
|
||||
ip_set_timeout_get(unsigned long timeout)
|
||||
{
|
||||
return timeout == IPSET_ELEM_PERMANENT ? 0 : (timeout - jiffies)/HZ;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/* Hash specific timeout constants and macros for the entries */
|
||||
|
||||
/* Hash entry is set with no timeout value */
|
||||
#define IPSET_ELEM_PERMANENT 0
|
||||
|
||||
static inline bool
|
||||
ip_set_timeout_test(unsigned long timeout)
|
||||
{
|
||||
return timeout == IPSET_ELEM_PERMANENT ||
|
||||
time_after(timeout, jiffies);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
ip_set_timeout_expired(unsigned long timeout)
|
||||
{
|
||||
return timeout != IPSET_ELEM_PERMANENT &&
|
||||
time_before(timeout, jiffies);
|
||||
}
|
||||
|
||||
static inline unsigned long
|
||||
ip_set_timeout_set(u32 timeout)
|
||||
{
|
||||
unsigned long t;
|
||||
|
||||
if (!timeout)
|
||||
return IPSET_ELEM_PERMANENT;
|
||||
|
||||
t = timeout * HZ + jiffies;
|
||||
if (t == IPSET_ELEM_PERMANENT)
|
||||
/* Bingo! :-) */
|
||||
t++;
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
static inline u32
|
||||
ip_set_timeout_get(unsigned long timeout)
|
||||
{
|
||||
return timeout == IPSET_ELEM_PERMANENT ? 0 : (timeout - jiffies)/HZ;
|
||||
}
|
||||
#endif /* ! IP_SET_BITMAP_TIMEOUT */
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _IP_SET_TIMEOUT_H */
|
||||
35
include/linux/netfilter/ipset/pfxlen.h
Normal file
35
include/linux/netfilter/ipset/pfxlen.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#ifndef _PFXLEN_H
|
||||
#define _PFXLEN_H
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
#include <linux/netfilter.h>
|
||||
|
||||
/* Prefixlen maps, by Jan Engelhardt */
|
||||
extern const union nf_inet_addr ip_set_netmask_map[];
|
||||
extern const union nf_inet_addr ip_set_hostmask_map[];
|
||||
|
||||
static inline __be32
|
||||
ip_set_netmask(u8 pfxlen)
|
||||
{
|
||||
return ip_set_netmask_map[pfxlen].ip;
|
||||
}
|
||||
|
||||
static inline const __be32 *
|
||||
ip_set_netmask6(u8 pfxlen)
|
||||
{
|
||||
return &ip_set_netmask_map[pfxlen].ip6[0];
|
||||
}
|
||||
|
||||
static inline u32
|
||||
ip_set_hostmask(u8 pfxlen)
|
||||
{
|
||||
return (__force u32) ip_set_hostmask_map[pfxlen].ip;
|
||||
}
|
||||
|
||||
static inline const __be32 *
|
||||
ip_set_hostmask6(u8 pfxlen)
|
||||
{
|
||||
return &ip_set_hostmask_map[pfxlen].ip6[0];
|
||||
}
|
||||
|
||||
#endif /*_PFXLEN_H */
|
||||
9
include/linux/netfilter/nf_conntrack_snmp.h
Normal file
9
include/linux/netfilter/nf_conntrack_snmp.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef _NF_CONNTRACK_SNMP_H
|
||||
#define _NF_CONNTRACK_SNMP_H
|
||||
|
||||
extern int (*nf_nat_snmp_hook)(struct sk_buff *skb,
|
||||
unsigned int protoff,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo);
|
||||
|
||||
#endif /* _NF_CONNTRACK_SNMP_H */
|
||||
|
|
@ -47,7 +47,8 @@ struct nfgenmsg {
|
|||
#define NFNL_SUBSYS_QUEUE 3
|
||||
#define NFNL_SUBSYS_ULOG 4
|
||||
#define NFNL_SUBSYS_OSF 5
|
||||
#define NFNL_SUBSYS_COUNT 6
|
||||
#define NFNL_SUBSYS_IPSET 6
|
||||
#define NFNL_SUBSYS_COUNT 7
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ enum ctattr_type {
|
|||
CTA_SECMARK, /* obsolete */
|
||||
CTA_ZONE,
|
||||
CTA_SECCTX,
|
||||
CTA_TIMESTAMP,
|
||||
__CTA_MAX
|
||||
};
|
||||
#define CTA_MAX (__CTA_MAX - 1)
|
||||
|
|
@ -127,6 +128,14 @@ enum ctattr_counters {
|
|||
};
|
||||
#define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1)
|
||||
|
||||
enum ctattr_tstamp {
|
||||
CTA_TIMESTAMP_UNSPEC,
|
||||
CTA_TIMESTAMP_START,
|
||||
CTA_TIMESTAMP_STOP,
|
||||
__CTA_TIMESTAMP_MAX
|
||||
};
|
||||
#define CTA_TIMESTAMP_MAX (__CTA_TIMESTAMP_MAX - 1)
|
||||
|
||||
enum ctattr_nat {
|
||||
CTA_NAT_UNSPEC,
|
||||
CTA_NAT_MINIP,
|
||||
|
|
|
|||
|
|
@ -611,8 +611,9 @@ struct _compat_xt_align {
|
|||
extern void xt_compat_lock(u_int8_t af);
|
||||
extern void xt_compat_unlock(u_int8_t af);
|
||||
|
||||
extern int xt_compat_add_offset(u_int8_t af, unsigned int offset, short delta);
|
||||
extern int xt_compat_add_offset(u_int8_t af, unsigned int offset, int delta);
|
||||
extern void xt_compat_flush_offsets(u_int8_t af);
|
||||
extern void xt_compat_init_offsets(u_int8_t af, unsigned int number);
|
||||
extern int xt_compat_calc_jump(u_int8_t af, unsigned int offset);
|
||||
|
||||
extern int xt_compat_match_offset(const struct xt_match *match);
|
||||
|
|
|
|||
30
include/linux/netfilter/xt_AUDIT.h
Normal file
30
include/linux/netfilter/xt_AUDIT.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Header file for iptables xt_AUDIT target
|
||||
*
|
||||
* (C) 2010-2011 Thomas Graf <tgraf@redhat.com>
|
||||
* (C) 2010-2011 Red Hat, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef _XT_AUDIT_TARGET_H
|
||||
#define _XT_AUDIT_TARGET_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
XT_AUDIT_TYPE_ACCEPT = 0,
|
||||
XT_AUDIT_TYPE_DROP,
|
||||
XT_AUDIT_TYPE_REJECT,
|
||||
__XT_AUDIT_TYPE_MAX,
|
||||
};
|
||||
|
||||
#define XT_AUDIT_TYPE_MAX (__XT_AUDIT_TYPE_MAX - 1)
|
||||
|
||||
struct xt_audit_info {
|
||||
__u8 type; /* XT_AUDIT_TYPE_* */
|
||||
};
|
||||
|
||||
#endif /* _XT_AUDIT_TARGET_H */
|
||||
|
|
@ -1,14 +1,16 @@
|
|||
#ifndef _XT_CT_H
|
||||
#define _XT_CT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define XT_CT_NOTRACK 0x1
|
||||
|
||||
struct xt_ct_target_info {
|
||||
u_int16_t flags;
|
||||
u_int16_t zone;
|
||||
u_int32_t ct_events;
|
||||
u_int32_t exp_events;
|
||||
char helper[16];
|
||||
__u16 flags;
|
||||
__u16 zone;
|
||||
__u32 ct_events;
|
||||
__u32 exp_events;
|
||||
char helper[16];
|
||||
|
||||
/* Used internally by the kernel */
|
||||
struct nf_conn *ct __attribute__((aligned(8)));
|
||||
|
|
|
|||
|
|
@ -20,4 +20,10 @@ struct xt_NFQ_info_v1 {
|
|||
__u16 queues_total;
|
||||
};
|
||||
|
||||
struct xt_NFQ_info_v2 {
|
||||
__u16 queuenum;
|
||||
__u16 queues_total;
|
||||
__u16 bypass;
|
||||
};
|
||||
|
||||
#endif /* _XT_NFQ_TARGET_H */
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
#ifndef _XT_TCPOPTSTRIP_H
|
||||
#define _XT_TCPOPTSTRIP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define tcpoptstrip_set_bit(bmap, idx) \
|
||||
(bmap[(idx) >> 5] |= 1U << (idx & 31))
|
||||
#define tcpoptstrip_test_bit(bmap, idx) \
|
||||
(((1U << (idx & 31)) & bmap[(idx) >> 5]) != 0)
|
||||
|
||||
struct xt_tcpoptstrip_target_info {
|
||||
u_int32_t strip_bmap[8];
|
||||
__u32 strip_bmap[8];
|
||||
};
|
||||
|
||||
#endif /* _XT_TCPOPTSTRIP_H */
|
||||
|
|
|
|||
|
|
@ -1,19 +1,21 @@
|
|||
#ifndef _XT_TPROXY_H
|
||||
#define _XT_TPROXY_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* TPROXY target is capable of marking the packet to perform
|
||||
* redirection. We can get rid of that whenever we get support for
|
||||
* mutliple targets in the same rule. */
|
||||
struct xt_tproxy_target_info {
|
||||
u_int32_t mark_mask;
|
||||
u_int32_t mark_value;
|
||||
__u32 mark_mask;
|
||||
__u32 mark_value;
|
||||
__be32 laddr;
|
||||
__be16 lport;
|
||||
};
|
||||
|
||||
struct xt_tproxy_target_info_v1 {
|
||||
u_int32_t mark_mask;
|
||||
u_int32_t mark_value;
|
||||
__u32 mark_mask;
|
||||
__u32 mark_value;
|
||||
union nf_inet_addr laddr;
|
||||
__be16 lport;
|
||||
};
|
||||
|
|
|
|||
44
include/linux/netfilter/xt_addrtype.h
Normal file
44
include/linux/netfilter/xt_addrtype.h
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#ifndef _XT_ADDRTYPE_H
|
||||
#define _XT_ADDRTYPE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
XT_ADDRTYPE_INVERT_SOURCE = 0x0001,
|
||||
XT_ADDRTYPE_INVERT_DEST = 0x0002,
|
||||
XT_ADDRTYPE_LIMIT_IFACE_IN = 0x0004,
|
||||
XT_ADDRTYPE_LIMIT_IFACE_OUT = 0x0008,
|
||||
};
|
||||
|
||||
|
||||
/* rtn_type enum values from rtnetlink.h, but shifted */
|
||||
enum {
|
||||
XT_ADDRTYPE_UNSPEC = 1 << 0,
|
||||
XT_ADDRTYPE_UNICAST = 1 << 1, /* 1 << RTN_UNICAST */
|
||||
XT_ADDRTYPE_LOCAL = 1 << 2, /* 1 << RTN_LOCAL, etc */
|
||||
XT_ADDRTYPE_BROADCAST = 1 << 3,
|
||||
XT_ADDRTYPE_ANYCAST = 1 << 4,
|
||||
XT_ADDRTYPE_MULTICAST = 1 << 5,
|
||||
XT_ADDRTYPE_BLACKHOLE = 1 << 6,
|
||||
XT_ADDRTYPE_UNREACHABLE = 1 << 7,
|
||||
XT_ADDRTYPE_PROHIBIT = 1 << 8,
|
||||
XT_ADDRTYPE_THROW = 1 << 9,
|
||||
XT_ADDRTYPE_NAT = 1 << 10,
|
||||
XT_ADDRTYPE_XRESOLVE = 1 << 11,
|
||||
};
|
||||
|
||||
struct xt_addrtype_info_v1 {
|
||||
__u16 source; /* source-type mask */
|
||||
__u16 dest; /* dest-type mask */
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
/* revision 0 */
|
||||
struct xt_addrtype_info {
|
||||
__u16 source; /* source-type mask */
|
||||
__u16 dest; /* dest-type mask */
|
||||
__u32 invert_source;
|
||||
__u32 invert_dest;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -1,15 +1,17 @@
|
|||
#ifndef _XT_CLUSTER_MATCH_H
|
||||
#define _XT_CLUSTER_MATCH_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum xt_cluster_flags {
|
||||
XT_CLUSTER_F_INV = (1 << 0)
|
||||
};
|
||||
|
||||
struct xt_cluster_match_info {
|
||||
u_int32_t total_nodes;
|
||||
u_int32_t node_mask;
|
||||
u_int32_t hash_seed;
|
||||
u_int32_t flags;
|
||||
__u32 total_nodes;
|
||||
__u32 node_mask;
|
||||
__u32 hash_seed;
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
#define XT_CLUSTER_NODES_MAX 32
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#define XT_MAX_COMMENT_LEN 256
|
||||
|
||||
struct xt_comment_info {
|
||||
unsigned char comment[XT_MAX_COMMENT_LEN];
|
||||
char comment[XT_MAX_COMMENT_LEN];
|
||||
};
|
||||
|
||||
#endif /* XT_COMMENT_H */
|
||||
|
|
|
|||
|
|
@ -1,8 +1,15 @@
|
|||
#ifndef _XT_CONNLIMIT_H
|
||||
#define _XT_CONNLIMIT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct xt_connlimit_data;
|
||||
|
||||
enum {
|
||||
XT_CONNLIMIT_INVERT = 1 << 0,
|
||||
XT_CONNLIMIT_DADDR = 1 << 1,
|
||||
};
|
||||
|
||||
struct xt_connlimit_info {
|
||||
union {
|
||||
union nf_inet_addr mask;
|
||||
|
|
@ -13,7 +20,14 @@ struct xt_connlimit_info {
|
|||
};
|
||||
#endif
|
||||
};
|
||||
unsigned int limit, inverse;
|
||||
unsigned int limit;
|
||||
union {
|
||||
/* revision 0 */
|
||||
unsigned int inverse;
|
||||
|
||||
/* revision 1 */
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
/* Used internally by the kernel */
|
||||
struct xt_connlimit_data *data __attribute__((aligned(8)));
|
||||
|
|
|
|||
|
|
@ -58,4 +58,19 @@ struct xt_conntrack_mtinfo2 {
|
|||
__u16 state_mask, status_mask;
|
||||
};
|
||||
|
||||
struct xt_conntrack_mtinfo3 {
|
||||
union nf_inet_addr origsrc_addr, origsrc_mask;
|
||||
union nf_inet_addr origdst_addr, origdst_mask;
|
||||
union nf_inet_addr replsrc_addr, replsrc_mask;
|
||||
union nf_inet_addr repldst_addr, repldst_mask;
|
||||
__u32 expires_min, expires_max;
|
||||
__u16 l4proto;
|
||||
__u16 origsrc_port, origdst_port;
|
||||
__u16 replsrc_port, repldst_port;
|
||||
__u16 match_flags, invert_flags;
|
||||
__u16 state_mask, status_mask;
|
||||
__u16 origsrc_port_high, origdst_port_high;
|
||||
__u16 replsrc_port_high, repldst_port_high;
|
||||
};
|
||||
|
||||
#endif /*_XT_CONNTRACK_H*/
|
||||
|
|
|
|||
21
include/linux/netfilter/xt_devgroup.h
Normal file
21
include/linux/netfilter/xt_devgroup.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#ifndef _XT_DEVGROUP_H
|
||||
#define _XT_DEVGROUP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum xt_devgroup_flags {
|
||||
XT_DEVGROUP_MATCH_SRC = 0x1,
|
||||
XT_DEVGROUP_INVERT_SRC = 0x2,
|
||||
XT_DEVGROUP_MATCH_DST = 0x4,
|
||||
XT_DEVGROUP_INVERT_DST = 0x8,
|
||||
};
|
||||
|
||||
struct xt_devgroup_info {
|
||||
__u32 flags;
|
||||
__u32 src_group;
|
||||
__u32 src_mask;
|
||||
__u32 dst_group;
|
||||
__u32 dst_mask;
|
||||
};
|
||||
|
||||
#endif /* _XT_DEVGROUP_H */
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _XT_QUOTA_H
|
||||
#define _XT_QUOTA_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum xt_quota_flags {
|
||||
XT_QUOTA_INVERT = 0x1,
|
||||
};
|
||||
|
|
@ -9,9 +11,9 @@ enum xt_quota_flags {
|
|||
struct xt_quota_priv;
|
||||
|
||||
struct xt_quota_info {
|
||||
u_int32_t flags;
|
||||
u_int32_t pad;
|
||||
aligned_u64 quota;
|
||||
__u32 flags;
|
||||
__u32 pad;
|
||||
aligned_u64 quota;
|
||||
|
||||
/* Used internally by the kernel */
|
||||
struct xt_quota_priv *master;
|
||||
|
|
|
|||
56
include/linux/netfilter/xt_set.h
Normal file
56
include/linux/netfilter/xt_set.h
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
#ifndef _XT_SET_H
|
||||
#define _XT_SET_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netfilter/ipset/ip_set.h>
|
||||
|
||||
/* Revision 0 interface: backward compatible with netfilter/iptables */
|
||||
|
||||
/*
|
||||
* Option flags for kernel operations (xt_set_info_v0)
|
||||
*/
|
||||
#define IPSET_SRC 0x01 /* Source match/add */
|
||||
#define IPSET_DST 0x02 /* Destination match/add */
|
||||
#define IPSET_MATCH_INV 0x04 /* Inverse matching */
|
||||
|
||||
struct xt_set_info_v0 {
|
||||
ip_set_id_t index;
|
||||
union {
|
||||
__u32 flags[IPSET_DIM_MAX + 1];
|
||||
struct {
|
||||
__u32 __flags[IPSET_DIM_MAX];
|
||||
__u8 dim;
|
||||
__u8 flags;
|
||||
} compat;
|
||||
} u;
|
||||
};
|
||||
|
||||
/* match and target infos */
|
||||
struct xt_set_info_match_v0 {
|
||||
struct xt_set_info_v0 match_set;
|
||||
};
|
||||
|
||||
struct xt_set_info_target_v0 {
|
||||
struct xt_set_info_v0 add_set;
|
||||
struct xt_set_info_v0 del_set;
|
||||
};
|
||||
|
||||
/* Revision 1: current interface to netfilter/iptables */
|
||||
|
||||
struct xt_set_info {
|
||||
ip_set_id_t index;
|
||||
__u8 dim;
|
||||
__u8 flags;
|
||||
};
|
||||
|
||||
/* match and target infos */
|
||||
struct xt_set_info_match {
|
||||
struct xt_set_info match_set;
|
||||
};
|
||||
|
||||
struct xt_set_info_target {
|
||||
struct xt_set_info add_set;
|
||||
struct xt_set_info del_set;
|
||||
};
|
||||
|
||||
#endif /*_XT_SET_H*/
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _XT_SOCKET_H
|
||||
#define _XT_SOCKET_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
XT_SOCKET_TRANSPARENT = 1 << 0,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,14 +1,16 @@
|
|||
#ifndef _XT_TIME_H
|
||||
#define _XT_TIME_H 1
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct xt_time_info {
|
||||
u_int32_t date_start;
|
||||
u_int32_t date_stop;
|
||||
u_int32_t daytime_start;
|
||||
u_int32_t daytime_stop;
|
||||
u_int32_t monthdays_match;
|
||||
u_int8_t weekdays_match;
|
||||
u_int8_t flags;
|
||||
__u32 date_start;
|
||||
__u32 date_stop;
|
||||
__u32 daytime_start;
|
||||
__u32 daytime_stop;
|
||||
__u32 monthdays_match;
|
||||
__u8 weekdays_match;
|
||||
__u8 flags;
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _XT_U32_H
|
||||
#define _XT_U32_H 1
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum xt_u32_ops {
|
||||
XT_U32_AND,
|
||||
XT_U32_LEFTSH,
|
||||
|
|
@ -9,13 +11,13 @@ enum xt_u32_ops {
|
|||
};
|
||||
|
||||
struct xt_u32_location_element {
|
||||
u_int32_t number;
|
||||
u_int8_t nextop;
|
||||
__u32 number;
|
||||
__u8 nextop;
|
||||
};
|
||||
|
||||
struct xt_u32_value_element {
|
||||
u_int32_t min;
|
||||
u_int32_t max;
|
||||
__u32 min;
|
||||
__u32 max;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -27,14 +29,14 @@ struct xt_u32_value_element {
|
|||
struct xt_u32_test {
|
||||
struct xt_u32_location_element location[XT_U32_MAXSIZE+1];
|
||||
struct xt_u32_value_element value[XT_U32_MAXSIZE+1];
|
||||
u_int8_t nnums;
|
||||
u_int8_t nvalues;
|
||||
__u8 nnums;
|
||||
__u8 nvalues;
|
||||
};
|
||||
|
||||
struct xt_u32 {
|
||||
struct xt_u32_test tests[XT_U32_MAXSIZE+1];
|
||||
u_int8_t ntests;
|
||||
u_int8_t invert;
|
||||
__u8 ntests;
|
||||
__u8 invert;
|
||||
};
|
||||
|
||||
#endif /* _XT_U32_H */
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_802_3_H
|
||||
#define __LINUX_BRIDGE_EBT_802_3_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_802_3_SAP 0x01
|
||||
#define EBT_802_3_TYPE 0x02
|
||||
|
||||
|
|
@ -24,24 +26,24 @@
|
|||
|
||||
/* ui has one byte ctrl, ni has two */
|
||||
struct hdr_ui {
|
||||
uint8_t dsap;
|
||||
uint8_t ssap;
|
||||
uint8_t ctrl;
|
||||
uint8_t orig[3];
|
||||
__u8 dsap;
|
||||
__u8 ssap;
|
||||
__u8 ctrl;
|
||||
__u8 orig[3];
|
||||
__be16 type;
|
||||
};
|
||||
|
||||
struct hdr_ni {
|
||||
uint8_t dsap;
|
||||
uint8_t ssap;
|
||||
__u8 dsap;
|
||||
__u8 ssap;
|
||||
__be16 ctrl;
|
||||
uint8_t orig[3];
|
||||
__u8 orig[3];
|
||||
__be16 type;
|
||||
};
|
||||
|
||||
struct ebt_802_3_hdr {
|
||||
uint8_t daddr[6];
|
||||
uint8_t saddr[6];
|
||||
__u8 daddr[6];
|
||||
__u8 saddr[6];
|
||||
__be16 len;
|
||||
union {
|
||||
struct hdr_ui ui;
|
||||
|
|
@ -59,10 +61,10 @@ static inline struct ebt_802_3_hdr *ebt_802_3_hdr(const struct sk_buff *skb)
|
|||
#endif
|
||||
|
||||
struct ebt_802_3_info {
|
||||
uint8_t sap;
|
||||
__u8 sap;
|
||||
__be16 type;
|
||||
uint8_t bitmask;
|
||||
uint8_t invflags;
|
||||
__u8 bitmask;
|
||||
__u8 invflags;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_AMONG_H
|
||||
#define __LINUX_BRIDGE_EBT_AMONG_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_AMONG_DST 0x01
|
||||
#define EBT_AMONG_SRC 0x02
|
||||
|
||||
|
|
@ -30,7 +32,7 @@
|
|||
*/
|
||||
|
||||
struct ebt_mac_wormhash_tuple {
|
||||
uint32_t cmp[2];
|
||||
__u32 cmp[2];
|
||||
__be32 ip;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_ARP_H
|
||||
#define __LINUX_BRIDGE_EBT_ARP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_ARP_OPCODE 0x01
|
||||
#define EBT_ARP_HTYPE 0x02
|
||||
#define EBT_ARP_PTYPE 0x04
|
||||
|
|
@ -27,8 +29,8 @@ struct ebt_arp_info
|
|||
unsigned char smmsk[ETH_ALEN];
|
||||
unsigned char dmaddr[ETH_ALEN];
|
||||
unsigned char dmmsk[ETH_ALEN];
|
||||
uint8_t bitmask;
|
||||
uint8_t invflags;
|
||||
__u8 bitmask;
|
||||
__u8 invflags;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_IP_H
|
||||
#define __LINUX_BRIDGE_EBT_IP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_IP_SOURCE 0x01
|
||||
#define EBT_IP_DEST 0x02
|
||||
#define EBT_IP_TOS 0x04
|
||||
|
|
@ -31,12 +33,12 @@ struct ebt_ip_info {
|
|||
__be32 daddr;
|
||||
__be32 smsk;
|
||||
__be32 dmsk;
|
||||
uint8_t tos;
|
||||
uint8_t protocol;
|
||||
uint8_t bitmask;
|
||||
uint8_t invflags;
|
||||
uint16_t sport[2];
|
||||
uint16_t dport[2];
|
||||
__u8 tos;
|
||||
__u8 protocol;
|
||||
__u8 bitmask;
|
||||
__u8 invflags;
|
||||
__u16 sport[2];
|
||||
__u16 dport[2];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -12,14 +12,19 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_IP6_H
|
||||
#define __LINUX_BRIDGE_EBT_IP6_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_IP6_SOURCE 0x01
|
||||
#define EBT_IP6_DEST 0x02
|
||||
#define EBT_IP6_TCLASS 0x04
|
||||
#define EBT_IP6_PROTO 0x08
|
||||
#define EBT_IP6_SPORT 0x10
|
||||
#define EBT_IP6_DPORT 0x20
|
||||
#define EBT_IP6_ICMP6 0x40
|
||||
|
||||
#define EBT_IP6_MASK (EBT_IP6_SOURCE | EBT_IP6_DEST | EBT_IP6_TCLASS |\
|
||||
EBT_IP6_PROTO | EBT_IP6_SPORT | EBT_IP6_DPORT)
|
||||
EBT_IP6_PROTO | EBT_IP6_SPORT | EBT_IP6_DPORT | \
|
||||
EBT_IP6_ICMP6)
|
||||
#define EBT_IP6_MATCH "ip6"
|
||||
|
||||
/* the same values are used for the invflags */
|
||||
|
|
@ -28,12 +33,18 @@ struct ebt_ip6_info {
|
|||
struct in6_addr daddr;
|
||||
struct in6_addr smsk;
|
||||
struct in6_addr dmsk;
|
||||
uint8_t tclass;
|
||||
uint8_t protocol;
|
||||
uint8_t bitmask;
|
||||
uint8_t invflags;
|
||||
uint16_t sport[2];
|
||||
uint16_t dport[2];
|
||||
__u8 tclass;
|
||||
__u8 protocol;
|
||||
__u8 bitmask;
|
||||
__u8 invflags;
|
||||
union {
|
||||
__u16 sport[2];
|
||||
__u8 icmpv6_type[2];
|
||||
};
|
||||
union {
|
||||
__u16 dport[2];
|
||||
__u8 icmpv6_code[2];
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_LIMIT_H
|
||||
#define __LINUX_BRIDGE_EBT_LIMIT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_LIMIT_MATCH "limit"
|
||||
|
||||
/* timings are in milliseconds. */
|
||||
|
|
@ -10,13 +12,13 @@
|
|||
seconds, or one every 59 hours. */
|
||||
|
||||
struct ebt_limit_info {
|
||||
u_int32_t avg; /* Average secs between packets * scale */
|
||||
u_int32_t burst; /* Period multiplier for upper limit. */
|
||||
__u32 avg; /* Average secs between packets * scale */
|
||||
__u32 burst; /* Period multiplier for upper limit. */
|
||||
|
||||
/* Used internally by the kernel */
|
||||
unsigned long prev;
|
||||
u_int32_t credit;
|
||||
u_int32_t credit_cap, cost;
|
||||
__u32 credit;
|
||||
__u32 credit_cap, cost;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_LOG_H
|
||||
#define __LINUX_BRIDGE_EBT_LOG_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_LOG_IP 0x01 /* if the frame is made by ip, log the ip information */
|
||||
#define EBT_LOG_ARP 0x02
|
||||
#define EBT_LOG_NFLOG 0x04
|
||||
|
|
@ -10,9 +12,9 @@
|
|||
#define EBT_LOG_WATCHER "log"
|
||||
|
||||
struct ebt_log_info {
|
||||
uint8_t loglevel;
|
||||
uint8_t prefix[EBT_LOG_PREFIX_SIZE];
|
||||
uint32_t bitmask;
|
||||
__u8 loglevel;
|
||||
__u8 prefix[EBT_LOG_PREFIX_SIZE];
|
||||
__u32 bitmask;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_MARK_M_H
|
||||
#define __LINUX_BRIDGE_EBT_MARK_M_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_MARK_AND 0x01
|
||||
#define EBT_MARK_OR 0x02
|
||||
#define EBT_MARK_MASK (EBT_MARK_AND | EBT_MARK_OR)
|
||||
struct ebt_mark_m_info {
|
||||
unsigned long mark, mask;
|
||||
uint8_t invert;
|
||||
uint8_t bitmask;
|
||||
__u8 invert;
|
||||
__u8 bitmask;
|
||||
};
|
||||
#define EBT_MARK_MATCH "mark_m"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_NFLOG_H
|
||||
#define __LINUX_BRIDGE_EBT_NFLOG_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_NFLOG_MASK 0x0
|
||||
|
||||
#define EBT_NFLOG_PREFIX_SIZE 64
|
||||
|
|
@ -10,11 +12,11 @@
|
|||
#define EBT_NFLOG_DEFAULT_THRESHOLD 1
|
||||
|
||||
struct ebt_nflog_info {
|
||||
u_int32_t len;
|
||||
u_int16_t group;
|
||||
u_int16_t threshold;
|
||||
u_int16_t flags;
|
||||
u_int16_t pad;
|
||||
__u32 len;
|
||||
__u16 group;
|
||||
__u16 threshold;
|
||||
__u16 flags;
|
||||
__u16 pad;
|
||||
char prefix[EBT_NFLOG_PREFIX_SIZE];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_PKTTYPE_H
|
||||
#define __LINUX_BRIDGE_EBT_PKTTYPE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct ebt_pkttype_info {
|
||||
uint8_t pkt_type;
|
||||
uint8_t invert;
|
||||
__u8 pkt_type;
|
||||
__u8 invert;
|
||||
};
|
||||
#define EBT_PKTTYPE_MATCH "pkttype"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_STP_H
|
||||
#define __LINUX_BRIDGE_EBT_STP_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_STP_TYPE 0x0001
|
||||
|
||||
#define EBT_STP_FLAGS 0x0002
|
||||
|
|
@ -21,24 +23,24 @@
|
|||
#define EBT_STP_MATCH "stp"
|
||||
|
||||
struct ebt_stp_config_info {
|
||||
uint8_t flags;
|
||||
uint16_t root_priol, root_priou;
|
||||
__u8 flags;
|
||||
__u16 root_priol, root_priou;
|
||||
char root_addr[6], root_addrmsk[6];
|
||||
uint32_t root_costl, root_costu;
|
||||
uint16_t sender_priol, sender_priou;
|
||||
__u32 root_costl, root_costu;
|
||||
__u16 sender_priol, sender_priou;
|
||||
char sender_addr[6], sender_addrmsk[6];
|
||||
uint16_t portl, portu;
|
||||
uint16_t msg_agel, msg_ageu;
|
||||
uint16_t max_agel, max_ageu;
|
||||
uint16_t hello_timel, hello_timeu;
|
||||
uint16_t forward_delayl, forward_delayu;
|
||||
__u16 portl, portu;
|
||||
__u16 msg_agel, msg_ageu;
|
||||
__u16 max_agel, max_ageu;
|
||||
__u16 hello_timel, hello_timeu;
|
||||
__u16 forward_delayl, forward_delayu;
|
||||
};
|
||||
|
||||
struct ebt_stp_info {
|
||||
uint8_t type;
|
||||
__u8 type;
|
||||
struct ebt_stp_config_info config;
|
||||
uint16_t bitmask;
|
||||
uint16_t invflags;
|
||||
__u16 bitmask;
|
||||
__u16 invflags;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _EBT_ULOG_H
|
||||
#define _EBT_ULOG_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_ULOG_DEFAULT_NLGROUP 0
|
||||
#define EBT_ULOG_DEFAULT_QTHRESHOLD 1
|
||||
#define EBT_ULOG_MAXNLGROUPS 32 /* hardcoded netlink max */
|
||||
|
|
@ -10,7 +12,7 @@
|
|||
#define EBT_ULOG_VERSION 1
|
||||
|
||||
struct ebt_ulog_info {
|
||||
uint32_t nlgroup;
|
||||
__u32 nlgroup;
|
||||
unsigned int cprange;
|
||||
unsigned int qthreshold;
|
||||
char prefix[EBT_ULOG_PREFIX_LEN];
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef __LINUX_BRIDGE_EBT_VLAN_H
|
||||
#define __LINUX_BRIDGE_EBT_VLAN_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define EBT_VLAN_ID 0x01
|
||||
#define EBT_VLAN_PRIO 0x02
|
||||
#define EBT_VLAN_ENCAP 0x04
|
||||
|
|
@ -8,12 +10,12 @@
|
|||
#define EBT_VLAN_MATCH "vlan"
|
||||
|
||||
struct ebt_vlan_info {
|
||||
uint16_t id; /* VLAN ID {1-4095} */
|
||||
uint8_t prio; /* VLAN User Priority {0-7} */
|
||||
__u16 id; /* VLAN ID {1-4095} */
|
||||
__u8 prio; /* VLAN User Priority {0-7} */
|
||||
__be16 encap; /* VLAN Encapsulated frame code {0-65535} */
|
||||
uint8_t bitmask; /* Args bitmask bit 1=1 - ID arg,
|
||||
__u8 bitmask; /* Args bitmask bit 1=1 - ID arg,
|
||||
bit 2=1 User-Priority arg, bit 3=1 encap*/
|
||||
uint8_t invflags; /* Inverse bitmask bit 1=1 - inversed ID arg,
|
||||
__u8 invflags; /* Inverse bitmask bit 1=1 - inversed ID arg,
|
||||
bit 2=1 - inversed Pirority arg */
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _IPT_CLUSTERIP_H_target
|
||||
#define _IPT_CLUSTERIP_H_target
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum clusterip_hashmode {
|
||||
CLUSTERIP_HASHMODE_SIP = 0,
|
||||
CLUSTERIP_HASHMODE_SIP_SPT,
|
||||
|
|
@ -17,15 +19,15 @@ struct clusterip_config;
|
|||
|
||||
struct ipt_clusterip_tgt_info {
|
||||
|
||||
u_int32_t flags;
|
||||
__u32 flags;
|
||||
|
||||
/* only relevant for new ones */
|
||||
u_int8_t clustermac[6];
|
||||
u_int16_t num_total_nodes;
|
||||
u_int16_t num_local_nodes;
|
||||
u_int16_t local_nodes[CLUSTERIP_MAX_NODES];
|
||||
u_int32_t hash_mode;
|
||||
u_int32_t hash_initval;
|
||||
__u8 clustermac[6];
|
||||
__u16 num_total_nodes;
|
||||
__u16 num_local_nodes;
|
||||
__u16 local_nodes[CLUSTERIP_MAX_NODES];
|
||||
__u32 hash_mode;
|
||||
__u32 hash_initval;
|
||||
|
||||
/* Used internally by the kernel */
|
||||
struct clusterip_config *config;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
*/
|
||||
#ifndef _IPT_ECN_TARGET_H
|
||||
#define _IPT_ECN_TARGET_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netfilter/xt_DSCP.h>
|
||||
|
||||
#define IPT_ECN_IP_MASK (~XT_DSCP_MASK)
|
||||
|
|
@ -19,11 +21,11 @@
|
|||
#define IPT_ECN_OP_MASK 0xce
|
||||
|
||||
struct ipt_ECN_info {
|
||||
u_int8_t operation; /* bitset of operations */
|
||||
u_int8_t ip_ect; /* ECT codepoint of IPv4 header, pre-shifted */
|
||||
__u8 operation; /* bitset of operations */
|
||||
__u8 ip_ect; /* ECT codepoint of IPv4 header, pre-shifted */
|
||||
union {
|
||||
struct {
|
||||
u_int8_t ece:1, cwr:1; /* TCP ECT bits */
|
||||
__u8 ece:1, cwr:1; /* TCP ECT bits */
|
||||
} tcp;
|
||||
} proto;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,15 +1,17 @@
|
|||
#ifndef _IPT_SAME_H
|
||||
#define _IPT_SAME_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define IPT_SAME_MAX_RANGE 10
|
||||
|
||||
#define IPT_SAME_NODST 0x01
|
||||
|
||||
struct ipt_same_info {
|
||||
unsigned char info;
|
||||
u_int32_t rangesize;
|
||||
u_int32_t ipnum;
|
||||
u_int32_t *iparray;
|
||||
__u32 rangesize;
|
||||
__u32 ipnum;
|
||||
__u32 *iparray;
|
||||
|
||||
/* hangs off end. */
|
||||
struct nf_nat_range range[IPT_SAME_MAX_RANGE];
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
#ifndef _IPT_TTL_H
|
||||
#define _IPT_TTL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
IPT_TTL_SET = 0,
|
||||
IPT_TTL_INC,
|
||||
|
|
@ -13,8 +15,8 @@ enum {
|
|||
#define IPT_TTL_MAXMODE IPT_TTL_DEC
|
||||
|
||||
struct ipt_TTL_info {
|
||||
u_int8_t mode;
|
||||
u_int8_t ttl;
|
||||
__u8 mode;
|
||||
__u8 ttl;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _IPT_ADDRTYPE_H
|
||||
#define _IPT_ADDRTYPE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
IPT_ADDRTYPE_INVERT_SOURCE = 0x0001,
|
||||
IPT_ADDRTYPE_INVERT_DEST = 0x0002,
|
||||
|
|
@ -9,17 +11,17 @@ enum {
|
|||
};
|
||||
|
||||
struct ipt_addrtype_info_v1 {
|
||||
u_int16_t source; /* source-type mask */
|
||||
u_int16_t dest; /* dest-type mask */
|
||||
u_int32_t flags;
|
||||
__u16 source; /* source-type mask */
|
||||
__u16 dest; /* dest-type mask */
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
/* revision 0 */
|
||||
struct ipt_addrtype_info {
|
||||
u_int16_t source; /* source-type mask */
|
||||
u_int16_t dest; /* dest-type mask */
|
||||
u_int32_t invert_source;
|
||||
u_int32_t invert_dest;
|
||||
__u16 source; /* source-type mask */
|
||||
__u16 dest; /* dest-type mask */
|
||||
__u32 invert_source;
|
||||
__u32 invert_dest;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
#ifndef _IPT_AH_H
|
||||
#define _IPT_AH_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct ipt_ah {
|
||||
u_int32_t spis[2]; /* Security Parameter Index */
|
||||
u_int8_t invflags; /* Inverse flags */
|
||||
__u32 spis[2]; /* Security Parameter Index */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
*/
|
||||
#ifndef _IPT_ECN_H
|
||||
#define _IPT_ECN_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/netfilter/xt_dscp.h>
|
||||
|
||||
#define IPT_ECN_IP_MASK (~XT_DSCP_MASK)
|
||||
|
|
@ -20,12 +22,12 @@
|
|||
|
||||
/* match info */
|
||||
struct ipt_ecn_info {
|
||||
u_int8_t operation;
|
||||
u_int8_t invert;
|
||||
u_int8_t ip_ect;
|
||||
__u8 operation;
|
||||
__u8 invert;
|
||||
__u8 ip_ect;
|
||||
union {
|
||||
struct {
|
||||
u_int8_t ect;
|
||||
__u8 ect;
|
||||
} tcp;
|
||||
} proto;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
#ifndef _IPT_TTL_H
|
||||
#define _IPT_TTL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
IPT_TTL_EQ = 0, /* equals */
|
||||
IPT_TTL_NE, /* not equals */
|
||||
|
|
@ -13,8 +15,8 @@ enum {
|
|||
|
||||
|
||||
struct ipt_ttl_info {
|
||||
u_int8_t mode;
|
||||
u_int8_t ttl;
|
||||
__u8 mode;
|
||||
__u8 ttl;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
#ifndef _IP6T_HL_H
|
||||
#define _IP6T_HL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
IP6T_HL_SET = 0,
|
||||
IP6T_HL_INC,
|
||||
|
|
@ -14,8 +16,8 @@ enum {
|
|||
#define IP6T_HL_MAXMODE IP6T_HL_DEC
|
||||
|
||||
struct ip6t_HL_info {
|
||||
u_int8_t mode;
|
||||
u_int8_t hop_limit;
|
||||
__u8 mode;
|
||||
__u8 hop_limit;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _IP6T_REJECT_H
|
||||
#define _IP6T_REJECT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum ip6t_reject_with {
|
||||
IP6T_ICMP6_NO_ROUTE,
|
||||
IP6T_ICMP6_ADM_PROHIBITED,
|
||||
|
|
@ -12,7 +14,7 @@ enum ip6t_reject_with {
|
|||
};
|
||||
|
||||
struct ip6t_reject_info {
|
||||
u_int32_t with; /* reject type */
|
||||
__u32 with; /* reject type */
|
||||
};
|
||||
|
||||
#endif /*_IP6T_REJECT_H*/
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
#ifndef _IP6T_AH_H
|
||||
#define _IP6T_AH_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct ip6t_ah {
|
||||
u_int32_t spis[2]; /* Security Parameter Index */
|
||||
u_int32_t hdrlen; /* Header Length */
|
||||
u_int8_t hdrres; /* Test of the Reserved Filed */
|
||||
u_int8_t invflags; /* Inverse flags */
|
||||
__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
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
#ifndef _IP6T_FRAG_H
|
||||
#define _IP6T_FRAG_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct ip6t_frag {
|
||||
u_int32_t ids[2]; /* Security Parameter Index */
|
||||
u_int32_t hdrlen; /* Header Length */
|
||||
u_int8_t flags; /* */
|
||||
u_int8_t invflags; /* Inverse flags */
|
||||
__u32 ids[2]; /* Security Parameter Index */
|
||||
__u32 hdrlen; /* Header Length */
|
||||
__u8 flags; /* */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
};
|
||||
|
||||
#define IP6T_FRAG_IDS 0x01
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
#ifndef _IP6T_HL_H
|
||||
#define _IP6T_HL_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
IP6T_HL_EQ = 0, /* equals */
|
||||
IP6T_HL_NE, /* not equals */
|
||||
|
|
@ -14,8 +16,8 @@ enum {
|
|||
|
||||
|
||||
struct ip6t_hl_info {
|
||||
u_int8_t mode;
|
||||
u_int8_t hop_limit;
|
||||
__u8 mode;
|
||||
__u8 hop_limit;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,12 @@ on whether they contain certain headers */
|
|||
#ifndef __IPV6HEADER_H
|
||||
#define __IPV6HEADER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct ip6t_ipv6header_info {
|
||||
u_int8_t matchflags;
|
||||
u_int8_t invflags;
|
||||
u_int8_t modeflag;
|
||||
__u8 matchflags;
|
||||
__u8 invflags;
|
||||
__u8 modeflag;
|
||||
};
|
||||
|
||||
#define MASK_HOPOPTS 128
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
#ifndef _IP6T_MH_H
|
||||
#define _IP6T_MH_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* MH matching stuff */
|
||||
struct ip6t_mh {
|
||||
u_int8_t types[2]; /* MH type range */
|
||||
u_int8_t invflags; /* Inverse flags */
|
||||
__u8 types[2]; /* MH type range */
|
||||
__u8 invflags; /* Inverse flags */
|
||||
};
|
||||
|
||||
/* Values for "invflags" field in struct ip6t_mh. */
|
||||
|
|
|
|||
|
|
@ -1,14 +1,16 @@
|
|||
#ifndef _IP6T_OPTS_H
|
||||
#define _IP6T_OPTS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define IP6T_OPTS_OPTSNR 16
|
||||
|
||||
struct ip6t_opts {
|
||||
u_int32_t hdrlen; /* Header Length */
|
||||
u_int8_t flags; /* */
|
||||
u_int8_t invflags; /* Inverse flags */
|
||||
u_int16_t opts[IP6T_OPTS_OPTSNR]; /* opts */
|
||||
u_int8_t optsnr; /* Nr of 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
|
||||
|
|
|
|||
|
|
@ -1,18 +1,19 @@
|
|||
#ifndef _IP6T_RT_H
|
||||
#define _IP6T_RT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
/*#include <linux/in6.h>*/
|
||||
|
||||
#define IP6T_RT_HOPS 16
|
||||
|
||||
struct ip6t_rt {
|
||||
u_int32_t rt_type; /* Routing Type */
|
||||
u_int32_t segsleft[2]; /* Segments Left */
|
||||
u_int32_t hdrlen; /* Header Length */
|
||||
u_int8_t flags; /* */
|
||||
u_int8_t invflags; /* Inverse flags */
|
||||
__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 */
|
||||
u_int8_t addrnr; /* Nr of Addresses */
|
||||
__u8 addrnr; /* Nr of Addresses */
|
||||
};
|
||||
|
||||
#define IP6T_RT_TYP 0x01
|
||||
|
|
|
|||
|
|
@ -160,10 +160,6 @@ struct netlink_skb_parms {
|
|||
struct ucred creds; /* Skb credentials */
|
||||
__u32 pid;
|
||||
__u32 dst_group;
|
||||
kernel_cap_t eff_cap;
|
||||
__u32 loginuid; /* Login (audit) uid */
|
||||
__u32 sessionid; /* Session id (audit) */
|
||||
__u32 sid; /* SELinux security id */
|
||||
};
|
||||
|
||||
#define NETLINK_CB(skb) (*(struct netlink_skb_parms*)&((skb)->cb))
|
||||
|
|
|
|||
|
|
@ -1243,6 +1243,8 @@ enum nl80211_rate_info {
|
|||
* @NL80211_STA_INFO_LLID: the station's mesh LLID
|
||||
* @NL80211_STA_INFO_PLID: the station's mesh PLID
|
||||
* @NL80211_STA_INFO_PLINK_STATE: peer link state for the station
|
||||
* @NL80211_STA_INFO_RX_BITRATE: last unicast data frame rx rate, nested
|
||||
* attribute, like NL80211_STA_INFO_TX_BITRATE.
|
||||
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
||||
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
||||
*/
|
||||
|
|
@ -1261,6 +1263,7 @@ enum nl80211_sta_info {
|
|||
NL80211_STA_INFO_TX_RETRIES,
|
||||
NL80211_STA_INFO_TX_FAILED,
|
||||
NL80211_STA_INFO_SIGNAL_AVG,
|
||||
NL80211_STA_INFO_RX_BITRATE,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_STA_INFO_AFTER_LAST,
|
||||
|
|
|
|||
|
|
@ -1479,6 +1479,7 @@ void pci_request_acs(void);
|
|||
#define PCI_VPD_RO_KEYWORD_PARTNO "PN"
|
||||
#define PCI_VPD_RO_KEYWORD_MFR_ID "MN"
|
||||
#define PCI_VPD_RO_KEYWORD_VENDOR0 "V0"
|
||||
#define PCI_VPD_RO_KEYWORD_CHKSUM "RV"
|
||||
|
||||
/**
|
||||
* pci_vpd_lrdt_size - Extracts the Large Resource Data Type length
|
||||
|
|
|
|||
|
|
@ -36,9 +36,7 @@
|
|||
/* Socket options for SOL_PNPIPE level */
|
||||
#define PNPIPE_ENCAP 1
|
||||
#define PNPIPE_IFINDEX 2
|
||||
#define PNPIPE_PIPE_HANDLE 3
|
||||
#define PNPIPE_ENABLE 4
|
||||
/* unused slot */
|
||||
#define PNPIPE_HANDLE 3
|
||||
|
||||
#define PNADDR_ANY 0
|
||||
#define PNADDR_BROADCAST 0xFC
|
||||
|
|
|
|||
|
|
@ -247,6 +247,35 @@ struct tc_gred_sopt {
|
|||
__u16 pad1;
|
||||
};
|
||||
|
||||
/* CHOKe section */
|
||||
|
||||
enum {
|
||||
TCA_CHOKE_UNSPEC,
|
||||
TCA_CHOKE_PARMS,
|
||||
TCA_CHOKE_STAB,
|
||||
__TCA_CHOKE_MAX,
|
||||
};
|
||||
|
||||
#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
|
||||
|
||||
struct tc_choke_qopt {
|
||||
__u32 limit; /* Hard queue length (packets) */
|
||||
__u32 qth_min; /* Min average threshold (packets) */
|
||||
__u32 qth_max; /* Max average threshold (packets) */
|
||||
unsigned char Wlog; /* log(W) */
|
||||
unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */
|
||||
unsigned char Scell_log; /* cell size for idle damping */
|
||||
unsigned char flags; /* see RED flags */
|
||||
};
|
||||
|
||||
struct tc_choke_xstats {
|
||||
__u32 early; /* Early drops */
|
||||
__u32 pdrop; /* Drops due to queue limits */
|
||||
__u32 other; /* Drops due to drop() calls */
|
||||
__u32 marked; /* Marked packets */
|
||||
__u32 matched; /* Drops due to flow match */
|
||||
};
|
||||
|
||||
/* HTB section */
|
||||
#define TC_HTB_NUMPRIO 8
|
||||
#define TC_HTB_MAXDEPTH 8
|
||||
|
|
@ -435,6 +464,7 @@ enum {
|
|||
TCA_NETEM_DELAY_DIST,
|
||||
TCA_NETEM_REORDER,
|
||||
TCA_NETEM_CORRUPT,
|
||||
TCA_NETEM_LOSS,
|
||||
__TCA_NETEM_MAX,
|
||||
};
|
||||
|
||||
|
|
@ -465,7 +495,33 @@ struct tc_netem_corrupt {
|
|||
__u32 correlation;
|
||||
};
|
||||
|
||||
enum {
|
||||
NETEM_LOSS_UNSPEC,
|
||||
NETEM_LOSS_GI, /* General Intuitive - 4 state model */
|
||||
NETEM_LOSS_GE, /* Gilbert Elliot models */
|
||||
__NETEM_LOSS_MAX
|
||||
};
|
||||
#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
|
||||
|
||||
/* State transition probablities for 4 state model */
|
||||
struct tc_netem_gimodel {
|
||||
__u32 p13;
|
||||
__u32 p31;
|
||||
__u32 p32;
|
||||
__u32 p14;
|
||||
__u32 p23;
|
||||
};
|
||||
|
||||
/* Gilbert-Elliot models */
|
||||
struct tc_netem_gemodel {
|
||||
__u32 p;
|
||||
__u32 r;
|
||||
__u32 h;
|
||||
__u32 k1;
|
||||
};
|
||||
|
||||
#define NETEM_DIST_SCALE 8192
|
||||
#define NETEM_DIST_MAX 16384
|
||||
|
||||
/* DRR */
|
||||
|
||||
|
|
@ -481,4 +537,55 @@ struct tc_drr_stats {
|
|||
__u32 deficit;
|
||||
};
|
||||
|
||||
/* MQPRIO */
|
||||
#define TC_QOPT_BITMASK 15
|
||||
#define TC_QOPT_MAX_QUEUE 16
|
||||
|
||||
struct tc_mqprio_qopt {
|
||||
__u8 num_tc;
|
||||
__u8 prio_tc_map[TC_QOPT_BITMASK + 1];
|
||||
__u8 hw;
|
||||
__u16 count[TC_QOPT_MAX_QUEUE];
|
||||
__u16 offset[TC_QOPT_MAX_QUEUE];
|
||||
};
|
||||
|
||||
/* SFB */
|
||||
|
||||
enum {
|
||||
TCA_SFB_UNSPEC,
|
||||
TCA_SFB_PARMS,
|
||||
__TCA_SFB_MAX,
|
||||
};
|
||||
|
||||
#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
|
||||
|
||||
/*
|
||||
* Note: increment, decrement are Q0.16 fixed-point values.
|
||||
*/
|
||||
struct tc_sfb_qopt {
|
||||
__u32 rehash_interval; /* delay between hash move, in ms */
|
||||
__u32 warmup_time; /* double buffering warmup time in ms (warmup_time < rehash_interval) */
|
||||
__u32 max; /* max len of qlen_min */
|
||||
__u32 bin_size; /* maximum queue length per bin */
|
||||
__u32 increment; /* probability increment, (d1 in Blue) */
|
||||
__u32 decrement; /* probability decrement, (d2 in Blue) */
|
||||
__u32 limit; /* max SFB queue length */
|
||||
__u32 penalty_rate; /* inelastic flows are rate limited to 'rate' pps */
|
||||
__u32 penalty_burst;
|
||||
};
|
||||
|
||||
struct tc_sfb_xstats {
|
||||
__u32 earlydrop;
|
||||
__u32 penaltydrop;
|
||||
__u32 bucketdrop;
|
||||
__u32 queuedrop;
|
||||
__u32 childdrop; /* drops in child qdisc */
|
||||
__u32 marked;
|
||||
__u32 maxqlen;
|
||||
__u32 maxprob;
|
||||
__u32 avgprob;
|
||||
};
|
||||
|
||||
#define SFB_MAX_PROB 0xFFFF
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1626,7 +1626,7 @@ struct security_operations {
|
|||
int (*xfrm_policy_lookup) (struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir);
|
||||
int (*xfrm_state_pol_flow_match) (struct xfrm_state *x,
|
||||
struct xfrm_policy *xp,
|
||||
struct flowi *fl);
|
||||
const struct flowi *fl);
|
||||
int (*xfrm_decode_session) (struct sk_buff *skb, u32 *secid, int ckall);
|
||||
#endif /* CONFIG_SECURITY_NETWORK_XFRM */
|
||||
|
||||
|
|
@ -2767,7 +2767,8 @@ int security_xfrm_state_delete(struct xfrm_state *x);
|
|||
void security_xfrm_state_free(struct xfrm_state *x);
|
||||
int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir);
|
||||
int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
|
||||
struct xfrm_policy *xp, struct flowi *fl);
|
||||
struct xfrm_policy *xp,
|
||||
const struct flowi *fl);
|
||||
int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid);
|
||||
void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl);
|
||||
|
||||
|
|
@ -2819,7 +2820,7 @@ static inline int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_s
|
|||
}
|
||||
|
||||
static inline int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
|
||||
struct xfrm_policy *xp, struct flowi *fl)
|
||||
struct xfrm_policy *xp, const struct flowi *fl)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -388,10 +388,7 @@ struct sk_buff {
|
|||
kmemcheck_bitfield_begin(flags2);
|
||||
__u16 queue_mapping:16;
|
||||
#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
||||
__u8 ndisc_nodetype:2,
|
||||
deliver_no_wcard:1;
|
||||
#else
|
||||
__u8 deliver_no_wcard:1;
|
||||
__u8 ndisc_nodetype:2;
|
||||
#endif
|
||||
__u8 ooo_okay:1;
|
||||
kmemcheck_bitfield_end(flags2);
|
||||
|
|
@ -1801,6 +1798,15 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
|
|||
prefetch(skb->prev), (skb != (struct sk_buff *)(queue)); \
|
||||
skb = skb->prev)
|
||||
|
||||
#define skb_queue_reverse_walk_safe(queue, skb, tmp) \
|
||||
for (skb = (queue)->prev, tmp = skb->prev; \
|
||||
skb != (struct sk_buff *)(queue); \
|
||||
skb = tmp, tmp = skb->prev)
|
||||
|
||||
#define skb_queue_reverse_walk_from_safe(queue, skb, tmp) \
|
||||
for (tmp = skb->prev; \
|
||||
skb != (struct sk_buff *)(queue); \
|
||||
skb = tmp, tmp = skb->prev)
|
||||
|
||||
static inline bool skb_has_frag_list(const struct sk_buff *skb)
|
||||
{
|
||||
|
|
@ -1868,7 +1874,7 @@ extern void skb_split(struct sk_buff *skb,
|
|||
extern int skb_shift(struct sk_buff *tgt, struct sk_buff *skb,
|
||||
int shiftlen);
|
||||
|
||||
extern struct sk_buff *skb_segment(struct sk_buff *skb, int features);
|
||||
extern struct sk_buff *skb_segment(struct sk_buff *skb, u32 features);
|
||||
|
||||
static inline void *skb_header_pointer(const struct sk_buff *skb, int offset,
|
||||
int len, void *buffer)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
/* Linux-specific socket ioctls */
|
||||
#define SIOCINQ FIONREAD
|
||||
#define SIOCOUTQ TIOCOUTQ
|
||||
#define SIOCOUTQ TIOCOUTQ /* output queue size (not sent + not acked) */
|
||||
|
||||
/* Routing table calls. */
|
||||
#define SIOCADDRT 0x890B /* add routing table entry */
|
||||
|
|
@ -83,6 +83,8 @@
|
|||
|
||||
#define SIOCWANDEV 0x894A /* get/set netdev parameters */
|
||||
|
||||
#define SIOCOUTQNSD 0x894B /* output queue size (not sent only) */
|
||||
|
||||
/* ARP cache control calls. */
|
||||
/* 0x8950 - 0x8952 * obsolete calls, don't re-use */
|
||||
#define SIOCDARP 0x8953 /* delete ARP table entry */
|
||||
|
|
|
|||
|
|
@ -85,6 +85,8 @@
|
|||
#define SSB_IMSTATE_AP_RSV 0x00000030 /* Reserved */
|
||||
#define SSB_IMSTATE_IBE 0x00020000 /* In Band Error */
|
||||
#define SSB_IMSTATE_TO 0x00040000 /* Timeout */
|
||||
#define SSB_IMSTATE_BUSY 0x01800000 /* Busy (Backplane rev >= 2.3 only) */
|
||||
#define SSB_IMSTATE_REJECT 0x02000000 /* Reject (Backplane rev >= 2.3 only) */
|
||||
#define SSB_INTVEC 0x0F94 /* SB Interrupt Mask */
|
||||
#define SSB_INTVEC_PCI 0x00000001 /* Enable interrupts for PCI */
|
||||
#define SSB_INTVEC_ENET0 0x00000002 /* Enable interrupts for enet 0 */
|
||||
|
|
@ -97,7 +99,6 @@
|
|||
#define SSB_TMSLOW_RESET 0x00000001 /* Reset */
|
||||
#define SSB_TMSLOW_REJECT_22 0x00000002 /* Reject (Backplane rev 2.2) */
|
||||
#define SSB_TMSLOW_REJECT_23 0x00000004 /* Reject (Backplane rev 2.3) */
|
||||
#define SSB_TMSLOW_PHYCLK 0x00000010 /* MAC PHY Clock Control Enable */
|
||||
#define SSB_TMSLOW_CLOCK 0x00010000 /* Clock Enable */
|
||||
#define SSB_TMSLOW_FGC 0x00020000 /* Force Gated Clocks On */
|
||||
#define SSB_TMSLOW_PE 0x40000000 /* Power Management Enable */
|
||||
|
|
@ -268,6 +269,8 @@
|
|||
/* SPROM Revision 4 */
|
||||
#define SSB_SPROM4_BFLLO 0x0044 /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM4_BFLHI 0x0046 /* Board Flags Hi */
|
||||
#define SSB_SPROM4_BFL2LO 0x0048 /* Board flags 2 (low 16 bits) */
|
||||
#define SSB_SPROM4_BFL2HI 0x004A /* Board flags 2 Hi */
|
||||
#define SSB_SPROM4_IL0MAC 0x004C /* 6 byte MAC address for a/b/g/n */
|
||||
#define SSB_SPROM4_CCODE 0x0052 /* Country Code (2 bytes) */
|
||||
#define SSB_SPROM4_GPIOA 0x0056 /* Gen. Purpose IO # 0 and 1 */
|
||||
|
|
@ -358,6 +361,8 @@
|
|||
#define SSB_SPROM5_CCODE 0x0044 /* Country Code (2 bytes) */
|
||||
#define SSB_SPROM5_BFLLO 0x004A /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM5_BFLHI 0x004C /* Board Flags Hi */
|
||||
#define SSB_SPROM5_BFL2LO 0x004E /* Board flags 2 (low 16 bits) */
|
||||
#define SSB_SPROM5_BFL2HI 0x0050 /* Board flags 2 Hi */
|
||||
#define SSB_SPROM5_IL0MAC 0x0052 /* 6 byte MAC address for a/b/g/n */
|
||||
#define SSB_SPROM5_GPIOA 0x0076 /* Gen. Purpose IO # 0 and 1 */
|
||||
#define SSB_SPROM5_GPIOA_P0 0x00FF /* Pin 0 */
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
* include/linux/tipc.h: Include file for TIPC socket interface
|
||||
*
|
||||
* Copyright (c) 2003-2006, Ericsson AB
|
||||
* Copyright (c) 2005, Wind River Systems
|
||||
* Copyright (c) 2005, 2010-2011, Wind River Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -130,12 +130,6 @@ static inline unsigned int tipc_node(__u32 addr)
|
|||
#define TIPC_SUB_PORTS 0x01 /* filter for port availability */
|
||||
#define TIPC_SUB_SERVICE 0x02 /* filter for service availability */
|
||||
#define TIPC_SUB_CANCEL 0x04 /* cancel a subscription */
|
||||
#if 0
|
||||
/* The following filter options are not currently implemented */
|
||||
#define TIPC_SUB_NO_BIND_EVTS 0x04 /* filter out "publish" events */
|
||||
#define TIPC_SUB_NO_UNBIND_EVTS 0x08 /* filter out "withdraw" events */
|
||||
#define TIPC_SUB_SINGLE_EVT 0x10 /* expire after first event */
|
||||
#endif
|
||||
|
||||
#define TIPC_WAIT_FOREVER (~0) /* timeout for permanent subscription */
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
* include/linux/tipc_config.h: Include file for TIPC configuration interface
|
||||
*
|
||||
* Copyright (c) 2003-2006, Ericsson AB
|
||||
* Copyright (c) 2005-2007, Wind River Systems
|
||||
* Copyright (c) 2005-2007, 2010-2011, Wind River Systems
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -76,13 +76,6 @@
|
|||
#define TIPC_CMD_SHOW_LINK_STATS 0x000B /* tx link_name, rx ultra_string */
|
||||
#define TIPC_CMD_SHOW_STATS 0x000F /* tx unsigned, rx ultra_string */
|
||||
|
||||
#if 0
|
||||
#define TIPC_CMD_SHOW_PORT_STATS 0x0008 /* tx port_ref, rx ultra_string */
|
||||
#define TIPC_CMD_RESET_PORT_STATS 0x0009 /* tx port_ref, rx none */
|
||||
#define TIPC_CMD_GET_ROUTES 0x000A /* tx ?, rx ? */
|
||||
#define TIPC_CMD_GET_LINK_PEER 0x000D /* tx link_name, rx ? */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Protected commands:
|
||||
* May only be issued by "network administration capable" process.
|
||||
|
|
@ -96,7 +89,7 @@
|
|||
#define TIPC_CMD_GET_MAX_SUBSCR 0x4006 /* tx none, rx unsigned */
|
||||
#define TIPC_CMD_GET_MAX_ZONES 0x4007 /* obsoleted */
|
||||
#define TIPC_CMD_GET_MAX_CLUSTERS 0x4008 /* obsoleted */
|
||||
#define TIPC_CMD_GET_MAX_NODES 0x4009 /* tx none, rx unsigned */
|
||||
#define TIPC_CMD_GET_MAX_NODES 0x4009 /* obsoleted */
|
||||
#define TIPC_CMD_GET_MAX_SLAVES 0x400A /* obsoleted */
|
||||
#define TIPC_CMD_GET_NETID 0x400B /* tx none, rx unsigned */
|
||||
|
||||
|
|
@ -109,13 +102,6 @@
|
|||
#define TIPC_CMD_DUMP_LOG 0x410B /* tx none, rx ultra_string */
|
||||
#define TIPC_CMD_RESET_LINK_STATS 0x410C /* tx link_name, rx none */
|
||||
|
||||
#if 0
|
||||
#define TIPC_CMD_CREATE_LINK 0x4103 /* tx link_create, rx none */
|
||||
#define TIPC_CMD_REMOVE_LINK 0x4104 /* tx link_name, rx none */
|
||||
#define TIPC_CMD_BLOCK_LINK 0x4105 /* tx link_name, rx none */
|
||||
#define TIPC_CMD_UNBLOCK_LINK 0x4106 /* tx link_name, rx none */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Private commands:
|
||||
* May only be issued by "network administration capable" process.
|
||||
|
|
@ -123,16 +109,13 @@
|
|||
*/
|
||||
|
||||
#define TIPC_CMD_SET_NODE_ADDR 0x8001 /* tx net_addr, rx none */
|
||||
#if 0
|
||||
#define TIPC_CMD_SET_ZONE_MASTER 0x8002 /* tx none, rx none */
|
||||
#endif
|
||||
#define TIPC_CMD_SET_REMOTE_MNG 0x8003 /* tx unsigned, rx none */
|
||||
#define TIPC_CMD_SET_MAX_PORTS 0x8004 /* tx unsigned, rx none */
|
||||
#define TIPC_CMD_SET_MAX_PUBL 0x8005 /* tx unsigned, rx none */
|
||||
#define TIPC_CMD_SET_MAX_SUBSCR 0x8006 /* tx unsigned, rx none */
|
||||
#define TIPC_CMD_SET_MAX_ZONES 0x8007 /* obsoleted */
|
||||
#define TIPC_CMD_SET_MAX_CLUSTERS 0x8008 /* obsoleted */
|
||||
#define TIPC_CMD_SET_MAX_NODES 0x8009 /* tx unsigned, rx none */
|
||||
#define TIPC_CMD_SET_MAX_NODES 0x8009 /* obsoleted */
|
||||
#define TIPC_CMD_SET_MAX_SLAVES 0x800A /* obsoleted */
|
||||
#define TIPC_CMD_SET_NETID 0x800B /* tx unsigned, rx none */
|
||||
|
||||
|
|
@ -193,6 +176,10 @@
|
|||
#define TIPC_DEF_LINK_TOL 1500
|
||||
#define TIPC_MAX_LINK_TOL 30000
|
||||
|
||||
#if (TIPC_MIN_LINK_TOL < 16)
|
||||
#error "TIPC_MIN_LINK_TOL is too small (abort limit may be NaN)"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Link window limits (min, default, max), in packets
|
||||
*/
|
||||
|
|
@ -215,7 +202,7 @@ struct tipc_link_info {
|
|||
|
||||
struct tipc_bearer_config {
|
||||
__be32 priority; /* Range [1,31]. Override per link */
|
||||
__be32 detect_scope;
|
||||
__be32 disc_domain; /* <Z.C.N> describing desired nodes */
|
||||
char name[TIPC_MAX_BEARER_NAME];
|
||||
};
|
||||
|
||||
|
|
@ -247,15 +234,6 @@ struct tipc_name_table_query {
|
|||
#define TIPC_CFG_NOT_SUPPORTED "\x84" /* request is not supported by TIPC */
|
||||
#define TIPC_CFG_INVALID_VALUE "\x85" /* request has invalid argument value */
|
||||
|
||||
#if 0
|
||||
/* prototypes TLV structures for proposed commands */
|
||||
struct tipc_link_create {
|
||||
__u32 domain;
|
||||
struct tipc_media_addr peer_addr;
|
||||
char bearer_name[TIPC_MAX_BEARER_NAME];
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* A TLV consists of a descriptor, followed by the TLV value.
|
||||
* TLV descriptor fields are stored in network byte order;
|
||||
|
|
|
|||
|
|
@ -84,6 +84,16 @@ struct xfrm_replay_state {
|
|||
__u32 bitmap;
|
||||
};
|
||||
|
||||
struct xfrm_replay_state_esn {
|
||||
unsigned int bmp_len;
|
||||
__u32 oseq;
|
||||
__u32 seq;
|
||||
__u32 oseq_hi;
|
||||
__u32 seq_hi;
|
||||
__u32 replay_window;
|
||||
__u32 bmp[0];
|
||||
};
|
||||
|
||||
struct xfrm_algo {
|
||||
char alg_name[64];
|
||||
unsigned int alg_key_len; /* in bits */
|
||||
|
|
@ -284,6 +294,7 @@ enum xfrm_attr_type_t {
|
|||
XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */
|
||||
XFRMA_MARK, /* struct xfrm_mark */
|
||||
XFRMA_TFCPAD, /* __u32 */
|
||||
XFRMA_REPLAY_ESN_VAL, /* struct xfrm_replay_esn */
|
||||
__XFRMA_MAX
|
||||
|
||||
#define XFRMA_MAX (__XFRMA_MAX - 1)
|
||||
|
|
@ -350,6 +361,8 @@ struct xfrm_usersa_info {
|
|||
#define XFRM_STATE_WILDRECV 8
|
||||
#define XFRM_STATE_ICMP 16
|
||||
#define XFRM_STATE_AF_UNSPEC 32
|
||||
#define XFRM_STATE_ALIGN4 64
|
||||
#define XFRM_STATE_ESN 128
|
||||
};
|
||||
|
||||
struct xfrm_usersa_id {
|
||||
|
|
|
|||
Loading…
Reference in a new issue