diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-09-23 19:03:21 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-09-23 19:03:21 -0400 |
| commit | 536f8098026bde1368bbfcbcb9682a7637b73df2 (patch) | |
| tree | cf83d2e1afa503b6aeba103b55cd1da0af4e7a4c /include/linux | |
| parent | e86ee6682b649183c11013a98be02f25e9ae399d (diff) | |
| parent | 3fd07d3bf0077dcc0f5a33d2eb1938ea050da8da (diff) | |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/byteorder/generic.h | 4 | ||||
| -rw-r--r-- | include/linux/dccp.h | 59 | ||||
| -rw-r--r-- | include/linux/device.h | 5 | ||||
| -rw-r--r-- | include/linux/i2c.h | 5 | ||||
| -rw-r--r-- | include/linux/if_vlan.h | 8 | ||||
| -rw-r--r-- | include/linux/joystick.h | 24 | ||||
| -rw-r--r-- | include/linux/mm.h | 10 | ||||
| -rw-r--r-- | include/linux/netfilter_ipv4/ip_conntrack.h | 14 | ||||
| -rw-r--r-- | include/linux/netfilter_ipv4/ip_conntrack_pptp.h | 332 | ||||
| -rw-r--r-- | include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h | 114 | ||||
| -rw-r--r-- | include/linux/netfilter_ipv4/ip_conntrack_tuple.h | 7 | ||||
| -rw-r--r-- | include/linux/netfilter_ipv4/ip_nat_pptp.h | 11 | ||||
| -rw-r--r-- | include/linux/netfilter_ipv6/ip6_tables.h | 3 | ||||
| -rw-r--r-- | include/linux/netlink.h | 1 | ||||
| -rw-r--r-- | include/linux/pci_ids.h | 6 | ||||
| -rw-r--r-- | include/linux/syscalls.h | 2 | ||||
| -rw-r--r-- | include/linux/tfrc.h | 35 |
17 files changed, 592 insertions, 48 deletions
diff --git a/include/linux/byteorder/generic.h b/include/linux/byteorder/generic.h index 5fde6f4d6c1e..04bd756efc67 100644 --- a/include/linux/byteorder/generic.h +++ b/include/linux/byteorder/generic.h | |||
| @@ -5,6 +5,10 @@ | |||
| 5 | * linux/byteorder_generic.h | 5 | * linux/byteorder_generic.h |
| 6 | * Generic Byte-reordering support | 6 | * Generic Byte-reordering support |
| 7 | * | 7 | * |
| 8 | * The "... p" macros, like le64_to_cpup, can be used with pointers | ||
| 9 | * to unaligned data, but there will be a performance penalty on | ||
| 10 | * some architectures. Use get_unaligned for unaligned data. | ||
| 11 | * | ||
| 8 | * Francois-Rene Rideau <fare@tunes.org> 19970707 | 12 | * Francois-Rene Rideau <fare@tunes.org> 19970707 |
| 9 | * gathered all the good ideas from all asm-foo/byteorder.h into one file, | 13 | * gathered all the good ideas from all asm-foo/byteorder.h into one file, |
| 10 | * cleaned them up. | 14 | * cleaned them up. |
diff --git a/include/linux/dccp.h b/include/linux/dccp.h index 8bf4bacb5051..71fab4311e92 100644 --- a/include/linux/dccp.h +++ b/include/linux/dccp.h | |||
| @@ -4,16 +4,6 @@ | |||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | #include <asm/byteorder.h> | 5 | #include <asm/byteorder.h> |
| 6 | 6 | ||
| 7 | /* Structure describing an Internet (DCCP) socket address. */ | ||
| 8 | struct sockaddr_dccp { | ||
| 9 | __u16 sdccp_family; /* Address family */ | ||
| 10 | __u16 sdccp_port; /* Port number */ | ||
| 11 | __u32 sdccp_addr; /* Internet address */ | ||
| 12 | __u32 sdccp_service; /* Service */ | ||
| 13 | /* Pad to size of `struct sockaddr': 16 bytes . */ | ||
| 14 | __u32 sdccp_pad; | ||
| 15 | }; | ||
| 16 | |||
| 17 | /** | 7 | /** |
| 18 | * struct dccp_hdr - generic part of DCCP packet header | 8 | * struct dccp_hdr - generic part of DCCP packet header |
| 19 | * | 9 | * |
| @@ -188,6 +178,11 @@ enum { | |||
| 188 | 178 | ||
| 189 | /* DCCP socket options */ | 179 | /* DCCP socket options */ |
| 190 | #define DCCP_SOCKOPT_PACKET_SIZE 1 | 180 | #define DCCP_SOCKOPT_PACKET_SIZE 1 |
| 181 | #define DCCP_SOCKOPT_SERVICE 2 | ||
| 182 | #define DCCP_SOCKOPT_CCID_RX_INFO 128 | ||
| 183 | #define DCCP_SOCKOPT_CCID_TX_INFO 192 | ||
| 184 | |||
| 185 | #define DCCP_SERVICE_LIST_MAX_LEN 32 | ||
| 191 | 186 | ||
| 192 | #ifdef __KERNEL__ | 187 | #ifdef __KERNEL__ |
| 193 | 188 | ||
| @@ -337,7 +332,8 @@ static inline unsigned int dccp_hdr_len(const struct sk_buff *skb) | |||
| 337 | */ | 332 | */ |
| 338 | struct dccp_options { | 333 | struct dccp_options { |
| 339 | __u64 dccpo_sequence_window; | 334 | __u64 dccpo_sequence_window; |
| 340 | __u8 dccpo_ccid; | 335 | __u8 dccpo_rx_ccid; |
| 336 | __u8 dccpo_tx_ccid; | ||
| 341 | __u8 dccpo_send_ack_vector; | 337 | __u8 dccpo_send_ack_vector; |
| 342 | __u8 dccpo_send_ndp_count; | 338 | __u8 dccpo_send_ndp_count; |
| 343 | }; | 339 | }; |
| @@ -360,14 +356,8 @@ static inline struct dccp_request_sock *dccp_rsk(const struct request_sock *req) | |||
| 360 | 356 | ||
| 361 | extern struct inet_timewait_death_row dccp_death_row; | 357 | extern struct inet_timewait_death_row dccp_death_row; |
| 362 | 358 | ||
| 363 | /* Read about the ECN nonce to see why it is 253 */ | ||
| 364 | #define DCCP_MAX_ACK_VECTOR_LEN 253 | ||
| 365 | |||
| 366 | struct dccp_options_received { | 359 | struct dccp_options_received { |
| 367 | u32 dccpor_ndp:24, | 360 | u32 dccpor_ndp; /* only 24 bits */ |
| 368 | dccpor_ack_vector_len:8; | ||
| 369 | u32 dccpor_ack_vector_idx:10; | ||
| 370 | /* 22 bits hole, try to pack */ | ||
| 371 | u32 dccpor_timestamp; | 361 | u32 dccpor_timestamp; |
| 372 | u32 dccpor_timestamp_echo; | 362 | u32 dccpor_timestamp_echo; |
| 373 | u32 dccpor_elapsed_time; | 363 | u32 dccpor_elapsed_time; |
| @@ -382,6 +372,27 @@ enum dccp_role { | |||
| 382 | DCCP_ROLE_SERVER, | 372 | DCCP_ROLE_SERVER, |
| 383 | }; | 373 | }; |
| 384 | 374 | ||
| 375 | struct dccp_service_list { | ||
| 376 | __u32 dccpsl_nr; | ||
| 377 | __u32 dccpsl_list[0]; | ||
| 378 | }; | ||
| 379 | |||
| 380 | #define DCCP_SERVICE_INVALID_VALUE htonl((__u32)-1) | ||
| 381 | |||
| 382 | static inline int dccp_list_has_service(const struct dccp_service_list *sl, | ||
| 383 | const u32 service) | ||
| 384 | { | ||
| 385 | if (likely(sl != NULL)) { | ||
| 386 | u32 i = sl->dccpsl_nr; | ||
| 387 | while (i--) | ||
| 388 | if (sl->dccpsl_list[i] == service) | ||
| 389 | return 1; | ||
| 390 | } | ||
| 391 | return 0; | ||
| 392 | } | ||
| 393 | |||
| 394 | struct dccp_ackvec; | ||
| 395 | |||
| 385 | /** | 396 | /** |
| 386 | * struct dccp_sock - DCCP socket state | 397 | * struct dccp_sock - DCCP socket state |
| 387 | * | 398 | * |
| @@ -402,7 +413,7 @@ enum dccp_role { | |||
| 402 | * @dccps_packet_size - Set thru setsockopt | 413 | * @dccps_packet_size - Set thru setsockopt |
| 403 | * @dccps_role - Role of this sock, one of %dccp_role | 414 | * @dccps_role - Role of this sock, one of %dccp_role |
| 404 | * @dccps_ndp_count - number of Non Data Packets since last data packet | 415 | * @dccps_ndp_count - number of Non Data Packets since last data packet |
| 405 | * @dccps_hc_rx_ackpkts - receiver half connection acked packets | 416 | * @dccps_hc_rx_ackvec - rx half connection ack vector |
| 406 | */ | 417 | */ |
| 407 | struct dccp_sock { | 418 | struct dccp_sock { |
| 408 | /* inet_connection_sock has to be the first member of dccp_sock */ | 419 | /* inet_connection_sock has to be the first member of dccp_sock */ |
| @@ -417,7 +428,8 @@ struct dccp_sock { | |||
| 417 | __u64 dccps_gss; | 428 | __u64 dccps_gss; |
| 418 | __u64 dccps_gsr; | 429 | __u64 dccps_gsr; |
| 419 | __u64 dccps_gar; | 430 | __u64 dccps_gar; |
| 420 | unsigned long dccps_service; | 431 | __u32 dccps_service; |
| 432 | struct dccp_service_list *dccps_service_list; | ||
| 421 | struct timeval dccps_timestamp_time; | 433 | struct timeval dccps_timestamp_time; |
| 422 | __u32 dccps_timestamp_echo; | 434 | __u32 dccps_timestamp_echo; |
| 423 | __u32 dccps_packet_size; | 435 | __u32 dccps_packet_size; |
| @@ -426,7 +438,7 @@ struct dccp_sock { | |||
| 426 | __u32 dccps_pmtu_cookie; | 438 | __u32 dccps_pmtu_cookie; |
| 427 | __u32 dccps_mss_cache; | 439 | __u32 dccps_mss_cache; |
| 428 | struct dccp_options dccps_options; | 440 | struct dccp_options dccps_options; |
| 429 | struct dccp_ackpkts *dccps_hc_rx_ackpkts; | 441 | struct dccp_ackvec *dccps_hc_rx_ackvec; |
| 430 | void *dccps_hc_rx_ccid_private; | 442 | void *dccps_hc_rx_ccid_private; |
| 431 | void *dccps_hc_tx_ccid_private; | 443 | void *dccps_hc_tx_ccid_private; |
| 432 | struct ccid *dccps_hc_rx_ccid; | 444 | struct ccid *dccps_hc_rx_ccid; |
| @@ -443,6 +455,11 @@ static inline struct dccp_sock *dccp_sk(const struct sock *sk) | |||
| 443 | return (struct dccp_sock *)sk; | 455 | return (struct dccp_sock *)sk; |
| 444 | } | 456 | } |
| 445 | 457 | ||
| 458 | static inline int dccp_service_not_initialized(const struct sock *sk) | ||
| 459 | { | ||
| 460 | return dccp_sk(sk)->dccps_service == DCCP_SERVICE_INVALID_VALUE; | ||
| 461 | } | ||
| 462 | |||
| 446 | static inline const char *dccp_role(const struct sock *sk) | 463 | static inline const char *dccp_role(const struct sock *sk) |
| 447 | { | 464 | { |
| 448 | switch (dccp_sk(sk)->dccps_role) { | 465 | switch (dccp_sk(sk)->dccps_role) { |
diff --git a/include/linux/device.h b/include/linux/device.h index 06e5d42f2c7b..95d607a48f06 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -317,6 +317,11 @@ dev_set_drvdata (struct device *dev, void *data) | |||
| 317 | dev->driver_data = data; | 317 | dev->driver_data = data; |
| 318 | } | 318 | } |
| 319 | 319 | ||
| 320 | static inline int device_is_registered(struct device *dev) | ||
| 321 | { | ||
| 322 | return klist_node_attached(&dev->knode_bus); | ||
| 323 | } | ||
| 324 | |||
| 320 | /* | 325 | /* |
| 321 | * High level routines for use by the bus drivers | 326 | * High level routines for use by the bus drivers |
| 322 | */ | 327 | */ |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index be35332b67e6..3d49a305bf88 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
| @@ -230,11 +230,6 @@ struct i2c_adapter { | |||
| 230 | struct device dev; /* the adapter device */ | 230 | struct device dev; /* the adapter device */ |
| 231 | struct class_device class_dev; /* the class device */ | 231 | struct class_device class_dev; /* the class device */ |
| 232 | 232 | ||
| 233 | #ifdef CONFIG_PROC_FS | ||
| 234 | /* No need to set this when you initialize the adapter */ | ||
| 235 | int inode; | ||
| 236 | #endif /* def CONFIG_PROC_FS */ | ||
| 237 | |||
| 238 | int nr; | 233 | int nr; |
| 239 | struct list_head clients; | 234 | struct list_head clients; |
| 240 | struct list_head list; | 235 | struct list_head list; |
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index 17d0c0d40b0e..eef0876d8307 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h | |||
| @@ -42,8 +42,8 @@ struct hlist_node; | |||
| 42 | struct vlan_ethhdr { | 42 | struct vlan_ethhdr { |
| 43 | unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ | 43 | unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ |
| 44 | unsigned char h_source[ETH_ALEN]; /* source ether addr */ | 44 | unsigned char h_source[ETH_ALEN]; /* source ether addr */ |
| 45 | unsigned short h_vlan_proto; /* Should always be 0x8100 */ | 45 | __be16 h_vlan_proto; /* Should always be 0x8100 */ |
| 46 | unsigned short h_vlan_TCI; /* Encapsulates priority and VLAN ID */ | 46 | __be16 h_vlan_TCI; /* Encapsulates priority and VLAN ID */ |
| 47 | unsigned short h_vlan_encapsulated_proto; /* packet type ID field (or len) */ | 47 | unsigned short h_vlan_encapsulated_proto; /* packet type ID field (or len) */ |
| 48 | }; | 48 | }; |
| 49 | 49 | ||
| @@ -55,8 +55,8 @@ static inline struct vlan_ethhdr *vlan_eth_hdr(const struct sk_buff *skb) | |||
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | struct vlan_hdr { | 57 | struct vlan_hdr { |
| 58 | unsigned short h_vlan_TCI; /* Encapsulates priority and VLAN ID */ | 58 | __be16 h_vlan_TCI; /* Encapsulates priority and VLAN ID */ |
| 59 | unsigned short h_vlan_encapsulated_proto; /* packet type ID field (or len) */ | 59 | __be16 h_vlan_encapsulated_proto; /* packet type ID field (or len) */ |
| 60 | }; | 60 | }; |
| 61 | 61 | ||
| 62 | #define VLAN_VID_MASK 0xfff | 62 | #define VLAN_VID_MASK 0xfff |
diff --git a/include/linux/joystick.h b/include/linux/joystick.h index 06b9af77eb7f..5fd20ddd7ae3 100644 --- a/include/linux/joystick.h +++ b/include/linux/joystick.h | |||
| @@ -111,29 +111,30 @@ struct js_corr { | |||
| 111 | #define JS_SET_ALL 8 | 111 | #define JS_SET_ALL 8 |
| 112 | 112 | ||
| 113 | struct JS_DATA_TYPE { | 113 | struct JS_DATA_TYPE { |
| 114 | __s32 buttons; | 114 | int32_t buttons; |
| 115 | __s32 x; | 115 | int32_t x; |
| 116 | __s32 y; | 116 | int32_t y; |
| 117 | }; | 117 | }; |
| 118 | 118 | ||
| 119 | struct JS_DATA_SAVE_TYPE_32 { | 119 | struct JS_DATA_SAVE_TYPE_32 { |
| 120 | __s32 JS_TIMEOUT; | 120 | int32_t JS_TIMEOUT; |
| 121 | __s32 BUSY; | 121 | int32_t BUSY; |
| 122 | __s32 JS_EXPIRETIME; | 122 | int32_t JS_EXPIRETIME; |
| 123 | __s32 JS_TIMELIMIT; | 123 | int32_t JS_TIMELIMIT; |
| 124 | struct JS_DATA_TYPE JS_SAVE; | 124 | struct JS_DATA_TYPE JS_SAVE; |
| 125 | struct JS_DATA_TYPE JS_CORR; | 125 | struct JS_DATA_TYPE JS_CORR; |
| 126 | }; | 126 | }; |
| 127 | 127 | ||
| 128 | struct JS_DATA_SAVE_TYPE_64 { | 128 | struct JS_DATA_SAVE_TYPE_64 { |
| 129 | __s32 JS_TIMEOUT; | 129 | int32_t JS_TIMEOUT; |
| 130 | __s32 BUSY; | 130 | int32_t BUSY; |
| 131 | __s64 JS_EXPIRETIME; | 131 | int64_t JS_EXPIRETIME; |
| 132 | __s64 JS_TIMELIMIT; | 132 | int64_t JS_TIMELIMIT; |
| 133 | struct JS_DATA_TYPE JS_SAVE; | 133 | struct JS_DATA_TYPE JS_SAVE; |
| 134 | struct JS_DATA_TYPE JS_CORR; | 134 | struct JS_DATA_TYPE JS_CORR; |
| 135 | }; | 135 | }; |
| 136 | 136 | ||
| 137 | #ifdef __KERNEL__ | ||
| 137 | #if BITS_PER_LONG == 64 | 138 | #if BITS_PER_LONG == 64 |
| 138 | #define JS_DATA_SAVE_TYPE JS_DATA_SAVE_TYPE_64 | 139 | #define JS_DATA_SAVE_TYPE JS_DATA_SAVE_TYPE_64 |
| 139 | #elif BITS_PER_LONG == 32 | 140 | #elif BITS_PER_LONG == 32 |
| @@ -141,5 +142,6 @@ struct JS_DATA_SAVE_TYPE_64 { | |||
| 141 | #else | 142 | #else |
| 142 | #error Unexpected BITS_PER_LONG | 143 | #error Unexpected BITS_PER_LONG |
| 143 | #endif | 144 | #endif |
| 145 | #endif | ||
| 144 | 146 | ||
| 145 | #endif /* _LINUX_JOYSTICK_H */ | 147 | #endif /* _LINUX_JOYSTICK_H */ |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 82d7024f0765..097b3a3c693d 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -136,6 +136,7 @@ extern unsigned int kobjsize(const void *objp); | |||
| 136 | #define VM_EXEC 0x00000004 | 136 | #define VM_EXEC 0x00000004 |
| 137 | #define VM_SHARED 0x00000008 | 137 | #define VM_SHARED 0x00000008 |
| 138 | 138 | ||
| 139 | /* mprotect() hardcodes VM_MAYREAD >> 4 == VM_READ, and so for r/w/x bits. */ | ||
| 139 | #define VM_MAYREAD 0x00000010 /* limits for mprotect() etc */ | 140 | #define VM_MAYREAD 0x00000010 /* limits for mprotect() etc */ |
| 140 | #define VM_MAYWRITE 0x00000020 | 141 | #define VM_MAYWRITE 0x00000020 |
| 141 | #define VM_MAYEXEC 0x00000040 | 142 | #define VM_MAYEXEC 0x00000040 |
| @@ -350,7 +351,8 @@ static inline void put_page(struct page *page) | |||
| 350 | * only one copy in memory, at most, normally. | 351 | * only one copy in memory, at most, normally. |
| 351 | * | 352 | * |
| 352 | * For the non-reserved pages, page_count(page) denotes a reference count. | 353 | * For the non-reserved pages, page_count(page) denotes a reference count. |
| 353 | * page_count() == 0 means the page is free. | 354 | * page_count() == 0 means the page is free. page->lru is then used for |
| 355 | * freelist management in the buddy allocator. | ||
| 354 | * page_count() == 1 means the page is used for exactly one purpose | 356 | * page_count() == 1 means the page is used for exactly one purpose |
| 355 | * (e.g. a private data page of one process). | 357 | * (e.g. a private data page of one process). |
| 356 | * | 358 | * |
| @@ -376,10 +378,8 @@ static inline void put_page(struct page *page) | |||
| 376 | * attaches, plus 1 if `private' contains something, plus one for | 378 | * attaches, plus 1 if `private' contains something, plus one for |
| 377 | * the page cache itself. | 379 | * the page cache itself. |
| 378 | * | 380 | * |
| 379 | * All pages belonging to an inode are in these doubly linked lists: | 381 | * Instead of keeping dirty/clean pages in per address-space lists, we instead |
| 380 | * mapping->clean_pages, mapping->dirty_pages and mapping->locked_pages; | 382 | * now tag pages as dirty/under writeback in the radix tree. |
| 381 | * using the page->list list_head. These fields are also used for | ||
| 382 | * freelist managemet (when page_count()==0). | ||
| 383 | * | 383 | * |
| 384 | * There is also a per-mapping radix tree mapping index to the page | 384 | * There is also a per-mapping radix tree mapping index to the page |
| 385 | * in memory if present. The tree is rooted at mapping->root. | 385 | * in memory if present. The tree is rooted at mapping->root. |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack.h b/include/linux/netfilter_ipv4/ip_conntrack.h index 7e033e9271a8..bace72a76cc4 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack.h +++ b/include/linux/netfilter_ipv4/ip_conntrack.h | |||
| @@ -133,11 +133,13 @@ enum ip_conntrack_expect_events { | |||
| 133 | 133 | ||
| 134 | #include <linux/netfilter_ipv4/ip_conntrack_tcp.h> | 134 | #include <linux/netfilter_ipv4/ip_conntrack_tcp.h> |
| 135 | #include <linux/netfilter_ipv4/ip_conntrack_icmp.h> | 135 | #include <linux/netfilter_ipv4/ip_conntrack_icmp.h> |
| 136 | #include <linux/netfilter_ipv4/ip_conntrack_proto_gre.h> | ||
| 136 | #include <linux/netfilter_ipv4/ip_conntrack_sctp.h> | 137 | #include <linux/netfilter_ipv4/ip_conntrack_sctp.h> |
| 137 | 138 | ||
| 138 | /* per conntrack: protocol private data */ | 139 | /* per conntrack: protocol private data */ |
| 139 | union ip_conntrack_proto { | 140 | union ip_conntrack_proto { |
| 140 | /* insert conntrack proto private data here */ | 141 | /* insert conntrack proto private data here */ |
| 142 | struct ip_ct_gre gre; | ||
| 141 | struct ip_ct_sctp sctp; | 143 | struct ip_ct_sctp sctp; |
| 142 | struct ip_ct_tcp tcp; | 144 | struct ip_ct_tcp tcp; |
| 143 | struct ip_ct_icmp icmp; | 145 | struct ip_ct_icmp icmp; |
| @@ -148,6 +150,7 @@ union ip_conntrack_expect_proto { | |||
| 148 | }; | 150 | }; |
| 149 | 151 | ||
| 150 | /* Add protocol helper include file here */ | 152 | /* Add protocol helper include file here */ |
| 153 | #include <linux/netfilter_ipv4/ip_conntrack_pptp.h> | ||
| 151 | #include <linux/netfilter_ipv4/ip_conntrack_amanda.h> | 154 | #include <linux/netfilter_ipv4/ip_conntrack_amanda.h> |
| 152 | #include <linux/netfilter_ipv4/ip_conntrack_ftp.h> | 155 | #include <linux/netfilter_ipv4/ip_conntrack_ftp.h> |
| 153 | #include <linux/netfilter_ipv4/ip_conntrack_irc.h> | 156 | #include <linux/netfilter_ipv4/ip_conntrack_irc.h> |
| @@ -155,12 +158,20 @@ union ip_conntrack_expect_proto { | |||
| 155 | /* per conntrack: application helper private data */ | 158 | /* per conntrack: application helper private data */ |
| 156 | union ip_conntrack_help { | 159 | union ip_conntrack_help { |
| 157 | /* insert conntrack helper private data (master) here */ | 160 | /* insert conntrack helper private data (master) here */ |
| 161 | struct ip_ct_pptp_master ct_pptp_info; | ||
| 158 | struct ip_ct_ftp_master ct_ftp_info; | 162 | struct ip_ct_ftp_master ct_ftp_info; |
| 159 | struct ip_ct_irc_master ct_irc_info; | 163 | struct ip_ct_irc_master ct_irc_info; |
| 160 | }; | 164 | }; |
| 161 | 165 | ||
| 162 | #ifdef CONFIG_IP_NF_NAT_NEEDED | 166 | #ifdef CONFIG_IP_NF_NAT_NEEDED |
| 163 | #include <linux/netfilter_ipv4/ip_nat.h> | 167 | #include <linux/netfilter_ipv4/ip_nat.h> |
| 168 | #include <linux/netfilter_ipv4/ip_nat_pptp.h> | ||
| 169 | |||
| 170 | /* per conntrack: nat application helper private data */ | ||
| 171 | union ip_conntrack_nat_help { | ||
| 172 | /* insert nat helper private data here */ | ||
| 173 | struct ip_nat_pptp nat_pptp_info; | ||
| 174 | }; | ||
| 164 | #endif | 175 | #endif |
| 165 | 176 | ||
| 166 | #include <linux/types.h> | 177 | #include <linux/types.h> |
| @@ -223,6 +234,7 @@ struct ip_conntrack | |||
| 223 | #ifdef CONFIG_IP_NF_NAT_NEEDED | 234 | #ifdef CONFIG_IP_NF_NAT_NEEDED |
| 224 | struct { | 235 | struct { |
| 225 | struct ip_nat_info info; | 236 | struct ip_nat_info info; |
| 237 | union ip_conntrack_nat_help help; | ||
| 226 | #if defined(CONFIG_IP_NF_TARGET_MASQUERADE) || \ | 238 | #if defined(CONFIG_IP_NF_TARGET_MASQUERADE) || \ |
| 227 | defined(CONFIG_IP_NF_TARGET_MASQUERADE_MODULE) | 239 | defined(CONFIG_IP_NF_TARGET_MASQUERADE_MODULE) |
| 228 | int masq_index; | 240 | int masq_index; |
| @@ -372,7 +384,7 @@ extern struct ip_conntrack_expect * | |||
| 372 | __ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple); | 384 | __ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple); |
| 373 | 385 | ||
| 374 | extern struct ip_conntrack_expect * | 386 | extern struct ip_conntrack_expect * |
| 375 | ip_conntrack_expect_find_get(const struct ip_conntrack_tuple *tuple); | 387 | ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple); |
| 376 | 388 | ||
| 377 | extern struct ip_conntrack_tuple_hash * | 389 | extern struct ip_conntrack_tuple_hash * |
| 378 | __ip_conntrack_find(const struct ip_conntrack_tuple *tuple, | 390 | __ip_conntrack_find(const struct ip_conntrack_tuple *tuple, |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_pptp.h b/include/linux/netfilter_ipv4/ip_conntrack_pptp.h new file mode 100644 index 000000000000..389e3851d52f --- /dev/null +++ b/include/linux/netfilter_ipv4/ip_conntrack_pptp.h | |||
| @@ -0,0 +1,332 @@ | |||
| 1 | /* PPTP constants and structs */ | ||
| 2 | #ifndef _CONNTRACK_PPTP_H | ||
| 3 | #define _CONNTRACK_PPTP_H | ||
| 4 | |||
| 5 | /* state of the control session */ | ||
| 6 | enum pptp_ctrlsess_state { | ||
| 7 | PPTP_SESSION_NONE, /* no session present */ | ||
| 8 | PPTP_SESSION_ERROR, /* some session error */ | ||
| 9 | PPTP_SESSION_STOPREQ, /* stop_sess request seen */ | ||
| 10 | PPTP_SESSION_REQUESTED, /* start_sess request seen */ | ||
| 11 | PPTP_SESSION_CONFIRMED, /* session established */ | ||
| 12 | }; | ||
| 13 | |||
| 14 | /* state of the call inside the control session */ | ||
| 15 | enum pptp_ctrlcall_state { | ||
| 16 | PPTP_CALL_NONE, | ||
| 17 | PPTP_CALL_ERROR, | ||
| 18 | PPTP_CALL_OUT_REQ, | ||
| 19 | PPTP_CALL_OUT_CONF, | ||
| 20 | PPTP_CALL_IN_REQ, | ||
| 21 | PPTP_CALL_IN_REP, | ||
| 22 | PPTP_CALL_IN_CONF, | ||
| 23 | PPTP_CALL_CLEAR_REQ, | ||
| 24 | }; | ||
| 25 | |||
| 26 | |||
| 27 | /* conntrack private data */ | ||
| 28 | struct ip_ct_pptp_master { | ||
| 29 | enum pptp_ctrlsess_state sstate; /* session state */ | ||
| 30 | |||
| 31 | /* everything below is going to be per-expectation in newnat, | ||
| 32 | * since there could be more than one call within one session */ | ||
| 33 | enum pptp_ctrlcall_state cstate; /* call state */ | ||
| 34 | u_int16_t pac_call_id; /* call id of PAC, host byte order */ | ||
| 35 | u_int16_t pns_call_id; /* call id of PNS, host byte order */ | ||
| 36 | |||
| 37 | /* in pre-2.6.11 this used to be per-expect. Now it is per-conntrack | ||
| 38 | * and therefore imposes a fixed limit on the number of maps */ | ||
| 39 | struct ip_ct_gre_keymap *keymap_orig, *keymap_reply; | ||
| 40 | }; | ||
| 41 | |||
| 42 | /* conntrack_expect private member */ | ||
| 43 | struct ip_ct_pptp_expect { | ||
| 44 | enum pptp_ctrlcall_state cstate; /* call state */ | ||
| 45 | u_int16_t pac_call_id; /* call id of PAC */ | ||
| 46 | u_int16_t pns_call_id; /* call id of PNS */ | ||
| 47 | }; | ||
| 48 | |||
| 49 | |||
| 50 | #ifdef __KERNEL__ | ||
| 51 | |||
| 52 | #define IP_CONNTR_PPTP PPTP_CONTROL_PORT | ||
| 53 | |||
| 54 | #define PPTP_CONTROL_PORT 1723 | ||
| 55 | |||
| 56 | #define PPTP_PACKET_CONTROL 1 | ||
| 57 | #define PPTP_PACKET_MGMT 2 | ||
| 58 | |||
| 59 | #define PPTP_MAGIC_COOKIE 0x1a2b3c4d | ||
| 60 | |||
| 61 | struct pptp_pkt_hdr { | ||
| 62 | __u16 packetLength; | ||
| 63 | __u16 packetType; | ||
| 64 | __u32 magicCookie; | ||
| 65 | }; | ||
| 66 | |||
| 67 | /* PptpControlMessageType values */ | ||
| 68 | #define PPTP_START_SESSION_REQUEST 1 | ||
| 69 | #define PPTP_START_SESSION_REPLY 2 | ||
| 70 | #define PPTP_STOP_SESSION_REQUEST 3 | ||
| 71 | #define PPTP_STOP_SESSION_REPLY 4 | ||
| 72 | #define PPTP_ECHO_REQUEST 5 | ||
| 73 | #define PPTP_ECHO_REPLY 6 | ||
| 74 | #define PPTP_OUT_CALL_REQUEST 7 | ||
| 75 | #define PPTP_OUT_CALL_REPLY 8 | ||
| 76 | #define PPTP_IN_CALL_REQUEST 9 | ||
| 77 | #define PPTP_IN_CALL_REPLY 10 | ||
| 78 | #define PPTP_IN_CALL_CONNECT 11 | ||
| 79 | #define PPTP_CALL_CLEAR_REQUEST 12 | ||
| 80 | #define PPTP_CALL_DISCONNECT_NOTIFY 13 | ||
| 81 | #define PPTP_WAN_ERROR_NOTIFY 14 | ||
| 82 | #define PPTP_SET_LINK_INFO 15 | ||
| 83 | |||
| 84 | #define PPTP_MSG_MAX 15 | ||
| 85 | |||
| 86 | /* PptpGeneralError values */ | ||
| 87 | #define PPTP_ERROR_CODE_NONE 0 | ||
| 88 | #define PPTP_NOT_CONNECTED 1 | ||
| 89 | #define PPTP_BAD_FORMAT 2 | ||
| 90 | #define PPTP_BAD_VALUE 3 | ||
| 91 | #define PPTP_NO_RESOURCE 4 | ||
| 92 | #define PPTP_BAD_CALLID 5 | ||
| 93 | #define PPTP_REMOVE_DEVICE_ERROR 6 | ||
| 94 | |||
| 95 | struct PptpControlHeader { | ||
| 96 | __u16 messageType; | ||
| 97 | __u16 reserved; | ||
| 98 | }; | ||
| 99 | |||
| 100 | /* FramingCapability Bitmap Values */ | ||
| 101 | #define PPTP_FRAME_CAP_ASYNC 0x1 | ||
| 102 | #define PPTP_FRAME_CAP_SYNC 0x2 | ||
| 103 | |||
| 104 | /* BearerCapability Bitmap Values */ | ||
| 105 | #define PPTP_BEARER_CAP_ANALOG 0x1 | ||
| 106 | #define PPTP_BEARER_CAP_DIGITAL 0x2 | ||
| 107 | |||
| 108 | struct PptpStartSessionRequest { | ||
| 109 | __u16 protocolVersion; | ||
| 110 | __u8 reserved1; | ||
| 111 | __u8 reserved2; | ||
| 112 | __u32 framingCapability; | ||
| 113 | __u32 bearerCapability; | ||
| 114 | __u16 maxChannels; | ||
| 115 | __u16 firmwareRevision; | ||
| 116 | __u8 hostName[64]; | ||
| 117 | __u8 vendorString[64]; | ||
| 118 | }; | ||
| 119 | |||
| 120 | /* PptpStartSessionResultCode Values */ | ||
| 121 | #define PPTP_START_OK 1 | ||
| 122 | #define PPTP_START_GENERAL_ERROR 2 | ||
| 123 | #define PPTP_START_ALREADY_CONNECTED 3 | ||
| 124 | #define PPTP_START_NOT_AUTHORIZED 4 | ||
| 125 | #define PPTP_START_UNKNOWN_PROTOCOL 5 | ||
| 126 | |||
| 127 | struct PptpStartSessionReply { | ||
| 128 | __u16 protocolVersion; | ||
| 129 | __u8 resultCode; | ||
| 130 | __u8 generalErrorCode; | ||
| 131 | __u32 framingCapability; | ||
| 132 | __u32 bearerCapability; | ||
| 133 | __u16 maxChannels; | ||
| 134 | __u16 firmwareRevision; | ||
| 135 | __u8 hostName[64]; | ||
| 136 | __u8 vendorString[64]; | ||
| 137 | }; | ||
| 138 | |||
| 139 | /* PptpStopReasons */ | ||
| 140 | #define PPTP_STOP_NONE 1 | ||
| 141 | #define PPTP_STOP_PROTOCOL 2 | ||
| 142 | #define PPTP_STOP_LOCAL_SHUTDOWN 3 | ||
| 143 | |||
| 144 | struct PptpStopSessionRequest { | ||
| 145 | __u8 reason; | ||
| 146 | }; | ||
| 147 | |||
| 148 | /* PptpStopSessionResultCode */ | ||
| 149 | #define PPTP_STOP_OK 1 | ||
| 150 | #define PPTP_STOP_GENERAL_ERROR 2 | ||
| 151 | |||
| 152 | struct PptpStopSessionReply { | ||
| 153 | __u8 resultCode; | ||
| 154 | __u8 generalErrorCode; | ||
| 155 | }; | ||
| 156 | |||
| 157 | struct PptpEchoRequest { | ||
| 158 | __u32 identNumber; | ||
| 159 | }; | ||
| 160 | |||
| 161 | /* PptpEchoReplyResultCode */ | ||
| 162 | #define PPTP_ECHO_OK 1 | ||
| 163 | #define PPTP_ECHO_GENERAL_ERROR 2 | ||
| 164 | |||
| 165 | struct PptpEchoReply { | ||
| 166 | __u32 identNumber; | ||
| 167 | __u8 resultCode; | ||
| 168 | __u8 generalErrorCode; | ||
| 169 | __u16 reserved; | ||
| 170 | }; | ||
| 171 | |||
| 172 | /* PptpFramingType */ | ||
| 173 | #define PPTP_ASYNC_FRAMING 1 | ||
| 174 | #define PPTP_SYNC_FRAMING 2 | ||
| 175 | #define PPTP_DONT_CARE_FRAMING 3 | ||
| 176 | |||
| 177 | /* PptpCallBearerType */ | ||
| 178 | #define PPTP_ANALOG_TYPE 1 | ||
| 179 | #define PPTP_DIGITAL_TYPE 2 | ||
| 180 | #define PPTP_DONT_CARE_BEARER_TYPE 3 | ||
| 181 | |||
| 182 | struct PptpOutCallRequest { | ||
| 183 | __u16 callID; | ||
| 184 | __u16 callSerialNumber; | ||
| 185 | __u32 minBPS; | ||
| 186 | __u32 maxBPS; | ||
| 187 | __u32 bearerType; | ||
| 188 | __u32 framingType; | ||
| 189 | __u16 packetWindow; | ||
| 190 | __u16 packetProcDelay; | ||
| 191 | __u16 reserved1; | ||
| 192 | __u16 phoneNumberLength; | ||
| 193 | __u16 reserved2; | ||
| 194 | __u8 phoneNumber[64]; | ||
| 195 | __u8 subAddress[64]; | ||
| 196 | }; | ||
| 197 | |||
| 198 | /* PptpCallResultCode */ | ||
| 199 | #define PPTP_OUTCALL_CONNECT 1 | ||
| 200 | #define PPTP_OUTCALL_GENERAL_ERROR 2 | ||
| 201 | #define PPTP_OUTCALL_NO_CARRIER 3 | ||
| 202 | #define PPTP_OUTCALL_BUSY 4 | ||
| 203 | #define PPTP_OUTCALL_NO_DIAL_TONE 5 | ||
| 204 | #define PPTP_OUTCALL_TIMEOUT 6 | ||
| 205 | #define PPTP_OUTCALL_DONT_ACCEPT 7 | ||
| 206 | |||
| 207 | struct PptpOutCallReply { | ||
| 208 | __u16 callID; | ||
| 209 | __u16 peersCallID; | ||
| 210 | __u8 resultCode; | ||
| 211 | __u8 generalErrorCode; | ||
| 212 | __u16 causeCode; | ||
| 213 | __u32 connectSpeed; | ||
| 214 | __u16 packetWindow; | ||
| 215 | __u16 packetProcDelay; | ||
| 216 | __u32 physChannelID; | ||
| 217 | }; | ||
| 218 | |||
| 219 | struct PptpInCallRequest { | ||
| 220 | __u16 callID; | ||
| 221 | __u16 callSerialNumber; | ||
| 222 | __u32 callBearerType; | ||
| 223 | __u32 physChannelID; | ||
| 224 | __u16 dialedNumberLength; | ||
| 225 | __u16 dialingNumberLength; | ||
| 226 | __u8 dialedNumber[64]; | ||
| 227 | __u8 dialingNumber[64]; | ||
| 228 | __u8 subAddress[64]; | ||
| 229 | }; | ||
| 230 | |||
| 231 | /* PptpInCallResultCode */ | ||
| 232 | #define PPTP_INCALL_ACCEPT 1 | ||
| 233 | #define PPTP_INCALL_GENERAL_ERROR 2 | ||
| 234 | #define PPTP_INCALL_DONT_ACCEPT 3 | ||
| 235 | |||
| 236 | struct PptpInCallReply { | ||
| 237 | __u16 callID; | ||
| 238 | __u16 peersCallID; | ||
| 239 | __u8 resultCode; | ||
| 240 | __u8 generalErrorCode; | ||
| 241 | __u16 packetWindow; | ||
| 242 | __u16 packetProcDelay; | ||
| 243 | __u16 reserved; | ||
| 244 | }; | ||
| 245 | |||
| 246 | struct PptpInCallConnected { | ||
| 247 | __u16 peersCallID; | ||
| 248 | __u16 reserved; | ||
| 249 | __u32 connectSpeed; | ||
| 250 | __u16 packetWindow; | ||
| 251 | __u16 packetProcDelay; | ||
| 252 | __u32 callFramingType; | ||
| 253 | }; | ||
| 254 | |||
| 255 | struct PptpClearCallRequest { | ||
| 256 | __u16 callID; | ||
| 257 | __u16 reserved; | ||
| 258 | }; | ||
| 259 | |||
| 260 | struct PptpCallDisconnectNotify { | ||
| 261 | __u16 callID; | ||
| 262 | __u8 resultCode; | ||
| 263 | __u8 generalErrorCode; | ||
| 264 | __u16 causeCode; | ||
| 265 | __u16 reserved; | ||
| 266 | __u8 callStatistics[128]; | ||
| 267 | }; | ||
| 268 | |||
| 269 | struct PptpWanErrorNotify { | ||
| 270 | __u16 peersCallID; | ||
| 271 | __u16 reserved; | ||
| 272 | __u32 crcErrors; | ||
| 273 | __u32 framingErrors; | ||
| 274 | __u32 hardwareOverRuns; | ||
| 275 | __u32 bufferOverRuns; | ||
| 276 | __u32 timeoutErrors; | ||
| 277 | __u32 alignmentErrors; | ||
| 278 | }; | ||
| 279 | |||
| 280 | struct PptpSetLinkInfo { | ||
| 281 | __u16 peersCallID; | ||
| 282 | __u16 reserved; | ||
| 283 | __u32 sendAccm; | ||
| 284 | __u32 recvAccm; | ||
| 285 | }; | ||
| 286 | |||
| 287 | |||
| 288 | struct pptp_priv_data { | ||
| 289 | __u16 call_id; | ||
| 290 | __u16 mcall_id; | ||
| 291 | __u16 pcall_id; | ||
| 292 | }; | ||
| 293 | |||
| 294 | union pptp_ctrl_union { | ||
| 295 | struct PptpStartSessionRequest sreq; | ||
| 296 | struct PptpStartSessionReply srep; | ||
| 297 | struct PptpStopSessionRequest streq; | ||
| 298 | struct PptpStopSessionReply strep; | ||
| 299 | struct PptpOutCallRequest ocreq; | ||
| 300 | struct PptpOutCallReply ocack; | ||
| 301 | struct PptpInCallRequest icreq; | ||
| 302 | struct PptpInCallReply icack; | ||
| 303 | struct PptpInCallConnected iccon; | ||
| 304 | struct PptpClearCallRequest clrreq; | ||
| 305 | struct PptpCallDisconnectNotify disc; | ||
| 306 | struct PptpWanErrorNotify wanerr; | ||
| 307 | struct PptpSetLinkInfo setlink; | ||
| 308 | }; | ||
| 309 | |||
| 310 | extern int | ||
| 311 | (*ip_nat_pptp_hook_outbound)(struct sk_buff **pskb, | ||
| 312 | struct ip_conntrack *ct, | ||
| 313 | enum ip_conntrack_info ctinfo, | ||
| 314 | struct PptpControlHeader *ctlh, | ||
| 315 | union pptp_ctrl_union *pptpReq); | ||
| 316 | |||
| 317 | extern int | ||
| 318 | (*ip_nat_pptp_hook_inbound)(struct sk_buff **pskb, | ||
| 319 | struct ip_conntrack *ct, | ||
| 320 | enum ip_conntrack_info ctinfo, | ||
| 321 | struct PptpControlHeader *ctlh, | ||
| 322 | union pptp_ctrl_union *pptpReq); | ||
| 323 | |||
| 324 | extern int | ||
| 325 | (*ip_nat_pptp_hook_exp_gre)(struct ip_conntrack_expect *exp_orig, | ||
| 326 | struct ip_conntrack_expect *exp_reply); | ||
| 327 | |||
| 328 | extern void | ||
| 329 | (*ip_nat_pptp_hook_expectfn)(struct ip_conntrack *ct, | ||
| 330 | struct ip_conntrack_expect *exp); | ||
| 331 | #endif /* __KERNEL__ */ | ||
| 332 | #endif /* _CONNTRACK_PPTP_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h b/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h new file mode 100644 index 000000000000..8d090ef82f5f --- /dev/null +++ b/include/linux/netfilter_ipv4/ip_conntrack_proto_gre.h | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | #ifndef _CONNTRACK_PROTO_GRE_H | ||
| 2 | #define _CONNTRACK_PROTO_GRE_H | ||
| 3 | #include <asm/byteorder.h> | ||
| 4 | |||
| 5 | /* GRE PROTOCOL HEADER */ | ||
| 6 | |||
| 7 | /* GRE Version field */ | ||
| 8 | #define GRE_VERSION_1701 0x0 | ||
| 9 | #define GRE_VERSION_PPTP 0x1 | ||
| 10 | |||
| 11 | /* GRE Protocol field */ | ||
| 12 | #define GRE_PROTOCOL_PPTP 0x880B | ||
| 13 | |||
| 14 | /* GRE Flags */ | ||
| 15 | #define GRE_FLAG_C 0x80 | ||
| 16 | #define GRE_FLAG_R 0x40 | ||
| 17 | #define GRE_FLAG_K 0x20 | ||
| 18 | #define GRE_FLAG_S 0x10 | ||
| 19 | #define GRE_FLAG_A 0x80 | ||
| 20 | |||
| 21 | #define GRE_IS_C(f) ((f)&GRE_FLAG_C) | ||
| 22 | #define GRE_IS_R(f) ((f)&GRE_FLAG_R) | ||
| 23 | #define GRE_IS_K(f) ((f)&GRE_FLAG_K) | ||
| 24 | #define GRE_IS_S(f) ((f)&GRE_FLAG_S) | ||
| 25 | #define GRE_IS_A(f) ((f)&GRE_FLAG_A) | ||
| 26 | |||
| 27 | /* GRE is a mess: Four different standards */ | ||
| 28 | struct gre_hdr { | ||
| 29 | #if defined(__LITTLE_ENDIAN_BITFIELD) | ||
| 30 | __u16 rec:3, | ||
| 31 | srr:1, | ||
| 32 | seq:1, | ||
| 33 | key:1, | ||
| 34 | routing:1, | ||
| 35 | csum:1, | ||
| 36 | version:3, | ||
| 37 | reserved:4, | ||
| 38 | ack:1; | ||
| 39 | #elif defined(__BIG_ENDIAN_BITFIELD) | ||
| 40 | __u16 csum:1, | ||
| 41 | routing:1, | ||
| 42 | key:1, | ||
| 43 | seq:1, | ||
| 44 | srr:1, | ||
| 45 | rec:3, | ||
| 46 | ack:1, | ||
| 47 | reserved:4, | ||
| 48 | version:3; | ||
| 49 | #else | ||
| 50 | #error "Adjust your <asm/byteorder.h> defines" | ||
| 51 | #endif | ||
| 52 | __u16 protocol; | ||
| 53 | }; | ||
| 54 | |||
| 55 | /* modified GRE header for PPTP */ | ||
| 56 | struct gre_hdr_pptp { | ||
| 57 | __u8 flags; /* bitfield */ | ||
| 58 | __u8 version; /* should be GRE_VERSION_PPTP */ | ||
| 59 | __u16 protocol; /* should be GRE_PROTOCOL_PPTP */ | ||
| 60 | __u16 payload_len; /* size of ppp payload, not inc. gre header */ | ||
| 61 | __u16 call_id; /* peer's call_id for this session */ | ||
| 62 | __u32 seq; /* sequence number. Present if S==1 */ | ||
| 63 | __u32 ack; /* seq number of highest packet recieved by */ | ||
| 64 | /* sender in this session */ | ||
| 65 | }; | ||
| 66 | |||
| 67 | |||
| 68 | /* this is part of ip_conntrack */ | ||
| 69 | struct ip_ct_gre { | ||
| 70 | unsigned int stream_timeout; | ||
| 71 | unsigned int timeout; | ||
| 72 | }; | ||
| 73 | |||
| 74 | #ifdef __KERNEL__ | ||
| 75 | struct ip_conntrack_expect; | ||
| 76 | struct ip_conntrack; | ||
| 77 | |||
| 78 | /* structure for original <-> reply keymap */ | ||
| 79 | struct ip_ct_gre_keymap { | ||
| 80 | struct list_head list; | ||
| 81 | |||
| 82 | struct ip_conntrack_tuple tuple; | ||
| 83 | }; | ||
| 84 | |||
| 85 | /* add new tuple->key_reply pair to keymap */ | ||
| 86 | int ip_ct_gre_keymap_add(struct ip_conntrack *ct, | ||
| 87 | struct ip_conntrack_tuple *t, | ||
| 88 | int reply); | ||
| 89 | |||
| 90 | /* delete keymap entries */ | ||
| 91 | void ip_ct_gre_keymap_destroy(struct ip_conntrack *ct); | ||
| 92 | |||
| 93 | |||
| 94 | /* get pointer to gre key, if present */ | ||
| 95 | static inline u_int32_t *gre_key(struct gre_hdr *greh) | ||
| 96 | { | ||
| 97 | if (!greh->key) | ||
| 98 | return NULL; | ||
| 99 | if (greh->csum || greh->routing) | ||
| 100 | return (u_int32_t *) (greh+sizeof(*greh)+4); | ||
| 101 | return (u_int32_t *) (greh+sizeof(*greh)); | ||
| 102 | } | ||
| 103 | |||
| 104 | /* get pointer ot gre csum, if present */ | ||
| 105 | static inline u_int16_t *gre_csum(struct gre_hdr *greh) | ||
| 106 | { | ||
| 107 | if (!greh->csum) | ||
| 108 | return NULL; | ||
| 109 | return (u_int16_t *) (greh+sizeof(*greh)); | ||
| 110 | } | ||
| 111 | |||
| 112 | #endif /* __KERNEL__ */ | ||
| 113 | |||
| 114 | #endif /* _CONNTRACK_PROTO_GRE_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_tuple.h b/include/linux/netfilter_ipv4/ip_conntrack_tuple.h index c33f0b5e0d0a..14dc0f7b6556 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack_tuple.h +++ b/include/linux/netfilter_ipv4/ip_conntrack_tuple.h | |||
| @@ -28,6 +28,9 @@ union ip_conntrack_manip_proto | |||
| 28 | struct { | 28 | struct { |
| 29 | u_int16_t port; | 29 | u_int16_t port; |
| 30 | } sctp; | 30 | } sctp; |
| 31 | struct { | ||
| 32 | u_int16_t key; /* key is 32bit, pptp only uses 16 */ | ||
| 33 | } gre; | ||
| 31 | }; | 34 | }; |
| 32 | 35 | ||
| 33 | /* The manipulable part of the tuple. */ | 36 | /* The manipulable part of the tuple. */ |
| @@ -61,6 +64,10 @@ struct ip_conntrack_tuple | |||
| 61 | struct { | 64 | struct { |
| 62 | u_int16_t port; | 65 | u_int16_t port; |
| 63 | } sctp; | 66 | } sctp; |
| 67 | struct { | ||
| 68 | u_int16_t key; /* key is 32bit, | ||
| 69 | * pptp only uses 16 */ | ||
| 70 | } gre; | ||
| 64 | } u; | 71 | } u; |
| 65 | 72 | ||
| 66 | /* The protocol. */ | 73 | /* The protocol. */ |
diff --git a/include/linux/netfilter_ipv4/ip_nat_pptp.h b/include/linux/netfilter_ipv4/ip_nat_pptp.h new file mode 100644 index 000000000000..eaf66c2e8f93 --- /dev/null +++ b/include/linux/netfilter_ipv4/ip_nat_pptp.h | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | /* PPTP constants and structs */ | ||
| 2 | #ifndef _NAT_PPTP_H | ||
| 3 | #define _NAT_PPTP_H | ||
| 4 | |||
| 5 | /* conntrack private data */ | ||
| 6 | struct ip_nat_pptp { | ||
| 7 | u_int16_t pns_call_id; /* NAT'ed PNS call id */ | ||
| 8 | u_int16_t pac_call_id; /* NAT'ed PAC call id */ | ||
| 9 | }; | ||
| 10 | |||
| 11 | #endif /* _NAT_PPTP_H */ | ||
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h index 58c72a52dc65..59f70b34e029 100644 --- a/include/linux/netfilter_ipv6/ip6_tables.h +++ b/include/linux/netfilter_ipv6/ip6_tables.h | |||
| @@ -455,6 +455,9 @@ extern unsigned int ip6t_do_table(struct sk_buff **pskb, | |||
| 455 | 455 | ||
| 456 | /* Check for an extension */ | 456 | /* Check for an extension */ |
| 457 | extern int ip6t_ext_hdr(u8 nexthdr); | 457 | extern int ip6t_ext_hdr(u8 nexthdr); |
| 458 | /* find specified header and get offset to it */ | ||
| 459 | extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, | ||
| 460 | u8 target); | ||
| 458 | 461 | ||
| 459 | #define IP6T_ALIGN(s) (((s) + (__alignof__(struct ip6t_entry)-1)) & ~(__alignof__(struct ip6t_entry)-1)) | 462 | #define IP6T_ALIGN(s) (((s) + (__alignof__(struct ip6t_entry)-1)) & ~(__alignof__(struct ip6t_entry)-1)) |
| 460 | 463 | ||
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 7bbd25970c9e..bdebdc564506 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #define NETLINK_IP6_FW 13 | 20 | #define NETLINK_IP6_FW 13 |
| 21 | #define NETLINK_DNRTMSG 14 /* DECnet routing messages */ | 21 | #define NETLINK_DNRTMSG 14 /* DECnet routing messages */ |
| 22 | #define NETLINK_KOBJECT_UEVENT 15 /* Kernel messages to userspace */ | 22 | #define NETLINK_KOBJECT_UEVENT 15 /* Kernel messages to userspace */ |
| 23 | #define NETLINK_GENERIC 16 | ||
| 23 | 24 | ||
| 24 | #define MAX_LINKS 32 | 25 | #define MAX_LINKS 32 |
| 25 | 26 | ||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index cb414ea42f02..b86a4b77007e 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -491,6 +491,7 @@ | |||
| 491 | #define PCI_DEVICE_ID_AMI_MEGARAID2 0x9060 | 491 | #define PCI_DEVICE_ID_AMI_MEGARAID2 0x9060 |
| 492 | 492 | ||
| 493 | #define PCI_VENDOR_ID_AMD 0x1022 | 493 | #define PCI_VENDOR_ID_AMD 0x1022 |
| 494 | #define PCI_DEVICE_ID_AMD_K8_NB 0x1100 | ||
| 494 | #define PCI_DEVICE_ID_AMD_LANCE 0x2000 | 495 | #define PCI_DEVICE_ID_AMD_LANCE 0x2000 |
| 495 | #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 | 496 | #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 |
| 496 | #define PCI_DEVICE_ID_AMD_SCSI 0x2020 | 497 | #define PCI_DEVICE_ID_AMD_SCSI 0x2020 |
| @@ -1356,7 +1357,7 @@ | |||
| 1356 | #define PCI_DEVICE_ID_RME_DIGI96 0x3fc0 | 1357 | #define PCI_DEVICE_ID_RME_DIGI96 0x3fc0 |
| 1357 | #define PCI_DEVICE_ID_RME_DIGI96_8 0x3fc1 | 1358 | #define PCI_DEVICE_ID_RME_DIGI96_8 0x3fc1 |
| 1358 | #define PCI_DEVICE_ID_RME_DIGI96_8_PRO 0x3fc2 | 1359 | #define PCI_DEVICE_ID_RME_DIGI96_8_PRO 0x3fc2 |
| 1359 | #define PCI_DEVICE_IDRME__DIGI96_8_PAD_OR_PST 0x3fc3 | 1360 | #define PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST 0x3fc3 |
| 1360 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL 0x3fc4 | 1361 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL 0x3fc4 |
| 1361 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5 | 1362 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5 |
| 1362 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6 | 1363 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6 |
| @@ -2253,6 +2254,9 @@ | |||
| 2253 | 2254 | ||
| 2254 | #define PCI_VENDOR_ID_INFINICON 0x1820 | 2255 | #define PCI_VENDOR_ID_INFINICON 0x1820 |
| 2255 | 2256 | ||
| 2257 | #define PCI_VENDOR_ID_SITECOM 0x182d | ||
| 2258 | #define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069 | ||
| 2259 | |||
| 2256 | #define PCI_VENDOR_ID_TOPSPIN 0x1867 | 2260 | #define PCI_VENDOR_ID_TOPSPIN 0x1867 |
| 2257 | 2261 | ||
| 2258 | #define PCI_VENDOR_ID_TDI 0x192E | 2262 | #define PCI_VENDOR_ID_TDI 0x192E |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 425f58c8ea4a..a6f03e473737 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -508,5 +508,7 @@ asmlinkage long sys_keyctl(int cmd, unsigned long arg2, unsigned long arg3, | |||
| 508 | 508 | ||
| 509 | asmlinkage long sys_ioprio_set(int which, int who, int ioprio); | 509 | asmlinkage long sys_ioprio_set(int which, int who, int ioprio); |
| 510 | asmlinkage long sys_ioprio_get(int which, int who); | 510 | asmlinkage long sys_ioprio_get(int which, int who); |
| 511 | asmlinkage long sys_set_mempolicy(int mode, unsigned long __user *nmask, | ||
| 512 | unsigned long maxnode); | ||
| 511 | 513 | ||
| 512 | #endif | 514 | #endif |
diff --git a/include/linux/tfrc.h b/include/linux/tfrc.h new file mode 100644 index 000000000000..7dab7831c3cb --- /dev/null +++ b/include/linux/tfrc.h | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | #ifndef _LINUX_TFRC_H_ | ||
| 2 | #define _LINUX_TFRC_H_ | ||
| 3 | /* | ||
| 4 | * include/linux/tfrc.h | ||
| 5 | * | ||
| 6 | * Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. | ||
| 7 | * Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz> | ||
| 8 | * Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> | ||
| 9 | * Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon | ||
| 10 | * | ||
| 11 | * This program is free software; you can redistribute it and/or modify | ||
| 12 | * it under the terms of the GNU General Public License as published by | ||
| 13 | * the Free Software Foundation; either version 2 of the License, or | ||
| 14 | * (at your option) any later version. | ||
| 15 | */ | ||
| 16 | |||
| 17 | #include <linux/types.h> | ||
| 18 | |||
| 19 | struct tfrc_rx_info { | ||
| 20 | __u32 tfrcrx_x_recv; | ||
| 21 | __u32 tfrcrx_rtt; | ||
| 22 | __u32 tfrcrx_p; | ||
| 23 | }; | ||
| 24 | |||
| 25 | struct tfrc_tx_info { | ||
| 26 | __u32 tfrctx_x; | ||
| 27 | __u32 tfrctx_x_recv; | ||
| 28 | __u32 tfrctx_x_calc; | ||
| 29 | __u32 tfrctx_rtt; | ||
| 30 | __u32 tfrctx_p; | ||
| 31 | __u32 tfrctx_rto; | ||
| 32 | __u32 tfrctx_ipi; | ||
| 33 | }; | ||
| 34 | |||
| 35 | #endif /* _LINUX_TFRC_H_ */ | ||
