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: (1075 commits) myri10ge: update driver version number to 1.4.3-1.369 r8169: add shutdown handler r8169: preliminary 8168d support r8169: support additional 8168cp chipset r8169: change default behavior for mildly identified 8168c chipsets r8169: add a new 8168cp flavor r8169: add a new 8168c flavor (bis) r8169: add a new 8168c flavor r8169: sync existing 8168 device hardware start sequences with vendor driver r8169: 8168b Tx performance tweak r8169: make room for more specific 8168 hardware start procedure r8169: shuffle some registers handling around (8168 operation only) r8169: new phy init parameters for the 8168b r8169: update phy init parameters r8169: wake up the PHY of the 8168 af_key: fix SADB_X_SPDDELETE response ath9k: Fix return code when ath9k_hw_setpower() fails on reset ath9k: remove nasty FAIL macro from ath9k_hw_reset() gre: minor cleanups in netlink interface gre: fix copy and paste error ...
This commit is contained in:
@@ -126,6 +126,7 @@ header-y += pci_regs.h
|
||||
header-y += pfkeyv2.h
|
||||
header-y += pg.h
|
||||
header-y += phantom.h
|
||||
header-y += phonet.h
|
||||
header-y += pkt_cls.h
|
||||
header-y += pkt_sched.h
|
||||
header-y += posix_types.h
|
||||
@@ -233,6 +234,7 @@ unifdef-y += if_fddi.h
|
||||
unifdef-y += if_frad.h
|
||||
unifdef-y += if_ltalk.h
|
||||
unifdef-y += if_link.h
|
||||
unifdef-y += if_phonet.h
|
||||
unifdef-y += if_pppol2tp.h
|
||||
unifdef-y += if_pppox.h
|
||||
unifdef-y += if_tr.h
|
||||
|
||||
@@ -471,6 +471,11 @@ struct ieee80211s_hdr {
|
||||
u8 eaddr3[6];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Mesh flags */
|
||||
#define MESH_FLAGS_AE_A4 0x1
|
||||
#define MESH_FLAGS_AE_A5_A6 0x2
|
||||
#define MESH_FLAGS_PS_DEEP 0x4
|
||||
|
||||
/**
|
||||
* struct ieee80211_quiet_ie
|
||||
*
|
||||
@@ -643,6 +648,9 @@ struct ieee80211_mgmt {
|
||||
} u;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* mgmt header + 1 byte category code */
|
||||
#define IEEE80211_MIN_ACTION_SIZE offsetof(struct ieee80211_mgmt, u.action.u)
|
||||
|
||||
|
||||
/* Control frames */
|
||||
struct ieee80211_rts {
|
||||
@@ -708,12 +716,13 @@ struct ieee80211_ht_addt_info {
|
||||
|
||||
/* 802.11n HT capabilities masks */
|
||||
#define IEEE80211_HT_CAP_SUP_WIDTH 0x0002
|
||||
#define IEEE80211_HT_CAP_MIMO_PS 0x000C
|
||||
#define IEEE80211_HT_CAP_SM_PS 0x000C
|
||||
#define IEEE80211_HT_CAP_GRN_FLD 0x0010
|
||||
#define IEEE80211_HT_CAP_SGI_20 0x0020
|
||||
#define IEEE80211_HT_CAP_SGI_40 0x0040
|
||||
#define IEEE80211_HT_CAP_DELAY_BA 0x0400
|
||||
#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800
|
||||
#define IEEE80211_HT_CAP_DSSSCCK40 0x1000
|
||||
/* 802.11n HT capability AMPDU settings */
|
||||
#define IEEE80211_HT_CAP_AMPDU_FACTOR 0x03
|
||||
#define IEEE80211_HT_CAP_AMPDU_DENSITY 0x1C
|
||||
@@ -736,11 +745,26 @@ struct ieee80211_ht_addt_info {
|
||||
#define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004
|
||||
#define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010
|
||||
|
||||
/* MIMO Power Save Modes */
|
||||
#define WLAN_HT_CAP_MIMO_PS_STATIC 0
|
||||
#define WLAN_HT_CAP_MIMO_PS_DYNAMIC 1
|
||||
#define WLAN_HT_CAP_MIMO_PS_INVALID 2
|
||||
#define WLAN_HT_CAP_MIMO_PS_DISABLED 3
|
||||
/* block-ack parameters */
|
||||
#define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002
|
||||
#define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C
|
||||
#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFA0
|
||||
#define IEEE80211_DELBA_PARAM_TID_MASK 0xF000
|
||||
#define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800
|
||||
|
||||
/*
|
||||
* A-PMDU buffer sizes
|
||||
* According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2)
|
||||
*/
|
||||
#define IEEE80211_MIN_AMPDU_BUF 0x8
|
||||
#define IEEE80211_MAX_AMPDU_BUF 0x40
|
||||
|
||||
|
||||
/* Spatial Multiplexing Power Save Modes */
|
||||
#define WLAN_HT_CAP_SM_PS_STATIC 0
|
||||
#define WLAN_HT_CAP_SM_PS_DYNAMIC 1
|
||||
#define WLAN_HT_CAP_SM_PS_INVALID 2
|
||||
#define WLAN_HT_CAP_SM_PS_DISABLED 3
|
||||
|
||||
/* Authentication algorithms */
|
||||
#define WLAN_AUTH_OPEN 0
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <linux/compiler.h> /* for "__user" et al */
|
||||
|
||||
#define IFNAMSIZ 16
|
||||
#define IFALIASZ 256
|
||||
#include <linux/hdlc/ioctl.h>
|
||||
|
||||
/* Standard interface flags (netdevice->flags). */
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */
|
||||
#define ETH_P_CUST 0x6006 /* DEC Customer use */
|
||||
#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */
|
||||
#define ETH_P_TEB 0x6558 /* Trans Ether Bridging */
|
||||
#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */
|
||||
#define ETH_P_ATALK 0x809B /* Appletalk DDP */
|
||||
#define ETH_P_AARP 0x80F3 /* Appletalk AARP */
|
||||
@@ -74,8 +75,10 @@
|
||||
#define ETH_P_ATMFATE 0x8884 /* Frame-based ATM Transport
|
||||
* over Ethernet
|
||||
*/
|
||||
#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
|
||||
#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */
|
||||
#define ETH_P_TIPC 0x88CA /* TIPC */
|
||||
#define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
|
||||
|
||||
/*
|
||||
* Non DIX types. Won't clash for 1500 types.
|
||||
@@ -99,6 +102,9 @@
|
||||
#define ETH_P_ECONET 0x0018 /* Acorn Econet */
|
||||
#define ETH_P_HDLC 0x0019 /* HDLC frames */
|
||||
#define ETH_P_ARCNET 0x001A /* 1A for ArcNet :-) */
|
||||
#define ETH_P_DSA 0x001B /* Distributed Switch Arch. */
|
||||
#define ETH_P_TRAILER 0x001C /* Trailer switch tagging */
|
||||
#define ETH_P_PHONET 0x00F5 /* Nokia Phonet frames */
|
||||
|
||||
/*
|
||||
* This is an Ethernet frame header.
|
||||
|
||||
@@ -79,6 +79,7 @@ enum
|
||||
IFLA_LINKINFO,
|
||||
#define IFLA_LINKINFO IFLA_LINKINFO
|
||||
IFLA_NET_NS_PID,
|
||||
IFLA_IFALIAS,
|
||||
__IFLA_MAX
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* File: if_phonet.h
|
||||
*
|
||||
* Phonet interface kernel definitions
|
||||
*
|
||||
* Copyright (C) 2008 Nokia Corporation. All rights reserved.
|
||||
*/
|
||||
#ifndef LINUX_IF_PHONET_H
|
||||
#define LINUX_IF_PHONET_H
|
||||
|
||||
#define PHONET_MIN_MTU 6 /* pn_length = 0 */
|
||||
#define PHONET_MAX_MTU 65541 /* pn_length = 0xffff */
|
||||
#define PHONET_DEV_MTU PHONET_MAX_MTU
|
||||
|
||||
#ifdef __KERNEL__
|
||||
extern struct header_ops phonet_header_ops;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -2,6 +2,7 @@
|
||||
#define _IF_TUNNEL_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ip.h>
|
||||
|
||||
#define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0)
|
||||
#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
|
||||
@@ -47,4 +48,22 @@ struct ip_tunnel_prl {
|
||||
/* PRL flags */
|
||||
#define PRL_DEFAULT 0x0001
|
||||
|
||||
enum
|
||||
{
|
||||
IFLA_GRE_UNSPEC,
|
||||
IFLA_GRE_LINK,
|
||||
IFLA_GRE_IFLAGS,
|
||||
IFLA_GRE_OFLAGS,
|
||||
IFLA_GRE_IKEY,
|
||||
IFLA_GRE_OKEY,
|
||||
IFLA_GRE_LOCAL,
|
||||
IFLA_GRE_REMOTE,
|
||||
IFLA_GRE_TTL,
|
||||
IFLA_GRE_TOS,
|
||||
IFLA_GRE_PMTUDISC,
|
||||
__IFLA_GRE_MAX,
|
||||
};
|
||||
|
||||
#define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)
|
||||
|
||||
#endif /* _IF_TUNNEL_H_ */
|
||||
|
||||
@@ -75,6 +75,7 @@ struct in_addr {
|
||||
#define IP_IPSEC_POLICY 16
|
||||
#define IP_XFRM_POLICY 17
|
||||
#define IP_PASSSEC 18
|
||||
#define IP_TRANSPARENT 19
|
||||
|
||||
/* BSD compatibility */
|
||||
#define IP_RECVRETOPTS IP_RETOPTS
|
||||
|
||||
@@ -25,6 +25,7 @@ struct in_device
|
||||
struct in_ifaddr *ifa_list; /* IP ifaddr chain */
|
||||
rwlock_t mc_list_lock;
|
||||
struct ip_mc_list *mc_list; /* IP multicast filter chain */
|
||||
int mc_count; /* Number of installed mcasts */
|
||||
spinlock_t mc_tomb_lock;
|
||||
struct ip_mc_list *mc_tomb;
|
||||
unsigned long mr_v1_seen;
|
||||
|
||||
@@ -242,4 +242,164 @@ struct ip_vs_daemon_user {
|
||||
int syncid;
|
||||
};
|
||||
|
||||
/*
|
||||
*
|
||||
* IPVS Generic Netlink interface definitions
|
||||
*
|
||||
*/
|
||||
|
||||
/* Generic Netlink family info */
|
||||
|
||||
#define IPVS_GENL_NAME "IPVS"
|
||||
#define IPVS_GENL_VERSION 0x1
|
||||
|
||||
struct ip_vs_flags {
|
||||
__be32 flags;
|
||||
__be32 mask;
|
||||
};
|
||||
|
||||
/* Generic Netlink command attributes */
|
||||
enum {
|
||||
IPVS_CMD_UNSPEC = 0,
|
||||
|
||||
IPVS_CMD_NEW_SERVICE, /* add service */
|
||||
IPVS_CMD_SET_SERVICE, /* modify service */
|
||||
IPVS_CMD_DEL_SERVICE, /* delete service */
|
||||
IPVS_CMD_GET_SERVICE, /* get service info */
|
||||
|
||||
IPVS_CMD_NEW_DEST, /* add destination */
|
||||
IPVS_CMD_SET_DEST, /* modify destination */
|
||||
IPVS_CMD_DEL_DEST, /* delete destination */
|
||||
IPVS_CMD_GET_DEST, /* get destination info */
|
||||
|
||||
IPVS_CMD_NEW_DAEMON, /* start sync daemon */
|
||||
IPVS_CMD_DEL_DAEMON, /* stop sync daemon */
|
||||
IPVS_CMD_GET_DAEMON, /* get sync daemon status */
|
||||
|
||||
IPVS_CMD_SET_CONFIG, /* set config settings */
|
||||
IPVS_CMD_GET_CONFIG, /* get config settings */
|
||||
|
||||
IPVS_CMD_SET_INFO, /* only used in GET_INFO reply */
|
||||
IPVS_CMD_GET_INFO, /* get general IPVS info */
|
||||
|
||||
IPVS_CMD_ZERO, /* zero all counters and stats */
|
||||
IPVS_CMD_FLUSH, /* flush services and dests */
|
||||
|
||||
__IPVS_CMD_MAX,
|
||||
};
|
||||
|
||||
#define IPVS_CMD_MAX (__IPVS_CMD_MAX - 1)
|
||||
|
||||
/* Attributes used in the first level of commands */
|
||||
enum {
|
||||
IPVS_CMD_ATTR_UNSPEC = 0,
|
||||
IPVS_CMD_ATTR_SERVICE, /* nested service attribute */
|
||||
IPVS_CMD_ATTR_DEST, /* nested destination attribute */
|
||||
IPVS_CMD_ATTR_DAEMON, /* nested sync daemon attribute */
|
||||
IPVS_CMD_ATTR_TIMEOUT_TCP, /* TCP connection timeout */
|
||||
IPVS_CMD_ATTR_TIMEOUT_TCP_FIN, /* TCP FIN wait timeout */
|
||||
IPVS_CMD_ATTR_TIMEOUT_UDP, /* UDP timeout */
|
||||
__IPVS_CMD_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define IPVS_CMD_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1)
|
||||
|
||||
/*
|
||||
* Attributes used to describe a service
|
||||
*
|
||||
* Used inside nested attribute IPVS_CMD_ATTR_SERVICE
|
||||
*/
|
||||
enum {
|
||||
IPVS_SVC_ATTR_UNSPEC = 0,
|
||||
IPVS_SVC_ATTR_AF, /* address family */
|
||||
IPVS_SVC_ATTR_PROTOCOL, /* virtual service protocol */
|
||||
IPVS_SVC_ATTR_ADDR, /* virtual service address */
|
||||
IPVS_SVC_ATTR_PORT, /* virtual service port */
|
||||
IPVS_SVC_ATTR_FWMARK, /* firewall mark of service */
|
||||
|
||||
IPVS_SVC_ATTR_SCHED_NAME, /* name of scheduler */
|
||||
IPVS_SVC_ATTR_FLAGS, /* virtual service flags */
|
||||
IPVS_SVC_ATTR_TIMEOUT, /* persistent timeout */
|
||||
IPVS_SVC_ATTR_NETMASK, /* persistent netmask */
|
||||
|
||||
IPVS_SVC_ATTR_STATS, /* nested attribute for service stats */
|
||||
__IPVS_SVC_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define IPVS_SVC_ATTR_MAX (__IPVS_SVC_ATTR_MAX - 1)
|
||||
|
||||
/*
|
||||
* Attributes used to describe a destination (real server)
|
||||
*
|
||||
* Used inside nested attribute IPVS_CMD_ATTR_DEST
|
||||
*/
|
||||
enum {
|
||||
IPVS_DEST_ATTR_UNSPEC = 0,
|
||||
IPVS_DEST_ATTR_ADDR, /* real server address */
|
||||
IPVS_DEST_ATTR_PORT, /* real server port */
|
||||
|
||||
IPVS_DEST_ATTR_FWD_METHOD, /* forwarding method */
|
||||
IPVS_DEST_ATTR_WEIGHT, /* destination weight */
|
||||
|
||||
IPVS_DEST_ATTR_U_THRESH, /* upper threshold */
|
||||
IPVS_DEST_ATTR_L_THRESH, /* lower threshold */
|
||||
|
||||
IPVS_DEST_ATTR_ACTIVE_CONNS, /* active connections */
|
||||
IPVS_DEST_ATTR_INACT_CONNS, /* inactive connections */
|
||||
IPVS_DEST_ATTR_PERSIST_CONNS, /* persistent connections */
|
||||
|
||||
IPVS_DEST_ATTR_STATS, /* nested attribute for dest stats */
|
||||
__IPVS_DEST_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define IPVS_DEST_ATTR_MAX (__IPVS_DEST_ATTR_MAX - 1)
|
||||
|
||||
/*
|
||||
* Attributes describing a sync daemon
|
||||
*
|
||||
* Used inside nested attribute IPVS_CMD_ATTR_DAEMON
|
||||
*/
|
||||
enum {
|
||||
IPVS_DAEMON_ATTR_UNSPEC = 0,
|
||||
IPVS_DAEMON_ATTR_STATE, /* sync daemon state (master/backup) */
|
||||
IPVS_DAEMON_ATTR_MCAST_IFN, /* multicast interface name */
|
||||
IPVS_DAEMON_ATTR_SYNC_ID, /* SyncID we belong to */
|
||||
__IPVS_DAEMON_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define IPVS_DAEMON_ATTR_MAX (__IPVS_DAEMON_ATTR_MAX - 1)
|
||||
|
||||
/*
|
||||
* Attributes used to describe service or destination entry statistics
|
||||
*
|
||||
* Used inside nested attributes IPVS_SVC_ATTR_STATS and IPVS_DEST_ATTR_STATS
|
||||
*/
|
||||
enum {
|
||||
IPVS_STATS_ATTR_UNSPEC = 0,
|
||||
IPVS_STATS_ATTR_CONNS, /* connections scheduled */
|
||||
IPVS_STATS_ATTR_INPKTS, /* incoming packets */
|
||||
IPVS_STATS_ATTR_OUTPKTS, /* outgoing packets */
|
||||
IPVS_STATS_ATTR_INBYTES, /* incoming bytes */
|
||||
IPVS_STATS_ATTR_OUTBYTES, /* outgoing bytes */
|
||||
|
||||
IPVS_STATS_ATTR_CPS, /* current connection rate */
|
||||
IPVS_STATS_ATTR_INPPS, /* current in packet rate */
|
||||
IPVS_STATS_ATTR_OUTPPS, /* current out packet rate */
|
||||
IPVS_STATS_ATTR_INBPS, /* current in byte rate */
|
||||
IPVS_STATS_ATTR_OUTBPS, /* current out byte rate */
|
||||
__IPVS_STATS_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define IPVS_STATS_ATTR_MAX (__IPVS_STATS_ATTR_MAX - 1)
|
||||
|
||||
/* Attributes used in response to IPVS_CMD_GET_INFO command */
|
||||
enum {
|
||||
IPVS_INFO_ATTR_UNSPEC = 0,
|
||||
IPVS_INFO_ATTR_VERSION, /* IPVS version number */
|
||||
IPVS_INFO_ATTR_CONN_TAB_SIZE, /* size of connection hash table */
|
||||
__IPVS_INFO_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define IPVS_INFO_ATTR_MAX (__IPVS_INFO_ATTR_MAX - 1)
|
||||
|
||||
#endif /* _IP_VS_H */
|
||||
|
||||
@@ -157,7 +157,7 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
int mp_mrru; /* unused */
|
||||
struct sk_buff * frags; /* fragments sl list -- use skb->next */
|
||||
struct sk_buff_head frags; /* fragments sl list */
|
||||
long frames; /* number of frames in the frame list */
|
||||
unsigned int seq; /* last processed packet seq #: any packets
|
||||
* with smaller seq # will be dropped
|
||||
|
||||
@@ -17,9 +17,14 @@
|
||||
|
||||
struct mv643xx_eth_shared_platform_data {
|
||||
struct mbus_dram_target_info *dram;
|
||||
struct platform_device *shared_smi;
|
||||
unsigned int t_clk;
|
||||
};
|
||||
|
||||
#define MV643XX_ETH_PHY_ADDR_DEFAULT 0
|
||||
#define MV643XX_ETH_PHY_ADDR(x) (0x80 | (x))
|
||||
#define MV643XX_ETH_PHY_NONE 0xff
|
||||
|
||||
struct mv643xx_eth_platform_data {
|
||||
/*
|
||||
* Pointer back to our parent instance, and our port number.
|
||||
@@ -30,8 +35,6 @@ struct mv643xx_eth_platform_data {
|
||||
/*
|
||||
* Whether a PHY is present, and if yes, at which address.
|
||||
*/
|
||||
struct platform_device *shared_smi;
|
||||
int force_phy_addr;
|
||||
int phy_addr;
|
||||
|
||||
/*
|
||||
@@ -49,10 +52,10 @@ struct mv643xx_eth_platform_data {
|
||||
int duplex;
|
||||
|
||||
/*
|
||||
* Which RX/TX queues to use.
|
||||
* How many RX/TX queues to use.
|
||||
*/
|
||||
int rx_queue_mask;
|
||||
int tx_queue_mask;
|
||||
int rx_queue_count;
|
||||
int tx_queue_count;
|
||||
|
||||
/*
|
||||
* Override default RX/TX queue sizes if nonzero.
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#include <net/net_namespace.h>
|
||||
#include <net/dsa.h>
|
||||
|
||||
struct vlan_group;
|
||||
struct ethtool_ops;
|
||||
@@ -471,6 +472,8 @@ struct net_device
|
||||
char name[IFNAMSIZ];
|
||||
/* device name hash chain */
|
||||
struct hlist_node name_hlist;
|
||||
/* snmp alias */
|
||||
char *ifalias;
|
||||
|
||||
/*
|
||||
* I/O specific fields
|
||||
@@ -605,6 +608,9 @@ struct net_device
|
||||
|
||||
/* Protocol specific pointers */
|
||||
|
||||
#ifdef CONFIG_NET_DSA
|
||||
void *dsa_ptr; /* dsa specific data */
|
||||
#endif
|
||||
void *atalk_ptr; /* AppleTalk link */
|
||||
void *ip_ptr; /* IPv4 specific data */
|
||||
void *dn_ptr; /* DECnet specific data */
|
||||
@@ -796,6 +802,26 @@ void dev_net_set(struct net_device *dev, struct net *net)
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline bool netdev_uses_dsa_tags(struct net_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_NET_DSA_TAG_DSA
|
||||
if (dev->dsa_ptr != NULL)
|
||||
return dsa_uses_dsa_tags(dev->dsa_ptr);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline bool netdev_uses_trailer_tags(struct net_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_NET_DSA_TAG_TRAILER
|
||||
if (dev->dsa_ptr != NULL)
|
||||
return dsa_uses_trailer_tags(dev->dsa_ptr);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* netdev_priv - access network device private data
|
||||
* @dev: network device
|
||||
@@ -1223,7 +1249,8 @@ extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *);
|
||||
extern int dev_ethtool(struct net *net, struct ifreq *);
|
||||
extern unsigned dev_get_flags(const struct net_device *);
|
||||
extern int dev_change_flags(struct net_device *, unsigned);
|
||||
extern int dev_change_name(struct net_device *, char *);
|
||||
extern int dev_change_name(struct net_device *, const char *);
|
||||
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);
|
||||
@@ -1667,7 +1694,7 @@ extern void dev_seq_stop(struct seq_file *seq, void *v);
|
||||
extern int netdev_class_create_file(struct class_attribute *class_attr);
|
||||
extern void netdev_class_remove_file(struct class_attribute *class_attr);
|
||||
|
||||
extern char *netdev_drivername(struct net_device *dev, char *buffer, int len);
|
||||
extern char *netdev_drivername(const struct net_device *dev, char *buffer, int len);
|
||||
|
||||
extern void linkwatch_run_queue(void);
|
||||
|
||||
|
||||
+28
-69
@@ -5,13 +5,11 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/net.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/if.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/in6.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/list.h>
|
||||
#include <net/net_namespace.h>
|
||||
#endif
|
||||
#include <linux/types.h>
|
||||
#include <linux/compiler.h>
|
||||
@@ -52,6 +50,16 @@ enum nf_inet_hooks {
|
||||
NF_INET_NUMHOOKS
|
||||
};
|
||||
|
||||
enum {
|
||||
NFPROTO_UNSPEC = 0,
|
||||
NFPROTO_IPV4 = 2,
|
||||
NFPROTO_ARP = 3,
|
||||
NFPROTO_BRIDGE = 7,
|
||||
NFPROTO_IPV6 = 10,
|
||||
NFPROTO_DECNET = 12,
|
||||
NFPROTO_NUMPROTO,
|
||||
};
|
||||
|
||||
union nf_inet_addr {
|
||||
__u32 all[4];
|
||||
__be32 ip;
|
||||
@@ -92,8 +100,8 @@ struct nf_hook_ops
|
||||
/* User fills in from here down. */
|
||||
nf_hookfn *hook;
|
||||
struct module *owner;
|
||||
int pf;
|
||||
int hooknum;
|
||||
u_int8_t pf;
|
||||
unsigned int hooknum;
|
||||
/* Hooks are ordered in ascending priority. */
|
||||
int priority;
|
||||
};
|
||||
@@ -102,7 +110,7 @@ struct nf_sockopt_ops
|
||||
{
|
||||
struct list_head list;
|
||||
|
||||
int pf;
|
||||
u_int8_t pf;
|
||||
|
||||
/* Non-inclusive ranges: use 0/0/NULL to never get called. */
|
||||
int set_optmin;
|
||||
@@ -138,9 +146,9 @@ extern struct ctl_path nf_net_netfilter_sysctl_path[];
|
||||
extern struct ctl_path nf_net_ipv4_netfilter_sysctl_path[];
|
||||
#endif /* CONFIG_SYSCTL */
|
||||
|
||||
extern struct list_head nf_hooks[NPROTO][NF_MAX_HOOKS];
|
||||
extern struct list_head nf_hooks[NFPROTO_NUMPROTO][NF_MAX_HOOKS];
|
||||
|
||||
int nf_hook_slow(int pf, unsigned int hook, struct sk_buff *skb,
|
||||
int nf_hook_slow(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *indev, struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *), int thresh);
|
||||
|
||||
@@ -151,7 +159,7 @@ int nf_hook_slow(int pf, unsigned int hook, struct sk_buff *skb,
|
||||
* okfn must be invoked by the caller in this case. Any other return
|
||||
* value indicates the packet has been consumed by the hook.
|
||||
*/
|
||||
static inline int nf_hook_thresh(int pf, unsigned int hook,
|
||||
static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook,
|
||||
struct sk_buff *skb,
|
||||
struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
@@ -167,7 +175,7 @@ static inline int nf_hook_thresh(int pf, unsigned int hook,
|
||||
return nf_hook_slow(pf, hook, skb, indev, outdev, okfn, thresh);
|
||||
}
|
||||
|
||||
static inline int nf_hook(int pf, unsigned int hook, struct sk_buff *skb,
|
||||
static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *indev, struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
{
|
||||
@@ -212,14 +220,14 @@ __ret;})
|
||||
NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, INT_MIN)
|
||||
|
||||
/* Call setsockopt() */
|
||||
int nf_setsockopt(struct sock *sk, int pf, int optval, char __user *opt,
|
||||
int nf_setsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
||||
int len);
|
||||
int nf_getsockopt(struct sock *sk, int pf, int optval, char __user *opt,
|
||||
int nf_getsockopt(struct sock *sk, u_int8_t pf, int optval, char __user *opt,
|
||||
int *len);
|
||||
|
||||
int compat_nf_setsockopt(struct sock *sk, int pf, int optval,
|
||||
int compat_nf_setsockopt(struct sock *sk, u_int8_t pf, int optval,
|
||||
char __user *opt, int len);
|
||||
int compat_nf_getsockopt(struct sock *sk, int pf, int optval,
|
||||
int compat_nf_getsockopt(struct sock *sk, u_int8_t pf, int optval,
|
||||
char __user *opt, int *len);
|
||||
|
||||
/* Call this before modifying an existing packet: ensures it is
|
||||
@@ -247,7 +255,7 @@ struct nf_afinfo {
|
||||
int route_key_size;
|
||||
};
|
||||
|
||||
extern const struct nf_afinfo *nf_afinfo[NPROTO];
|
||||
extern const struct nf_afinfo *nf_afinfo[NFPROTO_NUMPROTO];
|
||||
static inline const struct nf_afinfo *nf_get_afinfo(unsigned short family)
|
||||
{
|
||||
return rcu_dereference(nf_afinfo[family]);
|
||||
@@ -292,7 +300,7 @@ extern void nf_unregister_afinfo(const struct nf_afinfo *afinfo);
|
||||
extern void (*ip_nat_decode_session)(struct sk_buff *, struct flowi *);
|
||||
|
||||
static inline void
|
||||
nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, int family)
|
||||
nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, u_int8_t family)
|
||||
{
|
||||
#ifdef CONFIG_NF_NAT_NEEDED
|
||||
void (*decodefn)(struct sk_buff *, struct flowi *);
|
||||
@@ -315,7 +323,7 @@ extern struct proc_dir_entry *proc_net_netfilter;
|
||||
#else /* !CONFIG_NETFILTER */
|
||||
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb)
|
||||
#define NF_HOOK_COND(pf, hook, skb, indev, outdev, okfn, cond) (okfn)(skb)
|
||||
static inline int nf_hook_thresh(int pf, unsigned int hook,
|
||||
static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook,
|
||||
struct sk_buff *skb,
|
||||
struct net_device *indev,
|
||||
struct net_device *outdev,
|
||||
@@ -324,7 +332,7 @@ static inline int nf_hook_thresh(int pf, unsigned int hook,
|
||||
{
|
||||
return okfn(skb);
|
||||
}
|
||||
static inline int nf_hook(int pf, unsigned int hook, struct sk_buff *skb,
|
||||
static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb,
|
||||
struct net_device *indev, struct net_device *outdev,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
{
|
||||
@@ -332,7 +340,9 @@ static inline int nf_hook(int pf, unsigned int hook, struct sk_buff *skb,
|
||||
}
|
||||
struct flowi;
|
||||
static inline void
|
||||
nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, int family) {}
|
||||
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)
|
||||
@@ -343,56 +353,5 @@ extern void (*nf_ct_destroy)(struct nf_conntrack *);
|
||||
static inline void nf_ct_attach(struct sk_buff *new, struct sk_buff *skb) {}
|
||||
#endif
|
||||
|
||||
static inline struct net *nf_pre_routing_net(const struct net_device *in,
|
||||
const struct net_device *out)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
return in->nd_net;
|
||||
#else
|
||||
return &init_net;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline struct net *nf_local_in_net(const struct net_device *in,
|
||||
const struct net_device *out)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
return in->nd_net;
|
||||
#else
|
||||
return &init_net;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline struct net *nf_forward_net(const struct net_device *in,
|
||||
const struct net_device *out)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
BUG_ON(in->nd_net != out->nd_net);
|
||||
return in->nd_net;
|
||||
#else
|
||||
return &init_net;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline struct net *nf_local_out_net(const struct net_device *in,
|
||||
const struct net_device *out)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
return out->nd_net;
|
||||
#else
|
||||
return &init_net;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline struct net *nf_post_routing_net(const struct net_device *in,
|
||||
const struct net_device *out)
|
||||
{
|
||||
#ifdef CONFIG_NET_NS
|
||||
return out->nd_net;
|
||||
#else
|
||||
return &init_net;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /*__KERNEL__*/
|
||||
#endif /*__LINUX_NETFILTER_H*/
|
||||
|
||||
@@ -32,6 +32,7 @@ header-y += xt_owner.h
|
||||
header-y += xt_pkttype.h
|
||||
header-y += xt_rateest.h
|
||||
header-y += xt_realm.h
|
||||
header-y += xt_recent.h
|
||||
header-y += xt_sctp.h
|
||||
header-y += xt_state.h
|
||||
header-y += xt_statistic.h
|
||||
|
||||
@@ -87,7 +87,7 @@ int nf_ct_gre_keymap_add(struct nf_conn *ct, enum ip_conntrack_dir dir,
|
||||
/* delete keymap entries */
|
||||
void nf_ct_gre_keymap_destroy(struct nf_conn *ct);
|
||||
|
||||
extern void nf_ct_gre_keymap_flush(void);
|
||||
extern void nf_ct_gre_keymap_flush(struct net *net);
|
||||
extern void nf_nat_need_gre(void);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
@@ -173,6 +173,98 @@ struct xt_counters_info
|
||||
|
||||
#include <linux/netdevice.h>
|
||||
|
||||
/**
|
||||
* struct xt_match_param - parameters for match extensions' match functions
|
||||
*
|
||||
* @in: input netdevice
|
||||
* @out: output netdevice
|
||||
* @match: struct xt_match through which this function was invoked
|
||||
* @matchinfo: per-match data
|
||||
* @fragoff: packet is a fragment, this is the data offset
|
||||
* @thoff: position of transport header relative to skb->data
|
||||
* @hotdrop: drop packet if we had inspection problems
|
||||
* @family: Actual NFPROTO_* through which the function is invoked
|
||||
* (helpful when match->family == NFPROTO_UNSPEC)
|
||||
*/
|
||||
struct xt_match_param {
|
||||
const struct net_device *in, *out;
|
||||
const struct xt_match *match;
|
||||
const void *matchinfo;
|
||||
int fragoff;
|
||||
unsigned int thoff;
|
||||
bool *hotdrop;
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct xt_mtchk_param - parameters for match extensions'
|
||||
* checkentry functions
|
||||
*
|
||||
* @table: table the rule is tried to be inserted into
|
||||
* @entryinfo: the family-specific rule data
|
||||
* (struct ipt_ip, ip6t_ip, ebt_entry)
|
||||
* @match: struct xt_match through which this function was invoked
|
||||
* @matchinfo: per-match data
|
||||
* @hook_mask: via which hooks the new rule is reachable
|
||||
*/
|
||||
struct xt_mtchk_param {
|
||||
const char *table;
|
||||
const void *entryinfo;
|
||||
const struct xt_match *match;
|
||||
void *matchinfo;
|
||||
unsigned int hook_mask;
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
/* Match destructor parameters */
|
||||
struct xt_mtdtor_param {
|
||||
const struct xt_match *match;
|
||||
void *matchinfo;
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct xt_target_param - parameters for target extensions' target functions
|
||||
*
|
||||
* @hooknum: hook through which this target was invoked
|
||||
* @target: struct xt_target through which this function was invoked
|
||||
* @targinfo: per-target data
|
||||
*
|
||||
* Other fields see above.
|
||||
*/
|
||||
struct xt_target_param {
|
||||
const struct net_device *in, *out;
|
||||
unsigned int hooknum;
|
||||
const struct xt_target *target;
|
||||
const void *targinfo;
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct xt_tgchk_param - parameters for target extensions'
|
||||
* checkentry functions
|
||||
*
|
||||
* @entryinfo: the family-specific rule data
|
||||
* (struct ipt_entry, ip6t_entry, arpt_entry, ebt_entry)
|
||||
*
|
||||
* Other fields see above.
|
||||
*/
|
||||
struct xt_tgchk_param {
|
||||
const char *table;
|
||||
void *entryinfo;
|
||||
const struct xt_target *target;
|
||||
void *targinfo;
|
||||
unsigned int hook_mask;
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
/* Target destructor parameters */
|
||||
struct xt_tgdtor_param {
|
||||
const struct xt_target *target;
|
||||
void *targinfo;
|
||||
u_int8_t family;
|
||||
};
|
||||
|
||||
struct xt_match
|
||||
{
|
||||
struct list_head list;
|
||||
@@ -185,24 +277,13 @@ struct xt_match
|
||||
non-linear skb, using skb_header_pointer and
|
||||
skb_ip_make_writable. */
|
||||
bool (*match)(const struct sk_buff *skb,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
const struct xt_match *match,
|
||||
const void *matchinfo,
|
||||
int offset,
|
||||
unsigned int protoff,
|
||||
bool *hotdrop);
|
||||
const struct xt_match_param *);
|
||||
|
||||
/* Called when user tries to insert an entry of this type. */
|
||||
/* Should return true or false. */
|
||||
bool (*checkentry)(const char *tablename,
|
||||
const void *ip,
|
||||
const struct xt_match *match,
|
||||
void *matchinfo,
|
||||
unsigned int hook_mask);
|
||||
bool (*checkentry)(const struct xt_mtchk_param *);
|
||||
|
||||
/* Called when entry of this type deleted. */
|
||||
void (*destroy)(const struct xt_match *match, void *matchinfo);
|
||||
void (*destroy)(const struct xt_mtdtor_param *);
|
||||
|
||||
/* Called when userspace align differs from kernel space one */
|
||||
void (*compat_from_user)(void *dst, void *src);
|
||||
@@ -235,24 +316,16 @@ struct xt_target
|
||||
must now handle non-linear skbs, using skb_copy_bits and
|
||||
skb_ip_make_writable. */
|
||||
unsigned int (*target)(struct sk_buff *skb,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
unsigned int hooknum,
|
||||
const struct xt_target *target,
|
||||
const void *targinfo);
|
||||
const struct xt_target_param *);
|
||||
|
||||
/* Called when user tries to insert an entry of this type:
|
||||
hook_mask is a bitmask of hooks from which it can be
|
||||
called. */
|
||||
/* Should return true or false. */
|
||||
bool (*checkentry)(const char *tablename,
|
||||
const void *entry,
|
||||
const struct xt_target *target,
|
||||
void *targinfo,
|
||||
unsigned int hook_mask);
|
||||
bool (*checkentry)(const struct xt_tgchk_param *);
|
||||
|
||||
/* Called when entry of this type deleted. */
|
||||
void (*destroy)(const struct xt_target *target, void *targinfo);
|
||||
void (*destroy)(const struct xt_tgdtor_param *);
|
||||
|
||||
/* Called when userspace align differs from kernel space one */
|
||||
void (*compat_from_user)(void *dst, void *src);
|
||||
@@ -292,7 +365,7 @@ struct xt_table
|
||||
/* Set this to THIS_MODULE if you are a module, otherwise NULL */
|
||||
struct module *me;
|
||||
|
||||
int af; /* address/protocol family */
|
||||
u_int8_t af; /* address/protocol family */
|
||||
};
|
||||
|
||||
#include <linux/netfilter_ipv4.h>
|
||||
@@ -328,12 +401,10 @@ extern void xt_unregister_match(struct xt_match *target);
|
||||
extern int xt_register_matches(struct xt_match *match, unsigned int n);
|
||||
extern void xt_unregister_matches(struct xt_match *match, unsigned int n);
|
||||
|
||||
extern int xt_check_match(const struct xt_match *match, unsigned short family,
|
||||
unsigned int size, const char *table, unsigned int hook,
|
||||
unsigned short proto, int inv_proto);
|
||||
extern int xt_check_target(const struct xt_target *target, unsigned short family,
|
||||
unsigned int size, const char *table, unsigned int hook,
|
||||
unsigned short proto, int inv_proto);
|
||||
extern int xt_check_match(struct xt_mtchk_param *,
|
||||
unsigned int size, u_int8_t proto, bool inv_proto);
|
||||
extern int xt_check_target(struct xt_tgchk_param *,
|
||||
unsigned int size, u_int8_t proto, bool inv_proto);
|
||||
|
||||
extern struct xt_table *xt_register_table(struct net *net,
|
||||
struct xt_table *table,
|
||||
@@ -346,19 +417,19 @@ extern struct xt_table_info *xt_replace_table(struct xt_table *table,
|
||||
struct xt_table_info *newinfo,
|
||||
int *error);
|
||||
|
||||
extern struct xt_match *xt_find_match(int af, const char *name, u8 revision);
|
||||
extern struct xt_target *xt_find_target(int af, const char *name, u8 revision);
|
||||
extern struct xt_target *xt_request_find_target(int af, const char *name,
|
||||
extern struct xt_match *xt_find_match(u8 af, const char *name, u8 revision);
|
||||
extern struct xt_target *xt_find_target(u8 af, const char *name, u8 revision);
|
||||
extern struct xt_target *xt_request_find_target(u8 af, const char *name,
|
||||
u8 revision);
|
||||
extern int xt_find_revision(int af, const char *name, u8 revision, int target,
|
||||
int *err);
|
||||
extern int xt_find_revision(u8 af, const char *name, u8 revision,
|
||||
int target, int *err);
|
||||
|
||||
extern struct xt_table *xt_find_table_lock(struct net *net, int af,
|
||||
extern struct xt_table *xt_find_table_lock(struct net *net, u_int8_t af,
|
||||
const char *name);
|
||||
extern void xt_table_unlock(struct xt_table *t);
|
||||
|
||||
extern int xt_proto_init(struct net *net, int af);
|
||||
extern void xt_proto_fini(struct net *net, int af);
|
||||
extern int xt_proto_init(struct net *net, u_int8_t af);
|
||||
extern void xt_proto_fini(struct net *net, u_int8_t af);
|
||||
|
||||
extern struct xt_table_info *xt_alloc_table_info(unsigned int size);
|
||||
extern void xt_free_table_info(struct xt_table_info *info);
|
||||
@@ -423,12 +494,12 @@ struct compat_xt_counters_info
|
||||
#define COMPAT_XT_ALIGN(s) (((s) + (__alignof__(struct compat_xt_counters)-1)) \
|
||||
& ~(__alignof__(struct compat_xt_counters)-1))
|
||||
|
||||
extern void xt_compat_lock(int af);
|
||||
extern void xt_compat_unlock(int af);
|
||||
extern void xt_compat_lock(u_int8_t af);
|
||||
extern void xt_compat_unlock(u_int8_t af);
|
||||
|
||||
extern int xt_compat_add_offset(int af, unsigned int offset, short delta);
|
||||
extern void xt_compat_flush_offsets(int af);
|
||||
extern short xt_compat_calc_jump(int af, unsigned int offset);
|
||||
extern int xt_compat_add_offset(u_int8_t af, unsigned int offset, short delta);
|
||||
extern void xt_compat_flush_offsets(u_int8_t af);
|
||||
extern short xt_compat_calc_jump(u_int8_t af, unsigned int offset);
|
||||
|
||||
extern int xt_compat_match_offset(const struct xt_match *match);
|
||||
extern int xt_compat_match_from_user(struct xt_entry_match *m,
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef _XT_TPROXY_H_target
|
||||
#define _XT_TPROXY_H_target
|
||||
|
||||
/* 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;
|
||||
__be32 laddr;
|
||||
__be16 lport;
|
||||
};
|
||||
|
||||
#endif /* _XT_TPROXY_H_target */
|
||||
@@ -0,0 +1,26 @@
|
||||
#ifndef _LINUX_NETFILTER_XT_RECENT_H
|
||||
#define _LINUX_NETFILTER_XT_RECENT_H 1
|
||||
|
||||
enum {
|
||||
XT_RECENT_CHECK = 1 << 0,
|
||||
XT_RECENT_SET = 1 << 1,
|
||||
XT_RECENT_UPDATE = 1 << 2,
|
||||
XT_RECENT_REMOVE = 1 << 3,
|
||||
XT_RECENT_TTL = 1 << 4,
|
||||
|
||||
XT_RECENT_SOURCE = 0,
|
||||
XT_RECENT_DEST = 1,
|
||||
|
||||
XT_RECENT_NAME_LEN = 200,
|
||||
};
|
||||
|
||||
struct xt_recent_mtinfo {
|
||||
u_int32_t seconds;
|
||||
u_int32_t hit_count;
|
||||
u_int8_t check_set;
|
||||
u_int8_t invert;
|
||||
char name[XT_RECENT_NAME_LEN];
|
||||
u_int8_t side;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_NETFILTER_XT_RECENT_H */
|
||||
@@ -31,6 +31,9 @@
|
||||
* The 4 lsb are more than enough to store the verdict. */
|
||||
#define EBT_VERDICT_BITS 0x0000000F
|
||||
|
||||
struct xt_match;
|
||||
struct xt_target;
|
||||
|
||||
struct ebt_counter
|
||||
{
|
||||
uint64_t pcnt;
|
||||
@@ -121,7 +124,7 @@ struct ebt_entry_match
|
||||
{
|
||||
union {
|
||||
char name[EBT_FUNCTION_MAXNAMELEN];
|
||||
struct ebt_match *match;
|
||||
struct xt_match *match;
|
||||
} u;
|
||||
/* size of data */
|
||||
unsigned int match_size;
|
||||
@@ -132,7 +135,7 @@ struct ebt_entry_watcher
|
||||
{
|
||||
union {
|
||||
char name[EBT_FUNCTION_MAXNAMELEN];
|
||||
struct ebt_watcher *watcher;
|
||||
struct xt_target *watcher;
|
||||
} u;
|
||||
/* size of data */
|
||||
unsigned int watcher_size;
|
||||
@@ -143,7 +146,7 @@ struct ebt_entry_target
|
||||
{
|
||||
union {
|
||||
char name[EBT_FUNCTION_MAXNAMELEN];
|
||||
struct ebt_target *target;
|
||||
struct xt_target *target;
|
||||
} u;
|
||||
/* size of data */
|
||||
unsigned int target_size;
|
||||
@@ -207,14 +210,17 @@ struct ebt_match
|
||||
{
|
||||
struct list_head list;
|
||||
const char name[EBT_FUNCTION_MAXNAMELEN];
|
||||
/* 0 == it matches */
|
||||
int (*match)(const struct sk_buff *skb, const struct net_device *in,
|
||||
const struct net_device *out, const void *matchdata,
|
||||
unsigned int datalen);
|
||||
/* 0 == let it in */
|
||||
int (*check)(const char *tablename, unsigned int hookmask,
|
||||
const struct ebt_entry *e, void *matchdata, unsigned int datalen);
|
||||
void (*destroy)(void *matchdata, unsigned int datalen);
|
||||
bool (*match)(const struct sk_buff *skb, const struct net_device *in,
|
||||
const struct net_device *out, const struct xt_match *match,
|
||||
const void *matchinfo, int offset, unsigned int protoff,
|
||||
bool *hotdrop);
|
||||
bool (*checkentry)(const char *table, const void *entry,
|
||||
const struct xt_match *match, void *matchinfo,
|
||||
unsigned int hook_mask);
|
||||
void (*destroy)(const struct xt_match *match, void *matchinfo);
|
||||
unsigned int matchsize;
|
||||
u_int8_t revision;
|
||||
u_int8_t family;
|
||||
struct module *me;
|
||||
};
|
||||
|
||||
@@ -222,13 +228,17 @@ struct ebt_watcher
|
||||
{
|
||||
struct list_head list;
|
||||
const char name[EBT_FUNCTION_MAXNAMELEN];
|
||||
void (*watcher)(const struct sk_buff *skb, unsigned int hooknr,
|
||||
const struct net_device *in, const struct net_device *out,
|
||||
const void *watcherdata, unsigned int datalen);
|
||||
/* 0 == let it in */
|
||||
int (*check)(const char *tablename, unsigned int hookmask,
|
||||
const struct ebt_entry *e, void *watcherdata, unsigned int datalen);
|
||||
void (*destroy)(void *watcherdata, unsigned int datalen);
|
||||
unsigned int (*target)(struct sk_buff *skb,
|
||||
const struct net_device *in, const struct net_device *out,
|
||||
unsigned int hook_num, const struct xt_target *target,
|
||||
const void *targinfo);
|
||||
bool (*checkentry)(const char *table, const void *entry,
|
||||
const struct xt_target *target, void *targinfo,
|
||||
unsigned int hook_mask);
|
||||
void (*destroy)(const struct xt_target *target, void *targinfo);
|
||||
unsigned int targetsize;
|
||||
u_int8_t revision;
|
||||
u_int8_t family;
|
||||
struct module *me;
|
||||
};
|
||||
|
||||
@@ -236,14 +246,18 @@ struct ebt_target
|
||||
{
|
||||
struct list_head list;
|
||||
const char name[EBT_FUNCTION_MAXNAMELEN];
|
||||
/* returns one of the standard verdicts */
|
||||
int (*target)(struct sk_buff *skb, unsigned int hooknr,
|
||||
const struct net_device *in, const struct net_device *out,
|
||||
const void *targetdata, unsigned int datalen);
|
||||
/* 0 == let it in */
|
||||
int (*check)(const char *tablename, unsigned int hookmask,
|
||||
const struct ebt_entry *e, void *targetdata, unsigned int datalen);
|
||||
void (*destroy)(void *targetdata, unsigned int datalen);
|
||||
/* returns one of the standard EBT_* verdicts */
|
||||
unsigned int (*target)(struct sk_buff *skb,
|
||||
const struct net_device *in, const struct net_device *out,
|
||||
unsigned int hook_num, const struct xt_target *target,
|
||||
const void *targinfo);
|
||||
bool (*checkentry)(const char *table, const void *entry,
|
||||
const struct xt_target *target, void *targinfo,
|
||||
unsigned int hook_mask);
|
||||
void (*destroy)(const struct xt_target *target, void *targinfo);
|
||||
unsigned int targetsize;
|
||||
u_int8_t revision;
|
||||
u_int8_t family;
|
||||
struct module *me;
|
||||
};
|
||||
|
||||
@@ -288,12 +302,6 @@ struct ebt_table
|
||||
~(__alignof__(struct ebt_replace)-1))
|
||||
extern int ebt_register_table(struct ebt_table *table);
|
||||
extern void ebt_unregister_table(struct ebt_table *table);
|
||||
extern int ebt_register_match(struct ebt_match *match);
|
||||
extern void ebt_unregister_match(struct ebt_match *match);
|
||||
extern int ebt_register_watcher(struct ebt_watcher *watcher);
|
||||
extern void ebt_unregister_watcher(struct ebt_watcher *watcher);
|
||||
extern int ebt_register_target(struct ebt_target *target);
|
||||
extern void ebt_unregister_target(struct ebt_target *target);
|
||||
extern unsigned int ebt_do_table(unsigned int hook, struct sk_buff *skb,
|
||||
const struct net_device *in, const struct net_device *out,
|
||||
struct ebt_table *table);
|
||||
@@ -302,9 +310,9 @@ extern unsigned int ebt_do_table(unsigned int hook, struct sk_buff *skb,
|
||||
#define FWINV(bool,invflg) ((bool) ^ !!(info->invflags & invflg))
|
||||
/* True if the hook mask denotes that the rule is in a base chain,
|
||||
* used in the check() functions */
|
||||
#define BASE_CHAIN (hookmask & (1 << NF_BR_NUMHOOKS))
|
||||
#define BASE_CHAIN (par->hook_mask & (1 << NF_BR_NUMHOOKS))
|
||||
/* Clear the bit in the hook mask that tells if the rule is on a base chain */
|
||||
#define CLEAR_BASE_CHAIN_BIT (hookmask &= ~(1 << NF_BR_NUMHOOKS))
|
||||
#define CLEAR_BASE_CHAIN_BIT (par->hook_mask &= ~(1 << NF_BR_NUMHOOKS))
|
||||
/* True if the target is not a standard target */
|
||||
#define INVALID_TARGET (info->target < -NUM_STANDARD_TARGETS || info->target >= 0)
|
||||
|
||||
|
||||
@@ -1,27 +1,21 @@
|
||||
#ifndef _IPT_RECENT_H
|
||||
#define _IPT_RECENT_H
|
||||
|
||||
#define RECENT_NAME "ipt_recent"
|
||||
#define RECENT_VER "v0.3.1"
|
||||
#include <linux/netfilter/xt_recent.h>
|
||||
|
||||
#define IPT_RECENT_CHECK 1
|
||||
#define IPT_RECENT_SET 2
|
||||
#define IPT_RECENT_UPDATE 4
|
||||
#define IPT_RECENT_REMOVE 8
|
||||
#define IPT_RECENT_TTL 16
|
||||
#define ipt_recent_info xt_recent_mtinfo
|
||||
|
||||
#define IPT_RECENT_SOURCE 0
|
||||
#define IPT_RECENT_DEST 1
|
||||
enum {
|
||||
IPT_RECENT_CHECK = XT_RECENT_CHECK,
|
||||
IPT_RECENT_SET = XT_RECENT_SET,
|
||||
IPT_RECENT_UPDATE = XT_RECENT_UPDATE,
|
||||
IPT_RECENT_REMOVE = XT_RECENT_REMOVE,
|
||||
IPT_RECENT_TTL = XT_RECENT_TTL,
|
||||
|
||||
#define IPT_RECENT_NAME_LEN 200
|
||||
IPT_RECENT_SOURCE = XT_RECENT_SOURCE,
|
||||
IPT_RECENT_DEST = XT_RECENT_DEST,
|
||||
|
||||
struct ipt_recent_info {
|
||||
u_int32_t seconds;
|
||||
u_int32_t hit_count;
|
||||
u_int8_t check_set;
|
||||
u_int8_t invert;
|
||||
char name[IPT_RECENT_NAME_LEN];
|
||||
u_int8_t side;
|
||||
IPT_RECENT_NAME_LEN = XT_RECENT_NAME_LEN,
|
||||
};
|
||||
|
||||
#endif /*_IPT_RECENT_H*/
|
||||
|
||||
+131
-2
@@ -89,6 +89,22 @@
|
||||
* @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC
|
||||
* or, if no MAC address given, all mesh paths, on the interface identified
|
||||
* by %NL80211_ATTR_IFINDEX.
|
||||
* @NL80211_CMD_SET_BSS: Set BSS attributes for BSS identified by
|
||||
* %NL80211_ATTR_IFINDEX.
|
||||
*
|
||||
* @NL80211_CMD_SET_REG: Set current regulatory domain. CRDA sends this command
|
||||
* after being queried by the kernel. CRDA replies by sending a regulatory
|
||||
* domain structure which consists of %NL80211_ATTR_REG_ALPHA set to our
|
||||
* current alpha2 if it found a match. It also provides
|
||||
* NL80211_ATTR_REG_RULE_FLAGS, and a set of regulatory rules. Each
|
||||
* regulatory rule is a nested set of attributes given by
|
||||
* %NL80211_ATTR_REG_RULE_FREQ_[START|END] and
|
||||
* %NL80211_ATTR_FREQ_RANGE_MAX_BW with an attached power rule given by
|
||||
* %NL80211_ATTR_REG_RULE_POWER_MAX_ANT_GAIN and
|
||||
* %NL80211_ATTR_REG_RULE_POWER_MAX_EIRP.
|
||||
* @NL80211_CMD_REQ_SET_REG: ask the wireless core to set the regulatory domain
|
||||
* to the the specified ISO/IEC 3166-1 alpha2 country code. The core will
|
||||
* store this as a valid request and then query userspace for it.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
@@ -127,13 +143,23 @@ enum nl80211_commands {
|
||||
NL80211_CMD_NEW_MPATH,
|
||||
NL80211_CMD_DEL_MPATH,
|
||||
|
||||
/* add commands here */
|
||||
NL80211_CMD_SET_BSS,
|
||||
|
||||
NL80211_CMD_SET_REG,
|
||||
NL80211_CMD_REQ_SET_REG,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
__NL80211_CMD_AFTER_LAST,
|
||||
NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/*
|
||||
* Allow user space programs to use #ifdef on new commands by defining them
|
||||
* here
|
||||
*/
|
||||
#define NL80211_CMD_SET_BSS NL80211_CMD_SET_BSS
|
||||
|
||||
/**
|
||||
* enum nl80211_attrs - nl80211 netlink attributes
|
||||
@@ -188,10 +214,34 @@ enum nl80211_commands {
|
||||
* info given for %NL80211_CMD_GET_MPATH, nested attribute described at
|
||||
* &enum nl80211_mpath_info.
|
||||
*
|
||||
*
|
||||
* @NL80211_ATTR_MNTR_FLAGS: flags, nested element with NLA_FLAG attributes of
|
||||
* &enum nl80211_mntr_flags.
|
||||
*
|
||||
* @NL80211_ATTR_REG_ALPHA2: an ISO-3166-alpha2 country code for which the
|
||||
* current regulatory domain should be set to or is already set to.
|
||||
* For example, 'CR', for Costa Rica. This attribute is used by the kernel
|
||||
* to query the CRDA to retrieve one regulatory domain. This attribute can
|
||||
* also be used by userspace to query the kernel for the currently set
|
||||
* regulatory domain. We chose an alpha2 as that is also used by the
|
||||
* IEEE-802.11d country information element to identify a country.
|
||||
* Users can also simply ask the wireless core to set regulatory domain
|
||||
* to a specific alpha2.
|
||||
* @NL80211_ATTR_REG_RULES: a nested array of regulatory domain regulatory
|
||||
* rules.
|
||||
*
|
||||
* @NL80211_ATTR_BSS_CTS_PROT: whether CTS protection is enabled (u8, 0 or 1)
|
||||
* @NL80211_ATTR_BSS_SHORT_PREAMBLE: whether short preamble is enabled
|
||||
* (u8, 0 or 1)
|
||||
* @NL80211_ATTR_BSS_SHORT_SLOT_TIME: whether short slot time enabled
|
||||
* (u8, 0 or 1)
|
||||
*
|
||||
* @NL80211_ATTR_HT_CAPABILITY: HT Capability information element (from
|
||||
* association request when used with NL80211_CMD_NEW_STATION)
|
||||
*
|
||||
* @NL80211_ATTR_SUPPORTED_IFTYPES: nested attribute containing all
|
||||
* supported interface types, each a flag attribute with the number
|
||||
* of the interface mode.
|
||||
*
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -235,16 +285,35 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_MPATH_NEXT_HOP,
|
||||
NL80211_ATTR_MPATH_INFO,
|
||||
|
||||
NL80211_ATTR_BSS_CTS_PROT,
|
||||
NL80211_ATTR_BSS_SHORT_PREAMBLE,
|
||||
NL80211_ATTR_BSS_SHORT_SLOT_TIME,
|
||||
|
||||
NL80211_ATTR_HT_CAPABILITY,
|
||||
|
||||
NL80211_ATTR_SUPPORTED_IFTYPES,
|
||||
|
||||
NL80211_ATTR_REG_ALPHA2,
|
||||
NL80211_ATTR_REG_RULES,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/*
|
||||
* Allow user space programs to use #ifdef on new attributes by defining them
|
||||
* here
|
||||
*/
|
||||
#define NL80211_ATTR_HT_CAPABILITY NL80211_ATTR_HT_CAPABILITY
|
||||
|
||||
#define NL80211_MAX_SUPP_RATES 32
|
||||
#define NL80211_MAX_SUPP_REG_RULES 32
|
||||
#define NL80211_TKIP_DATA_OFFSET_ENCR_KEY 0
|
||||
#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
|
||||
#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
|
||||
#define NL80211_HT_CAPABILITY_LEN 26
|
||||
|
||||
/**
|
||||
* enum nl80211_iftype - (virtual) interface types
|
||||
@@ -435,6 +504,66 @@ enum nl80211_bitrate_attr {
|
||||
NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_reg_rule_attr - regulatory rule attributes
|
||||
* @NL80211_ATTR_REG_RULE_FLAGS: a set of flags which specify additional
|
||||
* considerations for a given frequency range. These are the
|
||||
* &enum nl80211_reg_rule_flags.
|
||||
* @NL80211_ATTR_FREQ_RANGE_START: starting frequencry for the regulatory
|
||||
* rule in KHz. This is not a center of frequency but an actual regulatory
|
||||
* band edge.
|
||||
* @NL80211_ATTR_FREQ_RANGE_END: ending frequency for the regulatory rule
|
||||
* in KHz. This is not a center a frequency but an actual regulatory
|
||||
* band edge.
|
||||
* @NL80211_ATTR_FREQ_RANGE_MAX_BW: maximum allowed bandwidth for this
|
||||
* frequency range, in KHz.
|
||||
* @NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN: the maximum allowed antenna gain
|
||||
* for a given frequency range. The value is in mBi (100 * dBi).
|
||||
* If you don't have one then don't send this.
|
||||
* @NL80211_ATTR_POWER_RULE_MAX_EIRP: the maximum allowed EIRP for
|
||||
* a given frequency range. The value is in mBm (100 * dBm).
|
||||
*/
|
||||
enum nl80211_reg_rule_attr {
|
||||
__NL80211_REG_RULE_ATTR_INVALID,
|
||||
NL80211_ATTR_REG_RULE_FLAGS,
|
||||
|
||||
NL80211_ATTR_FREQ_RANGE_START,
|
||||
NL80211_ATTR_FREQ_RANGE_END,
|
||||
NL80211_ATTR_FREQ_RANGE_MAX_BW,
|
||||
|
||||
NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN,
|
||||
NL80211_ATTR_POWER_RULE_MAX_EIRP,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_REG_RULE_ATTR_AFTER_LAST,
|
||||
NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_reg_rule_flags - regulatory rule flags
|
||||
*
|
||||
* @NL80211_RRF_NO_OFDM: OFDM modulation not allowed
|
||||
* @NL80211_RRF_NO_CCK: CCK modulation not allowed
|
||||
* @NL80211_RRF_NO_INDOOR: indoor operation not allowed
|
||||
* @NL80211_RRF_NO_OUTDOOR: outdoor operation not allowed
|
||||
* @NL80211_RRF_DFS: DFS support is required to be used
|
||||
* @NL80211_RRF_PTP_ONLY: this is only for Point To Point links
|
||||
* @NL80211_RRF_PTMP_ONLY: this is only for Point To Multi Point links
|
||||
* @NL80211_RRF_PASSIVE_SCAN: passive scan is required
|
||||
* @NL80211_RRF_NO_IBSS: no IBSS is allowed
|
||||
*/
|
||||
enum nl80211_reg_rule_flags {
|
||||
NL80211_RRF_NO_OFDM = 1<<0,
|
||||
NL80211_RRF_NO_CCK = 1<<1,
|
||||
NL80211_RRF_NO_INDOOR = 1<<2,
|
||||
NL80211_RRF_NO_OUTDOOR = 1<<3,
|
||||
NL80211_RRF_DFS = 1<<4,
|
||||
NL80211_RRF_PTP_ONLY = 1<<5,
|
||||
NL80211_RRF_PTMP_ONLY = 1<<6,
|
||||
NL80211_RRF_PASSIVE_SCAN = 1<<7,
|
||||
NL80211_RRF_NO_IBSS = 1<<8,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_mntr_flags - monitor configuration flags
|
||||
*
|
||||
|
||||
@@ -1411,6 +1411,8 @@
|
||||
#define PCI_DEVICE_ID_EICON_MAESTRAQ_U 0xe013
|
||||
#define PCI_DEVICE_ID_EICON_MAESTRAP 0xe014
|
||||
|
||||
#define PCI_VENDOR_ID_CISCO 0x1137
|
||||
|
||||
#define PCI_VENDOR_ID_ZIATECH 0x1138
|
||||
#define PCI_DEVICE_ID_ZIATECH_5550_HC 0x5550
|
||||
|
||||
@@ -2213,6 +2215,7 @@
|
||||
|
||||
#define PCI_VENDOR_ID_ATTANSIC 0x1969
|
||||
#define PCI_DEVICE_ID_ATTANSIC_L1 0x1048
|
||||
#define PCI_DEVICE_ID_ATTANSIC_L2 0x2048
|
||||
|
||||
#define PCI_VENDOR_ID_JMICRON 0x197B
|
||||
#define PCI_DEVICE_ID_JMICRON_JMB360 0x2360
|
||||
@@ -2244,6 +2247,16 @@
|
||||
#define PCI_DEVICE_ID_3DLABS_PERMEDIA2 0x0007
|
||||
#define PCI_DEVICE_ID_3DLABS_PERMEDIA2V 0x0009
|
||||
|
||||
#define PCI_VENDOR_ID_NETXEN 0x4040
|
||||
#define PCI_DEVICE_ID_NX2031_10GXSR 0x0001
|
||||
#define PCI_DEVICE_ID_NX2031_10GCX4 0x0002
|
||||
#define PCI_DEVICE_ID_NX2031_4GCU 0x0003
|
||||
#define PCI_DEVICE_ID_NX2031_IMEZ 0x0004
|
||||
#define PCI_DEVICE_ID_NX2031_HMEZ 0x0005
|
||||
#define PCI_DEVICE_ID_NX2031_XG_MGMT 0x0024
|
||||
#define PCI_DEVICE_ID_NX2031_XG_MGMT2 0x0025
|
||||
#define PCI_DEVICE_ID_NX3031 0x0100
|
||||
|
||||
#define PCI_VENDOR_ID_AKS 0x416c
|
||||
#define PCI_DEVICE_ID_AKS_ALADDINCARD 0x0100
|
||||
|
||||
|
||||
+12
-1
@@ -226,6 +226,15 @@ struct sadb_x_sec_ctx {
|
||||
} __attribute__((packed));
|
||||
/* sizeof(struct sadb_sec_ctx) = 8 */
|
||||
|
||||
/* Used by MIGRATE to pass addresses IKE will use to perform
|
||||
* negotiation with the peer */
|
||||
struct sadb_x_kmaddress {
|
||||
uint16_t sadb_x_kmaddress_len;
|
||||
uint16_t sadb_x_kmaddress_exttype;
|
||||
uint32_t sadb_x_kmaddress_reserved;
|
||||
} __attribute__((packed));
|
||||
/* sizeof(struct sadb_x_kmaddress) == 8 */
|
||||
|
||||
/* Message types */
|
||||
#define SADB_RESERVED 0
|
||||
#define SADB_GETSPI 1
|
||||
@@ -346,7 +355,9 @@ struct sadb_x_sec_ctx {
|
||||
#define SADB_X_EXT_NAT_T_DPORT 22
|
||||
#define SADB_X_EXT_NAT_T_OA 23
|
||||
#define SADB_X_EXT_SEC_CTX 24
|
||||
#define SADB_EXT_MAX 24
|
||||
/* Used with MIGRATE to pass @ to IKE for negotiation */
|
||||
#define SADB_X_EXT_KMADDRESS 25
|
||||
#define SADB_EXT_MAX 25
|
||||
|
||||
/* Identity Extension values */
|
||||
#define SADB_IDENTTYPE_RESERVED 0
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
/**
|
||||
* file phonet.h
|
||||
*
|
||||
* Phonet sockets kernel interface
|
||||
*
|
||||
* Copyright (C) 2008 Nokia Corporation. All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef LINUX_PHONET_H
|
||||
#define LINUX_PHONET_H
|
||||
|
||||
/* Automatic protocol selection */
|
||||
#define PN_PROTO_TRANSPORT 0
|
||||
/* Phonet datagram socket */
|
||||
#define PN_PROTO_PHONET 1
|
||||
/* Phonet pipe */
|
||||
#define PN_PROTO_PIPE 2
|
||||
#define PHONET_NPROTO 3
|
||||
|
||||
/* Socket options for SOL_PNPIPE level */
|
||||
#define PNPIPE_ENCAP 1
|
||||
#define PNPIPE_IFINDEX 2
|
||||
|
||||
#define PNADDR_ANY 0
|
||||
#define PNPORT_RESOURCE_ROUTING 0
|
||||
|
||||
/* Values for PNPIPE_ENCAP option */
|
||||
#define PNPIPE_ENCAP_NONE 0
|
||||
#define PNPIPE_ENCAP_IP 1
|
||||
|
||||
/* ioctls */
|
||||
#define SIOCPNGETOBJECT (SIOCPROTOPRIVATE + 0)
|
||||
|
||||
/* Phonet protocol header */
|
||||
struct phonethdr {
|
||||
__u8 pn_rdev;
|
||||
__u8 pn_sdev;
|
||||
__u8 pn_res;
|
||||
__be16 pn_length;
|
||||
__u8 pn_robj;
|
||||
__u8 pn_sobj;
|
||||
} __attribute__((packed));
|
||||
|
||||
/* Common Phonet payload header */
|
||||
struct phonetmsg {
|
||||
__u8 pn_trans_id; /* transaction ID */
|
||||
__u8 pn_msg_id; /* message type */
|
||||
union {
|
||||
struct {
|
||||
__u8 pn_submsg_id; /* message subtype */
|
||||
__u8 pn_data[5];
|
||||
} base;
|
||||
struct {
|
||||
__u16 pn_e_res_id; /* extended resource ID */
|
||||
__u8 pn_e_submsg_id; /* message subtype */
|
||||
__u8 pn_e_data[3];
|
||||
} ext;
|
||||
} pn_msg_u;
|
||||
};
|
||||
#define PN_COMMON_MESSAGE 0xF0
|
||||
#define PN_PREFIX 0xE0 /* resource for extended messages */
|
||||
#define pn_submsg_id pn_msg_u.base.pn_submsg_id
|
||||
#define pn_e_submsg_id pn_msg_u.ext.pn_e_submsg_id
|
||||
#define pn_e_res_id pn_msg_u.ext.pn_e_res_id
|
||||
#define pn_data pn_msg_u.base.pn_data
|
||||
#define pn_e_data pn_msg_u.ext.pn_e_data
|
||||
|
||||
/* data for unreachable errors */
|
||||
#define PN_COMM_SERVICE_NOT_IDENTIFIED_RESP 0x01
|
||||
#define PN_COMM_ISA_ENTITY_NOT_REACHABLE_RESP 0x14
|
||||
#define pn_orig_msg_id pn_data[0]
|
||||
#define pn_status pn_data[1]
|
||||
#define pn_e_orig_msg_id pn_e_data[0]
|
||||
#define pn_e_status pn_e_data[1]
|
||||
|
||||
/* Phonet socket address structure */
|
||||
struct sockaddr_pn {
|
||||
sa_family_t spn_family;
|
||||
__u8 spn_obj;
|
||||
__u8 spn_dev;
|
||||
__u8 spn_resource;
|
||||
__u8 spn_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - 3];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
static inline __u16 pn_object(__u8 addr, __u16 port)
|
||||
{
|
||||
return (addr << 8) | (port & 0x3ff);
|
||||
}
|
||||
|
||||
static inline __u8 pn_obj(__u16 handle)
|
||||
{
|
||||
return handle & 0xff;
|
||||
}
|
||||
|
||||
static inline __u8 pn_dev(__u16 handle)
|
||||
{
|
||||
return handle >> 8;
|
||||
}
|
||||
|
||||
static inline __u16 pn_port(__u16 handle)
|
||||
{
|
||||
return handle & 0x3ff;
|
||||
}
|
||||
|
||||
static inline __u8 pn_addr(__u16 handle)
|
||||
{
|
||||
return (handle >> 8) & 0xfc;
|
||||
}
|
||||
|
||||
static inline void pn_sockaddr_set_addr(struct sockaddr_pn *spn, __u8 addr)
|
||||
{
|
||||
spn->spn_dev &= 0x03;
|
||||
spn->spn_dev |= addr & 0xfc;
|
||||
}
|
||||
|
||||
static inline void pn_sockaddr_set_port(struct sockaddr_pn *spn, __u16 port)
|
||||
{
|
||||
spn->spn_dev &= 0xfc;
|
||||
spn->spn_dev |= (port >> 8) & 0x03;
|
||||
spn->spn_obj = port & 0xff;
|
||||
}
|
||||
|
||||
static inline void pn_sockaddr_set_object(struct sockaddr_pn *spn,
|
||||
__u16 handle)
|
||||
{
|
||||
spn->spn_dev = pn_dev(handle);
|
||||
spn->spn_obj = pn_obj(handle);
|
||||
}
|
||||
|
||||
static inline void pn_sockaddr_set_resource(struct sockaddr_pn *spn,
|
||||
__u8 resource)
|
||||
{
|
||||
spn->spn_resource = resource;
|
||||
}
|
||||
|
||||
static inline __u8 pn_sockaddr_get_addr(const struct sockaddr_pn *spn)
|
||||
{
|
||||
return spn->spn_dev & 0xfc;
|
||||
}
|
||||
|
||||
static inline __u16 pn_sockaddr_get_port(const struct sockaddr_pn *spn)
|
||||
{
|
||||
return ((spn->spn_dev & 0x03) << 8) | spn->spn_obj;
|
||||
}
|
||||
|
||||
static inline __u16 pn_sockaddr_get_object(const struct sockaddr_pn *spn)
|
||||
{
|
||||
return pn_object(spn->spn_dev, spn->spn_obj);
|
||||
}
|
||||
|
||||
static inline __u8 pn_sockaddr_get_resource(const struct sockaddr_pn *spn)
|
||||
{
|
||||
return spn->spn_resource;
|
||||
}
|
||||
|
||||
#endif
|
||||
+47
-5
@@ -99,7 +99,14 @@ struct mii_bus {
|
||||
*/
|
||||
struct mutex mdio_lock;
|
||||
|
||||
struct device *dev;
|
||||
struct device *parent;
|
||||
enum {
|
||||
MDIOBUS_ALLOCATED = 1,
|
||||
MDIOBUS_REGISTERED,
|
||||
MDIOBUS_UNREGISTERED,
|
||||
MDIOBUS_RELEASED,
|
||||
} state;
|
||||
struct device dev;
|
||||
|
||||
/* list of all PHYs on bus */
|
||||
struct phy_device *phy_map[PHY_MAX_ADDR];
|
||||
@@ -113,6 +120,16 @@ struct mii_bus {
|
||||
*/
|
||||
int *irq;
|
||||
};
|
||||
#define to_mii_bus(d) container_of(d, struct mii_bus, dev)
|
||||
|
||||
struct mii_bus *mdiobus_alloc(void);
|
||||
int mdiobus_register(struct mii_bus *bus);
|
||||
void mdiobus_unregister(struct mii_bus *bus);
|
||||
void mdiobus_free(struct mii_bus *bus);
|
||||
struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr);
|
||||
int mdiobus_read(struct mii_bus *bus, int addr, u16 regnum);
|
||||
int mdiobus_write(struct mii_bus *bus, int addr, u16 regnum, u16 val);
|
||||
|
||||
|
||||
#define PHY_INTERRUPT_DISABLED 0x0
|
||||
#define PHY_INTERRUPT_ENABLED 0x80000000
|
||||
@@ -391,8 +408,35 @@ struct phy_fixup {
|
||||
int (*run)(struct phy_device *phydev);
|
||||
};
|
||||
|
||||
int phy_read(struct phy_device *phydev, u16 regnum);
|
||||
int phy_write(struct phy_device *phydev, u16 regnum, u16 val);
|
||||
/**
|
||||
* phy_read - Convenience function for reading a given PHY register
|
||||
* @phydev: the phy_device struct
|
||||
* @regnum: register number to read
|
||||
*
|
||||
* NOTE: MUST NOT be called from interrupt context,
|
||||
* because the bus read/write functions may wait for an interrupt
|
||||
* to conclude the operation.
|
||||
*/
|
||||
static inline int phy_read(struct phy_device *phydev, u16 regnum)
|
||||
{
|
||||
return mdiobus_read(phydev->bus, phydev->addr, regnum);
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_write - Convenience function for writing a given PHY register
|
||||
* @phydev: the phy_device struct
|
||||
* @regnum: register number to write
|
||||
* @val: value to write to @regnum
|
||||
*
|
||||
* NOTE: MUST NOT be called from interrupt context,
|
||||
* because the bus read/write functions may wait for an interrupt
|
||||
* to conclude the operation.
|
||||
*/
|
||||
static inline int phy_write(struct phy_device *phydev, u16 regnum, u16 val)
|
||||
{
|
||||
return mdiobus_write(phydev->bus, phydev->addr, regnum, val);
|
||||
}
|
||||
|
||||
int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id);
|
||||
struct phy_device* get_phy_device(struct mii_bus *bus, int addr);
|
||||
int phy_clear_interrupt(struct phy_device *phydev);
|
||||
@@ -408,8 +452,6 @@ void phy_start(struct phy_device *phydev);
|
||||
void phy_stop(struct phy_device *phydev);
|
||||
int phy_start_aneg(struct phy_device *phydev);
|
||||
|
||||
int mdiobus_register(struct mii_bus *bus);
|
||||
void mdiobus_unregister(struct mii_bus *bus);
|
||||
void phy_sanitize_settings(struct phy_device *phydev);
|
||||
int phy_stop_interrupts(struct phy_device *phydev);
|
||||
int phy_enable_interrupts(struct phy_device *phydev);
|
||||
|
||||
@@ -123,6 +123,13 @@ struct tc_prio_qopt
|
||||
__u8 priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */
|
||||
};
|
||||
|
||||
/* MULTIQ section */
|
||||
|
||||
struct tc_multiq_qopt {
|
||||
__u16 bands; /* Number of bands */
|
||||
__u16 max_bands; /* Maximum number of queues */
|
||||
};
|
||||
|
||||
/* TBF section */
|
||||
|
||||
struct tc_tbf_qopt
|
||||
|
||||
@@ -49,6 +49,7 @@ enum rfkill_state {
|
||||
RFKILL_STATE_SOFT_BLOCKED = 0, /* Radio output blocked */
|
||||
RFKILL_STATE_UNBLOCKED = 1, /* Radio output allowed */
|
||||
RFKILL_STATE_HARD_BLOCKED = 2, /* Output blocked, non-overrideable */
|
||||
RFKILL_STATE_MAX, /* marker for last valid state */
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -110,12 +111,14 @@ struct rfkill {
|
||||
};
|
||||
#define to_rfkill(d) container_of(d, struct rfkill, dev)
|
||||
|
||||
struct rfkill *rfkill_allocate(struct device *parent, enum rfkill_type type);
|
||||
struct rfkill * __must_check rfkill_allocate(struct device *parent,
|
||||
enum rfkill_type type);
|
||||
void rfkill_free(struct rfkill *rfkill);
|
||||
int rfkill_register(struct rfkill *rfkill);
|
||||
int __must_check rfkill_register(struct rfkill *rfkill);
|
||||
void rfkill_unregister(struct rfkill *rfkill);
|
||||
|
||||
int rfkill_force_state(struct rfkill *rfkill, enum rfkill_state state);
|
||||
int rfkill_set_default(enum rfkill_type type, enum rfkill_state state);
|
||||
|
||||
/**
|
||||
* rfkill_state_complement - return complementar state
|
||||
|
||||
@@ -582,6 +582,10 @@ enum rtnetlink_groups {
|
||||
#define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
|
||||
RTNLGRP_ND_USEROPT,
|
||||
#define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
|
||||
RTNLGRP_PHONET_IFADDR,
|
||||
#define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
|
||||
RTNLGRP_PHONET_ROUTE,
|
||||
#define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
|
||||
__RTNLGRP_MAX
|
||||
};
|
||||
#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
|
||||
|
||||
+173
-2
@@ -146,8 +146,14 @@ struct skb_shared_info {
|
||||
unsigned short gso_segs;
|
||||
unsigned short gso_type;
|
||||
__be32 ip6_frag_id;
|
||||
#ifdef CONFIG_HAS_DMA
|
||||
unsigned int num_dma_maps;
|
||||
#endif
|
||||
struct sk_buff *frag_list;
|
||||
skb_frag_t frags[MAX_SKB_FRAGS];
|
||||
#ifdef CONFIG_HAS_DMA
|
||||
dma_addr_t dma_maps[MAX_SKB_FRAGS + 1];
|
||||
#endif
|
||||
};
|
||||
|
||||
/* We divide dataref into two halves. The higher 16 bits hold references
|
||||
@@ -353,6 +359,14 @@ struct sk_buff {
|
||||
|
||||
#include <asm/system.h>
|
||||
|
||||
#ifdef CONFIG_HAS_DMA
|
||||
#include <linux/dma-mapping.h>
|
||||
extern int skb_dma_map(struct device *dev, struct sk_buff *skb,
|
||||
enum dma_data_direction dir);
|
||||
extern void skb_dma_unmap(struct device *dev, struct sk_buff *skb,
|
||||
enum dma_data_direction dir);
|
||||
#endif
|
||||
|
||||
extern void kfree_skb(struct sk_buff *skb);
|
||||
extern void __kfree_skb(struct sk_buff *skb);
|
||||
extern struct sk_buff *__alloc_skb(unsigned int size,
|
||||
@@ -369,6 +383,8 @@ static inline struct sk_buff *alloc_skb_fclone(unsigned int size,
|
||||
return __alloc_skb(size, priority, 1, -1);
|
||||
}
|
||||
|
||||
extern int skb_recycle_check(struct sk_buff *skb, int skb_size);
|
||||
|
||||
extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src);
|
||||
extern struct sk_buff *skb_clone(struct sk_buff *skb,
|
||||
gfp_t priority);
|
||||
@@ -458,6 +474,37 @@ static inline int skb_queue_empty(const struct sk_buff_head *list)
|
||||
return list->next == (struct sk_buff *)list;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_queue_is_last - check if skb is the last entry in the queue
|
||||
* @list: queue head
|
||||
* @skb: buffer
|
||||
*
|
||||
* Returns true if @skb is the last buffer on the list.
|
||||
*/
|
||||
static inline bool skb_queue_is_last(const struct sk_buff_head *list,
|
||||
const struct sk_buff *skb)
|
||||
{
|
||||
return (skb->next == (struct sk_buff *) list);
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_queue_next - return the next packet in the queue
|
||||
* @list: queue head
|
||||
* @skb: current buffer
|
||||
*
|
||||
* Return the next packet in @list after @skb. It is only valid to
|
||||
* call this if skb_queue_is_last() evaluates to false.
|
||||
*/
|
||||
static inline struct sk_buff *skb_queue_next(const struct sk_buff_head *list,
|
||||
const struct sk_buff *skb)
|
||||
{
|
||||
/* This BUG_ON may seem severe, but if we just return then we
|
||||
* are going to dereference garbage.
|
||||
*/
|
||||
BUG_ON(skb_queue_is_last(list, skb));
|
||||
return skb->next;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_get - reference buffer
|
||||
* @skb: buffer to reference
|
||||
@@ -646,6 +693,22 @@ static inline __u32 skb_queue_len(const struct sk_buff_head *list_)
|
||||
return list_->qlen;
|
||||
}
|
||||
|
||||
/**
|
||||
* __skb_queue_head_init - initialize non-spinlock portions of sk_buff_head
|
||||
* @list: queue to initialize
|
||||
*
|
||||
* This initializes only the list and queue length aspects of
|
||||
* an sk_buff_head object. This allows to initialize the list
|
||||
* aspects of an sk_buff_head without reinitializing things like
|
||||
* the spinlock. It can also be used for on-stack sk_buff_head
|
||||
* objects where the spinlock is known to not be used.
|
||||
*/
|
||||
static inline void __skb_queue_head_init(struct sk_buff_head *list)
|
||||
{
|
||||
list->prev = list->next = (struct sk_buff *)list;
|
||||
list->qlen = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function creates a split out lock class for each invocation;
|
||||
* this is needed for now since a whole lot of users of the skb-queue
|
||||
@@ -657,8 +720,7 @@ static inline __u32 skb_queue_len(const struct sk_buff_head *list_)
|
||||
static inline void skb_queue_head_init(struct sk_buff_head *list)
|
||||
{
|
||||
spin_lock_init(&list->lock);
|
||||
list->prev = list->next = (struct sk_buff *)list;
|
||||
list->qlen = 0;
|
||||
__skb_queue_head_init(list);
|
||||
}
|
||||
|
||||
static inline void skb_queue_head_init_class(struct sk_buff_head *list,
|
||||
@@ -685,6 +747,83 @@ static inline void __skb_insert(struct sk_buff *newsk,
|
||||
list->qlen++;
|
||||
}
|
||||
|
||||
static inline void __skb_queue_splice(const struct sk_buff_head *list,
|
||||
struct sk_buff *prev,
|
||||
struct sk_buff *next)
|
||||
{
|
||||
struct sk_buff *first = list->next;
|
||||
struct sk_buff *last = list->prev;
|
||||
|
||||
first->prev = prev;
|
||||
prev->next = first;
|
||||
|
||||
last->next = next;
|
||||
next->prev = last;
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_queue_splice - join two skb lists, this is designed for stacks
|
||||
* @list: the new list to add
|
||||
* @head: the place to add it in the first list
|
||||
*/
|
||||
static inline void skb_queue_splice(const struct sk_buff_head *list,
|
||||
struct sk_buff_head *head)
|
||||
{
|
||||
if (!skb_queue_empty(list)) {
|
||||
__skb_queue_splice(list, (struct sk_buff *) head, head->next);
|
||||
head->qlen += list->qlen;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_queue_splice - join two skb lists and reinitialise the emptied list
|
||||
* @list: the new list to add
|
||||
* @head: the place to add it in the first list
|
||||
*
|
||||
* The list at @list is reinitialised
|
||||
*/
|
||||
static inline void skb_queue_splice_init(struct sk_buff_head *list,
|
||||
struct sk_buff_head *head)
|
||||
{
|
||||
if (!skb_queue_empty(list)) {
|
||||
__skb_queue_splice(list, (struct sk_buff *) head, head->next);
|
||||
head->qlen += list->qlen;
|
||||
__skb_queue_head_init(list);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_queue_splice_tail - join two skb lists, each list being a queue
|
||||
* @list: the new list to add
|
||||
* @head: the place to add it in the first list
|
||||
*/
|
||||
static inline void skb_queue_splice_tail(const struct sk_buff_head *list,
|
||||
struct sk_buff_head *head)
|
||||
{
|
||||
if (!skb_queue_empty(list)) {
|
||||
__skb_queue_splice(list, head->prev, (struct sk_buff *) head);
|
||||
head->qlen += list->qlen;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_queue_splice_tail - join two skb lists and reinitialise the emptied list
|
||||
* @list: the new list to add
|
||||
* @head: the place to add it in the first list
|
||||
*
|
||||
* Each of the lists is a queue.
|
||||
* The list at @list is reinitialised
|
||||
*/
|
||||
static inline void skb_queue_splice_tail_init(struct sk_buff_head *list,
|
||||
struct sk_buff_head *head)
|
||||
{
|
||||
if (!skb_queue_empty(list)) {
|
||||
__skb_queue_splice(list, head->prev, (struct sk_buff *) head);
|
||||
head->qlen += list->qlen;
|
||||
__skb_queue_head_init(list);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* __skb_queue_after - queue a buffer at the list head
|
||||
* @list: list to use
|
||||
@@ -829,6 +968,9 @@ static inline void skb_fill_page_desc(struct sk_buff *skb, int i,
|
||||
skb_shinfo(skb)->nr_frags = i + 1;
|
||||
}
|
||||
|
||||
extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page,
|
||||
int off, int size);
|
||||
|
||||
#define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags)
|
||||
#define SKB_FRAG_ASSERT(skb) BUG_ON(skb_shinfo(skb)->frag_list)
|
||||
#define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb))
|
||||
@@ -1243,6 +1385,26 @@ static inline struct sk_buff *netdev_alloc_skb(struct net_device *dev,
|
||||
return __netdev_alloc_skb(dev, length, GFP_ATOMIC);
|
||||
}
|
||||
|
||||
extern struct page *__netdev_alloc_page(struct net_device *dev, gfp_t gfp_mask);
|
||||
|
||||
/**
|
||||
* netdev_alloc_page - allocate a page for ps-rx on a specific device
|
||||
* @dev: network device to receive on
|
||||
*
|
||||
* Allocate a new page node local to the specified device.
|
||||
*
|
||||
* %NULL is returned if there is no free memory.
|
||||
*/
|
||||
static inline struct page *netdev_alloc_page(struct net_device *dev)
|
||||
{
|
||||
return __netdev_alloc_page(dev, GFP_ATOMIC);
|
||||
}
|
||||
|
||||
static inline void netdev_free_page(struct net_device *dev, struct page *page)
|
||||
{
|
||||
__free_page(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* skb_clone_writable - is the header of a clone writable
|
||||
* @skb: buffer to check
|
||||
@@ -1434,6 +1596,15 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
|
||||
skb != (struct sk_buff *)(queue); \
|
||||
skb = tmp, tmp = skb->next)
|
||||
|
||||
#define skb_queue_walk_from(queue, skb) \
|
||||
for (; prefetch(skb->next), (skb != (struct sk_buff *)(queue)); \
|
||||
skb = skb->next)
|
||||
|
||||
#define skb_queue_walk_from_safe(queue, skb, tmp) \
|
||||
for (tmp = skb->next; \
|
||||
skb != (struct sk_buff *)(queue); \
|
||||
skb = tmp, tmp = skb->next)
|
||||
|
||||
#define skb_queue_reverse_walk(queue, skb) \
|
||||
for (skb = (queue)->prev; \
|
||||
prefetch(skb->prev), (skb != (struct sk_buff *)(queue)); \
|
||||
|
||||
@@ -190,7 +190,8 @@ struct ucred {
|
||||
#define AF_IUCV 32 /* IUCV sockets */
|
||||
#define AF_RXRPC 33 /* RxRPC sockets */
|
||||
#define AF_ISDN 34 /* mISDN sockets */
|
||||
#define AF_MAX 35 /* For now.. */
|
||||
#define AF_PHONET 35 /* Phonet sockets */
|
||||
#define AF_MAX 36 /* For now.. */
|
||||
|
||||
/* Protocol families, same as address families. */
|
||||
#define PF_UNSPEC AF_UNSPEC
|
||||
@@ -227,6 +228,7 @@ struct ucred {
|
||||
#define PF_IUCV AF_IUCV
|
||||
#define PF_RXRPC AF_RXRPC
|
||||
#define PF_ISDN AF_ISDN
|
||||
#define PF_PHONET AF_PHONET
|
||||
#define PF_MAX AF_MAX
|
||||
|
||||
/* Maximum queue length specifiable by listen. */
|
||||
@@ -295,6 +297,7 @@ struct ucred {
|
||||
#define SOL_RXRPC 272
|
||||
#define SOL_PPPOL2TP 273
|
||||
#define SOL_BLUETOOTH 274
|
||||
#define SOL_PNPIPE 275
|
||||
|
||||
/* IPX options */
|
||||
#define IPX_TYPE 1
|
||||
|
||||
@@ -245,8 +245,6 @@
|
||||
|
||||
/* SPROM Revision 3 (inherits most data from rev 2) */
|
||||
#define SSB_SPROM3_IL0MAC 0x104A /* 6 bytes MAC address for 802.11b/g */
|
||||
#define SSB_SPROM3_ET0MAC 0x1050 /* 6 bytes MAC address for Ethernet ?? */
|
||||
#define SSB_SPROM3_ET1MAC 0x1050 /* 6 bytes MAC address for 802.11a ?? */
|
||||
#define SSB_SPROM3_OFDMAPO 0x102C /* A-PHY OFDM Mid Power Offset (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_OFDMALPO 0x1030 /* A-PHY OFDM Low Power Offset (4 bytes, BigEndian) */
|
||||
#define SSB_SPROM3_OFDMAHPO 0x1034 /* A-PHY OFDM High Power Offset (4 bytes, BigEndian) */
|
||||
@@ -267,8 +265,6 @@
|
||||
|
||||
/* SPROM Revision 4 */
|
||||
#define SSB_SPROM4_IL0MAC 0x104C /* 6 byte MAC address for a/b/g/n */
|
||||
#define SSB_SPROM4_ET0MAC 0x1018 /* 6 bytes MAC address for Ethernet ?? */
|
||||
#define SSB_SPROM4_ET1MAC 0x1018 /* 6 bytes MAC address for 802.11a ?? */
|
||||
#define SSB_SPROM4_ETHPHY 0x105A /* Ethernet PHY settings ?? */
|
||||
#define SSB_SPROM4_ETHPHY_ET0A 0x001F /* MII Address for enet0 */
|
||||
#define SSB_SPROM4_ETHPHY_ET1A 0x03E0 /* MII Address for enet1 */
|
||||
@@ -316,6 +312,21 @@
|
||||
#define SSB_SPROM4_PA1B1 0x1090
|
||||
#define SSB_SPROM4_PA1B2 0x1092
|
||||
|
||||
/* SPROM Revision 5 (inherits most data from rev 4) */
|
||||
#define SSB_SPROM5_BFLLO 0x104A /* Boardflags (low 16 bits) */
|
||||
#define SSB_SPROM5_BFLHI 0x104C /* Board Flags Hi */
|
||||
#define SSB_SPROM5_IL0MAC 0x1052 /* 6 byte MAC address for a/b/g/n */
|
||||
#define SSB_SPROM5_CCODE 0x1044 /* Country Code (2 bytes) */
|
||||
#define SSB_SPROM5_GPIOA 0x1076 /* Gen. Purpose IO # 0 and 1 */
|
||||
#define SSB_SPROM5_GPIOA_P0 0x00FF /* Pin 0 */
|
||||
#define SSB_SPROM5_GPIOA_P1 0xFF00 /* Pin 1 */
|
||||
#define SSB_SPROM5_GPIOA_P1_SHIFT 8
|
||||
#define SSB_SPROM5_GPIOB 0x1078 /* Gen. Purpose IO # 2 and 3 */
|
||||
#define SSB_SPROM5_GPIOB_P2 0x00FF /* Pin 2 */
|
||||
#define SSB_SPROM5_GPIOB_P3 0xFF00 /* Pin 3 */
|
||||
#define SSB_SPROM5_GPIOB_P3_SHIFT 8
|
||||
|
||||
|
||||
/* Values for SSB_SPROM1_BINF_CCODE */
|
||||
enum {
|
||||
SSB_SPROM1CCODE_WORLD = 0,
|
||||
|
||||
@@ -3,3 +3,4 @@ header-y += tc_ipt.h
|
||||
header-y += tc_mirred.h
|
||||
header-y += tc_pedit.h
|
||||
header-y += tc_nat.h
|
||||
header-y += tc_skbedit.h
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 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,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||||
* Place - Suite 330, Boston, MA 02111-1307 USA.
|
||||
*
|
||||
* Author: Alexander Duyck <alexander.h.duyck@intel.com>
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_TC_SKBEDIT_H
|
||||
#define __LINUX_TC_SKBEDIT_H
|
||||
|
||||
#include <linux/pkt_cls.h>
|
||||
|
||||
#define TCA_ACT_SKBEDIT 11
|
||||
|
||||
#define SKBEDIT_F_PRIORITY 0x1
|
||||
#define SKBEDIT_F_QUEUE_MAPPING 0x2
|
||||
|
||||
struct tc_skbedit {
|
||||
tc_gen;
|
||||
};
|
||||
|
||||
enum {
|
||||
TCA_SKBEDIT_UNSPEC,
|
||||
TCA_SKBEDIT_TM,
|
||||
TCA_SKBEDIT_PARMS,
|
||||
TCA_SKBEDIT_PRIORITY,
|
||||
TCA_SKBEDIT_QUEUE_MAPPING,
|
||||
__TCA_SKBEDIT_MAX
|
||||
};
|
||||
#define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
|
||||
|
||||
#endif
|
||||
+5
-7
@@ -312,8 +312,11 @@ struct tcp_sock {
|
||||
u32 retrans_out; /* Retransmitted packets out */
|
||||
|
||||
u16 urg_data; /* Saved octet of OOB data and control flags */
|
||||
u8 urg_mode; /* In urgent mode */
|
||||
u8 ecn_flags; /* ECN status bits. */
|
||||
u8 reordering; /* Packet reordering metric. */
|
||||
u32 snd_up; /* Urgent pointer */
|
||||
|
||||
u8 keepalive_probes; /* num of allowed keep alive probes */
|
||||
/*
|
||||
* Options received (usually on last packet, some only on SYN packets).
|
||||
*/
|
||||
@@ -342,7 +345,6 @@ struct tcp_sock {
|
||||
struct sk_buff* lost_skb_hint;
|
||||
struct sk_buff *scoreboard_skb_hint;
|
||||
struct sk_buff *retransmit_skb_hint;
|
||||
struct sk_buff *forward_skb_hint;
|
||||
|
||||
struct sk_buff_head out_of_order_queue; /* Out of order segments go here */
|
||||
|
||||
@@ -358,12 +360,10 @@ struct tcp_sock {
|
||||
*/
|
||||
|
||||
int lost_cnt_hint;
|
||||
int retransmit_cnt_hint;
|
||||
u32 retransmit_high; /* L-bits may be on up to this seqno */
|
||||
|
||||
u32 lost_retrans_low; /* Sent seq after any rxmit (lowest) */
|
||||
|
||||
u8 reordering; /* Packet reordering metric. */
|
||||
u8 keepalive_probes; /* num of allowed keep alive probes */
|
||||
u32 prior_ssthresh; /* ssthresh saved at recovery start */
|
||||
u32 high_seq; /* snd_nxt at onset of congestion */
|
||||
|
||||
@@ -375,8 +375,6 @@ struct tcp_sock {
|
||||
u32 total_retrans; /* Total retransmits for entire connection */
|
||||
|
||||
u32 urg_seq; /* Seq of received urgent pointer */
|
||||
u32 snd_up; /* Urgent pointer */
|
||||
|
||||
unsigned int keepalive_time; /* time before keep alive takes place */
|
||||
unsigned int keepalive_intvl; /* time interval between keep alive probes */
|
||||
|
||||
|
||||
@@ -279,6 +279,7 @@ enum xfrm_attr_type_t {
|
||||
XFRMA_POLICY_TYPE, /* struct xfrm_userpolicy_type */
|
||||
XFRMA_MIGRATE,
|
||||
XFRMA_ALG_AEAD, /* struct xfrm_algo_aead */
|
||||
XFRMA_KMADDRESS, /* struct xfrm_user_kmaddress */
|
||||
__XFRMA_MAX
|
||||
|
||||
#define XFRMA_MAX (__XFRMA_MAX - 1)
|
||||
@@ -415,6 +416,15 @@ struct xfrm_user_report {
|
||||
struct xfrm_selector sel;
|
||||
};
|
||||
|
||||
/* Used by MIGRATE to pass addresses IKE should use to perform
|
||||
* SA negotiation with the peer */
|
||||
struct xfrm_user_kmaddress {
|
||||
xfrm_address_t local;
|
||||
xfrm_address_t remote;
|
||||
__u32 reserved;
|
||||
__u16 family;
|
||||
};
|
||||
|
||||
struct xfrm_user_migrate {
|
||||
xfrm_address_t old_daddr;
|
||||
xfrm_address_t old_saddr;
|
||||
|
||||
Reference in New Issue
Block a user