Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: drivers/infiniband/core/iwcm.c drivers/net/chelsio/cxgb2.c drivers/net/wireless/bcm43xx/bcm43xx_main.c drivers/net/wireless/prism54/islpci_eth.c drivers/usb/core/hub.h drivers/usb/input/hid-core.c net/core/netpoll.c Fix up merge failures with Linus's head and fix new compilation failures. Signed-Off-By: David Howells <dhowells@redhat.com>
This commit is contained in:
@@ -60,8 +60,6 @@ header-y += fadvise.h
|
||||
header-y += fd.h
|
||||
header-y += fdreg.h
|
||||
header-y += fib_rules.h
|
||||
header-y += ftape-header-segment.h
|
||||
header-y += ftape-vendors.h
|
||||
header-y += fuse.h
|
||||
header-y += futex.h
|
||||
header-y += genetlink.h
|
||||
@@ -193,7 +191,6 @@ unifdef-y += cuda.h
|
||||
unifdef-y += cyclades.h
|
||||
unifdef-y += dccp.h
|
||||
unifdef-y += dirent.h
|
||||
unifdef-y += divert.h
|
||||
unifdef-y += dlm.h
|
||||
unifdef-y += elfcore.h
|
||||
unifdef-y += errno.h
|
||||
@@ -207,7 +204,6 @@ unifdef-y += fcntl.h
|
||||
unifdef-y += filter.h
|
||||
unifdef-y += flat.h
|
||||
unifdef-y += fs.h
|
||||
unifdef-y += ftape.h
|
||||
unifdef-y += gameport.h
|
||||
unifdef-y += generic_serial.h
|
||||
unifdef-y += genhd.h
|
||||
@@ -342,6 +338,5 @@ unifdef-y += wait.h
|
||||
unifdef-y += wanrouter.h
|
||||
unifdef-y += watchdog.h
|
||||
unifdef-y += xfrm.h
|
||||
unifdef-y += zftape.h
|
||||
|
||||
objhdr-y += version.h
|
||||
|
||||
@@ -37,7 +37,7 @@ enum atmarp_ctrl_type {
|
||||
struct atmarp_ctrl {
|
||||
enum atmarp_ctrl_type type; /* message type */
|
||||
int itf_num;/* interface number (if present) */
|
||||
uint32_t ip; /* IP address (act_need only) */
|
||||
__be32 ip; /* IP address (act_need only) */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -86,8 +86,8 @@ struct atm_backend_br2684 {
|
||||
* efficient per-if in/out filters, this support will be removed
|
||||
*/
|
||||
struct br2684_filter {
|
||||
__u32 prefix; /* network byte order */
|
||||
__u32 netmask; /* 0 = disable filter */
|
||||
__be32 prefix; /* network byte order */
|
||||
__be32 netmask; /* 0 = disable filter */
|
||||
};
|
||||
|
||||
struct br2684_filter_set {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
struct atmmpc_ioc {
|
||||
int dev_num;
|
||||
uint32_t ipaddr; /* the IP address of the shortcut */
|
||||
__be32 ipaddr; /* the IP address of the shortcut */
|
||||
int type; /* ingress or egress */
|
||||
};
|
||||
|
||||
@@ -21,8 +21,8 @@ typedef struct in_ctrl_info {
|
||||
uint8_t Last_NHRP_CIE_code;
|
||||
uint8_t Last_Q2931_cause_value;
|
||||
uint8_t eg_MPC_ATM_addr[ATM_ESA_LEN];
|
||||
uint32_t tag;
|
||||
uint32_t in_dst_ip; /* IP address this ingress MPC sends packets to */
|
||||
__be32 tag;
|
||||
__be32 in_dst_ip; /* IP address this ingress MPC sends packets to */
|
||||
uint16_t holding_time;
|
||||
uint32_t request_id;
|
||||
} in_ctrl_info;
|
||||
@@ -30,10 +30,10 @@ typedef struct in_ctrl_info {
|
||||
typedef struct eg_ctrl_info {
|
||||
uint8_t DLL_header[256];
|
||||
uint8_t DH_length;
|
||||
uint32_t cache_id;
|
||||
uint32_t tag;
|
||||
uint32_t mps_ip;
|
||||
uint32_t eg_dst_ip; /* IP address to which ingress MPC sends packets */
|
||||
__be32 cache_id;
|
||||
__be32 tag;
|
||||
__be32 mps_ip;
|
||||
__be32 eg_dst_ip; /* IP address to which ingress MPC sends packets */
|
||||
uint8_t in_MPC_data_ATM_addr[ATM_ESA_LEN];
|
||||
uint16_t holding_time;
|
||||
} eg_ctrl_info;
|
||||
@@ -49,7 +49,7 @@ struct mpc_parameters {
|
||||
|
||||
struct k_message {
|
||||
uint16_t type;
|
||||
uint32_t ip_mask;
|
||||
__be32 ip_mask;
|
||||
uint8_t MPS_ctrl[ATM_ESA_LEN];
|
||||
union {
|
||||
in_ctrl_info in_info;
|
||||
|
||||
@@ -678,10 +678,11 @@ extern void __blk_stop_queue(request_queue_t *q);
|
||||
extern void blk_run_queue(request_queue_t *);
|
||||
extern void blk_start_queueing(request_queue_t *);
|
||||
extern void blk_queue_activity_fn(request_queue_t *, activity_fn *, void *);
|
||||
extern int blk_rq_map_user(request_queue_t *, struct request *, void __user *, unsigned int);
|
||||
extern int blk_rq_unmap_user(struct bio *, unsigned int);
|
||||
extern int blk_rq_map_user(request_queue_t *, struct request *, void __user *, unsigned long);
|
||||
extern int blk_rq_unmap_user(struct request *);
|
||||
extern int blk_rq_map_kern(request_queue_t *, struct request *, void *, unsigned int, gfp_t);
|
||||
extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct sg_iovec *, int);
|
||||
extern int blk_rq_map_user_iov(request_queue_t *, struct request *,
|
||||
struct sg_iovec *, int, unsigned int);
|
||||
extern int blk_execute_rq(request_queue_t *, struct gendisk *,
|
||||
struct request *, int);
|
||||
extern void blk_execute_rq_nowait(request_queue_t *, struct gendisk *,
|
||||
|
||||
@@ -49,6 +49,15 @@ enum blktrace_act {
|
||||
__BLK_TA_REMAP, /* bio was remapped */
|
||||
};
|
||||
|
||||
/*
|
||||
* Notify events.
|
||||
*/
|
||||
enum blktrace_notify {
|
||||
__BLK_TN_PROCESS = 0, /* establish pid/name mapping */
|
||||
__BLK_TN_TIMESTAMP, /* include system clock */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Trace actions in full. Additionally, read or write is masked
|
||||
*/
|
||||
@@ -68,6 +77,9 @@ enum blktrace_act {
|
||||
#define BLK_TA_BOUNCE (__BLK_TA_BOUNCE)
|
||||
#define BLK_TA_REMAP (__BLK_TA_REMAP | BLK_TC_ACT(BLK_TC_QUEUE))
|
||||
|
||||
#define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY))
|
||||
#define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY))
|
||||
|
||||
#define BLK_IO_TRACE_MAGIC 0x65617400
|
||||
#define BLK_IO_TRACE_VERSION 0x07
|
||||
|
||||
|
||||
+47
-16
@@ -30,7 +30,7 @@ struct dccp_hdr {
|
||||
#else
|
||||
#error "Adjust your <asm/byteorder.h> defines"
|
||||
#endif
|
||||
__u16 dccph_checksum;
|
||||
__sum16 dccph_checksum;
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 dccph_x:1,
|
||||
dccph_type:4,
|
||||
@@ -175,17 +175,21 @@ enum {
|
||||
DCCPC_CCID3 = 3,
|
||||
};
|
||||
|
||||
/* DCCP features */
|
||||
enum {
|
||||
DCCPF_RESERVED = 0,
|
||||
DCCPF_CCID = 1,
|
||||
DCCPF_SEQUENCE_WINDOW = 3,
|
||||
DCCPF_ACK_RATIO = 5,
|
||||
DCCPF_SEND_ACK_VECTOR = 6,
|
||||
DCCPF_SEND_NDP_COUNT = 7,
|
||||
/* 10-127 reserved */
|
||||
DCCPF_MIN_CCID_SPECIFIC = 128,
|
||||
DCCPF_MAX_CCID_SPECIFIC = 255,
|
||||
/* DCCP features (RFC 4340 section 6.4) */
|
||||
enum {
|
||||
DCCPF_RESERVED = 0,
|
||||
DCCPF_CCID = 1,
|
||||
DCCPF_SHORT_SEQNOS = 2, /* XXX: not yet implemented */
|
||||
DCCPF_SEQUENCE_WINDOW = 3,
|
||||
DCCPF_ECN_INCAPABLE = 4, /* XXX: not yet implemented */
|
||||
DCCPF_ACK_RATIO = 5,
|
||||
DCCPF_SEND_ACK_VECTOR = 6,
|
||||
DCCPF_SEND_NDP_COUNT = 7,
|
||||
DCCPF_MIN_CSUM_COVER = 8,
|
||||
DCCPF_DATA_CHECKSUM = 9, /* XXX: not yet implemented */
|
||||
/* 10-127 reserved */
|
||||
DCCPF_MIN_CCID_SPECIFIC = 128,
|
||||
DCCPF_MAX_CCID_SPECIFIC = 255,
|
||||
};
|
||||
|
||||
/* this structure is argument to DCCP_SOCKOPT_CHANGE_X */
|
||||
@@ -196,13 +200,16 @@ struct dccp_so_feat {
|
||||
};
|
||||
|
||||
/* DCCP socket options */
|
||||
#define DCCP_SOCKOPT_PACKET_SIZE 1
|
||||
#define DCCP_SOCKOPT_PACKET_SIZE 1 /* XXX deprecated, without effect */
|
||||
#define DCCP_SOCKOPT_SERVICE 2
|
||||
#define DCCP_SOCKOPT_CHANGE_L 3
|
||||
#define DCCP_SOCKOPT_CHANGE_R 4
|
||||
#define DCCP_SOCKOPT_SEND_CSCOV 10
|
||||
#define DCCP_SOCKOPT_RECV_CSCOV 11
|
||||
#define DCCP_SOCKOPT_CCID_RX_INFO 128
|
||||
#define DCCP_SOCKOPT_CCID_TX_INFO 192
|
||||
|
||||
/* maximum number of services provided on the same listening port */
|
||||
#define DCCP_SERVICE_LIST_MAX_LEN 32
|
||||
|
||||
#ifdef __KERNEL__
|
||||
@@ -256,6 +263,13 @@ static inline struct dccp_hdr *dccp_hdr(const struct sk_buff *skb)
|
||||
return (struct dccp_hdr *)skb->h.raw;
|
||||
}
|
||||
|
||||
static inline struct dccp_hdr *dccp_zeroed_hdr(struct sk_buff *skb, int headlen)
|
||||
{
|
||||
skb->h.raw = skb_push(skb, headlen);
|
||||
memset(skb->h.raw, 0, headlen);
|
||||
return dccp_hdr(skb);
|
||||
}
|
||||
|
||||
static inline struct dccp_hdr_ext *dccp_hdrx(const struct sk_buff *skb)
|
||||
{
|
||||
return (struct dccp_hdr_ext *)(skb->h.raw + sizeof(struct dccp_hdr));
|
||||
@@ -342,6 +356,9 @@ static inline unsigned int dccp_hdr_len(const struct sk_buff *skb)
|
||||
* @dccpms_ccid - Congestion Control Id (CCID) (section 10)
|
||||
* @dccpms_send_ack_vector - Send Ack Vector Feature (section 11.5)
|
||||
* @dccpms_send_ndp_count - Send NDP Count Feature (7.7.2)
|
||||
* @dccpms_ack_ratio - Ack Ratio Feature (section 11.3)
|
||||
* @dccpms_pending - List of features being negotiated
|
||||
* @dccpms_conf -
|
||||
*/
|
||||
struct dccp_minisock {
|
||||
__u64 dccpms_sequence_window;
|
||||
@@ -439,12 +456,25 @@ struct dccp_ackvec;
|
||||
* @dccps_gss - greatest sequence number sent
|
||||
* @dccps_gsr - greatest valid sequence number received
|
||||
* @dccps_gar - greatest valid ack number received on a non-Sync; initialized to %dccps_iss
|
||||
* @dccps_service - first (passive sock) or unique (active sock) service code
|
||||
* @dccps_service_list - second .. last service code on passive socket
|
||||
* @dccps_timestamp_time - time of latest TIMESTAMP option
|
||||
* @dccps_timestamp_echo - latest timestamp received on a TIMESTAMP option
|
||||
* @dccps_packet_size - Set thru setsockopt
|
||||
* @dccps_role - Role of this sock, one of %dccp_role
|
||||
* @dccps_l_ack_ratio -
|
||||
* @dccps_r_ack_ratio -
|
||||
* @dccps_pcslen - sender partial checksum coverage (via sockopt)
|
||||
* @dccps_pcrlen - receiver partial checksum coverage (via sockopt)
|
||||
* @dccps_ndp_count - number of Non Data Packets since last data packet
|
||||
* @dccps_mss_cache -
|
||||
* @dccps_minisock -
|
||||
* @dccps_hc_rx_ackvec - rx half connection ack vector
|
||||
* @dccps_hc_rx_ccid -
|
||||
* @dccps_hc_tx_ccid -
|
||||
* @dccps_options_received -
|
||||
* @dccps_epoch -
|
||||
* @dccps_role - Role of this sock, one of %dccp_role
|
||||
* @dccps_hc_rx_insert_options -
|
||||
* @dccps_hc_tx_insert_options -
|
||||
* @dccps_xmit_timer - timer for when CCID is not ready to send
|
||||
*/
|
||||
struct dccp_sock {
|
||||
@@ -464,9 +494,10 @@ struct dccp_sock {
|
||||
struct dccp_service_list *dccps_service_list;
|
||||
struct timeval dccps_timestamp_time;
|
||||
__u32 dccps_timestamp_echo;
|
||||
__u32 dccps_packet_size;
|
||||
__u16 dccps_l_ack_ratio;
|
||||
__u16 dccps_r_ack_ratio;
|
||||
__u16 dccps_pcslen;
|
||||
__u16 dccps_pcrlen;
|
||||
unsigned long dccps_ndp_count;
|
||||
__u32 dccps_mss_cache;
|
||||
struct dccp_minisock dccps_minisock;
|
||||
|
||||
+31
-4
@@ -21,6 +21,7 @@
|
||||
#include <linux/pm.h>
|
||||
#include <asm/semaphore.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/device.h>
|
||||
|
||||
#define DEVICE_NAME_SIZE 50
|
||||
#define DEVICE_NAME_HALF __stringify(20) /* Less than half to accommodate slop */
|
||||
@@ -42,6 +43,8 @@ struct bus_type {
|
||||
struct klist klist_devices;
|
||||
struct klist klist_drivers;
|
||||
|
||||
struct blocking_notifier_head bus_notifier;
|
||||
|
||||
struct bus_attribute * bus_attrs;
|
||||
struct device_attribute * dev_attrs;
|
||||
struct driver_attribute * drv_attrs;
|
||||
@@ -75,6 +78,29 @@ int __must_check bus_for_each_drv(struct bus_type *bus,
|
||||
struct device_driver *start, void *data,
|
||||
int (*fn)(struct device_driver *, void *));
|
||||
|
||||
/*
|
||||
* Bus notifiers: Get notified of addition/removal of devices
|
||||
* and binding/unbinding of drivers to devices.
|
||||
* In the long run, it should be a replacement for the platform
|
||||
* notify hooks.
|
||||
*/
|
||||
struct notifier_block;
|
||||
|
||||
extern int bus_register_notifier(struct bus_type *bus,
|
||||
struct notifier_block *nb);
|
||||
extern int bus_unregister_notifier(struct bus_type *bus,
|
||||
struct notifier_block *nb);
|
||||
|
||||
/* All 4 notifers below get called with the target struct device *
|
||||
* as an argument. Note that those functions are likely to be called
|
||||
* with the device semaphore held in the core, so be careful.
|
||||
*/
|
||||
#define BUS_NOTIFY_ADD_DEVICE 0x00000001 /* device added */
|
||||
#define BUS_NOTIFY_DEL_DEVICE 0x00000002 /* device removed */
|
||||
#define BUS_NOTIFY_BOUND_DRIVER 0x00000003 /* driver bound to device */
|
||||
#define BUS_NOTIFY_UNBIND_DRIVER 0x00000004 /* driver about to be
|
||||
unbound */
|
||||
|
||||
/* driverfs interface for exporting bus attributes */
|
||||
|
||||
struct bus_attribute {
|
||||
@@ -343,8 +369,6 @@ struct device {
|
||||
void *driver_data; /* data private to the driver */
|
||||
void *platform_data; /* Platform specific data, device
|
||||
core doesn't touch it */
|
||||
void *firmware_data; /* Firmware specific data (e.g. ACPI,
|
||||
BIOS data),reserved for device core*/
|
||||
struct dev_pm_info power;
|
||||
|
||||
u64 *dma_mask; /* dma mask (if dma'able device) */
|
||||
@@ -358,6 +382,8 @@ struct device {
|
||||
|
||||
struct dma_coherent_mem *dma_mem; /* internal for coherent mem
|
||||
override */
|
||||
/* arch specific additions */
|
||||
struct dev_archdata archdata;
|
||||
|
||||
/* class_device migration path */
|
||||
struct list_head node;
|
||||
@@ -395,7 +421,10 @@ extern int __must_check device_add(struct device * dev);
|
||||
extern void device_del(struct device * dev);
|
||||
extern int device_for_each_child(struct device *, void *,
|
||||
int (*fn)(struct device *, void *));
|
||||
extern struct device *device_find_child(struct device *, void *data,
|
||||
int (*match)(struct device *, void *));
|
||||
extern int device_rename(struct device *dev, char *new_name);
|
||||
extern int device_move(struct device *dev, struct device *new_parent);
|
||||
|
||||
/*
|
||||
* Manual binding of a device to driver. See drivers/base/bus.c
|
||||
@@ -415,8 +444,6 @@ extern struct device *device_create(struct class *cls, struct device *parent,
|
||||
__attribute__((format(printf,4,5)));
|
||||
extern void device_destroy(struct class *cls, dev_t devt);
|
||||
|
||||
extern int virtual_device_parent(struct device *dev);
|
||||
|
||||
/*
|
||||
* Platform "fixup" functions - allow the platform to have their say
|
||||
* about devices and actions that the general device layer doesn't
|
||||
|
||||
@@ -1,132 +0,0 @@
|
||||
/*
|
||||
* Frame Diversion, Benoit Locher <Benoit.Locher@skf.com>
|
||||
*
|
||||
* Changes:
|
||||
* 06/09/2000 BL: initial version
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_DIVERT_H
|
||||
#define _LINUX_DIVERT_H
|
||||
|
||||
#include <asm/types.h>
|
||||
|
||||
#define MAX_DIVERT_PORTS 8 /* Max number of ports to divert (tcp, udp) */
|
||||
|
||||
/* Divertable protocols */
|
||||
#define DIVERT_PROTO_NONE 0x0000
|
||||
#define DIVERT_PROTO_IP 0x0001
|
||||
#define DIVERT_PROTO_ICMP 0x0002
|
||||
#define DIVERT_PROTO_TCP 0x0004
|
||||
#define DIVERT_PROTO_UDP 0x0008
|
||||
|
||||
/*
|
||||
* This is an Ethernet Frame Diverter option block
|
||||
*/
|
||||
struct divert_blk
|
||||
{
|
||||
int divert; /* are we active */
|
||||
unsigned int protos; /* protocols */
|
||||
__u16 tcp_dst[MAX_DIVERT_PORTS]; /* specific tcp dst ports to divert */
|
||||
__u16 tcp_src[MAX_DIVERT_PORTS]; /* specific tcp src ports to divert */
|
||||
__u16 udp_dst[MAX_DIVERT_PORTS]; /* specific udp dst ports to divert */
|
||||
__u16 udp_src[MAX_DIVERT_PORTS]; /* specific udp src ports to divert */
|
||||
};
|
||||
|
||||
/*
|
||||
* Diversion control block, for configuration with the userspace tool
|
||||
* divert
|
||||
*/
|
||||
|
||||
typedef union _divert_cf_arg
|
||||
{
|
||||
__s16 int16;
|
||||
__u16 uint16;
|
||||
__s32 int32;
|
||||
__u32 uint32;
|
||||
__s64 int64;
|
||||
__u64 uint64;
|
||||
void __user *ptr;
|
||||
} divert_cf_arg;
|
||||
|
||||
|
||||
struct divert_cf
|
||||
{
|
||||
int cmd; /* Command */
|
||||
divert_cf_arg arg1,
|
||||
arg2,
|
||||
arg3;
|
||||
int dev_index; /* device index (eth0=0, etc...) */
|
||||
};
|
||||
|
||||
|
||||
/* Diversion commands */
|
||||
#define DIVCMD_DIVERT 1 /* ENABLE/DISABLE diversion */
|
||||
#define DIVCMD_IP 2 /* ENABLE/DISABLE whold IP diversion */
|
||||
#define DIVCMD_TCP 3 /* ENABLE/DISABLE whold TCP diversion */
|
||||
#define DIVCMD_TCPDST 4 /* ADD/REMOVE TCP DST port for diversion */
|
||||
#define DIVCMD_TCPSRC 5 /* ADD/REMOVE TCP SRC port for diversion */
|
||||
#define DIVCMD_UDP 6 /* ENABLE/DISABLE whole UDP diversion */
|
||||
#define DIVCMD_UDPDST 7 /* ADD/REMOVE UDP DST port for diversion */
|
||||
#define DIVCMD_UDPSRC 8 /* ADD/REMOVE UDP SRC port for diversion */
|
||||
#define DIVCMD_ICMP 9 /* ENABLE/DISABLE whole ICMP diversion */
|
||||
#define DIVCMD_GETSTATUS 10 /* GET the status of the diverter */
|
||||
#define DIVCMD_RESET 11 /* Reset the diverter on the specified dev */
|
||||
#define DIVCMD_GETVERSION 12 /* Retrieve the diverter code version (char[32]) */
|
||||
|
||||
/* General syntax of the commands:
|
||||
*
|
||||
* DIVCMD_xxxxxx(arg1, arg2, arg3, dev_index)
|
||||
*
|
||||
* SIOCSIFDIVERT:
|
||||
* DIVCMD_DIVERT(DIVARG1_ENABLE|DIVARG1_DISABLE, , ,ifindex)
|
||||
* DIVCMD_IP(DIVARG1_ENABLE|DIVARG1_DISABLE, , , ifindex)
|
||||
* DIVCMD_TCP(DIVARG1_ENABLE|DIVARG1_DISABLE, , , ifindex)
|
||||
* DIVCMD_TCPDST(DIVARG1_ADD|DIVARG1_REMOVE, port, , ifindex)
|
||||
* DIVCMD_TCPSRC(DIVARG1_ADD|DIVARG1_REMOVE, port, , ifindex)
|
||||
* DIVCMD_UDP(DIVARG1_ENABLE|DIVARG1_DISABLE, , , ifindex)
|
||||
* DIVCMD_UDPDST(DIVARG1_ADD|DIVARG1_REMOVE, port, , ifindex)
|
||||
* DIVCMD_UDPSRC(DIVARG1_ADD|DIVARG1_REMOVE, port, , ifindex)
|
||||
* DIVCMD_ICMP(DIVARG1_ENABLE|DIVARG1_DISABLE, , , ifindex)
|
||||
* DIVCMD_RESET(, , , ifindex)
|
||||
*
|
||||
* SIOGIFDIVERT:
|
||||
* DIVCMD_GETSTATUS(divert_blk, , , ifindex)
|
||||
* DIVCMD_GETVERSION(string[3])
|
||||
*/
|
||||
|
||||
|
||||
/* Possible values for arg1 */
|
||||
#define DIVARG1_ENABLE 0 /* ENABLE something */
|
||||
#define DIVARG1_DISABLE 1 /* DISABLE something */
|
||||
#define DIVARG1_ADD 2 /* ADD something */
|
||||
#define DIVARG1_REMOVE 3 /* REMOVE something */
|
||||
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/* diverter functions */
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
#ifdef CONFIG_NET_DIVERT
|
||||
#include <linux/netdevice.h>
|
||||
|
||||
int alloc_divert_blk(struct net_device *);
|
||||
void free_divert_blk(struct net_device *);
|
||||
int divert_ioctl(unsigned int cmd, struct divert_cf __user *arg);
|
||||
void divert_frame(struct sk_buff *skb);
|
||||
static inline void handle_diverter(struct sk_buff *skb)
|
||||
{
|
||||
/* if diversion is supported on device, then divert */
|
||||
if (skb->dev->divert && skb->dev->divert->divert)
|
||||
divert_frame(skb);
|
||||
}
|
||||
|
||||
#else
|
||||
# define alloc_divert_blk(dev) (0)
|
||||
# define free_divert_blk(dev) do {} while (0)
|
||||
# define divert_ioctl(cmd, arg) (-ENOPKG)
|
||||
# define handle_diverter(skb) do {} while (0)
|
||||
#endif
|
||||
#endif
|
||||
#endif /* _LINUX_DIVERT_H */
|
||||
@@ -21,11 +21,11 @@ typedef void (elevator_completed_req_fn) (request_queue_t *, struct request *);
|
||||
typedef int (elevator_may_queue_fn) (request_queue_t *, int);
|
||||
|
||||
typedef int (elevator_set_req_fn) (request_queue_t *, struct request *, gfp_t);
|
||||
typedef void (elevator_put_req_fn) (request_queue_t *, struct request *);
|
||||
typedef void (elevator_put_req_fn) (struct request *);
|
||||
typedef void (elevator_activate_req_fn) (request_queue_t *, struct request *);
|
||||
typedef void (elevator_deactivate_req_fn) (request_queue_t *, struct request *);
|
||||
|
||||
typedef void *(elevator_init_fn) (request_queue_t *, elevator_t *);
|
||||
typedef void *(elevator_init_fn) (request_queue_t *);
|
||||
typedef void (elevator_exit_fn) (elevator_t *);
|
||||
|
||||
struct elevator_ops
|
||||
|
||||
+4
-4
@@ -774,8 +774,8 @@ struct fb_info {
|
||||
#endif
|
||||
|
||||
struct fb_ops *fbops;
|
||||
struct device *device;
|
||||
struct class_device *class_device; /* sysfs per device attrs */
|
||||
struct device *device; /* This is the parent */
|
||||
struct device *dev; /* This is this fb device */
|
||||
int class_flag; /* private sysfs flags */
|
||||
#ifdef CONFIG_FB_TILEBLITTING
|
||||
struct fb_tile_ops *tileops; /* Tile Blitting */
|
||||
@@ -910,8 +910,8 @@ static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch,
|
||||
/* drivers/video/fbsysfs.c */
|
||||
extern struct fb_info *framebuffer_alloc(size_t size, struct device *dev);
|
||||
extern void framebuffer_release(struct fb_info *info);
|
||||
extern int fb_init_class_device(struct fb_info *fb_info);
|
||||
extern void fb_cleanup_class_device(struct fb_info *head);
|
||||
extern int fb_init_device(struct fb_info *fb_info);
|
||||
extern void fb_cleanup_device(struct fb_info *head);
|
||||
extern void fb_bl_default_curve(struct fb_info *fb_info, u8 off, u8 min, u8 max);
|
||||
|
||||
/* drivers/video/fbmon.c */
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
/* rule is permanent, and cannot be deleted */
|
||||
#define FIB_RULE_PERMANENT 1
|
||||
#define FIB_RULE_INVERT 2
|
||||
|
||||
struct fib_rule_hdr
|
||||
{
|
||||
@@ -34,7 +35,7 @@ enum
|
||||
FRA_UNUSED3,
|
||||
FRA_UNUSED4,
|
||||
FRA_UNUSED5,
|
||||
FRA_FWMARK, /* netfilter mark */
|
||||
FRA_FWMARK, /* mark */
|
||||
FRA_FLOW, /* flow/class id */
|
||||
FRA_UNUSED6,
|
||||
FRA_UNUSED7,
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
#ifndef _FTAPE_HEADER_SEGMENT_H
|
||||
#define _FTAPE_HEADER_SEGMENT_H
|
||||
|
||||
/*
|
||||
* Copyright (C) 1996-1997 Claus-Justus Heine.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
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; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*
|
||||
* $Source: /homes/cvs/ftape-stacked/include/linux/ftape-header-segment.h,v $
|
||||
* $Revision: 1.2 $
|
||||
* $Date: 1997/10/05 19:19:28 $
|
||||
*
|
||||
* This file defines some offsets into the header segment of a
|
||||
* floppy tape cartridge. For use with the QIC-40/80/3010/3020
|
||||
* floppy-tape driver "ftape" for Linux.
|
||||
*/
|
||||
|
||||
#define FT_SIGNATURE 0 /* must be 0xaa55aa55 */
|
||||
#define FT_FMT_CODE 4
|
||||
#define FT_REV_LEVEL 5 /* only for QIC-80 since. Rev. L (== 0x0c) */
|
||||
#define FT_HSEG_1 6 /* first header segment, except for format code 6 */
|
||||
#define FT_HSEG_2 8 /* second header segment, except for format code 6 */
|
||||
#define FT_FRST_SEG 10 /* first data segment, except for format code 6 */
|
||||
#define FT_LAST_SEG 12 /* last data segment, except for format code 6 */
|
||||
#define FT_FMT_DATE 14 /* date and time of most recent format, see below */
|
||||
#define FT_WR_DATE 18 /* date and time of most recent write or format */
|
||||
#define FT_SPT 24 /* segments per track */
|
||||
#define FT_TPC 26 /* tracks per cartridge */
|
||||
#define FT_FHM 27 /* floppy drive head (maximum of it) */
|
||||
#define FT_FTM 28 /* floppy track max. */
|
||||
#define FT_FSM 29 /* floppy sector max. (128) */
|
||||
#define FT_LABEL 30 /* floppy tape label */
|
||||
#define FT_LABEL_DATE 74 /* date and time the tape label was written */
|
||||
#define FT_LABEL_SZ (FT_LABEL_DATE - FT_LABEL)
|
||||
#define FT_CMAP_START 78 /* starting segment of compression map */
|
||||
#define FT_FMT_ERROR 128 /* must be set to 0xff if remainder gets lost during
|
||||
* tape format
|
||||
*/
|
||||
#define FT_SEG_CNT 130 /* number of seg. written, formatted or verified
|
||||
* through lifetime of tape (why not read?)
|
||||
*/
|
||||
#define FT_INIT_DATE 138 /* date and time of initial tape format */
|
||||
#define FT_FMT_CNT 142 /* number of times tape has been formatted */
|
||||
#define FT_FSL_CNT 144 /* number of segments in failed sector log */
|
||||
#define FT_MK_CODE 146 /* id string of tape manufacturer */
|
||||
#define FT_LOT_CODE 190 /* tape manufacturer lot code */
|
||||
#define FT_6_HSEG_1 234 /* first header segment for format code 6 */
|
||||
#define FT_6_HSEG_2 238 /* second header segment for format code 6 */
|
||||
#define FT_6_FRST_SEG 242 /* first data segment for format code 6 */
|
||||
#define FT_6_LAST_SEG 246 /* last data segment for format code 6 */
|
||||
|
||||
#define FT_FSL 256
|
||||
#define FT_HEADER_END 256 /* space beyond this point:
|
||||
* format codes 2, 3 and 5:
|
||||
* - failed sector log until byte 2047
|
||||
* - bad sector map in the reamining part of segment
|
||||
* format codes 4 and 6:
|
||||
* - bad sector map starts hear
|
||||
*/
|
||||
|
||||
|
||||
/* value to be stored at the FT_SIGNATURE offset
|
||||
*/
|
||||
#define FT_HSEG_MAGIC 0xaa55aa55
|
||||
#define FT_D2G_MAGIC 0x82288228 /* Ditto 2GB */
|
||||
|
||||
/* data and time encoding: */
|
||||
#define FT_YEAR_SHIFT 25
|
||||
#define FT_YEAR_MASK 0xfe000000
|
||||
#define FT_YEAR_0 1970
|
||||
#define FT_YEAR_MAX 127
|
||||
#define FT_YEAR(year) ((((year)-FT_YEAR_0)<<FT_YEAR_SHIFT)&FT_YEAR_MASK)
|
||||
|
||||
#define FT_TIME_SHIFT 0
|
||||
#define FT_TIME_MASK 0x01FFFFFF
|
||||
#define FT_TIME_MAX 0x01ea6dff /* last second of a year */
|
||||
#define FT_TIME(mo,d,h,m,s) \
|
||||
((((s)+60*((m)+60*((h)+24*((d)+31*(mo))))) & FT_TIME_MASK))
|
||||
|
||||
#define FT_TIME_STAMP(y,mo,d,h,m,s) (FT_YEAR(y) | FT_TIME(mo,d,h,m,s))
|
||||
|
||||
/* values for the format code field */
|
||||
typedef enum {
|
||||
fmt_normal = 2, /* QIC-80 post Rev. B 205Ft or 307Ft tape */
|
||||
fmt_1100ft = 3, /* QIC-80 post Rev. B 1100Ft tape */
|
||||
fmt_var = 4, /* QIC-80 post Rev. B variabel length format */
|
||||
fmt_425ft = 5, /* QIC-80 post Rev. B 425Ft tape */
|
||||
fmt_big = 6 /* QIC-3010/3020 variable length tape with more
|
||||
* than 2^16 segments per tape
|
||||
*/
|
||||
} ft_format_type;
|
||||
|
||||
/* definitions for the failed sector log */
|
||||
#define FT_FSL_SIZE (2 * FT_SECTOR_SIZE - FT_HEADER_END)
|
||||
#define FT_FSL_MAX_ENTRIES (FT_FSL_SIZE/sizeof(__u32))
|
||||
|
||||
typedef struct ft_fsl_entry {
|
||||
__u16 segment;
|
||||
__u16 date;
|
||||
} __attribute__ ((packed)) ft_fsl_entry;
|
||||
|
||||
|
||||
/* date encoding for the failed sector log
|
||||
* month: 1..12, day: 1..31, year: 1970..2097
|
||||
*/
|
||||
#define FT_FSL_TIME_STAMP(y,m,d) \
|
||||
(((((y) - FT_YEAR_0)<<9)&0xfe00) | (((m)<<5)&0x01e0) | ((d)&0x001f))
|
||||
|
||||
#endif /* _FTAPE_HEADER_SEGMENT_H */
|
||||
@@ -1,137 +0,0 @@
|
||||
#ifndef _FTAPE_VENDORS_H
|
||||
#define _FTAPE_VENDORS_H
|
||||
|
||||
/*
|
||||
* Copyright (C) 1993-1996 Bas Laarhoven,
|
||||
* (C) 1996-1997 Claus-Justus Heine.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
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; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*
|
||||
* $Source: /homes/cvs/ftape-stacked/include/linux/ftape-vendors.h,v $
|
||||
* $Revision: 1.6 $
|
||||
* $Date: 1997/10/09 15:38:11 $
|
||||
*
|
||||
* This file contains the supported drive types with their
|
||||
* QIC-117 spec. vendor code and drive dependent configuration
|
||||
* information.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
unknown_wake_up = 0,
|
||||
no_wake_up,
|
||||
wake_up_colorado,
|
||||
wake_up_mountain,
|
||||
wake_up_insight,
|
||||
} wake_up_types;
|
||||
|
||||
typedef struct {
|
||||
wake_up_types wake_up; /* see wake_up_types */
|
||||
char *name; /* Text describing the drive */
|
||||
} wakeup_method;
|
||||
|
||||
/* Note: order of entries in WAKEUP_METHODS must be so that a variable
|
||||
* of type wake_up_types can be used as an index in the array.
|
||||
*/
|
||||
#define WAKEUP_METHODS { \
|
||||
{ unknown_wake_up, "Unknown" }, \
|
||||
{ no_wake_up, "None" }, \
|
||||
{ wake_up_colorado, "Colorado" }, \
|
||||
{ wake_up_mountain, "Mountain" }, \
|
||||
{ wake_up_insight, "Motor-on" }, \
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
unsigned int vendor_id; /* vendor id from drive */
|
||||
int speed; /* maximum tape transport speed (ips) */
|
||||
wake_up_types wake_up; /* see wake_up_types */
|
||||
char *name; /* Text describing the drive */
|
||||
} vendor_struct;
|
||||
|
||||
#define UNKNOWN_VENDOR (-1)
|
||||
|
||||
#define QIC117_VENDORS { \
|
||||
/* see _vendor_struct */ \
|
||||
{ 0x00000, 82, wake_up_colorado, "Colorado DJ-10 (old)" }, \
|
||||
{ 0x00047, 90, wake_up_colorado, "Colorado DJ-10/DJ-20" }, \
|
||||
{ 0x011c2, 84, wake_up_colorado, "Colorado 700" }, \
|
||||
{ 0x011c3, 90, wake_up_colorado, "Colorado 1400" }, \
|
||||
{ 0x011c4, 84, wake_up_colorado, "Colorado DJ-10/DJ-20 (new)" }, \
|
||||
{ 0x011c5, 84, wake_up_colorado, "HP Colorado T1000" }, \
|
||||
{ 0x011c6, 90, wake_up_colorado, "HP Colorado T3000" }, \
|
||||
{ 0x00005, 45, wake_up_mountain, "Archive 5580i" }, \
|
||||
{ 0x10005, 50, wake_up_insight, "Insight 80Mb, Irwin 80SX" }, \
|
||||
{ 0x00140, 74, wake_up_mountain, "Archive S.Hornet [Identity/Escom]" }, \
|
||||
{ 0x00146, 72, wake_up_mountain, "Archive 31250Q [Escom]" }, \
|
||||
{ 0x0014a, 100, wake_up_mountain, "Archive XL9250i [Conner/Escom]" }, \
|
||||
{ 0x0014c, 98, wake_up_mountain, "Conner C250MQT" }, \
|
||||
{ 0x0014e, 80, wake_up_mountain, "Conner C250MQ" }, \
|
||||
{ 0x00150, 80, wake_up_mountain, "Conner TSM420R/TST800R" }, \
|
||||
{ 0x00152, 80, wake_up_mountain, "Conner TSM850R" }, \
|
||||
{ 0x00156, 80, wake_up_mountain, "Conner TSM850R/1700R/TST3200R" }, \
|
||||
{ 0x00180, 0, wake_up_mountain, "Summit SE 150" }, \
|
||||
{ 0x00181, 85, wake_up_mountain, "Summit SE 250, Mountain FS8000" }, \
|
||||
{ 0x001c1, 82, no_wake_up, "Wangtek 3040F" }, \
|
||||
{ 0x001c8, 64, no_wake_up, "Wangtek 3080F" }, \
|
||||
{ 0x001c8, 64, wake_up_colorado, "Wangtek 3080F" }, \
|
||||
{ 0x001ca, 67, no_wake_up, "Wangtek 3080F (new)" }, \
|
||||
{ 0x001cc, 77, wake_up_colorado, "Wangtek 3200 / Teac 700" }, \
|
||||
{ 0x001cd, 75, wake_up_colorado, "Reveal TB1400" }, \
|
||||
{ 0x00380, 85, wake_up_colorado, "Exabyte Eagle-96" }, \
|
||||
{ 0x00381, 85, wake_up_colorado, "Exabyte Eagle TR-3" }, \
|
||||
{ 0x00382, 85, wake_up_colorado, "Exabyte Eagle TR-3" }, \
|
||||
{ 0x003ce, 77, wake_up_colorado, "Teac 800" }, \
|
||||
{ 0x003cf, 0, wake_up_colorado, "Teac FT3010TR" }, \
|
||||
{ 0x08880, 64, no_wake_up, "Iomega 250, Ditto 800" }, \
|
||||
{ 0x08880, 64, wake_up_colorado, "Iomega 250, Ditto 800" }, \
|
||||
{ 0x08880, 64, wake_up_insight, "Iomega 250, Ditto 800" }, \
|
||||
{ 0x08881, 80, wake_up_colorado, "Iomega 700" }, \
|
||||
{ 0x08882, 80, wake_up_colorado, "Iomega 3200" }, \
|
||||
{ 0x08883, 80, wake_up_colorado, "Iomega DITTO 2GB" }, \
|
||||
{ 0x00021, 70, no_wake_up, "AIWA CT-803" }, \
|
||||
{ 0x004c0, 80, no_wake_up, "AIWA TD-S1600" }, \
|
||||
{ 0x00021, 0, wake_up_mountain, "COREtape QIC80" }, \
|
||||
{ 0x00441, 0, wake_up_mountain, "ComByte DoublePlay" }, \
|
||||
{ 0x00481, 127, wake_up_mountain, "PERTEC MyTape 800" }, \
|
||||
{ 0x00483, 130, wake_up_mountain, "PERTEC MyTape 3200" }, \
|
||||
{ UNKNOWN_VENDOR, 0, no_wake_up, "unknown" } \
|
||||
}
|
||||
|
||||
#define QIC117_MAKE_CODES { \
|
||||
{ 0, "Unassigned" }, \
|
||||
{ 1, "Alloy Computer Products" }, \
|
||||
{ 2, "3M" }, \
|
||||
{ 3, "Tandberg Data" }, \
|
||||
{ 4, "Colorado" }, \
|
||||
{ 5, "Archive/Conner" }, \
|
||||
{ 6, "Mountain/Summit Memory Systems" }, \
|
||||
{ 7, "Wangtek/Rexon/Tecmar" }, \
|
||||
{ 8, "Sony" }, \
|
||||
{ 9, "Cipher Data Products" }, \
|
||||
{ 10, "Irwin Magnetic Systems" }, \
|
||||
{ 11, "Braemar" }, \
|
||||
{ 12, "Verbatim" }, \
|
||||
{ 13, "Core International" }, \
|
||||
{ 14, "Exabyte" }, \
|
||||
{ 15, "Teac" }, \
|
||||
{ 16, "Gigatek" }, \
|
||||
{ 17, "ComByte" }, \
|
||||
{ 18, "PERTEC Memories" }, \
|
||||
{ 19, "Aiwa" }, \
|
||||
{ 71, "Colorado" }, \
|
||||
{ 546, "Iomega Inc" }, \
|
||||
}
|
||||
|
||||
#endif /* _FTAPE_VENDORS_H */
|
||||
@@ -1,201 +0,0 @@
|
||||
#ifndef _FTAPE_H
|
||||
#define _FTAPE_H
|
||||
|
||||
/*
|
||||
* Copyright (C) 1994-1996 Bas Laarhoven,
|
||||
* (C) 1996-1997 Claus-Justus Heine.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
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; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
*
|
||||
* $Source: /homes/cvs/ftape-stacked/include/linux/ftape.h,v $
|
||||
* $Revision: 1.17.6.4 $
|
||||
* $Date: 1997/11/25 01:52:54 $
|
||||
*
|
||||
* This file contains global definitions, typedefs and macro's
|
||||
* for the QIC-40/80/3010/3020 floppy-tape driver for Linux.
|
||||
*/
|
||||
|
||||
#define FTAPE_VERSION "ftape v3.04d 25/11/97"
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/mm.h>
|
||||
#endif
|
||||
#include <linux/types.h>
|
||||
#include <linux/mtio.h>
|
||||
|
||||
#define FT_SECTOR(x) (x+1) /* sector offset into real sector */
|
||||
#define FT_SECTOR_SIZE 1024
|
||||
#define FT_SECTORS_PER_SEGMENT 32
|
||||
#define FT_ECC_SECTORS 3
|
||||
#define FT_SEGMENT_SIZE ((FT_SECTORS_PER_SEGMENT - FT_ECC_SECTORS) * FT_SECTOR_SIZE)
|
||||
#define FT_BUFF_SIZE (FT_SECTORS_PER_SEGMENT * FT_SECTOR_SIZE)
|
||||
|
||||
/*
|
||||
* bits of the minor device number that define drive selection
|
||||
* methods. Could be used one day to access multiple tape
|
||||
* drives on the same controller.
|
||||
*/
|
||||
#define FTAPE_SEL_A 0
|
||||
#define FTAPE_SEL_B 1
|
||||
#define FTAPE_SEL_C 2
|
||||
#define FTAPE_SEL_D 3
|
||||
#define FTAPE_SEL_MASK 3
|
||||
#define FTAPE_SEL(unit) ((unit) & FTAPE_SEL_MASK)
|
||||
#define FTAPE_NO_REWIND 4 /* mask for minor nr */
|
||||
|
||||
/* the following two may be reported when MTIOCGET is requested ... */
|
||||
typedef union {
|
||||
struct {
|
||||
__u8 error;
|
||||
__u8 command;
|
||||
} error;
|
||||
long space;
|
||||
} ft_drive_error;
|
||||
typedef union {
|
||||
struct {
|
||||
__u8 drive_status;
|
||||
__u8 drive_config;
|
||||
__u8 tape_status;
|
||||
} status;
|
||||
long space;
|
||||
} ft_drive_status;
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define FT_RQM_DELAY 12
|
||||
#define FT_MILLISECOND 1
|
||||
#define FT_SECOND 1000
|
||||
#define FT_FOREVER -1
|
||||
#ifndef HZ
|
||||
#error "HZ undefined."
|
||||
#endif
|
||||
#define FT_USPT (1000000/HZ) /* microseconds per tick */
|
||||
|
||||
/* This defines the number of retries that the driver will allow
|
||||
* before giving up (and letting a higher level handle the error).
|
||||
*/
|
||||
#ifdef TESTING
|
||||
#define FT_SOFT_RETRIES 1 /* number of low level retries */
|
||||
#define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */
|
||||
#else
|
||||
#define FT_SOFT_RETRIES 6 /* number of low level retries (triple) */
|
||||
#define FT_RETRIES_ON_ECC_ERROR 3 /* ecc error when correcting segment */
|
||||
#endif
|
||||
|
||||
#ifndef THE_FTAPE_MAINTAINER
|
||||
#define THE_FTAPE_MAINTAINER "the ftape maintainer"
|
||||
#endif
|
||||
|
||||
/* Initialize missing configuration parameters.
|
||||
*/
|
||||
#ifndef CONFIG_FT_NR_BUFFERS
|
||||
# define CONFIG_FT_NR_BUFFERS 3
|
||||
#endif
|
||||
#ifndef CONFIG_FT_FDC_THR
|
||||
# define CONFIG_FT_FDC_THR 8
|
||||
#endif
|
||||
#ifndef CONFIG_FT_FDC_MAX_RATE
|
||||
# define CONFIG_FT_FDC_MAX_RATE 2000
|
||||
#endif
|
||||
#ifndef CONFIG_FT_FDC_BASE
|
||||
# define CONFIG_FT_FDC_BASE 0
|
||||
#endif
|
||||
#ifndef CONFIG_FT_FDC_IRQ
|
||||
# define CONFIG_FT_FDC_IRQ 0
|
||||
#endif
|
||||
#ifndef CONFIG_FT_FDC_DMA
|
||||
# define CONFIG_FT_FDC_DMA 0
|
||||
#endif
|
||||
|
||||
/* Turn some booleans into numbers.
|
||||
*/
|
||||
#ifdef CONFIG_FT_PROBE_FC10
|
||||
# undef CONFIG_FT_PROBE_FC10
|
||||
# define CONFIG_FT_PROBE_FC10 1
|
||||
#else
|
||||
# define CONFIG_FT_PROBE_FC10 0
|
||||
#endif
|
||||
#ifdef CONFIG_FT_MACH2
|
||||
# undef CONFIG_FT_MACH2
|
||||
# define CONFIG_FT_MACH2 1
|
||||
#else
|
||||
# define CONFIG_FT_MACH2 0
|
||||
#endif
|
||||
|
||||
/* Insert default settings
|
||||
*/
|
||||
#if CONFIG_FT_PROBE_FC10 == 1
|
||||
# if CONFIG_FT_FDC_BASE == 0
|
||||
# undef CONFIG_FT_FDC_BASE
|
||||
# define CONFIG_FT_FDC_BASE 0x180
|
||||
# endif
|
||||
# if CONFIG_FT_FDC_IRQ == 0
|
||||
# undef CONFIG_FT_FDC_IRQ
|
||||
# define CONFIG_FT_FDC_IRQ 9
|
||||
# endif
|
||||
# if CONFIG_FT_FDC_DMA == 0
|
||||
# undef CONFIG_FT_FDC_DMA
|
||||
# define CONFIG_FT_FDC_DMA 3
|
||||
# endif
|
||||
#elif CONFIG_FT_MACH2 == 1 /* CONFIG_FT_PROBE_FC10 == 1 */
|
||||
# if CONFIG_FT_FDC_BASE == 0
|
||||
# undef CONFIG_FT_FDC_BASE
|
||||
# define CONFIG_FT_FDC_BASE 0x1E0
|
||||
# endif
|
||||
# if CONFIG_FT_FDC_IRQ == 0
|
||||
# undef CONFIG_FT_FDC_IRQ
|
||||
# define CONFIG_FT_FDC_IRQ 6
|
||||
# endif
|
||||
# if CONFIG_FT_FDC_DMA == 0
|
||||
# undef CONFIG_FT_FDC_DMA
|
||||
# define CONFIG_FT_FDC_DMA 2
|
||||
# endif
|
||||
#elif defined(CONFIG_FT_ALT_FDC) /* CONFIG_FT_MACH2 */
|
||||
# if CONFIG_FT_FDC_BASE == 0
|
||||
# undef CONFIG_FT_FDC_BASE
|
||||
# define CONFIG_FT_FDC_BASE 0x370
|
||||
# endif
|
||||
# if CONFIG_FT_FDC_IRQ == 0
|
||||
# undef CONFIG_FT_FDC_IRQ
|
||||
# define CONFIG_FT_FDC_IRQ 6
|
||||
# endif
|
||||
# if CONFIG_FT_FDC_DMA == 0
|
||||
# undef CONFIG_FT_FDC_DMA
|
||||
# define CONFIG_FT_FDC_DMA 2
|
||||
# endif
|
||||
#else /* CONFIG_FT_ALT_FDC */
|
||||
# if CONFIG_FT_FDC_BASE == 0
|
||||
# undef CONFIG_FT_FDC_BASE
|
||||
# define CONFIG_FT_FDC_BASE 0x3f0
|
||||
# endif
|
||||
# if CONFIG_FT_FDC_IRQ == 0
|
||||
# undef CONFIG_FT_FDC_IRQ
|
||||
# define CONFIG_FT_FDC_IRQ 6
|
||||
# endif
|
||||
# if CONFIG_FT_FDC_DMA == 0
|
||||
# undef CONFIG_FT_FDC_DMA
|
||||
# define CONFIG_FT_FDC_DMA 2
|
||||
# endif
|
||||
#endif /* standard FDC */
|
||||
|
||||
/* some useful macro's
|
||||
*/
|
||||
#define NR_ITEMS(x) (int)(sizeof(x)/ sizeof(*x))
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif
|
||||
@@ -68,7 +68,7 @@
|
||||
struct icmphdr {
|
||||
__u8 type;
|
||||
__u8 code;
|
||||
__be16 checksum;
|
||||
__sum16 checksum;
|
||||
union {
|
||||
struct {
|
||||
__be16 id;
|
||||
|
||||
@@ -7,17 +7,17 @@ struct icmp6hdr {
|
||||
|
||||
__u8 icmp6_type;
|
||||
__u8 icmp6_code;
|
||||
__u16 icmp6_cksum;
|
||||
__sum16 icmp6_cksum;
|
||||
|
||||
|
||||
union {
|
||||
__u32 un_data32[1];
|
||||
__u16 un_data16[2];
|
||||
__be32 un_data32[1];
|
||||
__be16 un_data16[2];
|
||||
__u8 un_data8[4];
|
||||
|
||||
struct icmpv6_echo {
|
||||
__u16 identifier;
|
||||
__u16 sequence;
|
||||
__be16 identifier;
|
||||
__be16 sequence;
|
||||
} u_echo;
|
||||
|
||||
struct icmpv6_nd_advt {
|
||||
@@ -53,7 +53,7 @@ struct icmp6hdr {
|
||||
#else
|
||||
#error "Please fix <asm/byteorder.h>"
|
||||
#endif
|
||||
__u16 rt_lifetime;
|
||||
__be16 rt_lifetime;
|
||||
} u_nd_ra;
|
||||
|
||||
} icmp6_dataun;
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
#ifndef __LINUX_IF_PACKET_H
|
||||
#define __LINUX_IF_PACKET_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct sockaddr_pkt
|
||||
{
|
||||
unsigned short spkt_family;
|
||||
unsigned char spkt_device[14];
|
||||
unsigned short spkt_protocol;
|
||||
__be16 spkt_protocol;
|
||||
};
|
||||
|
||||
struct sockaddr_ll
|
||||
{
|
||||
unsigned short sll_family;
|
||||
unsigned short sll_protocol;
|
||||
__be16 sll_protocol;
|
||||
int sll_ifindex;
|
||||
unsigned short sll_hatype;
|
||||
unsigned char sll_pkttype;
|
||||
|
||||
@@ -19,10 +19,10 @@ struct ip_tunnel_parm
|
||||
{
|
||||
char name[IFNAMSIZ];
|
||||
int link;
|
||||
__u16 i_flags;
|
||||
__u16 o_flags;
|
||||
__u32 i_key;
|
||||
__u32 o_key;
|
||||
__be16 i_flags;
|
||||
__be16 o_flags;
|
||||
__be32 i_key;
|
||||
__be32 o_key;
|
||||
struct iphdr iph;
|
||||
};
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ struct igmphdr
|
||||
{
|
||||
__u8 type;
|
||||
__u8 code; /* For newer IGMP */
|
||||
__be16 csum;
|
||||
__sum16 csum;
|
||||
__be32 group;
|
||||
};
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ enum {
|
||||
|
||||
IPPROTO_COMP = 108, /* Compression Header protocol */
|
||||
IPPROTO_SCTP = 132, /* Stream Control Transport Protocol */
|
||||
IPPROTO_UDPLITE = 136, /* UDP-Lite (RFC 3828) */
|
||||
|
||||
IPPROTO_RAW = 255, /* Raw IP packets */
|
||||
IPPROTO_MAX
|
||||
|
||||
+2
-2
@@ -54,7 +54,7 @@ extern const struct in6_addr in6addr_loopback;
|
||||
struct sockaddr_in6 {
|
||||
unsigned short int sin6_family; /* AF_INET6 */
|
||||
__be16 sin6_port; /* Transport layer port # */
|
||||
__u32 sin6_flowinfo; /* IPv6 flow information */
|
||||
__be32 sin6_flowinfo; /* IPv6 flow information */
|
||||
struct in6_addr sin6_addr; /* IPv6 address */
|
||||
__u32 sin6_scope_id; /* scope id (new in RFC2553) */
|
||||
};
|
||||
@@ -72,7 +72,7 @@ struct ipv6_mreq {
|
||||
struct in6_flowlabel_req
|
||||
{
|
||||
struct in6_addr flr_dst;
|
||||
__u32 flr_label;
|
||||
__be32 flr_label;
|
||||
__u8 flr_action;
|
||||
__u8 flr_share;
|
||||
__u16 flr_flags;
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
#include <linux/types.h>
|
||||
|
||||
extern __be32 in_aton(const char *str);
|
||||
extern int in4_pton(const char *src, int srclen, u8 *dst, char delim, const char **end);
|
||||
extern int in6_pton(const char *src, int srclen, u8 *dst, char delim, const char **end);
|
||||
extern int in4_pton(const char *src, int srclen, u8 *dst, int delim, const char **end);
|
||||
extern int in6_pton(const char *src, int srclen, u8 *dst, int delim, const char **end);
|
||||
#endif
|
||||
#endif /* _LINUX_INET_H */
|
||||
|
||||
@@ -124,12 +124,13 @@ static __inline__ int inet_ifa_match(__be32 addr, struct in_ifaddr *ifa)
|
||||
* Check if a mask is acceptable.
|
||||
*/
|
||||
|
||||
static __inline__ int bad_mask(u32 mask, u32 addr)
|
||||
static __inline__ int bad_mask(__be32 mask, __be32 addr)
|
||||
{
|
||||
__u32 hmask;
|
||||
if (addr & (mask = ~mask))
|
||||
return 1;
|
||||
mask = ntohl(mask);
|
||||
if (mask & (mask+1))
|
||||
hmask = ntohl(mask);
|
||||
if (hmask & (hmask+1))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
@@ -190,11 +191,12 @@ static __inline__ __be32 inet_make_mask(int logmask)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __inline__ int inet_mask_len(__u32 mask)
|
||||
static __inline__ int inet_mask_len(__be32 mask)
|
||||
{
|
||||
if (!(mask = ntohl(mask)))
|
||||
__u32 hmask = ntohl(mask);
|
||||
if (!hmask)
|
||||
return 0;
|
||||
return 32 - ffz(~mask);
|
||||
return 32 - ffz(~hmask);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@ struct resource_list {
|
||||
#define IORESOURCE_ROM_ENABLE (1<<0) /* ROM is enabled, same as PCI_ROM_ADDRESS_ENABLE */
|
||||
#define IORESOURCE_ROM_SHADOW (1<<1) /* ROM is copy at C000:0 */
|
||||
#define IORESOURCE_ROM_COPY (1<<2) /* ROM is alloc'd copy, resource field overlaid */
|
||||
#define IORESOURCE_ROM_BIOS_COPY (1<<3) /* ROM is BIOS copy, resource field overlaid */
|
||||
|
||||
/* PC/ISA/whatever - the normal PC address spaces: IO and memory */
|
||||
extern struct resource ioport_resource;
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ struct iphdr {
|
||||
__be16 frag_off;
|
||||
__u8 ttl;
|
||||
__u8 protocol;
|
||||
__be16 check;
|
||||
__sum16 check;
|
||||
__be32 saddr;
|
||||
__be32 daddr;
|
||||
/*The options start here. */
|
||||
|
||||
@@ -25,7 +25,7 @@ struct ip6_tnl_parm {
|
||||
__u8 proto; /* tunnel protocol */
|
||||
__u8 encap_limit; /* encapsulation limit for tunnel */
|
||||
__u8 hop_limit; /* hop limit for tunnel */
|
||||
__u32 flowinfo; /* traffic class and flowlabel for tunnel */
|
||||
__be32 flowinfo; /* traffic class and flowlabel for tunnel */
|
||||
__u32 flags; /* tunnel flags */
|
||||
struct in6_addr laddr; /* local tunnel end-point address */
|
||||
struct in6_addr raddr; /* remote tunnel end-point address */
|
||||
|
||||
@@ -274,7 +274,7 @@ struct ipv6_pinfo {
|
||||
struct in6_addr *saddr_cache;
|
||||
#endif
|
||||
|
||||
__u32 flow_label;
|
||||
__be32 flow_label;
|
||||
__u32 frag_size;
|
||||
__s16 hop_limit;
|
||||
__s16 mcast_hops;
|
||||
|
||||
@@ -315,7 +315,7 @@ typedef struct {
|
||||
* structures. If the freq0 variable is non-zero, the tone table contents
|
||||
* for the tone_index are updated to the frequencies and gains defined. It
|
||||
* should be noted that DTMF tones cannot be reassigned, so if DTMF tone
|
||||
* table indexs are used in a cadence the frequency and gain variables will
|
||||
* table indexes are used in a cadence the frequency and gain variables will
|
||||
* be ignored.
|
||||
*
|
||||
* If the array elements contain frequency parameters the driver will
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
#define __jiffy_data __attribute__((section(".data")))
|
||||
|
||||
/*
|
||||
* The 64-bit value is not volatile - you MUST NOT read it
|
||||
* The 64-bit value is not atomic - you MUST NOT read it
|
||||
* without sampling the sequence number in xtime_lock.
|
||||
* get_jiffies_64() will do this for you as appropriate.
|
||||
*/
|
||||
|
||||
@@ -30,8 +30,10 @@ extern const char linux_banner[];
|
||||
|
||||
#define STACK_MAGIC 0xdeadbeef
|
||||
|
||||
#define ALIGN(x,a) __ALIGN_MASK(x,(typeof(x))(a)-1)
|
||||
#define __ALIGN_MASK(x,mask) (((x)+(mask))&~(mask))
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
||||
#define ALIGN(x,a) (((x)+(a)-1UL)&~((a)-1UL))
|
||||
#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
|
||||
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
|
||||
#define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
|
||||
@@ -63,7 +65,7 @@ struct user;
|
||||
* context (spinlock, irq-handler, ...).
|
||||
*
|
||||
* This is a useful debugging help to be able to catch problems early and not
|
||||
* be biten later when the calling function happens to sleep when it is not
|
||||
* be bitten later when the calling function happens to sleep when it is not
|
||||
* supposed to.
|
||||
*/
|
||||
#ifdef CONFIG_PREEMPT_VOLUNTARY
|
||||
|
||||
@@ -122,6 +122,8 @@ extern struct kimage *kexec_crash_image;
|
||||
#define KEXEC_ARCH_IA_64 (50 << 16)
|
||||
#define KEXEC_ARCH_S390 (22 << 16)
|
||||
#define KEXEC_ARCH_SH (42 << 16)
|
||||
#define KEXEC_ARCH_MIPS_LE (10 << 16)
|
||||
#define KEXEC_ARCH_MIPS ( 8 << 16)
|
||||
|
||||
#define KEXEC_FLAGS (KEXEC_ON_CRASH) /* List of defined/legal kexec flags */
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ enum kobject_action {
|
||||
KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices (broken) */
|
||||
KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* device offline */
|
||||
KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* device online */
|
||||
KOBJ_MOVE = (__force kobject_action_t) 0x08, /* device move */
|
||||
};
|
||||
|
||||
struct kobject {
|
||||
@@ -76,6 +77,7 @@ extern int __must_check kobject_add(struct kobject *);
|
||||
extern void kobject_del(struct kobject *);
|
||||
|
||||
extern int __must_check kobject_rename(struct kobject *, const char *new_name);
|
||||
extern int __must_check kobject_move(struct kobject *, struct kobject *);
|
||||
|
||||
extern int __must_check kobject_register(struct kobject *);
|
||||
extern void kobject_unregister(struct kobject *);
|
||||
@@ -264,6 +266,8 @@ extern int __must_check subsys_create_file(struct subsystem * ,
|
||||
|
||||
#if defined(CONFIG_HOTPLUG)
|
||||
void kobject_uevent(struct kobject *kobj, enum kobject_action action);
|
||||
void kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
|
||||
char *envp[]);
|
||||
|
||||
int add_uevent_var(char **envp, int num_envp, int *cur_index,
|
||||
char *buffer, int buffer_size, int *cur_len,
|
||||
@@ -271,6 +275,10 @@ int add_uevent_var(char **envp, int num_envp, int *cur_index,
|
||||
__attribute__((format (printf, 7, 8)));
|
||||
#else
|
||||
static inline void kobject_uevent(struct kobject *kobj, enum kobject_action action) { }
|
||||
static inline void kobject_uevent_env(struct kobject *kobj,
|
||||
enum kobject_action action,
|
||||
char *envp[])
|
||||
{ }
|
||||
|
||||
static inline int add_uevent_var(char **envp, int num_envp, int *cur_index,
|
||||
char *buffer, int buffer_size, int *cur_len,
|
||||
|
||||
@@ -31,15 +31,14 @@
|
||||
#define HPET_MINOR 228
|
||||
|
||||
struct device;
|
||||
struct class_device;
|
||||
|
||||
struct miscdevice {
|
||||
int minor;
|
||||
const char *name;
|
||||
const struct file_operations *fops;
|
||||
struct list_head list;
|
||||
struct device *dev;
|
||||
struct class_device *class;
|
||||
struct device *parent;
|
||||
struct device *this_device;
|
||||
};
|
||||
|
||||
extern int misc_register(struct miscdevice * misc);
|
||||
|
||||
@@ -39,6 +39,10 @@ struct mmc_csd {
|
||||
write_misalign:1;
|
||||
};
|
||||
|
||||
struct mmc_ext_csd {
|
||||
unsigned int hs_max_dtr;
|
||||
};
|
||||
|
||||
struct sd_scr {
|
||||
unsigned char sda_vsn;
|
||||
unsigned char bus_widths;
|
||||
@@ -46,6 +50,10 @@ struct sd_scr {
|
||||
#define SD_SCR_BUS_WIDTH_4 (1<<2)
|
||||
};
|
||||
|
||||
struct sd_switch_caps {
|
||||
unsigned int hs_max_dtr;
|
||||
};
|
||||
|
||||
struct mmc_host;
|
||||
|
||||
/*
|
||||
@@ -62,12 +70,15 @@ struct mmc_card {
|
||||
#define MMC_STATE_BAD (1<<2) /* unrecognised device */
|
||||
#define MMC_STATE_SDCARD (1<<3) /* is an SD card */
|
||||
#define MMC_STATE_READONLY (1<<4) /* card is read-only */
|
||||
#define MMC_STATE_HIGHSPEED (1<<5) /* card is in high speed mode */
|
||||
u32 raw_cid[4]; /* raw card CID */
|
||||
u32 raw_csd[4]; /* raw card CSD */
|
||||
u32 raw_scr[2]; /* raw card SCR */
|
||||
struct mmc_cid cid; /* card identification */
|
||||
struct mmc_csd csd; /* card specific */
|
||||
struct mmc_ext_csd ext_csd; /* mmc v4 extended card specific */
|
||||
struct sd_scr scr; /* extra SD information */
|
||||
struct sd_switch_caps sw_caps; /* switch (CMD6) caps */
|
||||
};
|
||||
|
||||
#define mmc_card_present(c) ((c)->state & MMC_STATE_PRESENT)
|
||||
@@ -75,12 +86,14 @@ struct mmc_card {
|
||||
#define mmc_card_bad(c) ((c)->state & MMC_STATE_BAD)
|
||||
#define mmc_card_sd(c) ((c)->state & MMC_STATE_SDCARD)
|
||||
#define mmc_card_readonly(c) ((c)->state & MMC_STATE_READONLY)
|
||||
#define mmc_card_highspeed(c) ((c)->state & MMC_STATE_HIGHSPEED)
|
||||
|
||||
#define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT)
|
||||
#define mmc_card_set_dead(c) ((c)->state |= MMC_STATE_DEAD)
|
||||
#define mmc_card_set_bad(c) ((c)->state |= MMC_STATE_BAD)
|
||||
#define mmc_card_set_sd(c) ((c)->state |= MMC_STATE_SDCARD)
|
||||
#define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
|
||||
#define mmc_card_set_highspeed(c) ((c)->state |= MMC_STATE_HIGHSPEED)
|
||||
|
||||
#define mmc_card_name(c) ((c)->cid.prod_name)
|
||||
#define mmc_card_id(c) ((c)->dev.bus_id)
|
||||
|
||||
@@ -74,8 +74,8 @@ struct mmc_card;
|
||||
struct device;
|
||||
|
||||
struct mmc_host {
|
||||
struct device *dev;
|
||||
struct class_device class_dev;
|
||||
struct device *parent;
|
||||
struct device class_dev;
|
||||
int index;
|
||||
const struct mmc_host_ops *ops;
|
||||
unsigned int f_min;
|
||||
@@ -125,8 +125,8 @@ static inline void *mmc_priv(struct mmc_host *host)
|
||||
return (void *)host->private;
|
||||
}
|
||||
|
||||
#define mmc_dev(x) ((x)->dev)
|
||||
#define mmc_hostname(x) ((x)->class_dev.class_id)
|
||||
#define mmc_dev(x) ((x)->parent)
|
||||
#define mmc_hostname(x) ((x)->class_dev.bus_id)
|
||||
|
||||
extern int mmc_suspend_host(struct mmc_host *, pm_message_t);
|
||||
extern int mmc_resume_host(struct mmc_host *);
|
||||
|
||||
@@ -25,14 +25,16 @@
|
||||
#ifndef MMC_MMC_PROTOCOL_H
|
||||
#define MMC_MMC_PROTOCOL_H
|
||||
|
||||
/* Standard MMC commands (3.1) type argument response */
|
||||
/* Standard MMC commands (4.1) type argument response */
|
||||
/* class 1 */
|
||||
#define MMC_GO_IDLE_STATE 0 /* bc */
|
||||
#define MMC_SEND_OP_COND 1 /* bcr [31:0] OCR R3 */
|
||||
#define MMC_ALL_SEND_CID 2 /* bcr R2 */
|
||||
#define MMC_SET_RELATIVE_ADDR 3 /* ac [31:16] RCA R1 */
|
||||
#define MMC_SET_DSR 4 /* bc [31:16] RCA */
|
||||
#define MMC_SWITCH 6 /* ac [31:0] See below R1b */
|
||||
#define MMC_SELECT_CARD 7 /* ac [31:16] RCA R1 */
|
||||
#define MMC_SEND_EXT_CSD 8 /* adtc R1 */
|
||||
#define MMC_SEND_CSD 9 /* ac [31:16] RCA R2 */
|
||||
#define MMC_SEND_CID 10 /* ac [31:16] RCA R2 */
|
||||
#define MMC_READ_DAT_UNTIL_STOP 11 /* adtc [31:0] dadr R1 */
|
||||
@@ -80,6 +82,7 @@
|
||||
/* class 8 */
|
||||
/* This is basically the same command as for MMC with some quirks. */
|
||||
#define SD_SEND_RELATIVE_ADDR 3 /* bcr R6 */
|
||||
#define SD_SWITCH 6 /* adtc [31:0] See below R1 */
|
||||
|
||||
/* Application commands */
|
||||
#define SD_APP_SET_BUS_WIDTH 6 /* ac [1:0] bus width R1 */
|
||||
@@ -87,6 +90,30 @@
|
||||
#define SD_APP_OP_COND 41 /* bcr [31:0] OCR R3 */
|
||||
#define SD_APP_SEND_SCR 51 /* adtc R1 */
|
||||
|
||||
/*
|
||||
* MMC_SWITCH argument format:
|
||||
*
|
||||
* [31:26] Always 0
|
||||
* [25:24] Access Mode
|
||||
* [23:16] Location of target Byte in EXT_CSD
|
||||
* [15:08] Value Byte
|
||||
* [07:03] Always 0
|
||||
* [02:00] Command Set
|
||||
*/
|
||||
|
||||
/*
|
||||
* SD_SWITCH argument format:
|
||||
*
|
||||
* [31] Check (0) or switch (1)
|
||||
* [30:24] Reserved (0)
|
||||
* [23:20] Function group 6
|
||||
* [19:16] Function group 5
|
||||
* [15:12] Function group 4
|
||||
* [11:8] Function group 3
|
||||
* [7:4] Function group 2
|
||||
* [3:0] Function group 1
|
||||
*/
|
||||
|
||||
/*
|
||||
MMC status in R1
|
||||
Type
|
||||
@@ -230,13 +257,54 @@ struct _mmc_csd {
|
||||
|
||||
#define CSD_STRUCT_VER_1_0 0 /* Valid for system specification 1.0 - 1.2 */
|
||||
#define CSD_STRUCT_VER_1_1 1 /* Valid for system specification 1.4 - 2.2 */
|
||||
#define CSD_STRUCT_VER_1_2 2 /* Valid for system specification 3.1 */
|
||||
#define CSD_STRUCT_VER_1_2 2 /* Valid for system specification 3.1 - 3.2 - 3.31 - 4.0 - 4.1 */
|
||||
#define CSD_STRUCT_EXT_CSD 3 /* Version is coded in CSD_STRUCTURE in EXT_CSD */
|
||||
|
||||
#define CSD_SPEC_VER_0 0 /* Implements system specification 1.0 - 1.2 */
|
||||
#define CSD_SPEC_VER_1 1 /* Implements system specification 1.4 */
|
||||
#define CSD_SPEC_VER_2 2 /* Implements system specification 2.0 - 2.2 */
|
||||
#define CSD_SPEC_VER_3 3 /* Implements system specification 3.1 */
|
||||
#define CSD_SPEC_VER_3 3 /* Implements system specification 3.1 - 3.2 - 3.31 */
|
||||
#define CSD_SPEC_VER_4 4 /* Implements system specification 4.0 - 4.1 */
|
||||
|
||||
/*
|
||||
* EXT_CSD fields
|
||||
*/
|
||||
|
||||
#define EXT_CSD_BUS_WIDTH 183 /* R/W */
|
||||
#define EXT_CSD_HS_TIMING 185 /* R/W */
|
||||
#define EXT_CSD_CARD_TYPE 196 /* RO */
|
||||
|
||||
/*
|
||||
* EXT_CSD field definitions
|
||||
*/
|
||||
|
||||
#define EXT_CSD_CMD_SET_NORMAL (1<<0)
|
||||
#define EXT_CSD_CMD_SET_SECURE (1<<1)
|
||||
#define EXT_CSD_CMD_SET_CPSECURE (1<<2)
|
||||
|
||||
#define EXT_CSD_CARD_TYPE_26 (1<<0) /* Card can run at 26MHz */
|
||||
#define EXT_CSD_CARD_TYPE_52 (1<<1) /* Card can run at 52MHz */
|
||||
|
||||
#define EXT_CSD_BUS_WIDTH_1 0 /* Card is in 1 bit mode */
|
||||
#define EXT_CSD_BUS_WIDTH_4 1 /* Card is in 4 bit mode */
|
||||
#define EXT_CSD_BUS_WIDTH_8 2 /* Card is in 8 bit mode */
|
||||
|
||||
/*
|
||||
* MMC_SWITCH access modes
|
||||
*/
|
||||
|
||||
#define MMC_SWITCH_MODE_CMD_SET 0x00 /* Change the command set */
|
||||
#define MMC_SWITCH_MODE_SET_BITS 0x01 /* Set bits which are 1 in value */
|
||||
#define MMC_SWITCH_MODE_CLEAR_BITS 0x02 /* Clear bits which are 1 in value */
|
||||
#define MMC_SWITCH_MODE_WRITE_BYTE 0x03 /* Set target to value */
|
||||
|
||||
/*
|
||||
* SCR field definitions
|
||||
*/
|
||||
|
||||
#define SCR_SPEC_VER_0 0 /* Implements system specification 1.0 - 1.01 */
|
||||
#define SCR_SPEC_VER_1 1 /* Implements system specification 1.10 */
|
||||
#define SCR_SPEC_VER_2 2 /* Implements system specification 2.00 */
|
||||
|
||||
/*
|
||||
* SD bus widths
|
||||
|
||||
@@ -264,6 +264,7 @@ struct module
|
||||
struct module_attribute *modinfo_attrs;
|
||||
const char *version;
|
||||
const char *srcversion;
|
||||
struct kobject *drivers_dir;
|
||||
|
||||
/* Exported symbols */
|
||||
const struct kernel_symbol *syms;
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
#ifndef _LINUX_MQUEUE_H
|
||||
#define _LINUX_MQUEUE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define MQ_PRIO_MAX 32768
|
||||
/* per-uid limit of kernel memory used by mqueue, in bytes */
|
||||
#define MQ_BYTES_MAX 819200
|
||||
|
||||
@@ -724,7 +724,7 @@
|
||||
#define MV643XX_ETH_RX_FIFO_URGENT_THRESHOLD_REG(port) (0x2470 + (port<<10))
|
||||
#define MV643XX_ETH_TX_FIFO_URGENT_THRESHOLD_REG(port) (0x2474 + (port<<10))
|
||||
#define MV643XX_ETH_RX_MINIMAL_FRAME_SIZE_REG(port) (0x247c + (port<<10))
|
||||
#define MV643XX_ETH_RX_DISCARDED_FRAMES_COUNTER(port) (0x2484 + (port<<10)
|
||||
#define MV643XX_ETH_RX_DISCARDED_FRAMES_COUNTER(port) (0x2484 + (port<<10))
|
||||
#define MV643XX_ETH_PORT_DEBUG_0_REG(port) (0x248c + (port<<10))
|
||||
#define MV643XX_ETH_PORT_DEBUG_1_REG(port) (0x2490 + (port<<10))
|
||||
#define MV643XX_ETH_PORT_INTERNAL_ADDR_ERROR_REG(port) (0x2494 + (port<<10))
|
||||
@@ -1135,7 +1135,7 @@ struct mv64xxx_i2c_pdata {
|
||||
#define MV643XX_ETH_DEFAULT_RX_UDP_QUEUE_1 (1<<19)
|
||||
#define MV643XX_ETH_DEFAULT_RX_UDP_QUEUE_2 (1<<20)
|
||||
#define MV643XX_ETH_DEFAULT_RX_UDP_QUEUE_3 ((1<<20) | (1<<19))
|
||||
#define MV643XX_ETH_DEFAULT_RX_UDP_QUEUE_4 ((1<<21)
|
||||
#define MV643XX_ETH_DEFAULT_RX_UDP_QUEUE_4 (1<<21)
|
||||
#define MV643XX_ETH_DEFAULT_RX_UDP_QUEUE_5 ((1<<21) | (1<<19))
|
||||
#define MV643XX_ETH_DEFAULT_RX_UDP_QUEUE_6 ((1<<21) | (1<<20))
|
||||
#define MV643XX_ETH_DEFAULT_RX_UDP_QUEUE_7 ((1<<21) | (1<<20) | (1<<19))
|
||||
|
||||
+1
-1
@@ -196,7 +196,7 @@ extern struct socket *sockfd_lookup(int fd, int *err);
|
||||
extern int net_ratelimit(void);
|
||||
|
||||
#define net_random() random32()
|
||||
#define net_srandom(seed) srandom32(seed)
|
||||
#define net_srandom(seed) srandom32((__force u32)seed)
|
||||
|
||||
extern int kernel_sendmsg(struct socket *sock, struct msghdr *msg,
|
||||
struct kvec *vec, size_t num, size_t len);
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
#include <linux/percpu.h>
|
||||
#include <linux/dmaengine.h>
|
||||
|
||||
struct divert_blk;
|
||||
struct vlan_group;
|
||||
struct ethtool_ops;
|
||||
struct netpoll_info;
|
||||
@@ -67,6 +66,10 @@ struct netpoll_info;
|
||||
#define NET_RX_CN_HIGH 4 /* The storm is here */
|
||||
#define NET_RX_BAD 5 /* packet dropped due to kernel error */
|
||||
|
||||
/* NET_XMIT_CN is special. It does not guarantee that this packet is lost. It
|
||||
* indicates that the device will soon be dropping packets, or already drops
|
||||
* some packets of the same priority; prompting us to send less aggressively. */
|
||||
#define net_xmit_eval(e) ((e) == NET_XMIT_CN? 0 : (e))
|
||||
#define net_xmit_errno(e) ((e) != NET_XMIT_CN ? -ENOBUFS : 0)
|
||||
|
||||
#endif
|
||||
@@ -93,8 +96,10 @@ struct netpoll_info;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_NET_IPIP) && \
|
||||
!defined(CONFIG_IPV6) && !defined(CONFIG_IPV6_MODULE)
|
||||
#if !defined(CONFIG_NET_IPIP) && !defined(CONFIG_NET_IPIP_MODULE) && \
|
||||
!defined(CONFIG_NET_IPGRE) && !defined(CONFIG_NET_IPGRE_MODULE) && \
|
||||
!defined(CONFIG_IPV6_SIT) && !defined(CONFIG_IPV6_SIT_MODULE) && \
|
||||
!defined(CONFIG_IPV6_TUNNEL) && !defined(CONFIG_IPV6_TUNNEL_MODULE)
|
||||
#define MAX_HEADER LL_MAX_HEADER
|
||||
#else
|
||||
#define MAX_HEADER (LL_MAX_HEADER + 48)
|
||||
@@ -191,7 +196,7 @@ struct hh_cache
|
||||
* NOTE: For VLANs, this will be the
|
||||
* encapuslated type. --BLG
|
||||
*/
|
||||
int hh_len; /* length of header */
|
||||
u16 hh_len; /* length of header */
|
||||
int (*hh_output)(struct sk_buff *skb);
|
||||
rwlock_t hh_lock;
|
||||
|
||||
@@ -515,11 +520,6 @@ struct net_device
|
||||
/* bridge stuff */
|
||||
struct net_bridge_port *br_port;
|
||||
|
||||
#ifdef CONFIG_NET_DIVERT
|
||||
/* this will get initialized at each interface type init routine */
|
||||
struct divert_blk *divert;
|
||||
#endif /* CONFIG_NET_DIVERT */
|
||||
|
||||
/* class/net/name entry */
|
||||
struct class_device class_dev;
|
||||
/* space for optional statistics and wireless sysfs groups */
|
||||
|
||||
@@ -117,6 +117,16 @@ void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n);
|
||||
int nf_register_sockopt(struct nf_sockopt_ops *reg);
|
||||
void nf_unregister_sockopt(struct nf_sockopt_ops *reg);
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
/* Sysctl registration */
|
||||
struct ctl_table_header *nf_register_sysctl_table(struct ctl_table *path,
|
||||
struct ctl_table *table);
|
||||
void nf_unregister_sysctl_table(struct ctl_table_header *header,
|
||||
struct ctl_table *table);
|
||||
extern struct ctl_table nf_net_netfilter_sysctl_path[];
|
||||
extern struct ctl_table nf_net_ipv4_netfilter_sysctl_path[];
|
||||
#endif /* CONFIG_SYSCTL */
|
||||
|
||||
extern struct list_head nf_hooks[NPROTO][NF_MAX_HOOKS];
|
||||
|
||||
/* those NF_LOG_* defines and struct nf_loginfo are legacy definitios that will
|
||||
@@ -282,15 +292,31 @@ extern void nf_invalidate_cache(int pf);
|
||||
Returns true or false. */
|
||||
extern int skb_make_writable(struct sk_buff **pskb, unsigned int writable_len);
|
||||
|
||||
extern u_int16_t nf_csum_update(u_int32_t oldval, u_int32_t newval,
|
||||
u_int32_t csum);
|
||||
extern u_int16_t nf_proto_csum_update(struct sk_buff *skb,
|
||||
u_int32_t oldval, u_int32_t newval,
|
||||
u_int16_t csum, int pseudohdr);
|
||||
static inline void nf_csum_replace4(__sum16 *sum, __be32 from, __be32 to)
|
||||
{
|
||||
__be32 diff[] = { ~from, to };
|
||||
|
||||
*sum = csum_fold(csum_partial((char *)diff, sizeof(diff), ~csum_unfold(*sum)));
|
||||
}
|
||||
|
||||
static inline void nf_csum_replace2(__sum16 *sum, __be16 from, __be16 to)
|
||||
{
|
||||
nf_csum_replace4(sum, (__force __be32)from, (__force __be32)to);
|
||||
}
|
||||
|
||||
extern void nf_proto_csum_replace4(__sum16 *sum, struct sk_buff *skb,
|
||||
__be32 from, __be32 to, int pseudohdr);
|
||||
|
||||
static inline void nf_proto_csum_replace2(__sum16 *sum, struct sk_buff *skb,
|
||||
__be16 from, __be16 to, int pseudohdr)
|
||||
{
|
||||
nf_proto_csum_replace4(sum, skb, (__force __be32)from,
|
||||
(__force __be32)to, pseudohdr);
|
||||
}
|
||||
|
||||
struct nf_afinfo {
|
||||
unsigned short family;
|
||||
unsigned int (*checksum)(struct sk_buff *skb, unsigned int hook,
|
||||
__sum16 (*checksum)(struct sk_buff *skb, unsigned int hook,
|
||||
unsigned int dataoff, u_int8_t protocol);
|
||||
void (*saveroute)(const struct sk_buff *skb,
|
||||
struct nf_info *info);
|
||||
@@ -305,12 +331,12 @@ static inline struct nf_afinfo *nf_get_afinfo(unsigned short family)
|
||||
return rcu_dereference(nf_afinfo[family]);
|
||||
}
|
||||
|
||||
static inline unsigned int
|
||||
static inline __sum16
|
||||
nf_checksum(struct sk_buff *skb, unsigned int hook, unsigned int dataoff,
|
||||
u_int8_t protocol, unsigned short family)
|
||||
{
|
||||
struct nf_afinfo *afinfo;
|
||||
unsigned int csum = 0;
|
||||
__sum16 csum = 0;
|
||||
|
||||
rcu_read_lock();
|
||||
afinfo = nf_get_afinfo(family);
|
||||
@@ -331,7 +357,7 @@ 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)
|
||||
{
|
||||
#ifdef CONFIG_IP_NF_NAT_NEEDED
|
||||
#if defined(CONFIG_IP_NF_NAT_NEEDED) || defined(CONFIG_NF_NAT_NEEDED)
|
||||
void (*decodefn)(struct sk_buff *, struct flowi *);
|
||||
|
||||
if (family == AF_INET && (decodefn = ip_nat_decode_session) != NULL)
|
||||
|
||||
@@ -14,6 +14,7 @@ header-y += xt_dscp.h
|
||||
header-y += xt_DSCP.h
|
||||
header-y += xt_esp.h
|
||||
header-y += xt_helper.h
|
||||
header-y += xt_hashlimit.h
|
||||
header-y += xt_length.h
|
||||
header-y += xt_limit.h
|
||||
header-y += xt_mac.h
|
||||
@@ -21,6 +22,7 @@ header-y += xt_mark.h
|
||||
header-y += xt_MARK.h
|
||||
header-y += xt_multiport.h
|
||||
header-y += xt_NFQUEUE.h
|
||||
header-y += xt_NFLOG.h
|
||||
header-y += xt_pkttype.h
|
||||
header-y += xt_policy.h
|
||||
header-y += xt_realm.h
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef _NF_CONNTRACK_AMANDA_H
|
||||
#define _NF_CONNTRACK_AMANDA_H
|
||||
/* AMANDA tracking. */
|
||||
|
||||
extern unsigned int (*nf_nat_amanda_hook)(struct sk_buff **pskb,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned int matchoff,
|
||||
unsigned int matchlen,
|
||||
struct nf_conntrack_expect *exp);
|
||||
#endif /* _NF_CONNTRACK_AMANDA_H */
|
||||
@@ -3,16 +3,16 @@
|
||||
/* FTP tracking. */
|
||||
|
||||
/* This enum is exposed to userspace */
|
||||
enum ip_ct_ftp_type
|
||||
enum nf_ct_ftp_type
|
||||
{
|
||||
/* PORT command from client */
|
||||
IP_CT_FTP_PORT,
|
||||
NF_CT_FTP_PORT,
|
||||
/* PASV response from server */
|
||||
IP_CT_FTP_PASV,
|
||||
NF_CT_FTP_PASV,
|
||||
/* EPRT command from client */
|
||||
IP_CT_FTP_EPRT,
|
||||
NF_CT_FTP_EPRT,
|
||||
/* EPSV response from server */
|
||||
IP_CT_FTP_EPSV,
|
||||
NF_CT_FTP_EPSV,
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
@@ -21,23 +21,23 @@ enum ip_ct_ftp_type
|
||||
|
||||
#define NUM_SEQ_TO_REMEMBER 2
|
||||
/* This structure exists only once per master */
|
||||
struct ip_ct_ftp_master {
|
||||
struct nf_ct_ftp_master {
|
||||
/* Valid seq positions for cmd matching after newline */
|
||||
u_int32_t seq_aft_nl[IP_CT_DIR_MAX][NUM_SEQ_TO_REMEMBER];
|
||||
/* 0 means seq_match_aft_nl not set */
|
||||
int seq_aft_nl_num[IP_CT_DIR_MAX];
|
||||
};
|
||||
|
||||
struct ip_conntrack_expect;
|
||||
struct nf_conntrack_expect;
|
||||
|
||||
/* For NAT to hook in when we find a packet which describes what other
|
||||
* connection we should expect. */
|
||||
extern unsigned int (*ip_nat_ftp_hook)(struct sk_buff **pskb,
|
||||
extern unsigned int (*nf_nat_ftp_hook)(struct sk_buff **pskb,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
enum ip_ct_ftp_type type,
|
||||
enum nf_ct_ftp_type type,
|
||||
unsigned int matchoff,
|
||||
unsigned int matchlen,
|
||||
struct ip_conntrack_expect *exp,
|
||||
struct nf_conntrack_expect *exp,
|
||||
u32 *seq);
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
#ifndef _NF_CONNTRACK_H323_H
|
||||
#define _NF_CONNTRACK_H323_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/netfilter/nf_conntrack_h323_asn1.h>
|
||||
|
||||
#define RAS_PORT 1719
|
||||
#define Q931_PORT 1720
|
||||
#define H323_RTP_CHANNEL_MAX 4 /* Audio, video, FAX and other */
|
||||
|
||||
/* This structure exists only once per master */
|
||||
struct nf_ct_h323_master {
|
||||
|
||||
/* Original and NATed Q.931 or H.245 signal ports */
|
||||
__be16 sig_port[IP_CT_DIR_MAX];
|
||||
|
||||
/* Original and NATed RTP ports */
|
||||
__be16 rtp_port[H323_RTP_CHANNEL_MAX][IP_CT_DIR_MAX];
|
||||
|
||||
union {
|
||||
/* RAS connection timeout */
|
||||
u_int32_t timeout;
|
||||
|
||||
/* Next TPKT length (for separate TPKT header and data) */
|
||||
u_int16_t tpkt_len[IP_CT_DIR_MAX];
|
||||
};
|
||||
};
|
||||
|
||||
struct nf_conn;
|
||||
|
||||
extern int get_h225_addr(struct nf_conn *ct, unsigned char *data,
|
||||
TransportAddress *taddr,
|
||||
union nf_conntrack_address *addr, __be16 *port);
|
||||
extern void nf_conntrack_h245_expect(struct nf_conn *new,
|
||||
struct nf_conntrack_expect *this);
|
||||
extern void nf_conntrack_q931_expect(struct nf_conn *new,
|
||||
struct nf_conntrack_expect *this);
|
||||
extern int (*set_h245_addr_hook) (struct sk_buff **pskb,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress *taddr,
|
||||
union nf_conntrack_address *addr,
|
||||
__be16 port);
|
||||
extern int (*set_h225_addr_hook) (struct sk_buff **pskb,
|
||||
unsigned char **data, int dataoff,
|
||||
TransportAddress *taddr,
|
||||
union nf_conntrack_address *addr,
|
||||
__be16 port);
|
||||
extern int (*set_sig_addr_hook) (struct sk_buff **pskb,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data,
|
||||
TransportAddress *taddr, int count);
|
||||
extern int (*set_ras_addr_hook) (struct sk_buff **pskb,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data,
|
||||
TransportAddress *taddr, int count);
|
||||
extern int (*nat_rtp_rtcp_hook) (struct sk_buff **pskb,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress *taddr,
|
||||
__be16 port, __be16 rtp_port,
|
||||
struct nf_conntrack_expect *rtp_exp,
|
||||
struct nf_conntrack_expect *rtcp_exp);
|
||||
extern int (*nat_t120_hook) (struct sk_buff **pskb, struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
H245_TransportAddress *taddr, __be16 port,
|
||||
struct nf_conntrack_expect *exp);
|
||||
extern int (*nat_h245_hook) (struct sk_buff **pskb, struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
TransportAddress *taddr, __be16 port,
|
||||
struct nf_conntrack_expect *exp);
|
||||
extern int (*nat_callforwarding_hook) (struct sk_buff **pskb,
|
||||
struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, int dataoff,
|
||||
TransportAddress *taddr,
|
||||
__be16 port,
|
||||
struct nf_conntrack_expect *exp);
|
||||
extern int (*nat_q931_hook) (struct sk_buff **pskb, struct nf_conn *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned char **data, TransportAddress *taddr,
|
||||
int idx, __be16 port,
|
||||
struct nf_conntrack_expect *exp);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
* ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
|
||||
* conntrack/NAT module.
|
||||
* ip_conntrack_h323_asn1.h - BER and PER decoding library for H.323
|
||||
* conntrack/NAT module.
|
||||
*
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net>
|
||||
*
|
||||
@@ -34,13 +34,13 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef _IP_CONNTRACK_HELPER_H323_ASN1_H_
|
||||
#define _IP_CONNTRACK_HELPER_H323_ASN1_H_
|
||||
#ifndef _NF_CONNTRACK_HELPER_H323_ASN1_H_
|
||||
#define _NF_CONNTRACK_HELPER_H323_ASN1_H_
|
||||
|
||||
/*****************************************************************************
|
||||
* H.323 Types
|
||||
****************************************************************************/
|
||||
#include "ip_conntrack_helper_h323_types.h"
|
||||
#include "nf_conntrack_h323_types.h"
|
||||
|
||||
typedef struct {
|
||||
enum {
|
||||
+12
@@ -10,6 +10,11 @@ typedef struct TransportAddress_ipAddress { /* SEQUENCE */
|
||||
unsigned ip;
|
||||
} TransportAddress_ipAddress;
|
||||
|
||||
typedef struct TransportAddress_ip6Address { /* SEQUENCE */
|
||||
int options; /* No use */
|
||||
unsigned ip6;
|
||||
} TransportAddress_ip6Address;
|
||||
|
||||
typedef struct TransportAddress { /* CHOICE */
|
||||
enum {
|
||||
eTransportAddress_ipAddress,
|
||||
@@ -22,6 +27,7 @@ typedef struct TransportAddress { /* CHOICE */
|
||||
} choice;
|
||||
union {
|
||||
TransportAddress_ipAddress ipAddress;
|
||||
TransportAddress_ip6Address ip6Address;
|
||||
};
|
||||
} TransportAddress;
|
||||
|
||||
@@ -93,6 +99,11 @@ typedef struct UnicastAddress_iPAddress { /* SEQUENCE */
|
||||
unsigned network;
|
||||
} UnicastAddress_iPAddress;
|
||||
|
||||
typedef struct UnicastAddress_iP6Address { /* SEQUENCE */
|
||||
int options; /* No use */
|
||||
unsigned network;
|
||||
} UnicastAddress_iP6Address;
|
||||
|
||||
typedef struct UnicastAddress { /* CHOICE */
|
||||
enum {
|
||||
eUnicastAddress_iPAddress,
|
||||
@@ -105,6 +116,7 @@ typedef struct UnicastAddress { /* CHOICE */
|
||||
} choice;
|
||||
union {
|
||||
UnicastAddress_iPAddress iPAddress;
|
||||
UnicastAddress_iP6Address iP6Address;
|
||||
};
|
||||
} UnicastAddress;
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef _NF_CONNTRACK_IRC_H
|
||||
#define _NF_CONNTRACK_IRC_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define IRC_PORT 6667
|
||||
|
||||
extern unsigned int (*nf_nat_irc_hook)(struct sk_buff **pskb,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
unsigned int matchoff,
|
||||
unsigned int matchlen,
|
||||
struct nf_conntrack_expect *exp);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _NF_CONNTRACK_IRC_H */
|
||||
@@ -0,0 +1,321 @@
|
||||
/* PPTP constants and structs */
|
||||
#ifndef _NF_CONNTRACK_PPTP_H
|
||||
#define _NF_CONNTRACK_PPTP_H
|
||||
|
||||
/* state of the control session */
|
||||
enum pptp_ctrlsess_state {
|
||||
PPTP_SESSION_NONE, /* no session present */
|
||||
PPTP_SESSION_ERROR, /* some session error */
|
||||
PPTP_SESSION_STOPREQ, /* stop_sess request seen */
|
||||
PPTP_SESSION_REQUESTED, /* start_sess request seen */
|
||||
PPTP_SESSION_CONFIRMED, /* session established */
|
||||
};
|
||||
|
||||
/* state of the call inside the control session */
|
||||
enum pptp_ctrlcall_state {
|
||||
PPTP_CALL_NONE,
|
||||
PPTP_CALL_ERROR,
|
||||
PPTP_CALL_OUT_REQ,
|
||||
PPTP_CALL_OUT_CONF,
|
||||
PPTP_CALL_IN_REQ,
|
||||
PPTP_CALL_IN_REP,
|
||||
PPTP_CALL_IN_CONF,
|
||||
PPTP_CALL_CLEAR_REQ,
|
||||
};
|
||||
|
||||
/* conntrack private data */
|
||||
struct nf_ct_pptp_master {
|
||||
enum pptp_ctrlsess_state sstate; /* session state */
|
||||
enum pptp_ctrlcall_state cstate; /* call state */
|
||||
__be16 pac_call_id; /* call id of PAC */
|
||||
__be16 pns_call_id; /* call id of PNS */
|
||||
|
||||
/* in pre-2.6.11 this used to be per-expect. Now it is per-conntrack
|
||||
* and therefore imposes a fixed limit on the number of maps */
|
||||
struct nf_ct_gre_keymap *keymap[IP_CT_DIR_MAX];
|
||||
};
|
||||
|
||||
struct nf_nat_pptp {
|
||||
__be16 pns_call_id; /* NAT'ed PNS call id */
|
||||
__be16 pac_call_id; /* NAT'ed PAC call id */
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define PPTP_CONTROL_PORT 1723
|
||||
|
||||
#define PPTP_PACKET_CONTROL 1
|
||||
#define PPTP_PACKET_MGMT 2
|
||||
|
||||
#define PPTP_MAGIC_COOKIE 0x1a2b3c4d
|
||||
|
||||
struct pptp_pkt_hdr {
|
||||
__u16 packetLength;
|
||||
__be16 packetType;
|
||||
__be32 magicCookie;
|
||||
};
|
||||
|
||||
/* PptpControlMessageType values */
|
||||
#define PPTP_START_SESSION_REQUEST 1
|
||||
#define PPTP_START_SESSION_REPLY 2
|
||||
#define PPTP_STOP_SESSION_REQUEST 3
|
||||
#define PPTP_STOP_SESSION_REPLY 4
|
||||
#define PPTP_ECHO_REQUEST 5
|
||||
#define PPTP_ECHO_REPLY 6
|
||||
#define PPTP_OUT_CALL_REQUEST 7
|
||||
#define PPTP_OUT_CALL_REPLY 8
|
||||
#define PPTP_IN_CALL_REQUEST 9
|
||||
#define PPTP_IN_CALL_REPLY 10
|
||||
#define PPTP_IN_CALL_CONNECT 11
|
||||
#define PPTP_CALL_CLEAR_REQUEST 12
|
||||
#define PPTP_CALL_DISCONNECT_NOTIFY 13
|
||||
#define PPTP_WAN_ERROR_NOTIFY 14
|
||||
#define PPTP_SET_LINK_INFO 15
|
||||
|
||||
#define PPTP_MSG_MAX 15
|
||||
|
||||
/* PptpGeneralError values */
|
||||
#define PPTP_ERROR_CODE_NONE 0
|
||||
#define PPTP_NOT_CONNECTED 1
|
||||
#define PPTP_BAD_FORMAT 2
|
||||
#define PPTP_BAD_VALUE 3
|
||||
#define PPTP_NO_RESOURCE 4
|
||||
#define PPTP_BAD_CALLID 5
|
||||
#define PPTP_REMOVE_DEVICE_ERROR 6
|
||||
|
||||
struct PptpControlHeader {
|
||||
__be16 messageType;
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
/* FramingCapability Bitmap Values */
|
||||
#define PPTP_FRAME_CAP_ASYNC 0x1
|
||||
#define PPTP_FRAME_CAP_SYNC 0x2
|
||||
|
||||
/* BearerCapability Bitmap Values */
|
||||
#define PPTP_BEARER_CAP_ANALOG 0x1
|
||||
#define PPTP_BEARER_CAP_DIGITAL 0x2
|
||||
|
||||
struct PptpStartSessionRequest {
|
||||
__be16 protocolVersion;
|
||||
__u16 reserved1;
|
||||
__be32 framingCapability;
|
||||
__be32 bearerCapability;
|
||||
__be16 maxChannels;
|
||||
__be16 firmwareRevision;
|
||||
__u8 hostName[64];
|
||||
__u8 vendorString[64];
|
||||
};
|
||||
|
||||
/* PptpStartSessionResultCode Values */
|
||||
#define PPTP_START_OK 1
|
||||
#define PPTP_START_GENERAL_ERROR 2
|
||||
#define PPTP_START_ALREADY_CONNECTED 3
|
||||
#define PPTP_START_NOT_AUTHORIZED 4
|
||||
#define PPTP_START_UNKNOWN_PROTOCOL 5
|
||||
|
||||
struct PptpStartSessionReply {
|
||||
__be16 protocolVersion;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__be32 framingCapability;
|
||||
__be32 bearerCapability;
|
||||
__be16 maxChannels;
|
||||
__be16 firmwareRevision;
|
||||
__u8 hostName[64];
|
||||
__u8 vendorString[64];
|
||||
};
|
||||
|
||||
/* PptpStopReasons */
|
||||
#define PPTP_STOP_NONE 1
|
||||
#define PPTP_STOP_PROTOCOL 2
|
||||
#define PPTP_STOP_LOCAL_SHUTDOWN 3
|
||||
|
||||
struct PptpStopSessionRequest {
|
||||
__u8 reason;
|
||||
__u8 reserved1;
|
||||
__u16 reserved2;
|
||||
};
|
||||
|
||||
/* PptpStopSessionResultCode */
|
||||
#define PPTP_STOP_OK 1
|
||||
#define PPTP_STOP_GENERAL_ERROR 2
|
||||
|
||||
struct PptpStopSessionReply {
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__u16 reserved1;
|
||||
};
|
||||
|
||||
struct PptpEchoRequest {
|
||||
__be32 identNumber;
|
||||
};
|
||||
|
||||
/* PptpEchoReplyResultCode */
|
||||
#define PPTP_ECHO_OK 1
|
||||
#define PPTP_ECHO_GENERAL_ERROR 2
|
||||
|
||||
struct PptpEchoReply {
|
||||
__be32 identNumber;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
/* PptpFramingType */
|
||||
#define PPTP_ASYNC_FRAMING 1
|
||||
#define PPTP_SYNC_FRAMING 2
|
||||
#define PPTP_DONT_CARE_FRAMING 3
|
||||
|
||||
/* PptpCallBearerType */
|
||||
#define PPTP_ANALOG_TYPE 1
|
||||
#define PPTP_DIGITAL_TYPE 2
|
||||
#define PPTP_DONT_CARE_BEARER_TYPE 3
|
||||
|
||||
struct PptpOutCallRequest {
|
||||
__be16 callID;
|
||||
__be16 callSerialNumber;
|
||||
__be32 minBPS;
|
||||
__be32 maxBPS;
|
||||
__be32 bearerType;
|
||||
__be32 framingType;
|
||||
__be16 packetWindow;
|
||||
__be16 packetProcDelay;
|
||||
__be16 phoneNumberLength;
|
||||
__u16 reserved1;
|
||||
__u8 phoneNumber[64];
|
||||
__u8 subAddress[64];
|
||||
};
|
||||
|
||||
/* PptpCallResultCode */
|
||||
#define PPTP_OUTCALL_CONNECT 1
|
||||
#define PPTP_OUTCALL_GENERAL_ERROR 2
|
||||
#define PPTP_OUTCALL_NO_CARRIER 3
|
||||
#define PPTP_OUTCALL_BUSY 4
|
||||
#define PPTP_OUTCALL_NO_DIAL_TONE 5
|
||||
#define PPTP_OUTCALL_TIMEOUT 6
|
||||
#define PPTP_OUTCALL_DONT_ACCEPT 7
|
||||
|
||||
struct PptpOutCallReply {
|
||||
__be16 callID;
|
||||
__be16 peersCallID;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__be16 causeCode;
|
||||
__be32 connectSpeed;
|
||||
__be16 packetWindow;
|
||||
__be16 packetProcDelay;
|
||||
__be32 physChannelID;
|
||||
};
|
||||
|
||||
struct PptpInCallRequest {
|
||||
__be16 callID;
|
||||
__be16 callSerialNumber;
|
||||
__be32 callBearerType;
|
||||
__be32 physChannelID;
|
||||
__be16 dialedNumberLength;
|
||||
__be16 dialingNumberLength;
|
||||
__u8 dialedNumber[64];
|
||||
__u8 dialingNumber[64];
|
||||
__u8 subAddress[64];
|
||||
};
|
||||
|
||||
/* PptpInCallResultCode */
|
||||
#define PPTP_INCALL_ACCEPT 1
|
||||
#define PPTP_INCALL_GENERAL_ERROR 2
|
||||
#define PPTP_INCALL_DONT_ACCEPT 3
|
||||
|
||||
struct PptpInCallReply {
|
||||
__be16 callID;
|
||||
__be16 peersCallID;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__be16 packetWindow;
|
||||
__be16 packetProcDelay;
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
struct PptpInCallConnected {
|
||||
__be16 peersCallID;
|
||||
__u16 reserved;
|
||||
__be32 connectSpeed;
|
||||
__be16 packetWindow;
|
||||
__be16 packetProcDelay;
|
||||
__be32 callFramingType;
|
||||
};
|
||||
|
||||
struct PptpClearCallRequest {
|
||||
__be16 callID;
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
struct PptpCallDisconnectNotify {
|
||||
__be16 callID;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__be16 causeCode;
|
||||
__u16 reserved;
|
||||
__u8 callStatistics[128];
|
||||
};
|
||||
|
||||
struct PptpWanErrorNotify {
|
||||
__be16 peersCallID;
|
||||
__u16 reserved;
|
||||
__be32 crcErrors;
|
||||
__be32 framingErrors;
|
||||
__be32 hardwareOverRuns;
|
||||
__be32 bufferOverRuns;
|
||||
__be32 timeoutErrors;
|
||||
__be32 alignmentErrors;
|
||||
};
|
||||
|
||||
struct PptpSetLinkInfo {
|
||||
__be16 peersCallID;
|
||||
__u16 reserved;
|
||||
__be32 sendAccm;
|
||||
__be32 recvAccm;
|
||||
};
|
||||
|
||||
union pptp_ctrl_union {
|
||||
struct PptpStartSessionRequest sreq;
|
||||
struct PptpStartSessionReply srep;
|
||||
struct PptpStopSessionRequest streq;
|
||||
struct PptpStopSessionReply strep;
|
||||
struct PptpOutCallRequest ocreq;
|
||||
struct PptpOutCallReply ocack;
|
||||
struct PptpInCallRequest icreq;
|
||||
struct PptpInCallReply icack;
|
||||
struct PptpInCallConnected iccon;
|
||||
struct PptpClearCallRequest clrreq;
|
||||
struct PptpCallDisconnectNotify disc;
|
||||
struct PptpWanErrorNotify wanerr;
|
||||
struct PptpSetLinkInfo setlink;
|
||||
};
|
||||
|
||||
/* crap needed for nf_conntrack_compat.h */
|
||||
struct nf_conn;
|
||||
struct nf_conntrack_expect;
|
||||
enum ip_conntrack_info;
|
||||
|
||||
extern int
|
||||
(*nf_nat_pptp_hook_outbound)(struct sk_buff **pskb,
|
||||
struct nf_conn *ct, enum ip_conntrack_info ctinfo,
|
||||
struct PptpControlHeader *ctlh,
|
||||
union pptp_ctrl_union *pptpReq);
|
||||
|
||||
extern int
|
||||
(*nf_nat_pptp_hook_inbound)(struct sk_buff **pskb,
|
||||
struct nf_conn *ct, enum ip_conntrack_info ctinfo,
|
||||
struct PptpControlHeader *ctlh,
|
||||
union pptp_ctrl_union *pptpReq);
|
||||
|
||||
extern void
|
||||
(*nf_nat_pptp_hook_exp_gre)(struct nf_conntrack_expect *exp_orig,
|
||||
struct nf_conntrack_expect *exp_reply);
|
||||
|
||||
extern void
|
||||
(*nf_nat_pptp_hook_expectfn)(struct nf_conn *ct,
|
||||
struct nf_conntrack_expect *exp);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _NF_CONNTRACK_PPTP_H */
|
||||
@@ -0,0 +1,112 @@
|
||||
#ifndef _CONNTRACK_PROTO_GRE_H
|
||||
#define _CONNTRACK_PROTO_GRE_H
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/* GRE PROTOCOL HEADER */
|
||||
|
||||
/* GRE Version field */
|
||||
#define GRE_VERSION_1701 0x0
|
||||
#define GRE_VERSION_PPTP 0x1
|
||||
|
||||
/* GRE Protocol field */
|
||||
#define GRE_PROTOCOL_PPTP 0x880B
|
||||
|
||||
/* GRE Flags */
|
||||
#define GRE_FLAG_C 0x80
|
||||
#define GRE_FLAG_R 0x40
|
||||
#define GRE_FLAG_K 0x20
|
||||
#define GRE_FLAG_S 0x10
|
||||
#define GRE_FLAG_A 0x80
|
||||
|
||||
#define GRE_IS_C(f) ((f)&GRE_FLAG_C)
|
||||
#define GRE_IS_R(f) ((f)&GRE_FLAG_R)
|
||||
#define GRE_IS_K(f) ((f)&GRE_FLAG_K)
|
||||
#define GRE_IS_S(f) ((f)&GRE_FLAG_S)
|
||||
#define GRE_IS_A(f) ((f)&GRE_FLAG_A)
|
||||
|
||||
/* GRE is a mess: Four different standards */
|
||||
struct gre_hdr {
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u16 rec:3,
|
||||
srr:1,
|
||||
seq:1,
|
||||
key:1,
|
||||
routing:1,
|
||||
csum:1,
|
||||
version:3,
|
||||
reserved:4,
|
||||
ack:1;
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
__u16 csum:1,
|
||||
routing:1,
|
||||
key:1,
|
||||
seq:1,
|
||||
srr:1,
|
||||
rec:3,
|
||||
ack:1,
|
||||
reserved:4,
|
||||
version:3;
|
||||
#else
|
||||
#error "Adjust your <asm/byteorder.h> defines"
|
||||
#endif
|
||||
__be16 protocol;
|
||||
};
|
||||
|
||||
/* modified GRE header for PPTP */
|
||||
struct gre_hdr_pptp {
|
||||
__u8 flags; /* bitfield */
|
||||
__u8 version; /* should be GRE_VERSION_PPTP */
|
||||
__be16 protocol; /* should be GRE_PROTOCOL_PPTP */
|
||||
__be16 payload_len; /* size of ppp payload, not inc. gre header */
|
||||
__be16 call_id; /* peer's call_id for this session */
|
||||
__be32 seq; /* sequence number. Present if S==1 */
|
||||
__be32 ack; /* seq number of highest packet recieved by */
|
||||
/* sender in this session */
|
||||
};
|
||||
|
||||
struct nf_ct_gre {
|
||||
unsigned int stream_timeout;
|
||||
unsigned int timeout;
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <net/netfilter/nf_conntrack_tuple.h>
|
||||
|
||||
struct nf_conn;
|
||||
|
||||
/* structure for original <-> reply keymap */
|
||||
struct nf_ct_gre_keymap {
|
||||
struct list_head list;
|
||||
struct nf_conntrack_tuple tuple;
|
||||
};
|
||||
|
||||
/* add new tuple->key_reply pair to keymap */
|
||||
int nf_ct_gre_keymap_add(struct nf_conn *ct, enum ip_conntrack_dir dir,
|
||||
struct nf_conntrack_tuple *t);
|
||||
|
||||
/* delete keymap entries */
|
||||
void nf_ct_gre_keymap_destroy(struct nf_conn *ct);
|
||||
|
||||
/* get pointer to gre key, if present */
|
||||
static inline __be32 *gre_key(struct gre_hdr *greh)
|
||||
{
|
||||
if (!greh->key)
|
||||
return NULL;
|
||||
if (greh->csum || greh->routing)
|
||||
return (__be32 *)(greh+sizeof(*greh)+4);
|
||||
return (__be32 *)(greh+sizeof(*greh));
|
||||
}
|
||||
|
||||
/* get pointer ot gre csum, if present */
|
||||
static inline __sum16 *gre_csum(struct gre_hdr *greh)
|
||||
{
|
||||
if (!greh->csum)
|
||||
return NULL;
|
||||
return (__sum16 *)(greh+sizeof(*greh));
|
||||
}
|
||||
|
||||
extern void nf_ct_gre_keymap_flush(void);
|
||||
extern void nf_nat_need_gre(void);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _CONNTRACK_PROTO_GRE_H */
|
||||
@@ -20,7 +20,7 @@ struct ip_ct_sctp
|
||||
{
|
||||
enum sctp_conntrack state;
|
||||
|
||||
u_int32_t vtag[IP_CT_DIR_MAX];
|
||||
__be32 vtag[IP_CT_DIR_MAX];
|
||||
u_int32_t ttag[IP_CT_DIR_MAX];
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
#ifndef __NF_CONNTRACK_SIP_H__
|
||||
#define __NF_CONNTRACK_SIP_H__
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define SIP_PORT 5060
|
||||
#define SIP_TIMEOUT 3600
|
||||
|
||||
enum sip_header_pos {
|
||||
POS_REG_REQ_URI,
|
||||
POS_REQ_URI,
|
||||
POS_FROM,
|
||||
POS_TO,
|
||||
POS_VIA,
|
||||
POS_CONTACT,
|
||||
POS_CONTENT,
|
||||
POS_MEDIA,
|
||||
POS_OWNER_IP4,
|
||||
POS_CONNECTION_IP4,
|
||||
POS_OWNER_IP6,
|
||||
POS_CONNECTION_IP6,
|
||||
POS_SDP_HEADER,
|
||||
};
|
||||
|
||||
extern unsigned int (*nf_nat_sip_hook)(struct sk_buff **pskb,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
struct nf_conn *ct,
|
||||
const char **dptr);
|
||||
extern unsigned int (*nf_nat_sdp_hook)(struct sk_buff **pskb,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
struct nf_conntrack_expect *exp,
|
||||
const char *dptr);
|
||||
|
||||
extern int ct_sip_get_info(struct nf_conn *ct, const char *dptr, size_t dlen,
|
||||
unsigned int *matchoff, unsigned int *matchlen,
|
||||
enum sip_header_pos pos);
|
||||
extern int ct_sip_lnlen(const char *line, const char *limit);
|
||||
extern const char *ct_sip_search(const char *needle, const char *haystack,
|
||||
size_t needle_len, size_t haystack_len,
|
||||
int case_sensitive);
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __NF_CONNTRACK_SIP_H__ */
|
||||
@@ -0,0 +1,20 @@
|
||||
#ifndef _NF_CONNTRACK_TFTP_H
|
||||
#define _NF_CONNTRACK_TFTP_H
|
||||
|
||||
#define TFTP_PORT 69
|
||||
|
||||
struct tftphdr {
|
||||
__be16 opcode;
|
||||
};
|
||||
|
||||
#define TFTP_OPCODE_READ 1
|
||||
#define TFTP_OPCODE_WRITE 2
|
||||
#define TFTP_OPCODE_DATA 3
|
||||
#define TFTP_OPCODE_ACK 4
|
||||
#define TFTP_OPCODE_ERROR 5
|
||||
|
||||
extern unsigned int (*nf_nat_tftp_hook)(struct sk_buff **pskb,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
struct nf_conntrack_expect *exp);
|
||||
|
||||
#endif /* _NF_CONNTRACK_TFTP_H */
|
||||
@@ -78,7 +78,7 @@ struct nfattr
|
||||
struct nfgenmsg {
|
||||
u_int8_t nfgen_family; /* AF_xxx */
|
||||
u_int8_t version; /* nfnetlink version */
|
||||
u_int16_t res_id; /* resource id */
|
||||
__be16 res_id; /* resource id */
|
||||
};
|
||||
|
||||
#define NFNETLINK_V0 0
|
||||
|
||||
@@ -16,24 +16,22 @@ enum nfulnl_msg_types {
|
||||
};
|
||||
|
||||
struct nfulnl_msg_packet_hdr {
|
||||
u_int16_t hw_protocol; /* hw protocol (network order) */
|
||||
__be16 hw_protocol; /* hw protocol (network order) */
|
||||
u_int8_t hook; /* netfilter hook */
|
||||
u_int8_t _pad;
|
||||
};
|
||||
|
||||
struct nfulnl_msg_packet_hw {
|
||||
u_int16_t hw_addrlen;
|
||||
__be16 hw_addrlen;
|
||||
u_int16_t _pad;
|
||||
u_int8_t hw_addr[8];
|
||||
};
|
||||
|
||||
struct nfulnl_msg_packet_timestamp {
|
||||
aligned_u64 sec;
|
||||
aligned_u64 usec;
|
||||
aligned_be64 sec;
|
||||
aligned_be64 usec;
|
||||
};
|
||||
|
||||
#define NFULNL_PREFIXLEN 30 /* just like old log target */
|
||||
|
||||
enum nfulnl_attr_type {
|
||||
NFULA_UNSPEC,
|
||||
NFULA_PACKET_HDR,
|
||||
@@ -67,7 +65,7 @@ struct nfulnl_msg_config_cmd {
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct nfulnl_msg_config_mode {
|
||||
u_int32_t copy_range;
|
||||
__be32 copy_range;
|
||||
u_int8_t copy_mode;
|
||||
u_int8_t _pad;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
@@ -13,20 +13,20 @@ enum nfqnl_msg_types {
|
||||
};
|
||||
|
||||
struct nfqnl_msg_packet_hdr {
|
||||
u_int32_t packet_id; /* unique ID of packet in queue */
|
||||
u_int16_t hw_protocol; /* hw protocol (network order) */
|
||||
__be32 packet_id; /* unique ID of packet in queue */
|
||||
__be16 hw_protocol; /* hw protocol (network order) */
|
||||
u_int8_t hook; /* netfilter hook */
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct nfqnl_msg_packet_hw {
|
||||
u_int16_t hw_addrlen;
|
||||
__be16 hw_addrlen;
|
||||
u_int16_t _pad;
|
||||
u_int8_t hw_addr[8];
|
||||
};
|
||||
|
||||
struct nfqnl_msg_packet_timestamp {
|
||||
aligned_u64 sec;
|
||||
aligned_u64 usec;
|
||||
aligned_be64 sec;
|
||||
aligned_be64 usec;
|
||||
};
|
||||
|
||||
enum nfqnl_attr_type {
|
||||
@@ -47,8 +47,8 @@ enum nfqnl_attr_type {
|
||||
#define NFQA_MAX (__NFQA_MAX - 1)
|
||||
|
||||
struct nfqnl_msg_verdict_hdr {
|
||||
u_int32_t verdict;
|
||||
u_int32_t id;
|
||||
__be32 verdict;
|
||||
__be32 id;
|
||||
};
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ enum nfqnl_msg_config_cmds {
|
||||
struct nfqnl_msg_config_cmd {
|
||||
u_int8_t command; /* nfqnl_msg_config_cmds */
|
||||
u_int8_t _pad;
|
||||
u_int16_t pf; /* AF_xxx for PF_[UN]BIND */
|
||||
__be16 pf; /* AF_xxx for PF_[UN]BIND */
|
||||
};
|
||||
|
||||
enum nfqnl_config_mode {
|
||||
@@ -73,7 +73,7 @@ enum nfqnl_config_mode {
|
||||
};
|
||||
|
||||
struct nfqnl_msg_config_params {
|
||||
u_int32_t copy_range;
|
||||
__be32 copy_range;
|
||||
u_int8_t copy_mode; /* enum nfqnl_config_mode */
|
||||
} __attribute__ ((packed));
|
||||
|
||||
@@ -82,6 +82,7 @@ enum nfqnl_attr_config {
|
||||
NFQA_CFG_UNSPEC,
|
||||
NFQA_CFG_CMD, /* nfqnl_msg_config_cmd */
|
||||
NFQA_CFG_PARAMS, /* nfqnl_msg_config_params */
|
||||
NFQA_CFG_QUEUE_MAXLEN, /* u_int32_t */
|
||||
__NFQA_CFG_MAX
|
||||
};
|
||||
#define NFQA_CFG_MAX (__NFQA_CFG_MAX-1)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef _XT_NFLOG_TARGET
|
||||
#define _XT_NFLOG_TARGET
|
||||
|
||||
#define XT_NFLOG_DEFAULT_GROUP 0x1
|
||||
#define XT_NFLOG_DEFAULT_THRESHOLD 1
|
||||
|
||||
#define XT_NFLOG_MASK 0x0
|
||||
|
||||
struct xt_nflog_info {
|
||||
u_int32_t len;
|
||||
u_int16_t group;
|
||||
u_int16_t threshold;
|
||||
u_int16_t flags;
|
||||
u_int16_t pad;
|
||||
char prefix[64];
|
||||
};
|
||||
|
||||
#endif /* _XT_NFLOG_TARGET */
|
||||
@@ -29,14 +29,14 @@
|
||||
struct ip_conntrack_old_tuple
|
||||
{
|
||||
struct {
|
||||
__u32 ip;
|
||||
__be32 ip;
|
||||
union {
|
||||
__u16 all;
|
||||
} u;
|
||||
} src;
|
||||
|
||||
struct {
|
||||
__u32 ip;
|
||||
__be32 ip;
|
||||
union {
|
||||
__u16 all;
|
||||
} u;
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
#ifndef _XT_HASHLIMIT_H
|
||||
#define _XT_HASHLIMIT_H
|
||||
|
||||
/* timings are in milliseconds. */
|
||||
#define XT_HASHLIMIT_SCALE 10000
|
||||
/* 1/10,000 sec period => max of 10,000/sec. Min rate is then 429490
|
||||
seconds, or one every 59 hours. */
|
||||
|
||||
/* details of this structure hidden by the implementation */
|
||||
struct xt_hashlimit_htable;
|
||||
|
||||
#define XT_HASHLIMIT_HASH_DIP 0x0001
|
||||
#define XT_HASHLIMIT_HASH_DPT 0x0002
|
||||
#define XT_HASHLIMIT_HASH_SIP 0x0004
|
||||
#define XT_HASHLIMIT_HASH_SPT 0x0008
|
||||
|
||||
struct hashlimit_cfg {
|
||||
u_int32_t mode; /* bitmask of IPT_HASHLIMIT_HASH_* */
|
||||
u_int32_t avg; /* Average secs between packets * scale */
|
||||
u_int32_t burst; /* Period multiplier for upper limit. */
|
||||
|
||||
/* user specified */
|
||||
u_int32_t size; /* how many buckets */
|
||||
u_int32_t max; /* max number of entries */
|
||||
u_int32_t gc_interval; /* gc interval */
|
||||
u_int32_t expire; /* when do entries expire? */
|
||||
};
|
||||
|
||||
struct xt_hashlimit_info {
|
||||
char name [IFNAMSIZ]; /* name */
|
||||
struct hashlimit_cfg cfg;
|
||||
struct xt_hashlimit_htable *hinfo;
|
||||
|
||||
/* Used internally by the kernel */
|
||||
union {
|
||||
void *ptr;
|
||||
struct xt_hashlimit_info *master;
|
||||
} u;
|
||||
};
|
||||
#endif /*_XT_HASHLIMIT_H*/
|
||||
@@ -39,7 +39,7 @@ struct xt_policy_elem
|
||||
union xt_policy_addr smask;
|
||||
union xt_policy_addr daddr;
|
||||
union xt_policy_addr dmask;
|
||||
u_int32_t spi;
|
||||
__be32 spi;
|
||||
u_int32_t reqid;
|
||||
u_int8_t proto;
|
||||
u_int8_t mode;
|
||||
|
||||
@@ -64,7 +64,7 @@ static inline int nf_bridge_pad(const struct sk_buff *skb)
|
||||
|
||||
struct bridge_skb_cb {
|
||||
union {
|
||||
__u32 ipv4;
|
||||
__be32 ipv4;
|
||||
} daddr;
|
||||
};
|
||||
|
||||
|
||||
@@ -28,21 +28,21 @@ struct hdr_ui {
|
||||
uint8_t ssap;
|
||||
uint8_t ctrl;
|
||||
uint8_t orig[3];
|
||||
uint16_t type;
|
||||
__be16 type;
|
||||
};
|
||||
|
||||
struct hdr_ni {
|
||||
uint8_t dsap;
|
||||
uint8_t ssap;
|
||||
uint16_t ctrl;
|
||||
__be16 ctrl;
|
||||
uint8_t orig[3];
|
||||
uint16_t type;
|
||||
__be16 type;
|
||||
};
|
||||
|
||||
struct ebt_802_3_hdr {
|
||||
uint8_t daddr[6];
|
||||
uint8_t saddr[6];
|
||||
uint16_t len;
|
||||
__be16 len;
|
||||
union {
|
||||
struct hdr_ui ui;
|
||||
struct hdr_ni ni;
|
||||
@@ -61,7 +61,7 @@ static inline struct ebt_802_3_hdr *ebt_802_3_hdr(const struct sk_buff *skb)
|
||||
struct ebt_802_3_info
|
||||
{
|
||||
uint8_t sap;
|
||||
uint16_t type;
|
||||
__be16 type;
|
||||
uint8_t bitmask;
|
||||
uint8_t invflags;
|
||||
};
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
struct ebt_mac_wormhash_tuple
|
||||
{
|
||||
uint32_t cmp[2];
|
||||
uint32_t ip;
|
||||
__be32 ip;
|
||||
};
|
||||
|
||||
struct ebt_mac_wormhash
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
|
||||
struct ebt_arp_info
|
||||
{
|
||||
uint16_t htype;
|
||||
uint16_t ptype;
|
||||
uint16_t opcode;
|
||||
uint32_t saddr;
|
||||
uint32_t smsk;
|
||||
uint32_t daddr;
|
||||
uint32_t dmsk;
|
||||
__be16 htype;
|
||||
__be16 ptype;
|
||||
__be16 opcode;
|
||||
__be32 saddr;
|
||||
__be32 smsk;
|
||||
__be32 daddr;
|
||||
__be32 dmsk;
|
||||
unsigned char smaddr[ETH_ALEN];
|
||||
unsigned char smmsk[ETH_ALEN];
|
||||
unsigned char dmaddr[ETH_ALEN];
|
||||
|
||||
@@ -28,10 +28,10 @@
|
||||
/* the same values are used for the invflags */
|
||||
struct ebt_ip_info
|
||||
{
|
||||
uint32_t saddr;
|
||||
uint32_t daddr;
|
||||
uint32_t smsk;
|
||||
uint32_t dmsk;
|
||||
__be32 saddr;
|
||||
__be32 daddr;
|
||||
__be32 smsk;
|
||||
__be32 dmsk;
|
||||
uint8_t tos;
|
||||
uint8_t protocol;
|
||||
uint8_t bitmask;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef __LINUX_BRIDGE_EBT_NAT_H
|
||||
#define __LINUX_BRIDGE_EBT_NAT_H
|
||||
|
||||
#define NAT_ARP_BIT (0x00000010)
|
||||
struct ebt_nat_info
|
||||
{
|
||||
unsigned char mac[ETH_ALEN];
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
struct ebt_vlan_info {
|
||||
uint16_t id; /* VLAN ID {1-4095} */
|
||||
uint8_t prio; /* VLAN User Priority {0-7} */
|
||||
uint16_t encap; /* VLAN Encapsulated frame code {0-65535} */
|
||||
__be16 encap; /* VLAN Encapsulated frame code {0-65535} */
|
||||
uint8_t 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,
|
||||
|
||||
@@ -26,6 +26,10 @@
|
||||
#define EBT_CONTINUE -3
|
||||
#define EBT_RETURN -4
|
||||
#define NUM_STANDARD_TARGETS 4
|
||||
/* ebtables target modules store the verdict inside an int. We can
|
||||
* reclaim a part of this int for backwards compatible extensions.
|
||||
* The 4 lsb are more than enough to store the verdict. */
|
||||
#define EBT_VERDICT_BITS 0x0000000F
|
||||
|
||||
struct ebt_counter
|
||||
{
|
||||
@@ -34,6 +38,23 @@ struct ebt_counter
|
||||
};
|
||||
|
||||
struct ebt_replace
|
||||
{
|
||||
char name[EBT_TABLE_MAXNAMELEN];
|
||||
unsigned int valid_hooks;
|
||||
/* nr of rules in the table */
|
||||
unsigned int nentries;
|
||||
/* total size of the entries */
|
||||
unsigned int entries_size;
|
||||
/* start of the chains */
|
||||
struct ebt_entries __user *hook_entry[NF_BR_NUMHOOKS];
|
||||
/* nr of counters userspace expects back */
|
||||
unsigned int num_counters;
|
||||
/* where the kernel will put the old counters */
|
||||
struct ebt_counter __user *counters;
|
||||
char __user *entries;
|
||||
};
|
||||
|
||||
struct ebt_replace_kernel
|
||||
{
|
||||
char name[EBT_TABLE_MAXNAMELEN];
|
||||
unsigned int valid_hooks;
|
||||
@@ -141,7 +162,7 @@ struct ebt_entry {
|
||||
/* this needs to be the first field */
|
||||
unsigned int bitmask;
|
||||
unsigned int invflags;
|
||||
uint16_t ethproto;
|
||||
__be16 ethproto;
|
||||
/* the physical in-dev */
|
||||
char in[IFNAMSIZ];
|
||||
/* the logical in-dev */
|
||||
@@ -251,7 +272,7 @@ struct ebt_table
|
||||
{
|
||||
struct list_head list;
|
||||
char name[EBT_TABLE_MAXNAMELEN];
|
||||
struct ebt_replace *table;
|
||||
struct ebt_replace_kernel *table;
|
||||
unsigned int valid_hooks;
|
||||
rwlock_t lock;
|
||||
/* e.g. could be the table explicitly only allows certain
|
||||
|
||||
@@ -79,7 +79,7 @@ enum nf_ip_hook_priorities {
|
||||
#ifdef __KERNEL__
|
||||
extern int ip_route_me_harder(struct sk_buff **pskb, unsigned addr_type);
|
||||
extern int ip_xfrm_me_harder(struct sk_buff **pskb);
|
||||
extern unsigned int nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
|
||||
extern __sum16 nf_ip_checksum(struct sk_buff *skb, unsigned int hook,
|
||||
unsigned int dataoff, u_int8_t protocol);
|
||||
#endif /*__KERNEL__*/
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
header-y += ip_conntrack_helper.h
|
||||
header-y += ip_conntrack_helper_h323_asn1.h
|
||||
header-y += ip_conntrack_helper_h323_types.h
|
||||
header-y += ip_conntrack_protocol.h
|
||||
header-y += ip_conntrack_sctp.h
|
||||
header-y += ip_conntrack_tcp.h
|
||||
|
||||
@@ -277,7 +277,7 @@ extern struct ip_conntrack_expect *
|
||||
__ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple);
|
||||
|
||||
extern struct ip_conntrack_expect *
|
||||
ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple);
|
||||
ip_conntrack_expect_find_get(const struct ip_conntrack_tuple *tuple);
|
||||
|
||||
extern struct ip_conntrack_tuple_hash *
|
||||
__ip_conntrack_find(const struct ip_conntrack_tuple *tuple,
|
||||
|
||||
@@ -1,6 +1,44 @@
|
||||
#ifndef _IP_CONNTRACK_FTP_H
|
||||
#define _IP_CONNTRACK_FTP_H
|
||||
/* FTP tracking. */
|
||||
|
||||
#include <linux/netfilter/nf_conntrack_ftp.h>
|
||||
/* This enum is exposed to userspace */
|
||||
enum ip_ct_ftp_type
|
||||
{
|
||||
/* PORT command from client */
|
||||
IP_CT_FTP_PORT,
|
||||
/* PASV response from server */
|
||||
IP_CT_FTP_PASV,
|
||||
/* EPRT command from client */
|
||||
IP_CT_FTP_EPRT,
|
||||
/* EPSV response from server */
|
||||
IP_CT_FTP_EPSV,
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define FTP_PORT 21
|
||||
|
||||
#define NUM_SEQ_TO_REMEMBER 2
|
||||
/* This structure exists only once per master */
|
||||
struct ip_ct_ftp_master {
|
||||
/* Valid seq positions for cmd matching after newline */
|
||||
u_int32_t seq_aft_nl[IP_CT_DIR_MAX][NUM_SEQ_TO_REMEMBER];
|
||||
/* 0 means seq_match_aft_nl not set */
|
||||
int seq_aft_nl_num[IP_CT_DIR_MAX];
|
||||
};
|
||||
|
||||
struct ip_conntrack_expect;
|
||||
|
||||
/* For NAT to hook in when we find a packet which describes what other
|
||||
* connection we should expect. */
|
||||
extern unsigned int (*ip_nat_ftp_hook)(struct sk_buff **pskb,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
enum ip_ct_ftp_type type,
|
||||
unsigned int matchoff,
|
||||
unsigned int matchlen,
|
||||
struct ip_conntrack_expect *exp,
|
||||
u32 *seq);
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _IP_CONNTRACK_FTP_H */
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h>
|
||||
#include <linux/netfilter/nf_conntrack_h323_asn1.h>
|
||||
|
||||
#define RAS_PORT 1719
|
||||
#define Q931_PORT 1720
|
||||
|
||||
@@ -102,11 +102,11 @@ static inline __be32 *gre_key(struct gre_hdr *greh)
|
||||
}
|
||||
|
||||
/* get pointer ot gre csum, if present */
|
||||
static inline u_int16_t *gre_csum(struct gre_hdr *greh)
|
||||
static inline __sum16 *gre_csum(struct gre_hdr *greh)
|
||||
{
|
||||
if (!greh->csum)
|
||||
return NULL;
|
||||
return (u_int16_t *) (greh+sizeof(*greh));
|
||||
return (__sum16 *) (greh+sizeof(*greh));
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
@@ -5,23 +5,18 @@
|
||||
#define SIP_PORT 5060
|
||||
#define SIP_TIMEOUT 3600
|
||||
|
||||
#define POS_VIA 0
|
||||
#define POS_CONTACT 1
|
||||
#define POS_CONTENT 2
|
||||
#define POS_MEDIA 3
|
||||
#define POS_OWNER 4
|
||||
#define POS_CONNECTION 5
|
||||
#define POS_REQ_HEADER 6
|
||||
#define POS_SDP_HEADER 7
|
||||
|
||||
struct sip_header_nfo {
|
||||
const char *lname;
|
||||
const char *sname;
|
||||
const char *ln_str;
|
||||
size_t lnlen;
|
||||
size_t snlen;
|
||||
size_t ln_strlen;
|
||||
int (*match_len)(const char *, const char *, int *);
|
||||
enum sip_header_pos {
|
||||
POS_REG_REQ_URI,
|
||||
POS_REQ_URI,
|
||||
POS_FROM,
|
||||
POS_TO,
|
||||
POS_VIA,
|
||||
POS_CONTACT,
|
||||
POS_CONTENT,
|
||||
POS_MEDIA,
|
||||
POS_OWNER,
|
||||
POS_CONNECTION,
|
||||
POS_SDP_HEADER,
|
||||
};
|
||||
|
||||
extern unsigned int (*ip_nat_sip_hook)(struct sk_buff **pskb,
|
||||
@@ -36,9 +31,10 @@ extern unsigned int (*ip_nat_sdp_hook)(struct sk_buff **pskb,
|
||||
extern int ct_sip_get_info(const char *dptr, size_t dlen,
|
||||
unsigned int *matchoff,
|
||||
unsigned int *matchlen,
|
||||
struct sip_header_nfo *hnfo);
|
||||
enum sip_header_pos pos);
|
||||
extern int ct_sip_lnlen(const char *line, const char *limit);
|
||||
extern const char *ct_sip_search(const char *needle, const char *haystack,
|
||||
size_t needle_len, size_t haystack_len);
|
||||
size_t needle_len, size_t haystack_len,
|
||||
int case_sensitive);
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __IP_CONNTRACK_SIP_H__ */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#define TFTP_PORT 69
|
||||
|
||||
struct tftphdr {
|
||||
u_int16_t opcode;
|
||||
__be16 opcode;
|
||||
};
|
||||
|
||||
#define TFTP_OPCODE_READ 1
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#define IPT_LOG_TCPOPT 0x02 /* Log TCP options */
|
||||
#define IPT_LOG_IPOPT 0x04 /* Log IP options */
|
||||
#define IPT_LOG_UID 0x08 /* Log UID owning local socket */
|
||||
#define IPT_LOG_NFLOG 0x10 /* Log using nf_log backend */
|
||||
#define IPT_LOG_NFLOG 0x10 /* Unsupported, don't reuse */
|
||||
#define IPT_LOG_MASK 0x1f
|
||||
|
||||
struct ipt_log_info {
|
||||
|
||||
@@ -1,40 +1,14 @@
|
||||
#ifndef _IPT_HASHLIMIT_H
|
||||
#define _IPT_HASHLIMIT_H
|
||||
|
||||
/* timings are in milliseconds. */
|
||||
#define IPT_HASHLIMIT_SCALE 10000
|
||||
/* 1/10,000 sec period => max of 10,000/sec. Min rate is then 429490
|
||||
seconds, or one every 59 hours. */
|
||||
#include <linux/netfilter/xt_hashlimit.h>
|
||||
|
||||
/* details of this structure hidden by the implementation */
|
||||
struct ipt_hashlimit_htable;
|
||||
#define IPT_HASHLIMIT_SCALE XT_HASHLIMIT_SCALE
|
||||
#define IPT_HASHLIMIT_HASH_DIP XT_HASHLIMIT_HASH_DIP
|
||||
#define IPT_HASHLIMIT_HASH_DPT XT_HASHLIMIT_HASH_DPT
|
||||
#define IPT_HASHLIMIT_HASH_SIP XT_HASHLIMIT_HASH_SIP
|
||||
#define IPT_HASHLIMIT_HASH_SPT XT_HASHLIMIT_HASH_SPT
|
||||
|
||||
#define IPT_HASHLIMIT_HASH_DIP 0x0001
|
||||
#define IPT_HASHLIMIT_HASH_DPT 0x0002
|
||||
#define IPT_HASHLIMIT_HASH_SIP 0x0004
|
||||
#define IPT_HASHLIMIT_HASH_SPT 0x0008
|
||||
#define ipt_hashlimit_info xt_hashlimit_info
|
||||
|
||||
struct hashlimit_cfg {
|
||||
u_int32_t mode; /* bitmask of IPT_HASHLIMIT_HASH_* */
|
||||
u_int32_t avg; /* Average secs between packets * scale */
|
||||
u_int32_t burst; /* Period multiplier for upper limit. */
|
||||
|
||||
/* user specified */
|
||||
u_int32_t size; /* how many buckets */
|
||||
u_int32_t max; /* max number of entries */
|
||||
u_int32_t gc_interval; /* gc interval */
|
||||
u_int32_t expire; /* when do entries expire? */
|
||||
};
|
||||
|
||||
struct ipt_hashlimit_info {
|
||||
char name [IFNAMSIZ]; /* name */
|
||||
struct hashlimit_cfg cfg;
|
||||
struct ipt_hashlimit_htable *hinfo;
|
||||
|
||||
/* Used internally by the kernel */
|
||||
union {
|
||||
void *ptr;
|
||||
struct ipt_hashlimit_info *master;
|
||||
} u;
|
||||
};
|
||||
#endif /*_IPT_HASHLIMIT_H*/
|
||||
#endif /* _IPT_HASHLIMIT_H */
|
||||
|
||||
@@ -74,7 +74,7 @@ enum nf_ip6_hook_priorities {
|
||||
|
||||
#ifdef CONFIG_NETFILTER
|
||||
extern int ip6_route_me_harder(struct sk_buff *skb);
|
||||
extern unsigned int nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
|
||||
extern __sum16 nf_ip6_checksum(struct sk_buff *skb, unsigned int hook,
|
||||
unsigned int dataoff, u_int8_t protocol);
|
||||
|
||||
extern int ipv6_netfilter_init(void);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#define IP6T_LOG_TCPOPT 0x02 /* Log TCP options */
|
||||
#define IP6T_LOG_IPOPT 0x04 /* Log IP options */
|
||||
#define IP6T_LOG_UID 0x08 /* Log UID owning local socket */
|
||||
#define IP6T_LOG_NFLOG 0x10 /* Log using nf_log backend */
|
||||
#define IP6T_LOG_NFLOG 0x10 /* Unsupported, don't use */
|
||||
#define IP6T_LOG_MASK 0x1f
|
||||
|
||||
struct ip6t_log_info {
|
||||
|
||||
@@ -141,7 +141,6 @@ struct netlink_skb_parms
|
||||
{
|
||||
struct ucred creds; /* Skb credentials */
|
||||
__u32 pid;
|
||||
__u32 dst_pid;
|
||||
__u32 dst_group;
|
||||
kernel_cap_t eff_cap;
|
||||
__u32 loginuid; /* Login (audit) uid */
|
||||
@@ -174,6 +173,7 @@ int netlink_sendskb(struct sock *sk, struct sk_buff *skb, int protocol);
|
||||
*/
|
||||
#define NLMSG_GOODORDER 0
|
||||
#define NLMSG_GOODSIZE (SKB_MAX_ORDER(0, NLMSG_GOODORDER))
|
||||
#define NLMSG_DEFAULT_SIZE (NLMSG_GOODSIZE - NLMSG_HDRLEN)
|
||||
|
||||
|
||||
struct netlink_callback
|
||||
|
||||
@@ -12,26 +12,27 @@
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/list.h>
|
||||
|
||||
struct netpoll;
|
||||
|
||||
struct netpoll {
|
||||
struct net_device *dev;
|
||||
char dev_name[16], *name;
|
||||
char dev_name[IFNAMSIZ];
|
||||
const char *name;
|
||||
void (*rx_hook)(struct netpoll *, int, char *, int);
|
||||
void (*drop)(struct sk_buff *skb);
|
||||
|
||||
u32 local_ip, remote_ip;
|
||||
u16 local_port, remote_port;
|
||||
unsigned char local_mac[6], remote_mac[6];
|
||||
u8 local_mac[ETH_ALEN], remote_mac[ETH_ALEN];
|
||||
};
|
||||
|
||||
struct netpoll_info {
|
||||
atomic_t refcnt;
|
||||
spinlock_t poll_lock;
|
||||
int poll_owner;
|
||||
int tries;
|
||||
int rx_flags;
|
||||
spinlock_t rx_lock;
|
||||
struct netpoll *rx_np; /* netpoll that registered an rx_hook */
|
||||
struct sk_buff_head arp_tx; /* list of arp requests to reply to */
|
||||
struct sk_buff_head txq;
|
||||
struct work_struct tx_work;
|
||||
};
|
||||
|
||||
void netpoll_poll(struct netpoll *np);
|
||||
@@ -42,7 +43,7 @@ int netpoll_trap(void);
|
||||
void netpoll_set_trap(int trap);
|
||||
void netpoll_cleanup(struct netpoll *np);
|
||||
int __netpoll_rx(struct sk_buff *skb);
|
||||
void netpoll_queue(struct sk_buff *skb);
|
||||
|
||||
|
||||
#ifdef CONFIG_NETPOLL
|
||||
static inline int netpoll_rx(struct sk_buff *skb)
|
||||
|
||||
@@ -318,7 +318,7 @@ extern void put_nfs_open_context(struct nfs_open_context *ctx);
|
||||
extern struct nfs_open_context *nfs_find_open_context(struct inode *inode, struct rpc_cred *cred, int mode);
|
||||
|
||||
/* linux/net/ipv4/ipconfig.c: trims ip addr off front of name, too. */
|
||||
extern u32 root_nfs_parse_addr(char *name); /*__init*/
|
||||
extern __be32 root_nfs_parse_addr(char *name); /*__init*/
|
||||
|
||||
static inline void nfs_fattr_init(struct nfs_fattr *fattr)
|
||||
{
|
||||
|
||||
@@ -45,8 +45,10 @@ static inline void exit_task_namespaces(struct task_struct *p)
|
||||
{
|
||||
struct nsproxy *ns = p->nsproxy;
|
||||
if (ns) {
|
||||
put_nsproxy(ns);
|
||||
task_lock(p);
|
||||
p->nsproxy = NULL;
|
||||
task_unlock(p);
|
||||
put_nsproxy(ns);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
+2
-1
@@ -51,6 +51,7 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/errno.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
/* File state for mmap()s on /proc/bus/pci/X/Y */
|
||||
@@ -159,7 +160,6 @@ struct pci_dev {
|
||||
unsigned int transparent:1; /* Transparent PCI bridge */
|
||||
unsigned int multifunction:1;/* Part of multi-function device */
|
||||
/* keep track of device state */
|
||||
unsigned int is_enabled:1; /* pci_enable_device has been called */
|
||||
unsigned int is_busmaster:1; /* device is busmaster */
|
||||
unsigned int no_msi:1; /* device may not use msi */
|
||||
unsigned int no_d1d2:1; /* only allow d0 or d3 */
|
||||
@@ -167,6 +167,7 @@ struct pci_dev {
|
||||
unsigned int broken_parity_status:1; /* Device generates false positive parity */
|
||||
unsigned int msi_enabled:1;
|
||||
unsigned int msix_enabled:1;
|
||||
atomic_t enable_cnt; /* pci_enable_device has been called */
|
||||
|
||||
u32 saved_config_space[16]; /* config space saved at suspend time */
|
||||
struct hlist_head saved_cap_space;
|
||||
|
||||
@@ -1213,6 +1213,10 @@
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_22 0x0452
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_23 0x0453
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_24 0x054C
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_25 0x054D
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_26 0x054E
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_27 0x054F
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE 0x0560
|
||||
|
||||
#define PCI_VENDOR_ID_IMS 0x10e0
|
||||
@@ -1893,6 +1897,7 @@
|
||||
#define PCI_VENDOR_ID_BROADCOM 0x14e4
|
||||
#define PCI_DEVICE_ID_TIGON3_5752 0x1600
|
||||
#define PCI_DEVICE_ID_TIGON3_5752M 0x1601
|
||||
#define PCI_DEVICE_ID_NX2_5709 0x1639
|
||||
#define PCI_DEVICE_ID_TIGON3_5700 0x1644
|
||||
#define PCI_DEVICE_ID_TIGON3_5701 0x1645
|
||||
#define PCI_DEVICE_ID_TIGON3_5702 0x1646
|
||||
@@ -2211,6 +2216,13 @@
|
||||
#define PCI_DEVICE_ID_INTEL_ICH8_4 0x2815
|
||||
#define PCI_DEVICE_ID_INTEL_ICH8_5 0x283e
|
||||
#define PCI_DEVICE_ID_INTEL_ICH8_6 0x2850
|
||||
#define PCI_DEVICE_ID_INTEL_ICH9_0 0x2910
|
||||
#define PCI_DEVICE_ID_INTEL_ICH9_1 0x2911
|
||||
#define PCI_DEVICE_ID_INTEL_ICH9_2 0x2912
|
||||
#define PCI_DEVICE_ID_INTEL_ICH9_3 0x2913
|
||||
#define PCI_DEVICE_ID_INTEL_ICH9_4 0x2914
|
||||
#define PCI_DEVICE_ID_INTEL_ICH9_5 0x2915
|
||||
#define PCI_DEVICE_ID_INTEL_ICH9_6 0x2930
|
||||
#define PCI_DEVICE_ID_INTEL_82855PM_HB 0x3340
|
||||
#define PCI_DEVICE_ID_INTEL_82830_HB 0x3575
|
||||
#define PCI_DEVICE_ID_INTEL_82830_CGC 0x3577
|
||||
|
||||
@@ -292,6 +292,12 @@
|
||||
#define PCI_MSI_DATA_64 12 /* 16 bits of data for 64-bit devices */
|
||||
#define PCI_MSI_MASK_BIT 16 /* Mask bits register */
|
||||
|
||||
/* MSI-X registers (these are at offset PCI_MSI_FLAGS) */
|
||||
#define PCI_MSIX_FLAGS_QSIZE 0x7FF
|
||||
#define PCI_MSIX_FLAGS_ENABLE (1 << 15)
|
||||
#define PCI_MSIX_FLAGS_BIRMASK (7 << 0)
|
||||
#define PCI_MSIX_FLAGS_BITMASK (1 << 0)
|
||||
|
||||
/* CompactPCI Hotswap Register */
|
||||
|
||||
#define PCI_CHSWP_CSR 2 /* Control and Status Register */
|
||||
|
||||
@@ -32,7 +32,7 @@ struct sadb_ext {
|
||||
struct sadb_sa {
|
||||
uint16_t sadb_sa_len;
|
||||
uint16_t sadb_sa_exttype;
|
||||
uint32_t sadb_sa_spi;
|
||||
__be32 sadb_sa_spi;
|
||||
uint8_t sadb_sa_replay;
|
||||
uint8_t sadb_sa_state;
|
||||
uint8_t sadb_sa_auth;
|
||||
@@ -211,7 +211,7 @@ struct sadb_x_nat_t_type {
|
||||
struct sadb_x_nat_t_port {
|
||||
uint16_t sadb_x_nat_t_port_len;
|
||||
uint16_t sadb_x_nat_t_port_exttype;
|
||||
uint16_t sadb_x_nat_t_port_port;
|
||||
__be16 sadb_x_nat_t_port_port;
|
||||
uint16_t sadb_x_nat_t_port_reserved;
|
||||
} __attribute__((packed));
|
||||
/* sizeof(struct sadb_x_nat_t_port) == 8 */
|
||||
|
||||
+24
-6
@@ -20,6 +20,10 @@
|
||||
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/mii.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#define PHY_BASIC_FEATURES (SUPPORTED_10baseT_Half | \
|
||||
SUPPORTED_10baseT_Full | \
|
||||
@@ -43,15 +47,26 @@
|
||||
#define PHY_HAS_INTERRUPT 0x00000001
|
||||
#define PHY_HAS_MAGICANEG 0x00000002
|
||||
|
||||
/* Interface Mode definitions */
|
||||
typedef enum {
|
||||
PHY_INTERFACE_MODE_MII,
|
||||
PHY_INTERFACE_MODE_GMII,
|
||||
PHY_INTERFACE_MODE_SGMII,
|
||||
PHY_INTERFACE_MODE_TBI,
|
||||
PHY_INTERFACE_MODE_RMII,
|
||||
PHY_INTERFACE_MODE_RGMII,
|
||||
PHY_INTERFACE_MODE_RTBI
|
||||
} phy_interface_t;
|
||||
|
||||
#define MII_BUS_MAX 4
|
||||
|
||||
|
||||
#define PHY_INIT_TIMEOUT 100000
|
||||
#define PHY_INIT_TIMEOUT 100000
|
||||
#define PHY_STATE_TIME 1
|
||||
#define PHY_FORCE_TIMEOUT 10
|
||||
#define PHY_AN_TIMEOUT 10
|
||||
|
||||
#define PHY_MAX_ADDR 32
|
||||
#define PHY_MAX_ADDR 32
|
||||
|
||||
/* Used when trying to connect to a specific phy (mii bus id:phy device id) */
|
||||
#define PHY_ID_FMT "%x:%02x"
|
||||
@@ -83,8 +98,8 @@ struct mii_bus {
|
||||
int *irq;
|
||||
};
|
||||
|
||||
#define PHY_INTERRUPT_DISABLED 0x0
|
||||
#define PHY_INTERRUPT_ENABLED 0x80000000
|
||||
#define PHY_INTERRUPT_DISABLED 0x0
|
||||
#define PHY_INTERRUPT_ENABLED 0x80000000
|
||||
|
||||
/* PHY state machine states:
|
||||
*
|
||||
@@ -226,6 +241,8 @@ struct phy_device {
|
||||
|
||||
u32 dev_flags;
|
||||
|
||||
phy_interface_t interface;
|
||||
|
||||
/* Bus address of the PHY (0-32) */
|
||||
int addr;
|
||||
|
||||
@@ -341,9 +358,10 @@ struct phy_device* get_phy_device(struct mii_bus *bus, int addr);
|
||||
int phy_clear_interrupt(struct phy_device *phydev);
|
||||
int phy_config_interrupt(struct phy_device *phydev, u32 interrupts);
|
||||
struct phy_device * phy_attach(struct net_device *dev,
|
||||
const char *phy_id, u32 flags);
|
||||
const char *phy_id, u32 flags, phy_interface_t interface);
|
||||
struct phy_device * phy_connect(struct net_device *dev, const char *phy_id,
|
||||
void (*handler)(struct net_device *), u32 flags);
|
||||
void (*handler)(struct net_device *), u32 flags,
|
||||
phy_interface_t interface);
|
||||
void phy_disconnect(struct phy_device *phydev);
|
||||
void phy_detach(struct phy_device *phydev);
|
||||
void phy_start(struct phy_device *phydev);
|
||||
|
||||
@@ -58,6 +58,12 @@ struct platform_driver {
|
||||
extern int platform_driver_register(struct platform_driver *);
|
||||
extern void platform_driver_unregister(struct platform_driver *);
|
||||
|
||||
/* non-hotpluggable platform devices may use this so that probe() and
|
||||
* its support may live in __init sections, conserving runtime memory.
|
||||
*/
|
||||
extern int platform_driver_probe(struct platform_driver *driver,
|
||||
int (*probe)(struct platform_device *));
|
||||
|
||||
#define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev)
|
||||
#define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data))
|
||||
|
||||
|
||||
+10
-10
@@ -51,16 +51,16 @@ extern void add_interrupt_randomness(int irq);
|
||||
extern void get_random_bytes(void *buf, int nbytes);
|
||||
void generate_random_uuid(unsigned char uuid_out[16]);
|
||||
|
||||
extern __u32 secure_ip_id(__u32 daddr);
|
||||
extern u32 secure_ipv4_port_ephemeral(__u32 saddr, __u32 daddr, __u16 dport);
|
||||
extern u32 secure_ipv6_port_ephemeral(const __u32 *saddr, const __u32 *daddr,
|
||||
__u16 dport);
|
||||
extern __u32 secure_tcp_sequence_number(__u32 saddr, __u32 daddr,
|
||||
__u16 sport, __u16 dport);
|
||||
extern __u32 secure_tcpv6_sequence_number(__u32 *saddr, __u32 *daddr,
|
||||
__u16 sport, __u16 dport);
|
||||
extern u64 secure_dccp_sequence_number(__u32 saddr, __u32 daddr,
|
||||
__u16 sport, __u16 dport);
|
||||
extern __u32 secure_ip_id(__be32 daddr);
|
||||
extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
|
||||
extern u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
|
||||
__be16 dport);
|
||||
extern __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
|
||||
__be16 sport, __be16 dport);
|
||||
extern __u32 secure_tcpv6_sequence_number(__be32 *saddr, __be32 *daddr,
|
||||
__be16 sport, __be16 dport);
|
||||
extern u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
|
||||
__be16 sport, __be16 dport);
|
||||
|
||||
#ifndef MODULE
|
||||
extern struct file_operations random_fops, urandom_fops;
|
||||
|
||||
@@ -430,7 +430,7 @@ enum reiserfs_mount_options {
|
||||
/* -o hash={tea, rupasov, r5, detect} is meant for properly mounting
|
||||
** reiserfs disks from 3.5.19 or earlier. 99% of the time, this option
|
||||
** is not required. If the normal autodection code can't determine which
|
||||
** hash to use (because both hases had the same value for a file)
|
||||
** hash to use (because both hashes had the same value for a file)
|
||||
** use this option to force a specific hash. It won't allow you to override
|
||||
** the existing hash on the FS, so if you have a tea hash disk, and mount
|
||||
** with -o hash=rupasov, the mount will fail.
|
||||
|
||||
@@ -81,8 +81,6 @@ enum {
|
||||
|
||||
RTM_NEWPREFIX = 52,
|
||||
#define RTM_NEWPREFIX RTM_NEWPREFIX
|
||||
RTM_GETPREFIX = 54,
|
||||
#define RTM_GETPREFIX RTM_GETPREFIX
|
||||
|
||||
RTM_GETMULTICAST = 58,
|
||||
#define RTM_GETMULTICAST RTM_GETMULTICAST
|
||||
@@ -587,6 +585,9 @@ extern int rtnl_notify(struct sk_buff *skb, u32 pid, u32 group,
|
||||
struct nlmsghdr *nlh, gfp_t flags);
|
||||
extern void rtnl_set_sk_err(u32 group, int error);
|
||||
extern int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics);
|
||||
extern int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst,
|
||||
u32 id, u32 ts, u32 tsage, long expires,
|
||||
u32 error);
|
||||
|
||||
extern void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const void *data);
|
||||
|
||||
|
||||
+36
-36
@@ -57,17 +57,17 @@
|
||||
|
||||
/* Section 3.1. SCTP Common Header Format */
|
||||
typedef struct sctphdr {
|
||||
__u16 source;
|
||||
__u16 dest;
|
||||
__u32 vtag;
|
||||
__u32 checksum;
|
||||
__be16 source;
|
||||
__be16 dest;
|
||||
__be32 vtag;
|
||||
__be32 checksum;
|
||||
} __attribute__((packed)) sctp_sctphdr_t;
|
||||
|
||||
/* Section 3.2. Chunk Field Descriptions. */
|
||||
typedef struct sctp_chunkhdr {
|
||||
__u8 type;
|
||||
__u8 flags;
|
||||
__u16 length;
|
||||
__be16 length;
|
||||
} __attribute__((packed)) sctp_chunkhdr_t;
|
||||
|
||||
|
||||
@@ -153,8 +153,8 @@ enum { SCTP_CHUNK_FLAG_T = 0x01 };
|
||||
*/
|
||||
|
||||
typedef struct sctp_paramhdr {
|
||||
__u16 type;
|
||||
__u16 length;
|
||||
__be16 type;
|
||||
__be16 length;
|
||||
} __attribute__((packed)) sctp_paramhdr_t;
|
||||
|
||||
typedef enum {
|
||||
@@ -203,10 +203,10 @@ enum { SCTP_PARAM_ACTION_MASK = __constant_htons(0xc000), };
|
||||
/* RFC 2960 Section 3.3.1 Payload Data (DATA) (0) */
|
||||
|
||||
typedef struct sctp_datahdr {
|
||||
__u32 tsn;
|
||||
__u16 stream;
|
||||
__u16 ssn;
|
||||
__u32 ppid;
|
||||
__be32 tsn;
|
||||
__be16 stream;
|
||||
__be16 ssn;
|
||||
__be32 ppid;
|
||||
__u8 payload[0];
|
||||
} __attribute__((packed)) sctp_datahdr_t;
|
||||
|
||||
@@ -232,11 +232,11 @@ enum { SCTP_DATA_FRAG_MASK = 0x03, };
|
||||
* endpoints.
|
||||
*/
|
||||
typedef struct sctp_inithdr {
|
||||
__u32 init_tag;
|
||||
__u32 a_rwnd;
|
||||
__u16 num_outbound_streams;
|
||||
__u16 num_inbound_streams;
|
||||
__u32 initial_tsn;
|
||||
__be32 init_tag;
|
||||
__be32 a_rwnd;
|
||||
__be16 num_outbound_streams;
|
||||
__be16 num_inbound_streams;
|
||||
__be32 initial_tsn;
|
||||
__u8 params[0];
|
||||
} __attribute__((packed)) sctp_inithdr_t;
|
||||
|
||||
@@ -261,7 +261,7 @@ typedef struct sctp_ipv6addr_param {
|
||||
/* Section 3.3.2.1 Cookie Preservative (9) */
|
||||
typedef struct sctp_cookie_preserve_param {
|
||||
sctp_paramhdr_t param_hdr;
|
||||
uint32_t lifespan_increment;
|
||||
__be32 lifespan_increment;
|
||||
} __attribute__((packed)) sctp_cookie_preserve_param_t;
|
||||
|
||||
/* Section 3.3.2.1 Host Name Address (11) */
|
||||
@@ -273,7 +273,7 @@ typedef struct sctp_hostname_param {
|
||||
/* Section 3.3.2.1 Supported Address Types (12) */
|
||||
typedef struct sctp_supported_addrs_param {
|
||||
sctp_paramhdr_t param_hdr;
|
||||
uint16_t types[0];
|
||||
__be16 types[0];
|
||||
} __attribute__((packed)) sctp_supported_addrs_param_t;
|
||||
|
||||
/* Appendix A. ECN Capable (32768) */
|
||||
@@ -284,7 +284,7 @@ typedef struct sctp_ecn_capable_param {
|
||||
/* ADDIP Section 3.2.6 Adaption Layer Indication */
|
||||
typedef struct sctp_adaption_ind_param {
|
||||
struct sctp_paramhdr param_hdr;
|
||||
__u32 adaption_ind;
|
||||
__be32 adaption_ind;
|
||||
} __attribute__((packed)) sctp_adaption_ind_param_t;
|
||||
|
||||
/* RFC 2960. Section 3.3.3 Initiation Acknowledgement (INIT ACK) (2):
|
||||
@@ -316,11 +316,11 @@ typedef struct sctp_unrecognized_param {
|
||||
*/
|
||||
|
||||
typedef struct sctp_gap_ack_block {
|
||||
__u16 start;
|
||||
__u16 end;
|
||||
__be16 start;
|
||||
__be16 end;
|
||||
} __attribute__((packed)) sctp_gap_ack_block_t;
|
||||
|
||||
typedef uint32_t sctp_dup_tsn_t;
|
||||
typedef __be32 sctp_dup_tsn_t;
|
||||
|
||||
typedef union {
|
||||
sctp_gap_ack_block_t gab;
|
||||
@@ -328,10 +328,10 @@ typedef union {
|
||||
} sctp_sack_variable_t;
|
||||
|
||||
typedef struct sctp_sackhdr {
|
||||
__u32 cum_tsn_ack;
|
||||
__u32 a_rwnd;
|
||||
__u16 num_gap_ack_blocks;
|
||||
__u16 num_dup_tsns;
|
||||
__be32 cum_tsn_ack;
|
||||
__be32 a_rwnd;
|
||||
__be16 num_gap_ack_blocks;
|
||||
__be16 num_dup_tsns;
|
||||
sctp_sack_variable_t variable[0];
|
||||
} __attribute__((packed)) sctp_sackhdr_t;
|
||||
|
||||
@@ -371,7 +371,7 @@ typedef struct sctp_abort_chunk {
|
||||
* and the highest consecutive acking value.
|
||||
*/
|
||||
typedef struct sctp_shutdownhdr {
|
||||
__u32 cum_tsn_ack;
|
||||
__be32 cum_tsn_ack;
|
||||
} __attribute__((packed)) sctp_shutdownhdr_t;
|
||||
|
||||
struct sctp_shutdown_chunk_t {
|
||||
@@ -382,8 +382,8 @@ struct sctp_shutdown_chunk_t {
|
||||
/* RFC 2960. Section 3.3.10 Operation Error (ERROR) (9) */
|
||||
|
||||
typedef struct sctp_errhdr {
|
||||
__u16 cause;
|
||||
__u16 length;
|
||||
__be16 cause;
|
||||
__be16 length;
|
||||
__u8 variable[0];
|
||||
} __attribute__((packed)) sctp_errhdr_t;
|
||||
|
||||
@@ -462,7 +462,7 @@ typedef enum {
|
||||
* Explicit Congestion Notification Echo (ECNE) (12)
|
||||
*/
|
||||
typedef struct sctp_ecnehdr {
|
||||
__u32 lowest_tsn;
|
||||
__be32 lowest_tsn;
|
||||
} sctp_ecnehdr_t;
|
||||
|
||||
typedef struct sctp_ecne_chunk {
|
||||
@@ -474,7 +474,7 @@ typedef struct sctp_ecne_chunk {
|
||||
* Congestion Window Reduced (CWR) (13)
|
||||
*/
|
||||
typedef struct sctp_cwrhdr {
|
||||
__u32 lowest_tsn;
|
||||
__be32 lowest_tsn;
|
||||
} sctp_cwrhdr_t;
|
||||
|
||||
typedef struct sctp_cwr_chunk {
|
||||
@@ -529,12 +529,12 @@ typedef struct sctp_cwr_chunk {
|
||||
* chunks this field MUST be filled in.
|
||||
*/
|
||||
struct sctp_fwdtsn_skip {
|
||||
__u16 stream;
|
||||
__u16 ssn;
|
||||
__be16 stream;
|
||||
__be16 ssn;
|
||||
} __attribute__((packed));
|
||||
|
||||
struct sctp_fwdtsn_hdr {
|
||||
__u32 new_cum_tsn;
|
||||
__be32 new_cum_tsn;
|
||||
struct sctp_fwdtsn_skip skip[0];
|
||||
} __attribute((packed));
|
||||
|
||||
@@ -578,11 +578,11 @@ struct sctp_fwdtsn_chunk {
|
||||
*/
|
||||
typedef struct sctp_addip_param {
|
||||
sctp_paramhdr_t param_hdr;
|
||||
__u32 crr_id;
|
||||
__be32 crr_id;
|
||||
} __attribute__((packed)) sctp_addip_param_t;
|
||||
|
||||
typedef struct sctp_addiphdr {
|
||||
__u32 serial;
|
||||
__be32 serial;
|
||||
__u8 params[0];
|
||||
} __attribute__((packed)) sctp_addiphdr_t;
|
||||
|
||||
|
||||
+25
-31
@@ -826,6 +826,8 @@ struct request_sock;
|
||||
* Sets the openreq's sid to socket's sid with MLS portion taken from peer sid.
|
||||
* @inet_csk_clone:
|
||||
* Sets the new child socket's sid to the openreq sid.
|
||||
* @inet_conn_established:
|
||||
* Sets the connection's peersid to the secmark on skb.
|
||||
* @req_classify_flow:
|
||||
* Sets the flow's sid to the openreq sid.
|
||||
*
|
||||
@@ -836,10 +838,8 @@ struct request_sock;
|
||||
* used by the XFRM system.
|
||||
* @sec_ctx contains the security context information being provided by
|
||||
* the user-level policy update program (e.g., setkey).
|
||||
* @sk refers to the sock from which to derive the security context.
|
||||
* Allocate a security structure to the xp->security field; the security
|
||||
* field is initialized to NULL when the xfrm_policy is allocated. Only
|
||||
* one of sec_ctx or sock can be specified.
|
||||
* field is initialized to NULL when the xfrm_policy is allocated.
|
||||
* Return 0 if operation was successful (memory to allocate, legal context)
|
||||
* @xfrm_policy_clone_security:
|
||||
* @old contains an existing xfrm_policy in the SPD.
|
||||
@@ -858,9 +858,6 @@ struct request_sock;
|
||||
* Database by the XFRM system.
|
||||
* @sec_ctx contains the security context information being provided by
|
||||
* the user-level SA generation program (e.g., setkey or racoon).
|
||||
* @polsec contains the security context information associated with a xfrm
|
||||
* policy rule from which to take the base context. polsec must be NULL
|
||||
* when sec_ctx is specified.
|
||||
* @secid contains the secid from which to take the mls portion of the context.
|
||||
* Allocate a security structure to the x->security field; the security
|
||||
* field is initialized to NULL when the xfrm_state is allocated. Set the
|
||||
@@ -889,11 +886,6 @@ struct request_sock;
|
||||
* @xp contains the policy to check for a match.
|
||||
* @fl contains the flow to check for a match.
|
||||
* Return 1 if there is a match.
|
||||
* @xfrm_flow_state_match:
|
||||
* @fl contains the flow key to match.
|
||||
* @xfrm points to the xfrm_state to match.
|
||||
* @xp points to the xfrm_policy to match.
|
||||
* Return 1 if there is a match.
|
||||
* @xfrm_decode_session:
|
||||
* @skb points to skb to decode.
|
||||
* @secid points to the flow key secid to set.
|
||||
@@ -1373,25 +1365,24 @@ struct security_operations {
|
||||
int (*inet_conn_request)(struct sock *sk, struct sk_buff *skb,
|
||||
struct request_sock *req);
|
||||
void (*inet_csk_clone)(struct sock *newsk, const struct request_sock *req);
|
||||
void (*inet_conn_established)(struct sock *sk, struct sk_buff *skb);
|
||||
void (*req_classify_flow)(const struct request_sock *req, struct flowi *fl);
|
||||
#endif /* CONFIG_SECURITY_NETWORK */
|
||||
|
||||
#ifdef CONFIG_SECURITY_NETWORK_XFRM
|
||||
int (*xfrm_policy_alloc_security) (struct xfrm_policy *xp,
|
||||
struct xfrm_user_sec_ctx *sec_ctx, struct sock *sk);
|
||||
struct xfrm_user_sec_ctx *sec_ctx);
|
||||
int (*xfrm_policy_clone_security) (struct xfrm_policy *old, struct xfrm_policy *new);
|
||||
void (*xfrm_policy_free_security) (struct xfrm_policy *xp);
|
||||
int (*xfrm_policy_delete_security) (struct xfrm_policy *xp);
|
||||
int (*xfrm_state_alloc_security) (struct xfrm_state *x,
|
||||
struct xfrm_user_sec_ctx *sec_ctx, struct xfrm_sec_ctx *polsec,
|
||||
struct xfrm_user_sec_ctx *sec_ctx,
|
||||
u32 secid);
|
||||
void (*xfrm_state_free_security) (struct xfrm_state *x);
|
||||
int (*xfrm_state_delete_security) (struct xfrm_state *x);
|
||||
int (*xfrm_policy_lookup)(struct xfrm_policy *xp, u32 fl_secid, u8 dir);
|
||||
int (*xfrm_state_pol_flow_match)(struct xfrm_state *x,
|
||||
struct xfrm_policy *xp, struct flowi *fl);
|
||||
int (*xfrm_flow_state_match)(struct flowi *fl, struct xfrm_state *xfrm,
|
||||
struct xfrm_policy *xp);
|
||||
int (*xfrm_decode_session)(struct sk_buff *skb, u32 *secid, int ckall);
|
||||
#endif /* CONFIG_SECURITY_NETWORK_XFRM */
|
||||
|
||||
@@ -2966,9 +2957,15 @@ static inline void security_inet_csk_clone(struct sock *newsk,
|
||||
{
|
||||
security_ops->inet_csk_clone(newsk, req);
|
||||
}
|
||||
|
||||
static inline void security_inet_conn_established(struct sock *sk,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
security_ops->inet_conn_established(sk, skb);
|
||||
}
|
||||
#else /* CONFIG_SECURITY_NETWORK */
|
||||
static inline int security_unix_stream_connect(struct socket * sock,
|
||||
struct socket * other,
|
||||
struct socket * other,
|
||||
struct sock * newsk)
|
||||
{
|
||||
return 0;
|
||||
@@ -3115,12 +3112,17 @@ static inline void security_inet_csk_clone(struct sock *newsk,
|
||||
const struct request_sock *req)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void security_inet_conn_established(struct sock *sk,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_SECURITY_NETWORK */
|
||||
|
||||
#ifdef CONFIG_SECURITY_NETWORK_XFRM
|
||||
static inline int security_xfrm_policy_alloc(struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx)
|
||||
{
|
||||
return security_ops->xfrm_policy_alloc_security(xp, sec_ctx, NULL);
|
||||
return security_ops->xfrm_policy_alloc_security(xp, sec_ctx);
|
||||
}
|
||||
|
||||
static inline int security_xfrm_policy_clone(struct xfrm_policy *old, struct xfrm_policy *new)
|
||||
@@ -3141,7 +3143,7 @@ static inline int security_xfrm_policy_delete(struct xfrm_policy *xp)
|
||||
static inline int security_xfrm_state_alloc(struct xfrm_state *x,
|
||||
struct xfrm_user_sec_ctx *sec_ctx)
|
||||
{
|
||||
return security_ops->xfrm_state_alloc_security(x, sec_ctx, NULL, 0);
|
||||
return security_ops->xfrm_state_alloc_security(x, sec_ctx, 0);
|
||||
}
|
||||
|
||||
static inline int security_xfrm_state_alloc_acquire(struct xfrm_state *x,
|
||||
@@ -3149,7 +3151,11 @@ static inline int security_xfrm_state_alloc_acquire(struct xfrm_state *x,
|
||||
{
|
||||
if (!polsec)
|
||||
return 0;
|
||||
return security_ops->xfrm_state_alloc_security(x, NULL, polsec, secid);
|
||||
/*
|
||||
* We want the context to be taken from secid which is usually
|
||||
* from the sock.
|
||||
*/
|
||||
return security_ops->xfrm_state_alloc_security(x, NULL, secid);
|
||||
}
|
||||
|
||||
static inline int security_xfrm_state_delete(struct xfrm_state *x)
|
||||
@@ -3173,12 +3179,6 @@ static inline int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
|
||||
return security_ops->xfrm_state_pol_flow_match(x, xp, fl);
|
||||
}
|
||||
|
||||
static inline int security_xfrm_flow_state_match(struct flowi *fl,
|
||||
struct xfrm_state *xfrm, struct xfrm_policy *xp)
|
||||
{
|
||||
return security_ops->xfrm_flow_state_match(fl, xfrm, xp);
|
||||
}
|
||||
|
||||
static inline int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid)
|
||||
{
|
||||
return security_ops->xfrm_decode_session(skb, secid, 1);
|
||||
@@ -3242,12 +3242,6 @@ static inline int security_xfrm_state_pol_flow_match(struct xfrm_state *x,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline int security_xfrm_flow_state_match(struct flowi *fl,
|
||||
struct xfrm_state *xfrm, struct xfrm_policy *xp)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid)
|
||||
{
|
||||
return 0;
|
||||
|
||||
+14
-12
@@ -139,7 +139,7 @@ struct skb_shared_info {
|
||||
/* Warning: this field is not always filled in (UFO)! */
|
||||
unsigned short gso_segs;
|
||||
unsigned short gso_type;
|
||||
unsigned int ip6_frag_id;
|
||||
__be32 ip6_frag_id;
|
||||
struct sk_buff *frag_list;
|
||||
skb_frag_t frags[MAX_SKB_FRAGS];
|
||||
};
|
||||
@@ -216,7 +216,7 @@ enum {
|
||||
* @tail: Tail pointer
|
||||
* @end: End pointer
|
||||
* @destructor: Destruct function
|
||||
* @nfmark: Can be used for communication between hooks
|
||||
* @mark: Generic packet mark
|
||||
* @nfct: Associated connection, if any
|
||||
* @ipvs_property: skbuff is owned by ipvs
|
||||
* @nfctinfo: Relationship of this skb to the connection
|
||||
@@ -273,8 +273,11 @@ struct sk_buff {
|
||||
|
||||
unsigned int len,
|
||||
data_len,
|
||||
mac_len,
|
||||
csum;
|
||||
mac_len;
|
||||
union {
|
||||
__wsum csum;
|
||||
__u32 csum_offset;
|
||||
};
|
||||
__u32 priority;
|
||||
__u8 local_df:1,
|
||||
cloned:1,
|
||||
@@ -295,7 +298,6 @@ struct sk_buff {
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
struct nf_bridge_info *nf_bridge;
|
||||
#endif
|
||||
__u32 nfmark;
|
||||
#endif /* CONFIG_NETFILTER */
|
||||
#ifdef CONFIG_NET_SCHED
|
||||
__u16 tc_index; /* traffic control index */
|
||||
@@ -310,6 +312,7 @@ struct sk_buff {
|
||||
__u32 secmark;
|
||||
#endif
|
||||
|
||||
__u32 mark;
|
||||
|
||||
/* These elements must be at the end, see alloc_skb() for details. */
|
||||
unsigned int truesize;
|
||||
@@ -1199,8 +1202,7 @@ static inline int skb_add_data(struct sk_buff *skb,
|
||||
|
||||
if (skb->ip_summed == CHECKSUM_NONE) {
|
||||
int err = 0;
|
||||
unsigned int csum = csum_and_copy_from_user(from,
|
||||
skb_put(skb, copy),
|
||||
__wsum csum = csum_and_copy_from_user(from, skb_put(skb, copy),
|
||||
copy, 0, &err);
|
||||
if (!err) {
|
||||
skb->csum = csum_block_add(skb->csum, csum, off);
|
||||
@@ -1335,15 +1337,15 @@ extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb,
|
||||
extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
|
||||
extern void skb_kill_datagram(struct sock *sk, struct sk_buff *skb,
|
||||
unsigned int flags);
|
||||
extern unsigned int skb_checksum(const struct sk_buff *skb, int offset,
|
||||
int len, unsigned int csum);
|
||||
extern __wsum skb_checksum(const struct sk_buff *skb, int offset,
|
||||
int len, __wsum csum);
|
||||
extern int skb_copy_bits(const struct sk_buff *skb, int offset,
|
||||
void *to, int len);
|
||||
extern int skb_store_bits(const struct sk_buff *skb, int offset,
|
||||
void *from, int len);
|
||||
extern unsigned int skb_copy_and_csum_bits(const struct sk_buff *skb,
|
||||
extern __wsum skb_copy_and_csum_bits(const struct sk_buff *skb,
|
||||
int offset, u8 *to, int len,
|
||||
unsigned int csum);
|
||||
__wsum csum);
|
||||
extern void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to);
|
||||
extern void skb_split(struct sk_buff *skb,
|
||||
struct sk_buff *skb1, const u32 len);
|
||||
@@ -1399,7 +1401,7 @@ static inline void skb_set_timestamp(struct sk_buff *skb, const struct timeval *
|
||||
|
||||
extern void __net_timestamp(struct sk_buff *skb);
|
||||
|
||||
extern unsigned int __skb_checksum_complete(struct sk_buff *skb);
|
||||
extern __sum16 __skb_checksum_complete(struct sk_buff *skb);
|
||||
|
||||
/**
|
||||
* skb_checksum_complete - Calculate checksum of an entire packet
|
||||
|
||||
@@ -264,6 +264,7 @@ struct ucred {
|
||||
#define SOL_IPV6 41
|
||||
#define SOL_ICMPV6 58
|
||||
#define SOL_SCTP 132
|
||||
#define SOL_UDPLITE 136 /* UDP-Lite (RFC 3828) */
|
||||
#define SOL_RAW 255
|
||||
#define SOL_IPX 256
|
||||
#define SOL_AX25 257
|
||||
@@ -292,7 +293,7 @@ extern int memcpy_fromiovecend(unsigned char *kdata, struct iovec *iov,
|
||||
extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
|
||||
struct iovec *iov,
|
||||
int offset,
|
||||
unsigned int len, int *csump);
|
||||
unsigned int len, __wsum *csump);
|
||||
|
||||
extern int verify_iovec(struct msghdr *m, struct iovec *iov, char *address, int mode);
|
||||
extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
#define SIOCGIFTXQLEN 0x8942 /* Get the tx queue length */
|
||||
#define SIOCSIFTXQLEN 0x8943 /* Set the tx queue length */
|
||||
|
||||
#define SIOCGIFDIVERT 0x8944 /* Frame diversion support */
|
||||
#define SIOCSIFDIVERT 0x8945 /* Set frame diversion options */
|
||||
/* SIOCGIFDIVERT was: 0x8944 Frame diversion support */
|
||||
/* SIOCSIFDIVERT was: 0x8945 Set frame diversion options */
|
||||
|
||||
#define SIOCETHTOOL 0x8946 /* Ethtool interface */
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user