Merge /spare/repo/linux-2.6/
This commit is contained in:
@@ -5,6 +5,10 @@
|
||||
* linux/byteorder_generic.h
|
||||
* Generic Byte-reordering support
|
||||
*
|
||||
* The "... p" macros, like le64_to_cpup, can be used with pointers
|
||||
* to unaligned data, but there will be a performance penalty on
|
||||
* some architectures. Use get_unaligned for unaligned data.
|
||||
*
|
||||
* Francois-Rene Rideau <fare@tunes.org> 19970707
|
||||
* gathered all the good ideas from all asm-foo/byteorder.h into one file,
|
||||
* cleaned them up.
|
||||
|
||||
@@ -4,16 +4,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/* Structure describing an Internet (DCCP) socket address. */
|
||||
struct sockaddr_dccp {
|
||||
__u16 sdccp_family; /* Address family */
|
||||
__u16 sdccp_port; /* Port number */
|
||||
__u32 sdccp_addr; /* Internet address */
|
||||
__u32 sdccp_service; /* Service */
|
||||
/* Pad to size of `struct sockaddr': 16 bytes . */
|
||||
__u32 sdccp_pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct dccp_hdr - generic part of DCCP packet header
|
||||
*
|
||||
@@ -188,6 +178,11 @@ enum {
|
||||
|
||||
/* DCCP socket options */
|
||||
#define DCCP_SOCKOPT_PACKET_SIZE 1
|
||||
#define DCCP_SOCKOPT_SERVICE 2
|
||||
#define DCCP_SOCKOPT_CCID_RX_INFO 128
|
||||
#define DCCP_SOCKOPT_CCID_TX_INFO 192
|
||||
|
||||
#define DCCP_SERVICE_LIST_MAX_LEN 32
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
@@ -337,7 +332,8 @@ static inline unsigned int dccp_hdr_len(const struct sk_buff *skb)
|
||||
*/
|
||||
struct dccp_options {
|
||||
__u64 dccpo_sequence_window;
|
||||
__u8 dccpo_ccid;
|
||||
__u8 dccpo_rx_ccid;
|
||||
__u8 dccpo_tx_ccid;
|
||||
__u8 dccpo_send_ack_vector;
|
||||
__u8 dccpo_send_ndp_count;
|
||||
};
|
||||
@@ -360,14 +356,8 @@ static inline struct dccp_request_sock *dccp_rsk(const struct request_sock *req)
|
||||
|
||||
extern struct inet_timewait_death_row dccp_death_row;
|
||||
|
||||
/* Read about the ECN nonce to see why it is 253 */
|
||||
#define DCCP_MAX_ACK_VECTOR_LEN 253
|
||||
|
||||
struct dccp_options_received {
|
||||
u32 dccpor_ndp:24,
|
||||
dccpor_ack_vector_len:8;
|
||||
u32 dccpor_ack_vector_idx:10;
|
||||
/* 22 bits hole, try to pack */
|
||||
u32 dccpor_ndp; /* only 24 bits */
|
||||
u32 dccpor_timestamp;
|
||||
u32 dccpor_timestamp_echo;
|
||||
u32 dccpor_elapsed_time;
|
||||
@@ -382,6 +372,27 @@ enum dccp_role {
|
||||
DCCP_ROLE_SERVER,
|
||||
};
|
||||
|
||||
struct dccp_service_list {
|
||||
__u32 dccpsl_nr;
|
||||
__u32 dccpsl_list[0];
|
||||
};
|
||||
|
||||
#define DCCP_SERVICE_INVALID_VALUE htonl((__u32)-1)
|
||||
|
||||
static inline int dccp_list_has_service(const struct dccp_service_list *sl,
|
||||
const u32 service)
|
||||
{
|
||||
if (likely(sl != NULL)) {
|
||||
u32 i = sl->dccpsl_nr;
|
||||
while (i--)
|
||||
if (sl->dccpsl_list[i] == service)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct dccp_ackvec;
|
||||
|
||||
/**
|
||||
* struct dccp_sock - DCCP socket state
|
||||
*
|
||||
@@ -402,7 +413,7 @@ enum dccp_role {
|
||||
* @dccps_packet_size - Set thru setsockopt
|
||||
* @dccps_role - Role of this sock, one of %dccp_role
|
||||
* @dccps_ndp_count - number of Non Data Packets since last data packet
|
||||
* @dccps_hc_rx_ackpkts - receiver half connection acked packets
|
||||
* @dccps_hc_rx_ackvec - rx half connection ack vector
|
||||
*/
|
||||
struct dccp_sock {
|
||||
/* inet_connection_sock has to be the first member of dccp_sock */
|
||||
@@ -417,7 +428,8 @@ struct dccp_sock {
|
||||
__u64 dccps_gss;
|
||||
__u64 dccps_gsr;
|
||||
__u64 dccps_gar;
|
||||
unsigned long dccps_service;
|
||||
__u32 dccps_service;
|
||||
struct dccp_service_list *dccps_service_list;
|
||||
struct timeval dccps_timestamp_time;
|
||||
__u32 dccps_timestamp_echo;
|
||||
__u32 dccps_packet_size;
|
||||
@@ -426,7 +438,7 @@ struct dccp_sock {
|
||||
__u32 dccps_pmtu_cookie;
|
||||
__u32 dccps_mss_cache;
|
||||
struct dccp_options dccps_options;
|
||||
struct dccp_ackpkts *dccps_hc_rx_ackpkts;
|
||||
struct dccp_ackvec *dccps_hc_rx_ackvec;
|
||||
void *dccps_hc_rx_ccid_private;
|
||||
void *dccps_hc_tx_ccid_private;
|
||||
struct ccid *dccps_hc_rx_ccid;
|
||||
@@ -443,6 +455,11 @@ static inline struct dccp_sock *dccp_sk(const struct sock *sk)
|
||||
return (struct dccp_sock *)sk;
|
||||
}
|
||||
|
||||
static inline int dccp_service_not_initialized(const struct sock *sk)
|
||||
{
|
||||
return dccp_sk(sk)->dccps_service == DCCP_SERVICE_INVALID_VALUE;
|
||||
}
|
||||
|
||||
static inline const char *dccp_role(const struct sock *sk)
|
||||
{
|
||||
switch (dccp_sk(sk)->dccps_role) {
|
||||
|
||||
@@ -317,6 +317,11 @@ dev_set_drvdata (struct device *dev, void *data)
|
||||
dev->driver_data = data;
|
||||
}
|
||||
|
||||
static inline int device_is_registered(struct device *dev)
|
||||
{
|
||||
return klist_node_attached(&dev->knode_bus);
|
||||
}
|
||||
|
||||
/*
|
||||
* High level routines for use by the bus drivers
|
||||
*/
|
||||
|
||||
@@ -230,11 +230,6 @@ struct i2c_adapter {
|
||||
struct device dev; /* the adapter device */
|
||||
struct class_device class_dev; /* the class device */
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
/* No need to set this when you initialize the adapter */
|
||||
int inode;
|
||||
#endif /* def CONFIG_PROC_FS */
|
||||
|
||||
int nr;
|
||||
struct list_head clients;
|
||||
struct list_head list;
|
||||
|
||||
@@ -42,8 +42,8 @@ struct hlist_node;
|
||||
struct vlan_ethhdr {
|
||||
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
|
||||
unsigned char h_source[ETH_ALEN]; /* source ether addr */
|
||||
unsigned short h_vlan_proto; /* Should always be 0x8100 */
|
||||
unsigned short h_vlan_TCI; /* Encapsulates priority and VLAN ID */
|
||||
__be16 h_vlan_proto; /* Should always be 0x8100 */
|
||||
__be16 h_vlan_TCI; /* Encapsulates priority and VLAN ID */
|
||||
unsigned short h_vlan_encapsulated_proto; /* packet type ID field (or len) */
|
||||
};
|
||||
|
||||
@@ -55,8 +55,8 @@ static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb)
|
||||
}
|
||||
|
||||
struct vlan_hdr {
|
||||
unsigned short h_vlan_TCI; /* Encapsulates priority and VLAN ID */
|
||||
unsigned short h_vlan_encapsulated_proto; /* packet type ID field (or len) */
|
||||
__be16 h_vlan_TCI; /* Encapsulates priority and VLAN ID */
|
||||
__be16 h_vlan_encapsulated_proto; /* packet type ID field (or len) */
|
||||
};
|
||||
|
||||
#define VLAN_VID_MASK 0xfff
|
||||
|
||||
@@ -111,29 +111,30 @@ struct js_corr {
|
||||
#define JS_SET_ALL 8
|
||||
|
||||
struct JS_DATA_TYPE {
|
||||
__s32 buttons;
|
||||
__s32 x;
|
||||
__s32 y;
|
||||
int32_t buttons;
|
||||
int32_t x;
|
||||
int32_t y;
|
||||
};
|
||||
|
||||
struct JS_DATA_SAVE_TYPE_32 {
|
||||
__s32 JS_TIMEOUT;
|
||||
__s32 BUSY;
|
||||
__s32 JS_EXPIRETIME;
|
||||
__s32 JS_TIMELIMIT;
|
||||
int32_t JS_TIMEOUT;
|
||||
int32_t BUSY;
|
||||
int32_t JS_EXPIRETIME;
|
||||
int32_t JS_TIMELIMIT;
|
||||
struct JS_DATA_TYPE JS_SAVE;
|
||||
struct JS_DATA_TYPE JS_CORR;
|
||||
};
|
||||
|
||||
struct JS_DATA_SAVE_TYPE_64 {
|
||||
__s32 JS_TIMEOUT;
|
||||
__s32 BUSY;
|
||||
__s64 JS_EXPIRETIME;
|
||||
__s64 JS_TIMELIMIT;
|
||||
int32_t JS_TIMEOUT;
|
||||
int32_t BUSY;
|
||||
int64_t JS_EXPIRETIME;
|
||||
int64_t JS_TIMELIMIT;
|
||||
struct JS_DATA_TYPE JS_SAVE;
|
||||
struct JS_DATA_TYPE JS_CORR;
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#if BITS_PER_LONG == 64
|
||||
#define JS_DATA_SAVE_TYPE JS_DATA_SAVE_TYPE_64
|
||||
#elif BITS_PER_LONG == 32
|
||||
@@ -141,5 +142,6 @@ struct JS_DATA_SAVE_TYPE_64 {
|
||||
#else
|
||||
#error Unexpected BITS_PER_LONG
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_JOYSTICK_H */
|
||||
|
||||
@@ -136,6 +136,7 @@ extern unsigned int kobjsize(const void *objp);
|
||||
#define VM_EXEC 0x00000004
|
||||
#define VM_SHARED 0x00000008
|
||||
|
||||
/* mprotect() hardcodes VM_MAYREAD >> 4 == VM_READ, and so for r/w/x bits. */
|
||||
#define VM_MAYREAD 0x00000010 /* limits for mprotect() etc */
|
||||
#define VM_MAYWRITE 0x00000020
|
||||
#define VM_MAYEXEC 0x00000040
|
||||
@@ -350,7 +351,8 @@ static inline void put_page(struct page *page)
|
||||
* only one copy in memory, at most, normally.
|
||||
*
|
||||
* For the non-reserved pages, page_count(page) denotes a reference count.
|
||||
* page_count() == 0 means the page is free.
|
||||
* page_count() == 0 means the page is free. page->lru is then used for
|
||||
* freelist management in the buddy allocator.
|
||||
* page_count() == 1 means the page is used for exactly one purpose
|
||||
* (e.g. a private data page of one process).
|
||||
*
|
||||
@@ -376,10 +378,8 @@ static inline void put_page(struct page *page)
|
||||
* attaches, plus 1 if `private' contains something, plus one for
|
||||
* the page cache itself.
|
||||
*
|
||||
* All pages belonging to an inode are in these doubly linked lists:
|
||||
* mapping->clean_pages, mapping->dirty_pages and mapping->locked_pages;
|
||||
* using the page->list list_head. These fields are also used for
|
||||
* freelist managemet (when page_count()==0).
|
||||
* Instead of keeping dirty/clean pages in per address-space lists, we instead
|
||||
* now tag pages as dirty/under writeback in the radix tree.
|
||||
*
|
||||
* There is also a per-mapping radix tree mapping index to the page
|
||||
* in memory if present. The tree is rooted at mapping->root.
|
||||
|
||||
@@ -133,11 +133,13 @@ enum ip_conntrack_expect_events {
|
||||
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_tcp.h>
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_icmp.h>
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_proto_gre.h>
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_sctp.h>
|
||||
|
||||
/* per conntrack: protocol private data */
|
||||
union ip_conntrack_proto {
|
||||
/* insert conntrack proto private data here */
|
||||
struct ip_ct_gre gre;
|
||||
struct ip_ct_sctp sctp;
|
||||
struct ip_ct_tcp tcp;
|
||||
struct ip_ct_icmp icmp;
|
||||
@@ -148,6 +150,7 @@ union ip_conntrack_expect_proto {
|
||||
};
|
||||
|
||||
/* Add protocol helper include file here */
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_pptp.h>
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_amanda.h>
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_ftp.h>
|
||||
#include <linux/netfilter_ipv4/ip_conntrack_irc.h>
|
||||
@@ -155,12 +158,20 @@ union ip_conntrack_expect_proto {
|
||||
/* per conntrack: application helper private data */
|
||||
union ip_conntrack_help {
|
||||
/* insert conntrack helper private data (master) here */
|
||||
struct ip_ct_pptp_master ct_pptp_info;
|
||||
struct ip_ct_ftp_master ct_ftp_info;
|
||||
struct ip_ct_irc_master ct_irc_info;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_IP_NF_NAT_NEEDED
|
||||
#include <linux/netfilter_ipv4/ip_nat.h>
|
||||
#include <linux/netfilter_ipv4/ip_nat_pptp.h>
|
||||
|
||||
/* per conntrack: nat application helper private data */
|
||||
union ip_conntrack_nat_help {
|
||||
/* insert nat helper private data here */
|
||||
struct ip_nat_pptp nat_pptp_info;
|
||||
};
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
@@ -223,6 +234,7 @@ struct ip_conntrack
|
||||
#ifdef CONFIG_IP_NF_NAT_NEEDED
|
||||
struct {
|
||||
struct ip_nat_info info;
|
||||
union ip_conntrack_nat_help help;
|
||||
#if defined(CONFIG_IP_NF_TARGET_MASQUERADE) || \
|
||||
defined(CONFIG_IP_NF_TARGET_MASQUERADE_MODULE)
|
||||
int masq_index;
|
||||
@@ -372,7 +384,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_get(const struct ip_conntrack_tuple *tuple);
|
||||
ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple);
|
||||
|
||||
extern struct ip_conntrack_tuple_hash *
|
||||
__ip_conntrack_find(const struct ip_conntrack_tuple *tuple,
|
||||
|
||||
332
include/linux/netfilter_ipv4/ip_conntrack_pptp.h
Normal file
332
include/linux/netfilter_ipv4/ip_conntrack_pptp.h
Normal file
@@ -0,0 +1,332 @@
|
||||
/* PPTP constants and structs */
|
||||
#ifndef _CONNTRACK_PPTP_H
|
||||
#define _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 ip_ct_pptp_master {
|
||||
enum pptp_ctrlsess_state sstate; /* session state */
|
||||
|
||||
/* everything below is going to be per-expectation in newnat,
|
||||
* since there could be more than one call within one session */
|
||||
enum pptp_ctrlcall_state cstate; /* call state */
|
||||
u_int16_t pac_call_id; /* call id of PAC, host byte order */
|
||||
u_int16_t pns_call_id; /* call id of PNS, host byte order */
|
||||
|
||||
/* 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 ip_ct_gre_keymap *keymap_orig, *keymap_reply;
|
||||
};
|
||||
|
||||
/* conntrack_expect private member */
|
||||
struct ip_ct_pptp_expect {
|
||||
enum pptp_ctrlcall_state cstate; /* call state */
|
||||
u_int16_t pac_call_id; /* call id of PAC */
|
||||
u_int16_t pns_call_id; /* call id of PNS */
|
||||
};
|
||||
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#define IP_CONNTR_PPTP PPTP_CONTROL_PORT
|
||||
|
||||
#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;
|
||||
__u16 packetType;
|
||||
__u32 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 {
|
||||
__u16 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 {
|
||||
__u16 protocolVersion;
|
||||
__u8 reserved1;
|
||||
__u8 reserved2;
|
||||
__u32 framingCapability;
|
||||
__u32 bearerCapability;
|
||||
__u16 maxChannels;
|
||||
__u16 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 {
|
||||
__u16 protocolVersion;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__u32 framingCapability;
|
||||
__u32 bearerCapability;
|
||||
__u16 maxChannels;
|
||||
__u16 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;
|
||||
};
|
||||
|
||||
/* PptpStopSessionResultCode */
|
||||
#define PPTP_STOP_OK 1
|
||||
#define PPTP_STOP_GENERAL_ERROR 2
|
||||
|
||||
struct PptpStopSessionReply {
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
};
|
||||
|
||||
struct PptpEchoRequest {
|
||||
__u32 identNumber;
|
||||
};
|
||||
|
||||
/* PptpEchoReplyResultCode */
|
||||
#define PPTP_ECHO_OK 1
|
||||
#define PPTP_ECHO_GENERAL_ERROR 2
|
||||
|
||||
struct PptpEchoReply {
|
||||
__u32 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 {
|
||||
__u16 callID;
|
||||
__u16 callSerialNumber;
|
||||
__u32 minBPS;
|
||||
__u32 maxBPS;
|
||||
__u32 bearerType;
|
||||
__u32 framingType;
|
||||
__u16 packetWindow;
|
||||
__u16 packetProcDelay;
|
||||
__u16 reserved1;
|
||||
__u16 phoneNumberLength;
|
||||
__u16 reserved2;
|
||||
__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 {
|
||||
__u16 callID;
|
||||
__u16 peersCallID;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__u16 causeCode;
|
||||
__u32 connectSpeed;
|
||||
__u16 packetWindow;
|
||||
__u16 packetProcDelay;
|
||||
__u32 physChannelID;
|
||||
};
|
||||
|
||||
struct PptpInCallRequest {
|
||||
__u16 callID;
|
||||
__u16 callSerialNumber;
|
||||
__u32 callBearerType;
|
||||
__u32 physChannelID;
|
||||
__u16 dialedNumberLength;
|
||||
__u16 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 {
|
||||
__u16 callID;
|
||||
__u16 peersCallID;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__u16 packetWindow;
|
||||
__u16 packetProcDelay;
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
struct PptpInCallConnected {
|
||||
__u16 peersCallID;
|
||||
__u16 reserved;
|
||||
__u32 connectSpeed;
|
||||
__u16 packetWindow;
|
||||
__u16 packetProcDelay;
|
||||
__u32 callFramingType;
|
||||
};
|
||||
|
||||
struct PptpClearCallRequest {
|
||||
__u16 callID;
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
struct PptpCallDisconnectNotify {
|
||||
__u16 callID;
|
||||
__u8 resultCode;
|
||||
__u8 generalErrorCode;
|
||||
__u16 causeCode;
|
||||
__u16 reserved;
|
||||
__u8 callStatistics[128];
|
||||
};
|
||||
|
||||
struct PptpWanErrorNotify {
|
||||
__u16 peersCallID;
|
||||
__u16 reserved;
|
||||
__u32 crcErrors;
|
||||
__u32 framingErrors;
|
||||
__u32 hardwareOverRuns;
|
||||
__u32 bufferOverRuns;
|
||||
__u32 timeoutErrors;
|
||||
__u32 alignmentErrors;
|
||||
};
|
||||
|
||||
struct PptpSetLinkInfo {
|
||||
__u16 peersCallID;
|
||||
__u16 reserved;
|
||||
__u32 sendAccm;
|
||||
__u32 recvAccm;
|
||||
};
|
||||
|
||||
|
||||
struct pptp_priv_data {
|
||||
__u16 call_id;
|
||||
__u16 mcall_id;
|
||||
__u16 pcall_id;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
extern int
|
||||
(*ip_nat_pptp_hook_outbound)(struct sk_buff **pskb,
|
||||
struct ip_conntrack *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
struct PptpControlHeader *ctlh,
|
||||
union pptp_ctrl_union *pptpReq);
|
||||
|
||||
extern int
|
||||
(*ip_nat_pptp_hook_inbound)(struct sk_buff **pskb,
|
||||
struct ip_conntrack *ct,
|
||||
enum ip_conntrack_info ctinfo,
|
||||
struct PptpControlHeader *ctlh,
|
||||
union pptp_ctrl_union *pptpReq);
|
||||
|
||||
extern int
|
||||
(*ip_nat_pptp_hook_exp_gre)(struct ip_conntrack_expect *exp_orig,
|
||||
struct ip_conntrack_expect *exp_reply);
|
||||
|
||||
extern void
|
||||
(*ip_nat_pptp_hook_expectfn)(struct ip_conntrack *ct,
|
||||
struct ip_conntrack_expect *exp);
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _CONNTRACK_PPTP_H */
|
||||
114
include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
Normal file
114
include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h
Normal file
@@ -0,0 +1,114 @@
|
||||
#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
|
||||
__u16 protocol;
|
||||
};
|
||||
|
||||
/* modified GRE header for PPTP */
|
||||
struct gre_hdr_pptp {
|
||||
__u8 flags; /* bitfield */
|
||||
__u8 version; /* should be GRE_VERSION_PPTP */
|
||||
__u16 protocol; /* should be GRE_PROTOCOL_PPTP */
|
||||
__u16 payload_len; /* size of ppp payload, not inc. gre header */
|
||||
__u16 call_id; /* peer's call_id for this session */
|
||||
__u32 seq; /* sequence number. Present if S==1 */
|
||||
__u32 ack; /* seq number of highest packet recieved by */
|
||||
/* sender in this session */
|
||||
};
|
||||
|
||||
|
||||
/* this is part of ip_conntrack */
|
||||
struct ip_ct_gre {
|
||||
unsigned int stream_timeout;
|
||||
unsigned int timeout;
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct ip_conntrack_expect;
|
||||
struct ip_conntrack;
|
||||
|
||||
/* structure for original <-> reply keymap */
|
||||
struct ip_ct_gre_keymap {
|
||||
struct list_head list;
|
||||
|
||||
struct ip_conntrack_tuple tuple;
|
||||
};
|
||||
|
||||
/* add new tuple->key_reply pair to keymap */
|
||||
int ip_ct_gre_keymap_add(struct ip_conntrack *ct,
|
||||
struct ip_conntrack_tuple *t,
|
||||
int reply);
|
||||
|
||||
/* delete keymap entries */
|
||||
void ip_ct_gre_keymap_destroy(struct ip_conntrack *ct);
|
||||
|
||||
|
||||
/* get pointer to gre key, if present */
|
||||
static inline u_int32_t *gre_key(struct gre_hdr *greh)
|
||||
{
|
||||
if (!greh->key)
|
||||
return NULL;
|
||||
if (greh->csum || greh->routing)
|
||||
return (u_int32_t *) (greh+sizeof(*greh)+4);
|
||||
return (u_int32_t *) (greh+sizeof(*greh));
|
||||
}
|
||||
|
||||
/* get pointer ot gre csum, if present */
|
||||
static inline u_int16_t *gre_csum(struct gre_hdr *greh)
|
||||
{
|
||||
if (!greh->csum)
|
||||
return NULL;
|
||||
return (u_int16_t *) (greh+sizeof(*greh));
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _CONNTRACK_PROTO_GRE_H */
|
||||
@@ -28,6 +28,9 @@ union ip_conntrack_manip_proto
|
||||
struct {
|
||||
u_int16_t port;
|
||||
} sctp;
|
||||
struct {
|
||||
u_int16_t key; /* key is 32bit, pptp only uses 16 */
|
||||
} gre;
|
||||
};
|
||||
|
||||
/* The manipulable part of the tuple. */
|
||||
@@ -61,6 +64,10 @@ struct ip_conntrack_tuple
|
||||
struct {
|
||||
u_int16_t port;
|
||||
} sctp;
|
||||
struct {
|
||||
u_int16_t key; /* key is 32bit,
|
||||
* pptp only uses 16 */
|
||||
} gre;
|
||||
} u;
|
||||
|
||||
/* The protocol. */
|
||||
|
||||
11
include/linux/netfilter_ipv4/ip_nat_pptp.h
Normal file
11
include/linux/netfilter_ipv4/ip_nat_pptp.h
Normal file
@@ -0,0 +1,11 @@
|
||||
/* PPTP constants and structs */
|
||||
#ifndef _NAT_PPTP_H
|
||||
#define _NAT_PPTP_H
|
||||
|
||||
/* conntrack private data */
|
||||
struct ip_nat_pptp {
|
||||
u_int16_t pns_call_id; /* NAT'ed PNS call id */
|
||||
u_int16_t pac_call_id; /* NAT'ed PAC call id */
|
||||
};
|
||||
|
||||
#endif /* _NAT_PPTP_H */
|
||||
@@ -455,6 +455,9 @@ extern unsigned int ip6t_do_table(struct sk_buff **pskb,
|
||||
|
||||
/* Check for an extension */
|
||||
extern int ip6t_ext_hdr(u8 nexthdr);
|
||||
/* find specified header and get offset to it */
|
||||
extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
|
||||
u8 target);
|
||||
|
||||
#define IP6T_ALIGN(s) (((s) + (__alignof__(struct ip6t_entry)-1)) & ~(__alignof__(struct ip6t_entry)-1))
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#define NETLINK_IP6_FW 13
|
||||
#define NETLINK_DNRTMSG 14 /* DECnet routing messages */
|
||||
#define NETLINK_KOBJECT_UEVENT 15 /* Kernel messages to userspace */
|
||||
#define NETLINK_GENERIC 16
|
||||
|
||||
#define MAX_LINKS 32
|
||||
|
||||
|
||||
@@ -491,6 +491,7 @@
|
||||
#define PCI_DEVICE_ID_AMI_MEGARAID2 0x9060
|
||||
|
||||
#define PCI_VENDOR_ID_AMD 0x1022
|
||||
#define PCI_DEVICE_ID_AMD_K8_NB 0x1100
|
||||
#define PCI_DEVICE_ID_AMD_LANCE 0x2000
|
||||
#define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001
|
||||
#define PCI_DEVICE_ID_AMD_SCSI 0x2020
|
||||
@@ -1356,7 +1357,7 @@
|
||||
#define PCI_DEVICE_ID_RME_DIGI96 0x3fc0
|
||||
#define PCI_DEVICE_ID_RME_DIGI96_8 0x3fc1
|
||||
#define PCI_DEVICE_ID_RME_DIGI96_8_PRO 0x3fc2
|
||||
#define PCI_DEVICE_IDRME__DIGI96_8_PAD_OR_PST 0x3fc3
|
||||
#define PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST 0x3fc3
|
||||
#define PCI_DEVICE_ID_XILINX_HAMMERFALL 0x3fc4
|
||||
#define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5
|
||||
#define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6
|
||||
@@ -2253,6 +2254,9 @@
|
||||
|
||||
#define PCI_VENDOR_ID_INFINICON 0x1820
|
||||
|
||||
#define PCI_VENDOR_ID_SITECOM 0x182d
|
||||
#define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069
|
||||
|
||||
#define PCI_VENDOR_ID_TOPSPIN 0x1867
|
||||
|
||||
#define PCI_VENDOR_ID_TDI 0x192E
|
||||
|
||||
@@ -508,5 +508,7 @@ asmlinkage long sys_keyctl(int cmd, unsigned long arg2, unsigned long arg3,
|
||||
|
||||
asmlinkage long sys_ioprio_set(int which, int who, int ioprio);
|
||||
asmlinkage long sys_ioprio_get(int which, int who);
|
||||
asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask,
|
||||
unsigned long maxnode);
|
||||
|
||||
#endif
|
||||
|
||||
35
include/linux/tfrc.h
Normal file
35
include/linux/tfrc.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#ifndef _LINUX_TFRC_H_
|
||||
#define _LINUX_TFRC_H_
|
||||
/*
|
||||
* include/linux/tfrc.h
|
||||
*
|
||||
* Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand.
|
||||
* Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz>
|
||||
* Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br>
|
||||
* Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon
|
||||
*
|
||||
* 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 of the License, or
|
||||
* (at your option) any later version.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct tfrc_rx_info {
|
||||
__u32 tfrcrx_x_recv;
|
||||
__u32 tfrcrx_rtt;
|
||||
__u32 tfrcrx_p;
|
||||
};
|
||||
|
||||
struct tfrc_tx_info {
|
||||
__u32 tfrctx_x;
|
||||
__u32 tfrctx_x_recv;
|
||||
__u32 tfrctx_x_calc;
|
||||
__u32 tfrctx_rtt;
|
||||
__u32 tfrctx_p;
|
||||
__u32 tfrctx_rto;
|
||||
__u32 tfrctx_ipi;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_TFRC_H_ */
|
||||
Reference in New Issue
Block a user