diff options
Diffstat (limited to 'include/linux')
41 files changed, 1074 insertions, 191 deletions
diff --git a/include/linux/aio.h b/include/linux/aio.h index a4d5af907f90..60def658b246 100644 --- a/include/linux/aio.h +++ b/include/linux/aio.h | |||
@@ -43,6 +43,40 @@ struct kioctx; | |||
43 | #define kiocbIsKicked(iocb) test_bit(KIF_KICKED, &(iocb)->ki_flags) | 43 | #define kiocbIsKicked(iocb) test_bit(KIF_KICKED, &(iocb)->ki_flags) |
44 | #define kiocbIsCancelled(iocb) test_bit(KIF_CANCELLED, &(iocb)->ki_flags) | 44 | #define kiocbIsCancelled(iocb) test_bit(KIF_CANCELLED, &(iocb)->ki_flags) |
45 | 45 | ||
46 | /* is there a better place to document function pointer methods? */ | ||
47 | /** | ||
48 | * ki_retry - iocb forward progress callback | ||
49 | * @kiocb: The kiocb struct to advance by performing an operation. | ||
50 | * | ||
51 | * This callback is called when the AIO core wants a given AIO operation | ||
52 | * to make forward progress. The kiocb argument describes the operation | ||
53 | * that is to be performed. As the operation proceeds, perhaps partially, | ||
54 | * ki_retry is expected to update the kiocb with progress made. Typically | ||
55 | * ki_retry is set in the AIO core and it itself calls file_operations | ||
56 | * helpers. | ||
57 | * | ||
58 | * ki_retry's return value determines when the AIO operation is completed | ||
59 | * and an event is generated in the AIO event ring. Except the special | ||
60 | * return values described below, the value that is returned from ki_retry | ||
61 | * is transferred directly into the completion ring as the operation's | ||
62 | * resulting status. Once this has happened ki_retry *MUST NOT* reference | ||
63 | * the kiocb pointer again. | ||
64 | * | ||
65 | * If ki_retry returns -EIOCBQUEUED it has made a promise that aio_complete() | ||
66 | * will be called on the kiocb pointer in the future. The AIO core will | ||
67 | * not ask the method again -- ki_retry must ensure forward progress. | ||
68 | * aio_complete() must be called once and only once in the future, multiple | ||
69 | * calls may result in undefined behaviour. | ||
70 | * | ||
71 | * If ki_retry returns -EIOCBRETRY it has made a promise that kick_iocb() | ||
72 | * will be called on the kiocb pointer in the future. This may happen | ||
73 | * through generic helpers that associate kiocb->ki_wait with a wait | ||
74 | * queue head that ki_retry uses via current->io_wait. It can also happen | ||
75 | * with custom tracking and manual calls to kick_iocb(), though that is | ||
76 | * discouraged. In either case, kick_iocb() must be called once and only | ||
77 | * once. ki_retry must ensure forward progress, the AIO core will wait | ||
78 | * indefinitely for kick_iocb() to be called. | ||
79 | */ | ||
46 | struct kiocb { | 80 | struct kiocb { |
47 | struct list_head ki_run_list; | 81 | struct list_head ki_run_list; |
48 | long ki_flags; | 82 | long ki_flags; |
diff --git a/include/linux/audit.h b/include/linux/audit.h index 68aba0c02e49..b2a2509bd7ea 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
@@ -51,7 +51,8 @@ | |||
51 | #define AUDIT_WATCH_LIST 1009 /* List all file/dir watches */ | 51 | #define AUDIT_WATCH_LIST 1009 /* List all file/dir watches */ |
52 | #define AUDIT_SIGNAL_INFO 1010 /* Get info about sender of signal to auditd */ | 52 | #define AUDIT_SIGNAL_INFO 1010 /* Get info about sender of signal to auditd */ |
53 | 53 | ||
54 | #define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages uninteresting to kernel */ | 54 | #define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages mostly uninteresting to kernel */ |
55 | #define AUDIT_USER_AVC 1107 /* We filter this differently */ | ||
55 | #define AUDIT_LAST_USER_MSG 1199 | 56 | #define AUDIT_LAST_USER_MSG 1199 |
56 | 57 | ||
57 | #define AUDIT_DAEMON_START 1200 /* Daemon startup record */ | 58 | #define AUDIT_DAEMON_START 1200 /* Daemon startup record */ |
@@ -75,10 +76,15 @@ | |||
75 | #define AUDIT_KERNEL 2000 /* Asynchronous audit record. NOT A REQUEST. */ | 76 | #define AUDIT_KERNEL 2000 /* Asynchronous audit record. NOT A REQUEST. */ |
76 | 77 | ||
77 | /* Rule flags */ | 78 | /* Rule flags */ |
78 | #define AUDIT_PER_TASK 0x01 /* Apply rule at task creation (not syscall) */ | 79 | #define AUDIT_FILTER_USER 0x00 /* Apply rule to user-generated messages */ |
79 | #define AUDIT_AT_ENTRY 0x02 /* Apply rule at syscall entry */ | 80 | #define AUDIT_FILTER_TASK 0x01 /* Apply rule at task creation (not syscall) */ |
80 | #define AUDIT_AT_EXIT 0x04 /* Apply rule at syscall exit */ | 81 | #define AUDIT_FILTER_ENTRY 0x02 /* Apply rule at syscall entry */ |
81 | #define AUDIT_PREPEND 0x10 /* Prepend to front of list */ | 82 | #define AUDIT_FILTER_WATCH 0x03 /* Apply rule to file system watches */ |
83 | #define AUDIT_FILTER_EXIT 0x04 /* Apply rule at syscall exit */ | ||
84 | |||
85 | #define AUDIT_NR_FILTERS 5 | ||
86 | |||
87 | #define AUDIT_FILTER_PREPEND 0x10 /* Prepend to front of list */ | ||
82 | 88 | ||
83 | /* Rule actions */ | 89 | /* Rule actions */ |
84 | #define AUDIT_NEVER 0 /* Do not build context if rule matches */ | 90 | #define AUDIT_NEVER 0 /* Do not build context if rule matches */ |
@@ -199,6 +205,7 @@ struct audit_sig_info { | |||
199 | struct audit_buffer; | 205 | struct audit_buffer; |
200 | struct audit_context; | 206 | struct audit_context; |
201 | struct inode; | 207 | struct inode; |
208 | struct netlink_skb_parms; | ||
202 | 209 | ||
203 | #define AUDITSC_INVALID 0 | 210 | #define AUDITSC_INVALID 0 |
204 | #define AUDITSC_SUCCESS 1 | 211 | #define AUDITSC_SUCCESS 1 |
@@ -215,7 +222,7 @@ extern void audit_syscall_entry(struct task_struct *task, int arch, | |||
215 | extern void audit_syscall_exit(struct task_struct *task, int failed, long return_code); | 222 | extern void audit_syscall_exit(struct task_struct *task, int failed, long return_code); |
216 | extern void audit_getname(const char *name); | 223 | extern void audit_getname(const char *name); |
217 | extern void audit_putname(const char *name); | 224 | extern void audit_putname(const char *name); |
218 | extern void audit_inode(const char *name, const struct inode *inode); | 225 | extern void audit_inode(const char *name, const struct inode *inode, unsigned flags); |
219 | 226 | ||
220 | /* Private API (for audit.c only) */ | 227 | /* Private API (for audit.c only) */ |
221 | extern int audit_receive_filter(int type, int pid, int uid, int seq, | 228 | extern int audit_receive_filter(int type, int pid, int uid, int seq, |
@@ -230,6 +237,7 @@ extern int audit_socketcall(int nargs, unsigned long *args); | |||
230 | extern int audit_sockaddr(int len, void *addr); | 237 | extern int audit_sockaddr(int len, void *addr); |
231 | extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt); | 238 | extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt); |
232 | extern void audit_signal_info(int sig, struct task_struct *t); | 239 | extern void audit_signal_info(int sig, struct task_struct *t); |
240 | extern int audit_filter_user(struct netlink_skb_parms *cb, int type); | ||
233 | #else | 241 | #else |
234 | #define audit_alloc(t) ({ 0; }) | 242 | #define audit_alloc(t) ({ 0; }) |
235 | #define audit_free(t) do { ; } while (0) | 243 | #define audit_free(t) do { ; } while (0) |
@@ -237,7 +245,7 @@ extern void audit_signal_info(int sig, struct task_struct *t); | |||
237 | #define audit_syscall_exit(t,f,r) do { ; } while (0) | 245 | #define audit_syscall_exit(t,f,r) do { ; } while (0) |
238 | #define audit_getname(n) do { ; } while (0) | 246 | #define audit_getname(n) do { ; } while (0) |
239 | #define audit_putname(n) do { ; } while (0) | 247 | #define audit_putname(n) do { ; } while (0) |
240 | #define audit_inode(n,i) do { ; } while (0) | 248 | #define audit_inode(n,i,f) do { ; } while (0) |
241 | #define audit_receive_filter(t,p,u,s,d,l) ({ -EOPNOTSUPP; }) | 249 | #define audit_receive_filter(t,p,u,s,d,l) ({ -EOPNOTSUPP; }) |
242 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) | 250 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) |
243 | #define audit_get_loginuid(c) ({ -1; }) | 251 | #define audit_get_loginuid(c) ({ -1; }) |
@@ -246,16 +254,17 @@ extern void audit_signal_info(int sig, struct task_struct *t); | |||
246 | #define audit_sockaddr(len, addr) ({ 0; }) | 254 | #define audit_sockaddr(len, addr) ({ 0; }) |
247 | #define audit_avc_path(dentry, mnt) ({ 0; }) | 255 | #define audit_avc_path(dentry, mnt) ({ 0; }) |
248 | #define audit_signal_info(s,t) do { ; } while (0) | 256 | #define audit_signal_info(s,t) do { ; } while (0) |
257 | #define audit_filter_user(cb,t) ({ 1; }) | ||
249 | #endif | 258 | #endif |
250 | 259 | ||
251 | #ifdef CONFIG_AUDIT | 260 | #ifdef CONFIG_AUDIT |
252 | /* These are defined in audit.c */ | 261 | /* These are defined in audit.c */ |
253 | /* Public API */ | 262 | /* Public API */ |
254 | extern void audit_log(struct audit_context *ctx, int type, | 263 | extern void audit_log(struct audit_context *ctx, int gfp_mask, |
255 | const char *fmt, ...) | 264 | int type, const char *fmt, ...) |
256 | __attribute__((format(printf,3,4))); | 265 | __attribute__((format(printf,4,5))); |
257 | 266 | ||
258 | extern struct audit_buffer *audit_log_start(struct audit_context *ctx,int type); | 267 | extern struct audit_buffer *audit_log_start(struct audit_context *ctx, int gfp_mask, int type); |
259 | extern void audit_log_format(struct audit_buffer *ab, | 268 | extern void audit_log_format(struct audit_buffer *ab, |
260 | const char *fmt, ...) | 269 | const char *fmt, ...) |
261 | __attribute__((format(printf,2,3))); | 270 | __attribute__((format(printf,2,3))); |
@@ -274,9 +283,10 @@ extern void audit_send_reply(int pid, int seq, int type, | |||
274 | int done, int multi, | 283 | int done, int multi, |
275 | void *payload, int size); | 284 | void *payload, int size); |
276 | extern void audit_log_lost(const char *message); | 285 | extern void audit_log_lost(const char *message); |
286 | extern struct semaphore audit_netlink_sem; | ||
277 | #else | 287 | #else |
278 | #define audit_log(c,t,f,...) do { ; } while (0) | 288 | #define audit_log(c,g,t,f,...) do { ; } while (0) |
279 | #define audit_log_start(c,t) ({ NULL; }) | 289 | #define audit_log_start(c,g,t) ({ NULL; }) |
280 | #define audit_log_vformat(b,f,a) do { ; } while (0) | 290 | #define audit_log_vformat(b,f,a) do { ; } while (0) |
281 | #define audit_log_format(b,f,...) do { ; } while (0) | 291 | #define audit_log_format(b,f,...) do { ; } while (0) |
282 | #define audit_log_end(b) do { ; } while (0) | 292 | #define audit_log_end(b) do { ; } while (0) |
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/connector.h b/include/linux/connector.h index 96de26301f84..86d4b0a81713 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h | |||
@@ -104,12 +104,19 @@ struct cn_queue_dev { | |||
104 | struct sock *nls; | 104 | struct sock *nls; |
105 | }; | 105 | }; |
106 | 106 | ||
107 | struct cn_callback { | 107 | struct cn_callback_id { |
108 | unsigned char name[CN_CBQ_NAMELEN]; | 108 | unsigned char name[CN_CBQ_NAMELEN]; |
109 | |||
110 | struct cb_id id; | 109 | struct cb_id id; |
110 | }; | ||
111 | |||
112 | struct cn_callback_data { | ||
113 | void (*destruct_data) (void *); | ||
114 | void *ddata; | ||
115 | |||
116 | void *callback_priv; | ||
111 | void (*callback) (void *); | 117 | void (*callback) (void *); |
112 | void *priv; | 118 | |
119 | void *free; | ||
113 | }; | 120 | }; |
114 | 121 | ||
115 | struct cn_callback_entry { | 122 | struct cn_callback_entry { |
@@ -118,8 +125,8 @@ struct cn_callback_entry { | |||
118 | struct work_struct work; | 125 | struct work_struct work; |
119 | struct cn_queue_dev *pdev; | 126 | struct cn_queue_dev *pdev; |
120 | 127 | ||
121 | void (*destruct_data) (void *); | 128 | struct cn_callback_id id; |
122 | void *ddata; | 129 | struct cn_callback_data data; |
123 | 130 | ||
124 | int seq, group; | 131 | int seq, group; |
125 | struct sock *nls; | 132 | struct sock *nls; |
@@ -144,7 +151,7 @@ int cn_add_callback(struct cb_id *, char *, void (*callback) (void *)); | |||
144 | void cn_del_callback(struct cb_id *); | 151 | void cn_del_callback(struct cb_id *); |
145 | int cn_netlink_send(struct cn_msg *, u32, int); | 152 | int cn_netlink_send(struct cn_msg *, u32, int); |
146 | 153 | ||
147 | int cn_queue_add_callback(struct cn_queue_dev *dev, struct cn_callback *cb); | 154 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); |
148 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); | 155 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); |
149 | 156 | ||
150 | struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *); | 157 | struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *); |
@@ -152,6 +159,8 @@ void cn_queue_free_dev(struct cn_queue_dev *dev); | |||
152 | 159 | ||
153 | int cn_cb_equal(struct cb_id *, struct cb_id *); | 160 | int cn_cb_equal(struct cb_id *, struct cb_id *); |
154 | 161 | ||
162 | void cn_queue_wrapper(void *data); | ||
163 | |||
155 | extern int cn_already_initialized; | 164 | extern int cn_already_initialized; |
156 | 165 | ||
157 | #endif /* __KERNEL__ */ | 166 | #endif /* __KERNEL__ */ |
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/fb.h b/include/linux/fb.h index 82e39cd0c4fb..c698055266d0 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
@@ -619,7 +619,7 @@ struct fb_tilemap { | |||
619 | __u32 height; /* height of each tile in scanlines */ | 619 | __u32 height; /* height of each tile in scanlines */ |
620 | __u32 depth; /* color depth of each tile */ | 620 | __u32 depth; /* color depth of each tile */ |
621 | __u32 length; /* number of tiles in the map */ | 621 | __u32 length; /* number of tiles in the map */ |
622 | __u8 *data; /* actual tile map: a bitmap array, packed | 622 | const __u8 *data; /* actual tile map: a bitmap array, packed |
623 | to the nearest byte */ | 623 | to the nearest byte */ |
624 | }; | 624 | }; |
625 | 625 | ||
diff --git a/include/linux/font.h b/include/linux/font.h index 8fc80a7d78ac..53b129f07f6f 100644 --- a/include/linux/font.h +++ b/include/linux/font.h | |||
@@ -15,9 +15,9 @@ | |||
15 | 15 | ||
16 | struct font_desc { | 16 | struct font_desc { |
17 | int idx; | 17 | int idx; |
18 | char *name; | 18 | const char *name; |
19 | int width, height; | 19 | int width, height; |
20 | void *data; | 20 | const void *data; |
21 | int pref; | 21 | int pref; |
22 | }; | 22 | }; |
23 | 23 | ||
@@ -32,7 +32,7 @@ struct font_desc { | |||
32 | #define ACORN8x8_IDX 8 | 32 | #define ACORN8x8_IDX 8 |
33 | #define MINI4x6_IDX 9 | 33 | #define MINI4x6_IDX 9 |
34 | 34 | ||
35 | extern struct font_desc font_vga_8x8, | 35 | extern const struct font_desc font_vga_8x8, |
36 | font_vga_8x16, | 36 | font_vga_8x16, |
37 | font_pearl_8x8, | 37 | font_pearl_8x8, |
38 | font_vga_6x11, | 38 | font_vga_6x11, |
@@ -45,11 +45,11 @@ extern struct font_desc font_vga_8x8, | |||
45 | 45 | ||
46 | /* Find a font with a specific name */ | 46 | /* Find a font with a specific name */ |
47 | 47 | ||
48 | extern struct font_desc *find_font(char *name); | 48 | extern const struct font_desc *find_font(const char *name); |
49 | 49 | ||
50 | /* Get the default font for a specific screen size */ | 50 | /* Get the default font for a specific screen size */ |
51 | 51 | ||
52 | extern struct font_desc *get_default_font(int xres, int yres); | 52 | extern const struct font_desc *get_default_font(int xres, int yres); |
53 | 53 | ||
54 | /* Max. length for the name of a predefined font */ | 54 | /* Max. length for the name of a predefined font */ |
55 | #define MAX_FONT_NAME 32 | 55 | #define MAX_FONT_NAME 32 |
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_ether.h b/include/linux/if_ether.h index fc2d4c8225aa..d21c305c6c64 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h | |||
@@ -111,7 +111,9 @@ static inline struct ethhdr *eth_hdr(const struct sk_buff *skb) | |||
111 | return (struct ethhdr *)skb->mac.raw; | 111 | return (struct ethhdr *)skb->mac.raw; |
112 | } | 112 | } |
113 | 113 | ||
114 | #ifdef CONFIG_SYSCTL | ||
114 | extern struct ctl_table ether_table[]; | 115 | extern struct ctl_table ether_table[]; |
115 | #endif | 116 | #endif |
117 | #endif | ||
116 | 118 | ||
117 | #endif /* _LINUX_IF_ETHER_H */ | 119 | #endif /* _LINUX_IF_ETHER_H */ |
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/inetdevice.h b/include/linux/inetdevice.h index 7e1e15f934f3..fd7af86151b1 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h | |||
@@ -142,13 +142,21 @@ static __inline__ int bad_mask(u32 mask, u32 addr) | |||
142 | 142 | ||
143 | #define endfor_ifa(in_dev) } | 143 | #define endfor_ifa(in_dev) } |
144 | 144 | ||
145 | static inline struct in_device *__in_dev_get_rcu(const struct net_device *dev) | ||
146 | { | ||
147 | struct in_device *in_dev = dev->ip_ptr; | ||
148 | if (in_dev) | ||
149 | in_dev = rcu_dereference(in_dev); | ||
150 | return in_dev; | ||
151 | } | ||
152 | |||
145 | static __inline__ struct in_device * | 153 | static __inline__ struct in_device * |
146 | in_dev_get(const struct net_device *dev) | 154 | in_dev_get(const struct net_device *dev) |
147 | { | 155 | { |
148 | struct in_device *in_dev; | 156 | struct in_device *in_dev; |
149 | 157 | ||
150 | rcu_read_lock(); | 158 | rcu_read_lock(); |
151 | in_dev = dev->ip_ptr; | 159 | in_dev = __in_dev_get_rcu(dev); |
152 | if (in_dev) | 160 | if (in_dev) |
153 | atomic_inc(&in_dev->refcnt); | 161 | atomic_inc(&in_dev->refcnt); |
154 | rcu_read_unlock(); | 162 | rcu_read_unlock(); |
@@ -156,7 +164,7 @@ in_dev_get(const struct net_device *dev) | |||
156 | } | 164 | } |
157 | 165 | ||
158 | static __inline__ struct in_device * | 166 | static __inline__ struct in_device * |
159 | __in_dev_get(const struct net_device *dev) | 167 | __in_dev_get_rtnl(const struct net_device *dev) |
160 | { | 168 | { |
161 | return (struct in_device*)dev->ip_ptr; | 169 | return (struct in_device*)dev->ip_ptr; |
162 | } | 170 | } |
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index bb6f88e14061..e0b922785d98 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -372,8 +372,9 @@ static inline struct raw6_sock *raw6_sk(const struct sock *sk) | |||
372 | #define inet_v6_ipv6only(__sk) 0 | 372 | #define inet_v6_ipv6only(__sk) 0 |
373 | #endif /* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */ | 373 | #endif /* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */ |
374 | 374 | ||
375 | #define INET6_MATCH(__sk, __saddr, __daddr, __ports, __dif) \ | 375 | #define INET6_MATCH(__sk, __hash, __saddr, __daddr, __ports, __dif)\ |
376 | (((*((__u32 *)&(inet_sk(__sk)->dport))) == (__ports)) && \ | 376 | (((__sk)->sk_hash == (__hash)) && \ |
377 | ((*((__u32 *)&(inet_sk(__sk)->dport))) == (__ports)) && \ | ||
377 | ((__sk)->sk_family == AF_INET6) && \ | 378 | ((__sk)->sk_family == AF_INET6) && \ |
378 | ipv6_addr_equal(&inet6_sk(__sk)->daddr, (__saddr)) && \ | 379 | ipv6_addr_equal(&inet6_sk(__sk)->daddr, (__saddr)) && \ |
379 | ipv6_addr_equal(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \ | 380 | ipv6_addr_equal(&inet6_sk(__sk)->rcv_saddr, (__daddr)) && \ |
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/kernel.h b/include/linux/kernel.h index 687ba8c9973d..4367ce4db52a 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -307,8 +307,8 @@ struct sysinfo { | |||
307 | char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */ | 307 | char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */ |
308 | }; | 308 | }; |
309 | 309 | ||
310 | extern void BUILD_BUG(void); | 310 | /* Force a compilation error if condition is false */ |
311 | #define BUILD_BUG_ON(condition) do { if (condition) BUILD_BUG(); } while(0) | 311 | #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) |
312 | 312 | ||
313 | #ifdef CONFIG_SYSCTL | 313 | #ifdef CONFIG_SYSCTL |
314 | extern int randomize_va_space; | 314 | extern int randomize_va_space; |
diff --git a/include/linux/key-ui.h b/include/linux/key-ui.h index cc326174a808..918c34a8347e 100644 --- a/include/linux/key-ui.h +++ b/include/linux/key-ui.h | |||
@@ -42,11 +42,14 @@ struct keyring_list { | |||
42 | /* | 42 | /* |
43 | * check to see whether permission is granted to use a key in the desired way | 43 | * check to see whether permission is granted to use a key in the desired way |
44 | */ | 44 | */ |
45 | static inline int key_permission(const struct key *key, key_perm_t perm) | 45 | static inline int key_permission(const key_ref_t key_ref, key_perm_t perm) |
46 | { | 46 | { |
47 | struct key *key = key_ref_to_ptr(key_ref); | ||
47 | key_perm_t kperm; | 48 | key_perm_t kperm; |
48 | 49 | ||
49 | if (key->uid == current->fsuid) | 50 | if (is_key_possessed(key_ref)) |
51 | kperm = key->perm >> 24; | ||
52 | else if (key->uid == current->fsuid) | ||
50 | kperm = key->perm >> 16; | 53 | kperm = key->perm >> 16; |
51 | else if (key->gid != -1 && | 54 | else if (key->gid != -1 && |
52 | key->perm & KEY_GRP_ALL && | 55 | key->perm & KEY_GRP_ALL && |
@@ -65,11 +68,14 @@ static inline int key_permission(const struct key *key, key_perm_t perm) | |||
65 | * check to see whether permission is granted to use a key in at least one of | 68 | * check to see whether permission is granted to use a key in at least one of |
66 | * the desired ways | 69 | * the desired ways |
67 | */ | 70 | */ |
68 | static inline int key_any_permission(const struct key *key, key_perm_t perm) | 71 | static inline int key_any_permission(const key_ref_t key_ref, key_perm_t perm) |
69 | { | 72 | { |
73 | struct key *key = key_ref_to_ptr(key_ref); | ||
70 | key_perm_t kperm; | 74 | key_perm_t kperm; |
71 | 75 | ||
72 | if (key->uid == current->fsuid) | 76 | if (is_key_possessed(key_ref)) |
77 | kperm = key->perm >> 24; | ||
78 | else if (key->uid == current->fsuid) | ||
73 | kperm = key->perm >> 16; | 79 | kperm = key->perm >> 16; |
74 | else if (key->gid != -1 && | 80 | else if (key->gid != -1 && |
75 | key->perm & KEY_GRP_ALL && | 81 | key->perm & KEY_GRP_ALL && |
@@ -94,13 +100,17 @@ static inline int key_task_groups_search(struct task_struct *tsk, gid_t gid) | |||
94 | return ret; | 100 | return ret; |
95 | } | 101 | } |
96 | 102 | ||
97 | static inline int key_task_permission(const struct key *key, | 103 | static inline int key_task_permission(const key_ref_t key_ref, |
98 | struct task_struct *context, | 104 | struct task_struct *context, |
99 | key_perm_t perm) | 105 | key_perm_t perm) |
100 | { | 106 | { |
107 | struct key *key = key_ref_to_ptr(key_ref); | ||
101 | key_perm_t kperm; | 108 | key_perm_t kperm; |
102 | 109 | ||
103 | if (key->uid == context->fsuid) { | 110 | if (is_key_possessed(key_ref)) { |
111 | kperm = key->perm >> 24; | ||
112 | } | ||
113 | else if (key->uid == context->fsuid) { | ||
104 | kperm = key->perm >> 16; | 114 | kperm = key->perm >> 16; |
105 | } | 115 | } |
106 | else if (key->gid != -1 && | 116 | else if (key->gid != -1 && |
@@ -121,9 +131,9 @@ static inline int key_task_permission(const struct key *key, | |||
121 | 131 | ||
122 | } | 132 | } |
123 | 133 | ||
124 | extern struct key *lookup_user_key(struct task_struct *context, | 134 | extern key_ref_t lookup_user_key(struct task_struct *context, |
125 | key_serial_t id, int create, int partial, | 135 | key_serial_t id, int create, int partial, |
126 | key_perm_t perm); | 136 | key_perm_t perm); |
127 | 137 | ||
128 | extern long join_session_keyring(const char *name); | 138 | extern long join_session_keyring(const char *name); |
129 | 139 | ||
diff --git a/include/linux/key.h b/include/linux/key.h index 970bbd916cf4..f1efa016dbf3 100644 --- a/include/linux/key.h +++ b/include/linux/key.h | |||
@@ -35,11 +35,18 @@ struct key; | |||
35 | 35 | ||
36 | #undef KEY_DEBUGGING | 36 | #undef KEY_DEBUGGING |
37 | 37 | ||
38 | #define KEY_USR_VIEW 0x00010000 /* user can view a key's attributes */ | 38 | #define KEY_POS_VIEW 0x01000000 /* possessor can view a key's attributes */ |
39 | #define KEY_USR_READ 0x00020000 /* user can read key payload / view keyring */ | 39 | #define KEY_POS_READ 0x02000000 /* possessor can read key payload / view keyring */ |
40 | #define KEY_USR_WRITE 0x00040000 /* user can update key payload / add link to keyring */ | 40 | #define KEY_POS_WRITE 0x04000000 /* possessor can update key payload / add link to keyring */ |
41 | #define KEY_USR_SEARCH 0x00080000 /* user can find a key in search / search a keyring */ | 41 | #define KEY_POS_SEARCH 0x08000000 /* possessor can find a key in search / search a keyring */ |
42 | #define KEY_USR_LINK 0x00100000 /* user can create a link to a key/keyring */ | 42 | #define KEY_POS_LINK 0x10000000 /* possessor can create a link to a key/keyring */ |
43 | #define KEY_POS_ALL 0x1f000000 | ||
44 | |||
45 | #define KEY_USR_VIEW 0x00010000 /* user permissions... */ | ||
46 | #define KEY_USR_READ 0x00020000 | ||
47 | #define KEY_USR_WRITE 0x00040000 | ||
48 | #define KEY_USR_SEARCH 0x00080000 | ||
49 | #define KEY_USR_LINK 0x00100000 | ||
43 | #define KEY_USR_ALL 0x001f0000 | 50 | #define KEY_USR_ALL 0x001f0000 |
44 | 51 | ||
45 | #define KEY_GRP_VIEW 0x00000100 /* group permissions... */ | 52 | #define KEY_GRP_VIEW 0x00000100 /* group permissions... */ |
@@ -67,6 +74,38 @@ struct keyring_name; | |||
67 | 74 | ||
68 | /*****************************************************************************/ | 75 | /*****************************************************************************/ |
69 | /* | 76 | /* |
77 | * key reference with possession attribute handling | ||
78 | * | ||
79 | * NOTE! key_ref_t is a typedef'd pointer to a type that is not actually | ||
80 | * defined. This is because we abuse the bottom bit of the reference to carry a | ||
81 | * flag to indicate whether the calling process possesses that key in one of | ||
82 | * its keyrings. | ||
83 | * | ||
84 | * the key_ref_t has been made a separate type so that the compiler can reject | ||
85 | * attempts to dereference it without proper conversion. | ||
86 | * | ||
87 | * the three functions are used to assemble and disassemble references | ||
88 | */ | ||
89 | typedef struct __key_reference_with_attributes *key_ref_t; | ||
90 | |||
91 | static inline key_ref_t make_key_ref(const struct key *key, | ||
92 | unsigned long possession) | ||
93 | { | ||
94 | return (key_ref_t) ((unsigned long) key | possession); | ||
95 | } | ||
96 | |||
97 | static inline struct key *key_ref_to_ptr(const key_ref_t key_ref) | ||
98 | { | ||
99 | return (struct key *) ((unsigned long) key_ref & ~1UL); | ||
100 | } | ||
101 | |||
102 | static inline unsigned long is_key_possessed(const key_ref_t key_ref) | ||
103 | { | ||
104 | return (unsigned long) key_ref & 1UL; | ||
105 | } | ||
106 | |||
107 | /*****************************************************************************/ | ||
108 | /* | ||
70 | * authentication token / access credential / keyring | 109 | * authentication token / access credential / keyring |
71 | * - types of key include: | 110 | * - types of key include: |
72 | * - keyrings | 111 | * - keyrings |
@@ -215,20 +254,25 @@ static inline struct key *key_get(struct key *key) | |||
215 | return key; | 254 | return key; |
216 | } | 255 | } |
217 | 256 | ||
257 | static inline void key_ref_put(key_ref_t key_ref) | ||
258 | { | ||
259 | key_put(key_ref_to_ptr(key_ref)); | ||
260 | } | ||
261 | |||
218 | extern struct key *request_key(struct key_type *type, | 262 | extern struct key *request_key(struct key_type *type, |
219 | const char *description, | 263 | const char *description, |
220 | const char *callout_info); | 264 | const char *callout_info); |
221 | 265 | ||
222 | extern int key_validate(struct key *key); | 266 | extern int key_validate(struct key *key); |
223 | 267 | ||
224 | extern struct key *key_create_or_update(struct key *keyring, | 268 | extern key_ref_t key_create_or_update(key_ref_t keyring, |
225 | const char *type, | 269 | const char *type, |
226 | const char *description, | 270 | const char *description, |
227 | const void *payload, | 271 | const void *payload, |
228 | size_t plen, | 272 | size_t plen, |
229 | int not_in_quota); | 273 | int not_in_quota); |
230 | 274 | ||
231 | extern int key_update(struct key *key, | 275 | extern int key_update(key_ref_t key, |
232 | const void *payload, | 276 | const void *payload, |
233 | size_t plen); | 277 | size_t plen); |
234 | 278 | ||
@@ -243,9 +287,9 @@ extern struct key *keyring_alloc(const char *description, uid_t uid, gid_t gid, | |||
243 | 287 | ||
244 | extern int keyring_clear(struct key *keyring); | 288 | extern int keyring_clear(struct key *keyring); |
245 | 289 | ||
246 | extern struct key *keyring_search(struct key *keyring, | 290 | extern key_ref_t keyring_search(key_ref_t keyring, |
247 | struct key_type *type, | 291 | struct key_type *type, |
248 | const char *description); | 292 | const char *description); |
249 | 293 | ||
250 | extern int keyring_add_key(struct key *keyring, | 294 | extern int keyring_add_key(struct key *keyring, |
251 | struct key *key); | 295 | struct key *key); |
@@ -285,6 +329,10 @@ extern void key_init(void); | |||
285 | #define key_serial(k) 0 | 329 | #define key_serial(k) 0 |
286 | #define key_get(k) ({ NULL; }) | 330 | #define key_get(k) ({ NULL; }) |
287 | #define key_put(k) do { } while(0) | 331 | #define key_put(k) do { } while(0) |
332 | #define key_ref_put(k) do { } while(0) | ||
333 | #define make_key_ref(k) ({ NULL; }) | ||
334 | #define key_ref_to_ptr(k) ({ NULL; }) | ||
335 | #define is_key_possessed(k) 0 | ||
288 | #define alloc_uid_keyring(u) 0 | 336 | #define alloc_uid_keyring(u) 0 |
289 | #define switch_uid_keyring(u) do { } while(0) | 337 | #define switch_uid_keyring(u) do { } while(0) |
290 | #define __install_session_keyring(t, k) ({ NULL; }) | 338 | #define __install_session_keyring(t, k) ({ NULL; }) |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 022105c745fc..ceee1fc42c60 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -393,6 +393,7 @@ extern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_i | |||
393 | extern void ata_pci_remove_one (struct pci_dev *pdev); | 393 | extern void ata_pci_remove_one (struct pci_dev *pdev); |
394 | #endif /* CONFIG_PCI */ | 394 | #endif /* CONFIG_PCI */ |
395 | extern int ata_device_add(struct ata_probe_ent *ent); | 395 | extern int ata_device_add(struct ata_probe_ent *ent); |
396 | extern void ata_host_set_remove(struct ata_host_set *host_set); | ||
396 | extern int ata_scsi_detect(Scsi_Host_Template *sht); | 397 | extern int ata_scsi_detect(Scsi_Host_Template *sht); |
397 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); | 398 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); |
398 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); | 399 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); |
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/mod_devicetable.h b/include/linux/mod_devicetable.h index 47da39ba3f03..2f0299a448f6 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
@@ -183,7 +183,7 @@ struct of_device_id | |||
183 | char name[32]; | 183 | char name[32]; |
184 | char type[32]; | 184 | char type[32]; |
185 | char compatible[128]; | 185 | char compatible[128]; |
186 | #if __KERNEL__ | 186 | #ifdef __KERNEL__ |
187 | void *data; | 187 | void *data; |
188 | #else | 188 | #else |
189 | kernel_ulong_t data; | 189 | kernel_ulong_t data; |
@@ -209,10 +209,11 @@ struct pcmcia_device_id { | |||
209 | /* for real multi-function devices */ | 209 | /* for real multi-function devices */ |
210 | __u8 function; | 210 | __u8 function; |
211 | 211 | ||
212 | /* for pseude multi-function devices */ | 212 | /* for pseudo multi-function devices */ |
213 | __u8 device_no; | 213 | __u8 device_no; |
214 | 214 | ||
215 | __u32 prod_id_hash[4]; | 215 | __u32 prod_id_hash[4] |
216 | __attribute__((aligned(sizeof(__u32)))); | ||
216 | 217 | ||
217 | /* not matched against in kernelspace*/ | 218 | /* not matched against in kernelspace*/ |
218 | #ifdef __KERNEL__ | 219 | #ifdef __KERNEL__ |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 7c717907896d..368e4c825ff1 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -265,6 +265,8 @@ struct net_device | |||
265 | * the interface. | 265 | * the interface. |
266 | */ | 266 | */ |
267 | char name[IFNAMSIZ]; | 267 | char name[IFNAMSIZ]; |
268 | /* device name hash chain */ | ||
269 | struct hlist_node name_hlist; | ||
268 | 270 | ||
269 | /* | 271 | /* |
270 | * I/O specific fields | 272 | * I/O specific fields |
@@ -292,6 +294,21 @@ struct net_device | |||
292 | 294 | ||
293 | /* ------- Fields preinitialized in Space.c finish here ------- */ | 295 | /* ------- Fields preinitialized in Space.c finish here ------- */ |
294 | 296 | ||
297 | /* Net device features */ | ||
298 | unsigned long features; | ||
299 | #define NETIF_F_SG 1 /* Scatter/gather IO. */ | ||
300 | #define NETIF_F_IP_CSUM 2 /* Can checksum only TCP/UDP over IPv4. */ | ||
301 | #define NETIF_F_NO_CSUM 4 /* Does not require checksum. F.e. loopack. */ | ||
302 | #define NETIF_F_HW_CSUM 8 /* Can checksum all the packets. */ | ||
303 | #define NETIF_F_HIGHDMA 32 /* Can DMA to high memory. */ | ||
304 | #define NETIF_F_FRAGLIST 64 /* Scatter/gather IO. */ | ||
305 | #define NETIF_F_HW_VLAN_TX 128 /* Transmit VLAN hw acceleration */ | ||
306 | #define NETIF_F_HW_VLAN_RX 256 /* Receive VLAN hw acceleration */ | ||
307 | #define NETIF_F_HW_VLAN_FILTER 512 /* Receive filtering on VLAN */ | ||
308 | #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ | ||
309 | #define NETIF_F_TSO 2048 /* Can offload TCP/IP segmentation */ | ||
310 | #define NETIF_F_LLTX 4096 /* LockLess TX */ | ||
311 | |||
295 | struct net_device *next_sched; | 312 | struct net_device *next_sched; |
296 | 313 | ||
297 | /* Interface index. Unique device identifier */ | 314 | /* Interface index. Unique device identifier */ |
@@ -316,9 +333,6 @@ struct net_device | |||
316 | * will (read: may be cleaned up at will). | 333 | * will (read: may be cleaned up at will). |
317 | */ | 334 | */ |
318 | 335 | ||
319 | /* These may be needed for future network-power-down code. */ | ||
320 | unsigned long trans_start; /* Time (in jiffies) of last Tx */ | ||
321 | unsigned long last_rx; /* Time of last Rx */ | ||
322 | 336 | ||
323 | unsigned short flags; /* interface flags (a la BSD) */ | 337 | unsigned short flags; /* interface flags (a la BSD) */ |
324 | unsigned short gflags; | 338 | unsigned short gflags; |
@@ -328,15 +342,12 @@ struct net_device | |||
328 | unsigned mtu; /* interface MTU value */ | 342 | unsigned mtu; /* interface MTU value */ |
329 | unsigned short type; /* interface hardware type */ | 343 | unsigned short type; /* interface hardware type */ |
330 | unsigned short hard_header_len; /* hardware hdr length */ | 344 | unsigned short hard_header_len; /* hardware hdr length */ |
331 | void *priv; /* pointer to private data */ | ||
332 | 345 | ||
333 | struct net_device *master; /* Pointer to master device of a group, | 346 | struct net_device *master; /* Pointer to master device of a group, |
334 | * which this device is member of. | 347 | * which this device is member of. |
335 | */ | 348 | */ |
336 | 349 | ||
337 | /* Interface address info. */ | 350 | /* Interface address info. */ |
338 | unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ | ||
339 | unsigned char dev_addr[MAX_ADDR_LEN]; /* hw address */ | ||
340 | unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ | 351 | unsigned char perm_addr[MAX_ADDR_LEN]; /* permanent hw address */ |
341 | unsigned char addr_len; /* hardware address length */ | 352 | unsigned char addr_len; /* hardware address length */ |
342 | unsigned short dev_id; /* for shared network cards */ | 353 | unsigned short dev_id; /* for shared network cards */ |
@@ -346,8 +357,6 @@ struct net_device | |||
346 | int promiscuity; | 357 | int promiscuity; |
347 | int allmulti; | 358 | int allmulti; |
348 | 359 | ||
349 | int watchdog_timeo; | ||
350 | struct timer_list watchdog_timer; | ||
351 | 360 | ||
352 | /* Protocol specific pointers */ | 361 | /* Protocol specific pointers */ |
353 | 362 | ||
@@ -358,32 +367,62 @@ struct net_device | |||
358 | void *ec_ptr; /* Econet specific data */ | 367 | void *ec_ptr; /* Econet specific data */ |
359 | void *ax25_ptr; /* AX.25 specific data */ | 368 | void *ax25_ptr; /* AX.25 specific data */ |
360 | 369 | ||
361 | struct list_head poll_list; /* Link to poll list */ | 370 | /* |
371 | * Cache line mostly used on receive path (including eth_type_trans()) | ||
372 | */ | ||
373 | struct list_head poll_list ____cacheline_aligned_in_smp; | ||
374 | /* Link to poll list */ | ||
375 | |||
376 | int (*poll) (struct net_device *dev, int *quota); | ||
362 | int quota; | 377 | int quota; |
363 | int weight; | 378 | int weight; |
379 | unsigned long last_rx; /* Time of last Rx */ | ||
380 | /* Interface address info used in eth_type_trans() */ | ||
381 | unsigned char dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast | ||
382 | because most packets are unicast) */ | ||
383 | |||
384 | unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ | ||
364 | 385 | ||
386 | /* | ||
387 | * Cache line mostly used on queue transmit path (qdisc) | ||
388 | */ | ||
389 | /* device queue lock */ | ||
390 | spinlock_t queue_lock ____cacheline_aligned_in_smp; | ||
365 | struct Qdisc *qdisc; | 391 | struct Qdisc *qdisc; |
366 | struct Qdisc *qdisc_sleeping; | 392 | struct Qdisc *qdisc_sleeping; |
367 | struct Qdisc *qdisc_ingress; | ||
368 | struct list_head qdisc_list; | 393 | struct list_head qdisc_list; |
369 | unsigned long tx_queue_len; /* Max frames per queue allowed */ | 394 | unsigned long tx_queue_len; /* Max frames per queue allowed */ |
370 | 395 | ||
371 | /* ingress path synchronizer */ | 396 | /* ingress path synchronizer */ |
372 | spinlock_t ingress_lock; | 397 | spinlock_t ingress_lock; |
398 | struct Qdisc *qdisc_ingress; | ||
399 | |||
400 | /* | ||
401 | * One part is mostly used on xmit path (device) | ||
402 | */ | ||
373 | /* hard_start_xmit synchronizer */ | 403 | /* hard_start_xmit synchronizer */ |
374 | spinlock_t xmit_lock; | 404 | spinlock_t xmit_lock ____cacheline_aligned_in_smp; |
375 | /* cpu id of processor entered to hard_start_xmit or -1, | 405 | /* cpu id of processor entered to hard_start_xmit or -1, |
376 | if nobody entered there. | 406 | if nobody entered there. |
377 | */ | 407 | */ |
378 | int xmit_lock_owner; | 408 | int xmit_lock_owner; |
379 | /* device queue lock */ | 409 | void *priv; /* pointer to private data */ |
380 | spinlock_t queue_lock; | 410 | int (*hard_start_xmit) (struct sk_buff *skb, |
411 | struct net_device *dev); | ||
412 | /* These may be needed for future network-power-down code. */ | ||
413 | unsigned long trans_start; /* Time (in jiffies) of last Tx */ | ||
414 | |||
415 | int watchdog_timeo; /* used by dev_watchdog() */ | ||
416 | struct timer_list watchdog_timer; | ||
417 | |||
418 | /* | ||
419 | * refcnt is a very hot point, so align it on SMP | ||
420 | */ | ||
381 | /* Number of references to this device */ | 421 | /* Number of references to this device */ |
382 | atomic_t refcnt; | 422 | atomic_t refcnt ____cacheline_aligned_in_smp; |
423 | |||
383 | /* delayed register/unregister */ | 424 | /* delayed register/unregister */ |
384 | struct list_head todo_list; | 425 | struct list_head todo_list; |
385 | /* device name hash chain */ | ||
386 | struct hlist_node name_hlist; | ||
387 | /* device index hash chain */ | 426 | /* device index hash chain */ |
388 | struct hlist_node index_hlist; | 427 | struct hlist_node index_hlist; |
389 | 428 | ||
@@ -396,21 +435,6 @@ struct net_device | |||
396 | NETREG_RELEASED, /* called free_netdev */ | 435 | NETREG_RELEASED, /* called free_netdev */ |
397 | } reg_state; | 436 | } reg_state; |
398 | 437 | ||
399 | /* Net device features */ | ||
400 | unsigned long features; | ||
401 | #define NETIF_F_SG 1 /* Scatter/gather IO. */ | ||
402 | #define NETIF_F_IP_CSUM 2 /* Can checksum only TCP/UDP over IPv4. */ | ||
403 | #define NETIF_F_NO_CSUM 4 /* Does not require checksum. F.e. loopack. */ | ||
404 | #define NETIF_F_HW_CSUM 8 /* Can checksum all the packets. */ | ||
405 | #define NETIF_F_HIGHDMA 32 /* Can DMA to high memory. */ | ||
406 | #define NETIF_F_FRAGLIST 64 /* Scatter/gather IO. */ | ||
407 | #define NETIF_F_HW_VLAN_TX 128 /* Transmit VLAN hw acceleration */ | ||
408 | #define NETIF_F_HW_VLAN_RX 256 /* Receive VLAN hw acceleration */ | ||
409 | #define NETIF_F_HW_VLAN_FILTER 512 /* Receive filtering on VLAN */ | ||
410 | #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ | ||
411 | #define NETIF_F_TSO 2048 /* Can offload TCP/IP segmentation */ | ||
412 | #define NETIF_F_LLTX 4096 /* LockLess TX */ | ||
413 | |||
414 | /* Called after device is detached from network. */ | 438 | /* Called after device is detached from network. */ |
415 | void (*uninit)(struct net_device *dev); | 439 | void (*uninit)(struct net_device *dev); |
416 | /* Called after last user reference disappears. */ | 440 | /* Called after last user reference disappears. */ |
@@ -419,10 +443,7 @@ struct net_device | |||
419 | /* Pointers to interface service routines. */ | 443 | /* Pointers to interface service routines. */ |
420 | int (*open)(struct net_device *dev); | 444 | int (*open)(struct net_device *dev); |
421 | int (*stop)(struct net_device *dev); | 445 | int (*stop)(struct net_device *dev); |
422 | int (*hard_start_xmit) (struct sk_buff *skb, | ||
423 | struct net_device *dev); | ||
424 | #define HAVE_NETDEV_POLL | 446 | #define HAVE_NETDEV_POLL |
425 | int (*poll) (struct net_device *dev, int *quota); | ||
426 | int (*hard_header) (struct sk_buff *skb, | 447 | int (*hard_header) (struct sk_buff *skb, |
427 | struct net_device *dev, | 448 | struct net_device *dev, |
428 | unsigned short type, | 449 | unsigned short type, |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack.h b/include/linux/netfilter_ipv4/ip_conntrack.h index 7e033e9271a8..4ced38736813 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; |
@@ -320,11 +332,28 @@ extern void need_ip_conntrack(void); | |||
320 | extern int invert_tuplepr(struct ip_conntrack_tuple *inverse, | 332 | extern int invert_tuplepr(struct ip_conntrack_tuple *inverse, |
321 | const struct ip_conntrack_tuple *orig); | 333 | const struct ip_conntrack_tuple *orig); |
322 | 334 | ||
335 | extern void __ip_ct_refresh_acct(struct ip_conntrack *ct, | ||
336 | enum ip_conntrack_info ctinfo, | ||
337 | const struct sk_buff *skb, | ||
338 | unsigned long extra_jiffies, | ||
339 | int do_acct); | ||
340 | |||
341 | /* Refresh conntrack for this many jiffies and do accounting */ | ||
342 | static inline void ip_ct_refresh_acct(struct ip_conntrack *ct, | ||
343 | enum ip_conntrack_info ctinfo, | ||
344 | const struct sk_buff *skb, | ||
345 | unsigned long extra_jiffies) | ||
346 | { | ||
347 | __ip_ct_refresh_acct(ct, ctinfo, skb, extra_jiffies, 1); | ||
348 | } | ||
349 | |||
323 | /* Refresh conntrack for this many jiffies */ | 350 | /* Refresh conntrack for this many jiffies */ |
324 | extern void ip_ct_refresh_acct(struct ip_conntrack *ct, | 351 | static inline void ip_ct_refresh(struct ip_conntrack *ct, |
325 | enum ip_conntrack_info ctinfo, | 352 | const struct sk_buff *skb, |
326 | const struct sk_buff *skb, | 353 | unsigned long extra_jiffies) |
327 | unsigned long extra_jiffies); | 354 | { |
355 | __ip_ct_refresh_acct(ct, 0, skb, extra_jiffies, 0); | ||
356 | } | ||
328 | 357 | ||
329 | /* These are for NAT. Icky. */ | 358 | /* These are for NAT. Icky. */ |
330 | /* Update TCP window tracking data when NAT mangles the packet */ | 359 | /* Update TCP window tracking data when NAT mangles the packet */ |
@@ -372,7 +401,7 @@ extern struct ip_conntrack_expect * | |||
372 | __ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple); | 401 | __ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple); |
373 | 402 | ||
374 | extern struct ip_conntrack_expect * | 403 | extern struct ip_conntrack_expect * |
375 | ip_conntrack_expect_find_get(const struct ip_conntrack_tuple *tuple); | 404 | ip_conntrack_expect_find(const struct ip_conntrack_tuple *tuple); |
376 | 405 | ||
377 | extern struct ip_conntrack_tuple_hash * | 406 | extern struct ip_conntrack_tuple_hash * |
378 | __ip_conntrack_find(const struct ip_conntrack_tuple *tuple, | 407 | __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..816144c75de0 --- /dev/null +++ b/include/linux/netfilter_ipv4/ip_conntrack_pptp.h | |||
@@ -0,0 +1,325 @@ | |||
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 | __be16 packetType; | ||
64 | __be32 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 | __be16 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 | __be16 protocolVersion; | ||
110 | __u8 reserved1; | ||
111 | __u8 reserved2; | ||
112 | __be32 framingCapability; | ||
113 | __be32 bearerCapability; | ||
114 | __be16 maxChannels; | ||
115 | __be16 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 | __be16 protocolVersion; | ||
129 | __u8 resultCode; | ||
130 | __u8 generalErrorCode; | ||
131 | __be32 framingCapability; | ||
132 | __be32 bearerCapability; | ||
133 | __be16 maxChannels; | ||
134 | __be16 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 | __be32 identNumber; | ||
159 | }; | ||
160 | |||
161 | /* PptpEchoReplyResultCode */ | ||
162 | #define PPTP_ECHO_OK 1 | ||
163 | #define PPTP_ECHO_GENERAL_ERROR 2 | ||
164 | |||
165 | struct PptpEchoReply { | ||
166 | __be32 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 | __be16 callID; | ||
184 | __be16 callSerialNumber; | ||
185 | __be32 minBPS; | ||
186 | __be32 maxBPS; | ||
187 | __be32 bearerType; | ||
188 | __be32 framingType; | ||
189 | __be16 packetWindow; | ||
190 | __be16 packetProcDelay; | ||
191 | __u16 reserved1; | ||
192 | __be16 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 | __be16 callID; | ||
209 | __be16 peersCallID; | ||
210 | __u8 resultCode; | ||
211 | __u8 generalErrorCode; | ||
212 | __be16 causeCode; | ||
213 | __be32 connectSpeed; | ||
214 | __be16 packetWindow; | ||
215 | __be16 packetProcDelay; | ||
216 | __be32 physChannelID; | ||
217 | }; | ||
218 | |||
219 | struct PptpInCallRequest { | ||
220 | __be16 callID; | ||
221 | __be16 callSerialNumber; | ||
222 | __be32 callBearerType; | ||
223 | __be32 physChannelID; | ||
224 | __be16 dialedNumberLength; | ||
225 | __be16 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 | __be16 callID; | ||
238 | __be16 peersCallID; | ||
239 | __u8 resultCode; | ||
240 | __u8 generalErrorCode; | ||
241 | __be16 packetWindow; | ||
242 | __be16 packetProcDelay; | ||
243 | __u16 reserved; | ||
244 | }; | ||
245 | |||
246 | struct PptpInCallConnected { | ||
247 | __be16 peersCallID; | ||
248 | __u16 reserved; | ||
249 | __be32 connectSpeed; | ||
250 | __be16 packetWindow; | ||
251 | __be16 packetProcDelay; | ||
252 | __be32 callFramingType; | ||
253 | }; | ||
254 | |||
255 | struct PptpClearCallRequest { | ||
256 | __be16 callID; | ||
257 | __u16 reserved; | ||
258 | }; | ||
259 | |||
260 | struct PptpCallDisconnectNotify { | ||
261 | __be16 callID; | ||
262 | __u8 resultCode; | ||
263 | __u8 generalErrorCode; | ||
264 | __be16 causeCode; | ||
265 | __u16 reserved; | ||
266 | __u8 callStatistics[128]; | ||
267 | }; | ||
268 | |||
269 | struct PptpWanErrorNotify { | ||
270 | __be16 peersCallID; | ||
271 | __u16 reserved; | ||
272 | __be32 crcErrors; | ||
273 | __be32 framingErrors; | ||
274 | __be32 hardwareOverRuns; | ||
275 | __be32 bufferOverRuns; | ||
276 | __be32 timeoutErrors; | ||
277 | __be32 alignmentErrors; | ||
278 | }; | ||
279 | |||
280 | struct PptpSetLinkInfo { | ||
281 | __be16 peersCallID; | ||
282 | __u16 reserved; | ||
283 | __be32 sendAccm; | ||
284 | __be32 recvAccm; | ||
285 | }; | ||
286 | |||
287 | union pptp_ctrl_union { | ||
288 | struct PptpStartSessionRequest sreq; | ||
289 | struct PptpStartSessionReply srep; | ||
290 | struct PptpStopSessionRequest streq; | ||
291 | struct PptpStopSessionReply strep; | ||
292 | struct PptpOutCallRequest ocreq; | ||
293 | struct PptpOutCallReply ocack; | ||
294 | struct PptpInCallRequest icreq; | ||
295 | struct PptpInCallReply icack; | ||
296 | struct PptpInCallConnected iccon; | ||
297 | struct PptpClearCallRequest clrreq; | ||
298 | struct PptpCallDisconnectNotify disc; | ||
299 | struct PptpWanErrorNotify wanerr; | ||
300 | struct PptpSetLinkInfo setlink; | ||
301 | }; | ||
302 | |||
303 | extern int | ||
304 | (*ip_nat_pptp_hook_outbound)(struct sk_buff **pskb, | ||
305 | struct ip_conntrack *ct, | ||
306 | enum ip_conntrack_info ctinfo, | ||
307 | struct PptpControlHeader *ctlh, | ||
308 | union pptp_ctrl_union *pptpReq); | ||
309 | |||
310 | extern int | ||
311 | (*ip_nat_pptp_hook_inbound)(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_exp_gre)(struct ip_conntrack_expect *exp_orig, | ||
319 | struct ip_conntrack_expect *exp_reply); | ||
320 | |||
321 | extern void | ||
322 | (*ip_nat_pptp_hook_expectfn)(struct ip_conntrack *ct, | ||
323 | struct ip_conntrack_expect *exp); | ||
324 | #endif /* __KERNEL__ */ | ||
325 | #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..20e43f018b7c 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack_tuple.h +++ b/include/linux/netfilter_ipv4/ip_conntrack_tuple.h | |||
@@ -17,7 +17,7 @@ union ip_conntrack_manip_proto | |||
17 | u_int16_t all; | 17 | u_int16_t all; |
18 | 18 | ||
19 | struct { | 19 | struct { |
20 | u_int16_t port; | 20 | __be16 port; |
21 | } tcp; | 21 | } tcp; |
22 | struct { | 22 | struct { |
23 | u_int16_t port; | 23 | u_int16_t port; |
@@ -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 | __be16 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 | __be16 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_core.h b/include/linux/netfilter_ipv4/ip_nat_core.h index 3b50eb91f007..30db23f06b03 100644 --- a/include/linux/netfilter_ipv4/ip_nat_core.h +++ b/include/linux/netfilter_ipv4/ip_nat_core.h | |||
@@ -5,16 +5,14 @@ | |||
5 | 5 | ||
6 | /* This header used to share core functionality between the standalone | 6 | /* This header used to share core functionality between the standalone |
7 | NAT module, and the compatibility layer's use of NAT for masquerading. */ | 7 | NAT module, and the compatibility layer's use of NAT for masquerading. */ |
8 | extern int ip_nat_init(void); | ||
9 | extern void ip_nat_cleanup(void); | ||
10 | 8 | ||
11 | extern unsigned int nat_packet(struct ip_conntrack *ct, | 9 | extern unsigned int ip_nat_packet(struct ip_conntrack *ct, |
12 | enum ip_conntrack_info conntrackinfo, | 10 | enum ip_conntrack_info conntrackinfo, |
13 | unsigned int hooknum, | 11 | unsigned int hooknum, |
14 | struct sk_buff **pskb); | 12 | struct sk_buff **pskb); |
15 | 13 | ||
16 | extern int icmp_reply_translation(struct sk_buff **pskb, | 14 | extern int ip_nat_icmp_reply_translation(struct sk_buff **pskb, |
17 | struct ip_conntrack *ct, | 15 | struct ip_conntrack *ct, |
18 | enum ip_nat_manip_type manip, | 16 | enum ip_nat_manip_type manip, |
19 | enum ip_conntrack_dir dir); | 17 | enum ip_conntrack_dir dir); |
20 | #endif /* _IP_NAT_CORE_H */ | 18 | #endif /* _IP_NAT_CORE_H */ |
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/nfsd/xdr4.h b/include/linux/nfsd/xdr4.h index 4d24d65c0e88..8903688890ce 100644 --- a/include/linux/nfsd/xdr4.h +++ b/include/linux/nfsd/xdr4.h | |||
@@ -438,17 +438,22 @@ extern int nfsd4_process_open1(struct nfsd4_open *open); | |||
438 | extern int nfsd4_process_open2(struct svc_rqst *rqstp, | 438 | extern int nfsd4_process_open2(struct svc_rqst *rqstp, |
439 | struct svc_fh *current_fh, struct nfsd4_open *open); | 439 | struct svc_fh *current_fh, struct nfsd4_open *open); |
440 | extern int nfsd4_open_confirm(struct svc_rqst *rqstp, | 440 | extern int nfsd4_open_confirm(struct svc_rqst *rqstp, |
441 | struct svc_fh *current_fh, struct nfsd4_open_confirm *oc); | 441 | struct svc_fh *current_fh, struct nfsd4_open_confirm *oc, |
442 | struct nfs4_stateowner **); | ||
442 | extern int nfsd4_close(struct svc_rqst *rqstp, struct svc_fh *current_fh, | 443 | extern int nfsd4_close(struct svc_rqst *rqstp, struct svc_fh *current_fh, |
443 | struct nfsd4_close *close); | 444 | struct nfsd4_close *close, |
445 | struct nfs4_stateowner **replay_owner); | ||
444 | extern int nfsd4_open_downgrade(struct svc_rqst *rqstp, | 446 | extern int nfsd4_open_downgrade(struct svc_rqst *rqstp, |
445 | struct svc_fh *current_fh, struct nfsd4_open_downgrade *od); | 447 | struct svc_fh *current_fh, struct nfsd4_open_downgrade *od, |
448 | struct nfs4_stateowner **replay_owner); | ||
446 | extern int nfsd4_lock(struct svc_rqst *rqstp, struct svc_fh *current_fh, | 449 | extern int nfsd4_lock(struct svc_rqst *rqstp, struct svc_fh *current_fh, |
447 | struct nfsd4_lock *lock); | 450 | struct nfsd4_lock *lock, |
451 | struct nfs4_stateowner **replay_owner); | ||
448 | extern int nfsd4_lockt(struct svc_rqst *rqstp, struct svc_fh *current_fh, | 452 | extern int nfsd4_lockt(struct svc_rqst *rqstp, struct svc_fh *current_fh, |
449 | struct nfsd4_lockt *lockt); | 453 | struct nfsd4_lockt *lockt); |
450 | extern int nfsd4_locku(struct svc_rqst *rqstp, struct svc_fh *current_fh, | 454 | extern int nfsd4_locku(struct svc_rqst *rqstp, struct svc_fh *current_fh, |
451 | struct nfsd4_locku *locku); | 455 | struct nfsd4_locku *locku, |
456 | struct nfs4_stateowner **replay_owner); | ||
452 | extern int | 457 | extern int |
453 | nfsd4_release_lockowner(struct svc_rqst *rqstp, | 458 | nfsd4_release_lockowner(struct svc_rqst *rqstp, |
454 | struct nfsd4_release_lockowner *rlockowner); | 459 | struct nfsd4_release_lockowner *rlockowner); |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index ee0ab7a5f91b..f74ed9462475 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -185,6 +185,7 @@ | |||
185 | #define PCI_DEVICE_ID_LSI_61C102 0x0901 | 185 | #define PCI_DEVICE_ID_LSI_61C102 0x0901 |
186 | #define PCI_DEVICE_ID_LSI_63C815 0x1000 | 186 | #define PCI_DEVICE_ID_LSI_63C815 0x1000 |
187 | #define PCI_DEVICE_ID_LSI_SAS1064 0x0050 | 187 | #define PCI_DEVICE_ID_LSI_SAS1064 0x0050 |
188 | #define PCI_DEVICE_ID_LSI_SAS1064R 0x0411 | ||
188 | #define PCI_DEVICE_ID_LSI_SAS1066 0x005E | 189 | #define PCI_DEVICE_ID_LSI_SAS1066 0x005E |
189 | #define PCI_DEVICE_ID_LSI_SAS1068 0x0054 | 190 | #define PCI_DEVICE_ID_LSI_SAS1068 0x0054 |
190 | #define PCI_DEVICE_ID_LSI_SAS1064A 0x005C | 191 | #define PCI_DEVICE_ID_LSI_SAS1064A 0x005C |
@@ -392,6 +393,7 @@ | |||
392 | #define PCI_DEVICE_ID_NS_87560_USB 0x0012 | 393 | #define PCI_DEVICE_ID_NS_87560_USB 0x0012 |
393 | #define PCI_DEVICE_ID_NS_83815 0x0020 | 394 | #define PCI_DEVICE_ID_NS_83815 0x0020 |
394 | #define PCI_DEVICE_ID_NS_83820 0x0022 | 395 | #define PCI_DEVICE_ID_NS_83820 0x0022 |
396 | #define PCI_DEVICE_ID_NS_SATURN 0x0035 | ||
395 | #define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500 | 397 | #define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500 |
396 | #define PCI_DEVICE_ID_NS_SCx200_SMI 0x0501 | 398 | #define PCI_DEVICE_ID_NS_SCx200_SMI 0x0501 |
397 | #define PCI_DEVICE_ID_NS_SCx200_IDE 0x0502 | 399 | #define PCI_DEVICE_ID_NS_SCx200_IDE 0x0502 |
@@ -447,6 +449,10 @@ | |||
447 | #define PCI_DEVICE_ID_CIRRUS_7542 0x1200 | 449 | #define PCI_DEVICE_ID_CIRRUS_7542 0x1200 |
448 | #define PCI_DEVICE_ID_CIRRUS_7543 0x1202 | 450 | #define PCI_DEVICE_ID_CIRRUS_7543 0x1202 |
449 | #define PCI_DEVICE_ID_CIRRUS_7541 0x1204 | 451 | #define PCI_DEVICE_ID_CIRRUS_7541 0x1204 |
452 | #define PCI_DEVICE_ID_CIRRUS_4610 0x6001 | ||
453 | #define PCI_DEVICE_ID_CIRRUS_4612 0x6003 | ||
454 | #define PCI_DEVICE_ID_CIRRUS_4615 0x6004 | ||
455 | #define PCI_DEVICE_ID_CIRRUS_4281 0x6005 | ||
450 | 456 | ||
451 | #define PCI_VENDOR_ID_IBM 0x1014 | 457 | #define PCI_VENDOR_ID_IBM 0x1014 |
452 | #define PCI_DEVICE_ID_IBM_FIRE_CORAL 0x000a | 458 | #define PCI_DEVICE_ID_IBM_FIRE_CORAL 0x000a |
@@ -487,6 +493,7 @@ | |||
487 | #define PCI_DEVICE_ID_AMI_MEGARAID2 0x9060 | 493 | #define PCI_DEVICE_ID_AMI_MEGARAID2 0x9060 |
488 | 494 | ||
489 | #define PCI_VENDOR_ID_AMD 0x1022 | 495 | #define PCI_VENDOR_ID_AMD 0x1022 |
496 | #define PCI_DEVICE_ID_AMD_K8_NB 0x1100 | ||
490 | #define PCI_DEVICE_ID_AMD_LANCE 0x2000 | 497 | #define PCI_DEVICE_ID_AMD_LANCE 0x2000 |
491 | #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 | 498 | #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 |
492 | #define PCI_DEVICE_ID_AMD_SCSI 0x2020 | 499 | #define PCI_DEVICE_ID_AMD_SCSI 0x2020 |
@@ -554,6 +561,7 @@ | |||
554 | #define PCI_VENDOR_ID_DELL 0x1028 | 561 | #define PCI_VENDOR_ID_DELL 0x1028 |
555 | #define PCI_DEVICE_ID_DELL_RACIII 0x0008 | 562 | #define PCI_DEVICE_ID_DELL_RACIII 0x0008 |
556 | #define PCI_DEVICE_ID_DELL_RAC4 0x0012 | 563 | #define PCI_DEVICE_ID_DELL_RAC4 0x0012 |
564 | #define PCI_DEVICE_ID_DELL_PERC5 0x0015 | ||
557 | 565 | ||
558 | #define PCI_VENDOR_ID_MATROX 0x102B | 566 | #define PCI_VENDOR_ID_MATROX 0x102B |
559 | #define PCI_DEVICE_ID_MATROX_MGA_2 0x0518 | 567 | #define PCI_DEVICE_ID_MATROX_MGA_2 0x0518 |
@@ -682,7 +690,9 @@ | |||
682 | #define PCI_DEVICE_ID_SI_6326 0x6326 | 690 | #define PCI_DEVICE_ID_SI_6326 0x6326 |
683 | #define PCI_DEVICE_ID_SI_7001 0x7001 | 691 | #define PCI_DEVICE_ID_SI_7001 0x7001 |
684 | #define PCI_DEVICE_ID_SI_7012 0x7012 | 692 | #define PCI_DEVICE_ID_SI_7012 0x7012 |
693 | #define PCI_DEVICE_ID_SI_7013 0x7013 | ||
685 | #define PCI_DEVICE_ID_SI_7016 0x7016 | 694 | #define PCI_DEVICE_ID_SI_7016 0x7016 |
695 | #define PCI_DEVICE_ID_SI_7018 0x7018 | ||
686 | 696 | ||
687 | #define PCI_VENDOR_ID_HP 0x103c | 697 | #define PCI_VENDOR_ID_HP 0x103c |
688 | #define PCI_DEVICE_ID_HP_VISUALIZE_EG 0x1005 | 698 | #define PCI_DEVICE_ID_HP_VISUALIZE_EG 0x1005 |
@@ -713,10 +723,12 @@ | |||
713 | #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 | 723 | #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 |
714 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 | 724 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 |
715 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 | 725 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 |
726 | #define PCI_DEVICE_ID_HP_CISS 0x3210 | ||
716 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 | 727 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 |
717 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 | 728 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 |
718 | #define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031 | ||
719 | #define PCI_DEVICE_ID_HP_CISSC 0x3230 | 729 | #define PCI_DEVICE_ID_HP_CISSC 0x3230 |
730 | #define PCI_DEVICE_ID_HP_CISSD 0x3238 | ||
731 | #define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031 | ||
720 | 732 | ||
721 | #define PCI_VENDOR_ID_PCTECH 0x1042 | 733 | #define PCI_VENDOR_ID_PCTECH 0x1042 |
722 | #define PCI_DEVICE_ID_PCTECH_RZ1000 0x1000 | 734 | #define PCI_DEVICE_ID_PCTECH_RZ1000 0x1000 |
@@ -760,6 +772,8 @@ | |||
760 | #define PCI_DEVICE_ID_TI_TVP4010 0x3d04 | 772 | #define PCI_DEVICE_ID_TI_TVP4010 0x3d04 |
761 | #define PCI_DEVICE_ID_TI_TVP4020 0x3d07 | 773 | #define PCI_DEVICE_ID_TI_TVP4020 0x3d07 |
762 | #define PCI_DEVICE_ID_TI_4450 0x8011 | 774 | #define PCI_DEVICE_ID_TI_4450 0x8011 |
775 | #define PCI_DEVICE_ID_TI_XX21_XX11 0x8031 | ||
776 | #define PCI_DEVICE_ID_TI_X515 0x8036 | ||
763 | #define PCI_DEVICE_ID_TI_1130 0xac12 | 777 | #define PCI_DEVICE_ID_TI_1130 0xac12 |
764 | #define PCI_DEVICE_ID_TI_1031 0xac13 | 778 | #define PCI_DEVICE_ID_TI_1031 0xac13 |
765 | #define PCI_DEVICE_ID_TI_1131 0xac15 | 779 | #define PCI_DEVICE_ID_TI_1131 0xac15 |
@@ -776,12 +790,17 @@ | |||
776 | #define PCI_DEVICE_ID_TI_4451 0xac42 | 790 | #define PCI_DEVICE_ID_TI_4451 0xac42 |
777 | #define PCI_DEVICE_ID_TI_4510 0xac44 | 791 | #define PCI_DEVICE_ID_TI_4510 0xac44 |
778 | #define PCI_DEVICE_ID_TI_4520 0xac46 | 792 | #define PCI_DEVICE_ID_TI_4520 0xac46 |
793 | #define PCI_DEVICE_ID_TI_7510 0xac47 | ||
794 | #define PCI_DEVICE_ID_TI_7610 0xac48 | ||
795 | #define PCI_DEVICE_ID_TI_7410 0xac49 | ||
779 | #define PCI_DEVICE_ID_TI_1410 0xac50 | 796 | #define PCI_DEVICE_ID_TI_1410 0xac50 |
780 | #define PCI_DEVICE_ID_TI_1420 0xac51 | 797 | #define PCI_DEVICE_ID_TI_1420 0xac51 |
781 | #define PCI_DEVICE_ID_TI_1451A 0xac52 | 798 | #define PCI_DEVICE_ID_TI_1451A 0xac52 |
782 | #define PCI_DEVICE_ID_TI_1620 0xac54 | 799 | #define PCI_DEVICE_ID_TI_1620 0xac54 |
783 | #define PCI_DEVICE_ID_TI_1520 0xac55 | 800 | #define PCI_DEVICE_ID_TI_1520 0xac55 |
784 | #define PCI_DEVICE_ID_TI_1510 0xac56 | 801 | #define PCI_DEVICE_ID_TI_1510 0xac56 |
802 | #define PCI_DEVICE_ID_TI_X620 0xac8d | ||
803 | #define PCI_DEVICE_ID_TI_X420 0xac8e | ||
785 | 804 | ||
786 | #define PCI_VENDOR_ID_SONY 0x104d | 805 | #define PCI_VENDOR_ID_SONY 0x104d |
787 | #define PCI_DEVICE_ID_SONY_CXD3222 0x8039 | 806 | #define PCI_DEVICE_ID_SONY_CXD3222 0x8039 |
@@ -967,6 +986,7 @@ | |||
967 | #define PCI_DEVICE_ID_SUN_SABRE 0xa000 | 986 | #define PCI_DEVICE_ID_SUN_SABRE 0xa000 |
968 | #define PCI_DEVICE_ID_SUN_HUMMINGBIRD 0xa001 | 987 | #define PCI_DEVICE_ID_SUN_HUMMINGBIRD 0xa001 |
969 | #define PCI_DEVICE_ID_SUN_TOMATILLO 0xa801 | 988 | #define PCI_DEVICE_ID_SUN_TOMATILLO 0xa801 |
989 | #define PCI_DEVICE_ID_SUN_CASSINI 0xabba | ||
970 | 990 | ||
971 | #define PCI_VENDOR_ID_CMD 0x1095 | 991 | #define PCI_VENDOR_ID_CMD 0x1095 |
972 | #define PCI_DEVICE_ID_CMD_640 0x0640 | 992 | #define PCI_DEVICE_ID_CMD_640 0x0640 |
@@ -991,6 +1011,7 @@ | |||
991 | #define PCI_DEVICE_ID_BROOKTREE_849A 0x0351 | 1011 | #define PCI_DEVICE_ID_BROOKTREE_849A 0x0351 |
992 | #define PCI_DEVICE_ID_BROOKTREE_878_1 0x036e | 1012 | #define PCI_DEVICE_ID_BROOKTREE_878_1 0x036e |
993 | #define PCI_DEVICE_ID_BROOKTREE_878 0x0878 | 1013 | #define PCI_DEVICE_ID_BROOKTREE_878 0x0878 |
1014 | #define PCI_DEVICE_ID_BROOKTREE_879 0x0879 | ||
994 | #define PCI_DEVICE_ID_BROOKTREE_8474 0x8474 | 1015 | #define PCI_DEVICE_ID_BROOKTREE_8474 0x8474 |
995 | 1016 | ||
996 | #define PCI_VENDOR_ID_SIERRA 0x10a8 | 1017 | #define PCI_VENDOR_ID_SIERRA 0x10a8 |
@@ -1109,6 +1130,9 @@ | |||
1109 | #define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2160 0x0004 | 1130 | #define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_NM2160 0x0004 |
1110 | #define PCI_DEVICE_ID_NEOMAGIC_MAGICMEDIA_256AV 0x0005 | 1131 | #define PCI_DEVICE_ID_NEOMAGIC_MAGICMEDIA_256AV 0x0005 |
1111 | #define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZVPLUS 0x0083 | 1132 | #define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZVPLUS 0x0083 |
1133 | #define PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO 0x8005 | ||
1134 | #define PCI_DEVICE_ID_NEOMAGIC_NM256ZX_AUDIO 0x8006 | ||
1135 | #define PCI_DEVICE_ID_NEOMAGIC_NM256XL_PLUS_AUDIO 0x8016 | ||
1112 | 1136 | ||
1113 | #define PCI_VENDOR_ID_ASP 0x10cd | 1137 | #define PCI_VENDOR_ID_ASP 0x10cd |
1114 | #define PCI_DEVICE_ID_ASP_ABP940 0x1200 | 1138 | #define PCI_DEVICE_ID_ASP_ABP940 0x1200 |
@@ -1155,10 +1179,13 @@ | |||
1155 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064 | 1179 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064 |
1156 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE 0x0065 | 1180 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE 0x0065 |
1157 | #define PCI_DEVICE_ID_NVIDIA_NVENET_2 0x0066 | 1181 | #define PCI_DEVICE_ID_NVIDIA_NVENET_2 0x0066 |
1182 | #define PCI_DEVICE_ID_NVIDIA_MCP2_MODEM 0x0069 | ||
1158 | #define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO 0x006a | 1183 | #define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO 0x006a |
1159 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SMBUS 0x0084 | 1184 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SMBUS 0x0084 |
1160 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE 0x0085 | 1185 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE 0x0085 |
1161 | #define PCI_DEVICE_ID_NVIDIA_NVENET_4 0x0086 | 1186 | #define PCI_DEVICE_ID_NVIDIA_NVENET_4 0x0086 |
1187 | #define PCI_DEVICE_ID_NVIDIA_MCP2S_MODEM 0x0089 | ||
1188 | #define PCI_DEVICE_ID_NVIDIA_CK8_AUDIO 0x008a | ||
1162 | #define PCI_DEVICE_ID_NVIDIA_NVENET_5 0x008c | 1189 | #define PCI_DEVICE_ID_NVIDIA_NVENET_5 0x008c |
1163 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA 0x008e | 1190 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA 0x008e |
1164 | #define PCI_DEVICE_ID_NVIDIA_ITNT2 0x00A0 | 1191 | #define PCI_DEVICE_ID_NVIDIA_ITNT2 0x00A0 |
@@ -1173,6 +1200,7 @@ | |||
1173 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS 0x00d4 | 1200 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS 0x00d4 |
1174 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE 0x00d5 | 1201 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE 0x00d5 |
1175 | #define PCI_DEVICE_ID_NVIDIA_NVENET_3 0x00d6 | 1202 | #define PCI_DEVICE_ID_NVIDIA_NVENET_3 0x00d6 |
1203 | #define PCI_DEVICE_ID_NVIDIA_MCP3_MODEM 0x00d9 | ||
1176 | #define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da | 1204 | #define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da |
1177 | #define PCI_DEVICE_ID_NVIDIA_NVENET_7 0x00df | 1205 | #define PCI_DEVICE_ID_NVIDIA_NVENET_7 0x00df |
1178 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S 0x00e1 | 1206 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S 0x00e1 |
@@ -1180,6 +1208,7 @@ | |||
1180 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SMBUS 0x00e4 | 1208 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SMBUS 0x00e4 |
1181 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE 0x00e5 | 1209 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE 0x00e5 |
1182 | #define PCI_DEVICE_ID_NVIDIA_NVENET_6 0x00e6 | 1210 | #define PCI_DEVICE_ID_NVIDIA_NVENET_6 0x00e6 |
1211 | #define PCI_DEVICE_ID_NVIDIA_CK8S_AUDIO 0x00ea | ||
1183 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2 0x00ee | 1212 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2 0x00ee |
1184 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR 0x0100 | 1213 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR 0x0100 |
1185 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR 0x0101 | 1214 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR 0x0101 |
@@ -1230,6 +1259,7 @@ | |||
1230 | #define PCI_DEVICE_ID_NVIDIA_MCP1_AUDIO 0x01b1 | 1259 | #define PCI_DEVICE_ID_NVIDIA_MCP1_AUDIO 0x01b1 |
1231 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS 0x01b4 | 1260 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS 0x01b4 |
1232 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE 0x01bc | 1261 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE 0x01bc |
1262 | #define PCI_DEVICE_ID_NVIDIA_MCP1_MODEM 0x01c1 | ||
1233 | #define PCI_DEVICE_ID_NVIDIA_NVENET_1 0x01c3 | 1263 | #define PCI_DEVICE_ID_NVIDIA_NVENET_1 0x01c3 |
1234 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2 0x01e0 | 1264 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2 0x01e0 |
1235 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE3 0x0200 | 1265 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE3 0x0200 |
@@ -1249,7 +1279,8 @@ | |||
1249 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA 0x0266 | 1279 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA 0x0266 |
1250 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2 0x0267 | 1280 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2 0x0267 |
1251 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE 0x036E | 1281 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE 0x036E |
1252 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x036F | 1282 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x037E |
1283 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2 0x037F | ||
1253 | #define PCI_DEVICE_ID_NVIDIA_NVENET_12 0x0268 | 1284 | #define PCI_DEVICE_ID_NVIDIA_NVENET_12 0x0268 |
1254 | #define PCI_DEVICE_ID_NVIDIA_NVENET_13 0x0269 | 1285 | #define PCI_DEVICE_ID_NVIDIA_NVENET_13 0x0269 |
1255 | #define PCI_DEVICE_ID_NVIDIA_MCP51_AUDIO 0x026B | 1286 | #define PCI_DEVICE_ID_NVIDIA_MCP51_AUDIO 0x026B |
@@ -1334,6 +1365,13 @@ | |||
1334 | #define PCI_DEVICE_ID_REALTEK_8169 0x8169 | 1365 | #define PCI_DEVICE_ID_REALTEK_8169 0x8169 |
1335 | 1366 | ||
1336 | #define PCI_VENDOR_ID_XILINX 0x10ee | 1367 | #define PCI_VENDOR_ID_XILINX 0x10ee |
1368 | #define PCI_DEVICE_ID_RME_DIGI96 0x3fc0 | ||
1369 | #define PCI_DEVICE_ID_RME_DIGI96_8 0x3fc1 | ||
1370 | #define PCI_DEVICE_ID_RME_DIGI96_8_PRO 0x3fc2 | ||
1371 | #define PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST 0x3fc3 | ||
1372 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL 0x3fc4 | ||
1373 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5 | ||
1374 | #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6 | ||
1337 | #define PCI_DEVICE_ID_TURBOPAM 0x4020 | 1375 | #define PCI_DEVICE_ID_TURBOPAM 0x4020 |
1338 | 1376 | ||
1339 | #define PCI_VENDOR_ID_TRUEVISION 0x10fa | 1377 | #define PCI_VENDOR_ID_TRUEVISION 0x10fa |
@@ -1809,6 +1847,14 @@ | |||
1809 | #define PCI_DEVICE_ID_ESS_ESS1968 0x1968 | 1847 | #define PCI_DEVICE_ID_ESS_ESS1968 0x1968 |
1810 | #define PCI_DEVICE_ID_ESS_AUDIOPCI 0x1969 | 1848 | #define PCI_DEVICE_ID_ESS_AUDIOPCI 0x1969 |
1811 | #define PCI_DEVICE_ID_ESS_ESS1978 0x1978 | 1849 | #define PCI_DEVICE_ID_ESS_ESS1978 0x1978 |
1850 | #define PCI_DEVICE_ID_ESS_ALLEGRO_1 0x1988 | ||
1851 | #define PCI_DEVICE_ID_ESS_ALLEGRO 0x1989 | ||
1852 | #define PCI_DEVICE_ID_ESS_CANYON3D_2LE 0x1990 | ||
1853 | #define PCI_DEVICE_ID_ESS_CANYON3D_2 0x1992 | ||
1854 | #define PCI_DEVICE_ID_ESS_MAESTRO3 0x1998 | ||
1855 | #define PCI_DEVICE_ID_ESS_MAESTRO3_1 0x1999 | ||
1856 | #define PCI_DEVICE_ID_ESS_MAESTRO3_HW 0x199a | ||
1857 | #define PCI_DEVICE_ID_ESS_MAESTRO3_2 0x199b | ||
1812 | 1858 | ||
1813 | #define PCI_VENDOR_ID_SATSAGEM 0x1267 | 1859 | #define PCI_VENDOR_ID_SATSAGEM 0x1267 |
1814 | #define PCI_DEVICE_ID_SATSAGEM_NICCY 0x1016 | 1860 | #define PCI_DEVICE_ID_SATSAGEM_NICCY 0x1016 |
@@ -1968,6 +2014,9 @@ | |||
1968 | #define PCI_DEVICE_ID_LMC_SSI 0x0005 | 2014 | #define PCI_DEVICE_ID_LMC_SSI 0x0005 |
1969 | #define PCI_DEVICE_ID_LMC_T1 0x0006 | 2015 | #define PCI_DEVICE_ID_LMC_T1 0x0006 |
1970 | 2016 | ||
2017 | #define PCI_VENDOR_ID_MARIAN 0x1382 | ||
2018 | #define PCI_DEVICE_ID_MARIAN_PRODIF_PLUS 0x2048 | ||
2019 | |||
1971 | #define PCI_VENDOR_ID_NETGEAR 0x1385 | 2020 | #define PCI_VENDOR_ID_NETGEAR 0x1385 |
1972 | #define PCI_DEVICE_ID_NETGEAR_GA620 0x620a | 2021 | #define PCI_DEVICE_ID_NETGEAR_GA620 0x620a |
1973 | #define PCI_DEVICE_ID_NETGEAR_GA622 0x622a | 2022 | #define PCI_DEVICE_ID_NETGEAR_GA622 0x622a |
@@ -2056,6 +2105,10 @@ | |||
2056 | #define PCI_VENDOR_ID_TIMEDIA 0x1409 | 2105 | #define PCI_VENDOR_ID_TIMEDIA 0x1409 |
2057 | #define PCI_DEVICE_ID_TIMEDIA_1889 0x7168 | 2106 | #define PCI_DEVICE_ID_TIMEDIA_1889 0x7168 |
2058 | 2107 | ||
2108 | #define PCI_VENDOR_ID_ICE 0x1412 | ||
2109 | #define PCI_DEVICE_ID_ICE_1712 0x1712 | ||
2110 | #define PCI_DEVICE_ID_VT1724 0x1724 | ||
2111 | |||
2059 | #define PCI_VENDOR_ID_OXSEMI 0x1415 | 2112 | #define PCI_VENDOR_ID_OXSEMI 0x1415 |
2060 | #define PCI_DEVICE_ID_OXSEMI_12PCI840 0x8403 | 2113 | #define PCI_DEVICE_ID_OXSEMI_12PCI840 0x8403 |
2061 | #define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501 | 2114 | #define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501 |
@@ -2145,7 +2198,12 @@ | |||
2145 | #define PCI_DEVICE_ID_ENE_1211 0x1211 | 2198 | #define PCI_DEVICE_ID_ENE_1211 0x1211 |
2146 | #define PCI_DEVICE_ID_ENE_1225 0x1225 | 2199 | #define PCI_DEVICE_ID_ENE_1225 0x1225 |
2147 | #define PCI_DEVICE_ID_ENE_1410 0x1410 | 2200 | #define PCI_DEVICE_ID_ENE_1410 0x1410 |
2201 | #define PCI_DEVICE_ID_ENE_710 0x1411 | ||
2202 | #define PCI_DEVICE_ID_ENE_712 0x1412 | ||
2148 | #define PCI_DEVICE_ID_ENE_1420 0x1420 | 2203 | #define PCI_DEVICE_ID_ENE_1420 0x1420 |
2204 | #define PCI_DEVICE_ID_ENE_720 0x1421 | ||
2205 | #define PCI_DEVICE_ID_ENE_722 0x1422 | ||
2206 | |||
2149 | #define PCI_VENDOR_ID_CHELSIO 0x1425 | 2207 | #define PCI_VENDOR_ID_CHELSIO 0x1425 |
2150 | 2208 | ||
2151 | #define PCI_VENDOR_ID_MIPS 0x153f | 2209 | #define PCI_VENDOR_ID_MIPS 0x153f |
@@ -2212,6 +2270,9 @@ | |||
2212 | 2270 | ||
2213 | #define PCI_VENDOR_ID_INFINICON 0x1820 | 2271 | #define PCI_VENDOR_ID_INFINICON 0x1820 |
2214 | 2272 | ||
2273 | #define PCI_VENDOR_ID_SITECOM 0x182d | ||
2274 | #define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069 | ||
2275 | |||
2215 | #define PCI_VENDOR_ID_TOPSPIN 0x1867 | 2276 | #define PCI_VENDOR_ID_TOPSPIN 0x1867 |
2216 | 2277 | ||
2217 | #define PCI_VENDOR_ID_TDI 0x192E | 2278 | #define PCI_VENDOR_ID_TDI 0x192E |
@@ -2536,6 +2597,7 @@ | |||
2536 | #define PCI_DEVICE_ID_INTEL_82443BX_1 0x7191 | 2597 | #define PCI_DEVICE_ID_INTEL_82443BX_1 0x7191 |
2537 | #define PCI_DEVICE_ID_INTEL_82443BX_2 0x7192 | 2598 | #define PCI_DEVICE_ID_INTEL_82443BX_2 0x7192 |
2538 | #define PCI_DEVICE_ID_INTEL_440MX 0x7195 | 2599 | #define PCI_DEVICE_ID_INTEL_440MX 0x7195 |
2600 | #define PCI_DEVICE_ID_INTEL_440MX_6 0x7196 | ||
2539 | #define PCI_DEVICE_ID_INTEL_82443MX_0 0x7198 | 2601 | #define PCI_DEVICE_ID_INTEL_82443MX_0 0x7198 |
2540 | #define PCI_DEVICE_ID_INTEL_82443MX_1 0x7199 | 2602 | #define PCI_DEVICE_ID_INTEL_82443MX_1 0x7199 |
2541 | #define PCI_DEVICE_ID_INTEL_82443MX_2 0x719a | 2603 | #define PCI_DEVICE_ID_INTEL_82443MX_2 0x719a |
@@ -2642,6 +2704,11 @@ | |||
2642 | #define PCI_VENDOR_ID_TTTECH 0x0357 | 2704 | #define PCI_VENDOR_ID_TTTECH 0x0357 |
2643 | #define PCI_DEVICE_ID_TTTECH_MC322 0x000A | 2705 | #define PCI_DEVICE_ID_TTTECH_MC322 0x000A |
2644 | 2706 | ||
2707 | #define PCI_VENDOR_ID_XILINX_RME 0xea60 | ||
2708 | #define PCI_DEVICE_ID_RME_DIGI32 0x9896 | ||
2709 | #define PCI_DEVICE_ID_RME_DIGI32_PRO 0x9897 | ||
2710 | #define PCI_DEVICE_ID_RME_DIGI32_8 0x9898 | ||
2711 | |||
2645 | #define PCI_VENDOR_ID_ARK 0xedd8 | 2712 | #define PCI_VENDOR_ID_ARK 0xedd8 |
2646 | #define PCI_DEVICE_ID_ARK_STING 0xa091 | 2713 | #define PCI_DEVICE_ID_ARK_STING 0xa091 |
2647 | #define PCI_DEVICE_ID_ARK_STINGARK 0xa099 | 2714 | #define PCI_DEVICE_ID_ARK_STINGARK 0xa099 |
diff --git a/include/linux/pktcdvd.h b/include/linux/pktcdvd.h index 4b32bce9a289..2c177e4c8f22 100644 --- a/include/linux/pktcdvd.h +++ b/include/linux/pktcdvd.h | |||
@@ -166,6 +166,9 @@ struct packet_iosched | |||
166 | /* | 166 | /* |
167 | * 32 buffers of 2048 bytes | 167 | * 32 buffers of 2048 bytes |
168 | */ | 168 | */ |
169 | #if (PAGE_SIZE % CD_FRAMESIZE) != 0 | ||
170 | #error "PAGE_SIZE must be a multiple of CD_FRAMESIZE" | ||
171 | #endif | ||
169 | #define PACKET_MAX_SIZE 32 | 172 | #define PACKET_MAX_SIZE 32 |
170 | #define PAGES_PER_PACKET (PACKET_MAX_SIZE * CD_FRAMESIZE / PAGE_SIZE) | 173 | #define PAGES_PER_PACKET (PACKET_MAX_SIZE * CD_FRAMESIZE / PAGE_SIZE) |
171 | #define PACKET_MAX_SECTORS (PACKET_MAX_SIZE * CD_FRAMESIZE >> 9) | 174 | #define PACKET_MAX_SECTORS (PACKET_MAX_SIZE * CD_FRAMESIZE >> 9) |
diff --git a/include/linux/reboot.h b/include/linux/reboot.h index 3b3266ff1a95..7ab2cdb83ef0 100644 --- a/include/linux/reboot.h +++ b/include/linux/reboot.h | |||
@@ -59,6 +59,10 @@ extern void machine_crash_shutdown(struct pt_regs *); | |||
59 | * Architecture independent implemenations of sys_reboot commands. | 59 | * Architecture independent implemenations of sys_reboot commands. |
60 | */ | 60 | */ |
61 | 61 | ||
62 | extern void kernel_restart_prepare(char *cmd); | ||
63 | extern void kernel_halt_prepare(void); | ||
64 | extern void kernel_power_off_prepare(void); | ||
65 | |||
62 | extern void kernel_restart(char *cmd); | 66 | extern void kernel_restart(char *cmd); |
63 | extern void kernel_halt(void); | 67 | extern void kernel_halt(void); |
64 | extern void kernel_power_off(void); | 68 | extern void kernel_power_off(void); |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 38c8654aaa96..c3ba31f210a9 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -107,13 +107,25 @@ extern unsigned long nr_iowait(void); | |||
107 | 107 | ||
108 | #include <asm/processor.h> | 108 | #include <asm/processor.h> |
109 | 109 | ||
110 | /* | ||
111 | * Task state bitmask. NOTE! These bits are also | ||
112 | * encoded in fs/proc/array.c: get_task_state(). | ||
113 | * | ||
114 | * We have two separate sets of flags: task->state | ||
115 | * is about runnability, while task->exit_state are | ||
116 | * about the task exiting. Confusing, but this way | ||
117 | * modifying one set can't modify the other one by | ||
118 | * mistake. | ||
119 | */ | ||
110 | #define TASK_RUNNING 0 | 120 | #define TASK_RUNNING 0 |
111 | #define TASK_INTERRUPTIBLE 1 | 121 | #define TASK_INTERRUPTIBLE 1 |
112 | #define TASK_UNINTERRUPTIBLE 2 | 122 | #define TASK_UNINTERRUPTIBLE 2 |
113 | #define TASK_STOPPED 4 | 123 | #define TASK_STOPPED 4 |
114 | #define TASK_TRACED 8 | 124 | #define TASK_TRACED 8 |
125 | /* in tsk->exit_state */ | ||
115 | #define EXIT_ZOMBIE 16 | 126 | #define EXIT_ZOMBIE 16 |
116 | #define EXIT_DEAD 32 | 127 | #define EXIT_DEAD 32 |
128 | /* in tsk->state again */ | ||
117 | #define TASK_NONINTERACTIVE 64 | 129 | #define TASK_NONINTERACTIVE 64 |
118 | 130 | ||
119 | #define __set_task_state(tsk, state_value) \ | 131 | #define __set_task_state(tsk, state_value) \ |
@@ -121,6 +133,17 @@ extern unsigned long nr_iowait(void); | |||
121 | #define set_task_state(tsk, state_value) \ | 133 | #define set_task_state(tsk, state_value) \ |
122 | set_mb((tsk)->state, (state_value)) | 134 | set_mb((tsk)->state, (state_value)) |
123 | 135 | ||
136 | /* | ||
137 | * set_current_state() includes a barrier so that the write of current->state | ||
138 | * is correctly serialised wrt the caller's subsequent test of whether to | ||
139 | * actually sleep: | ||
140 | * | ||
141 | * set_current_state(TASK_UNINTERRUPTIBLE); | ||
142 | * if (do_i_need_to_sleep()) | ||
143 | * schedule(); | ||
144 | * | ||
145 | * If the caller does not need such serialisation then use __set_current_state() | ||
146 | */ | ||
124 | #define __set_current_state(state_value) \ | 147 | #define __set_current_state(state_value) \ |
125 | do { current->state = (state_value); } while (0) | 148 | do { current->state = (state_value); } while (0) |
126 | #define set_current_state(state_value) \ | 149 | #define set_current_state(state_value) \ |
diff --git a/include/linux/security.h b/include/linux/security.h index 55b02e1c73f4..0e43460d374e 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
@@ -1907,6 +1907,11 @@ extern int register_security (struct security_operations *ops); | |||
1907 | extern int unregister_security (struct security_operations *ops); | 1907 | extern int unregister_security (struct security_operations *ops); |
1908 | extern int mod_reg_security (const char *name, struct security_operations *ops); | 1908 | extern int mod_reg_security (const char *name, struct security_operations *ops); |
1909 | extern int mod_unreg_security (const char *name, struct security_operations *ops); | 1909 | extern int mod_unreg_security (const char *name, struct security_operations *ops); |
1910 | extern struct dentry *securityfs_create_file(const char *name, mode_t mode, | ||
1911 | struct dentry *parent, void *data, | ||
1912 | struct file_operations *fops); | ||
1913 | extern struct dentry *securityfs_create_dir(const char *name, struct dentry *parent); | ||
1914 | extern void securityfs_remove(struct dentry *dentry); | ||
1910 | 1915 | ||
1911 | 1916 | ||
1912 | #else /* CONFIG_SECURITY */ | 1917 | #else /* CONFIG_SECURITY */ |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 2741c0c55e83..466c879f82b8 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -155,8 +155,6 @@ struct skb_shared_info { | |||
155 | #define SKB_DATAREF_SHIFT 16 | 155 | #define SKB_DATAREF_SHIFT 16 |
156 | #define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1) | 156 | #define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1) |
157 | 157 | ||
158 | extern struct timeval skb_tv_base; | ||
159 | |||
160 | struct skb_timeval { | 158 | struct skb_timeval { |
161 | u32 off_sec; | 159 | u32 off_sec; |
162 | u32 off_usec; | 160 | u32 off_usec; |
@@ -175,7 +173,7 @@ enum { | |||
175 | * @prev: Previous buffer in list | 173 | * @prev: Previous buffer in list |
176 | * @list: List we are on | 174 | * @list: List we are on |
177 | * @sk: Socket we are owned by | 175 | * @sk: Socket we are owned by |
178 | * @tstamp: Time we arrived stored as offset to skb_tv_base | 176 | * @tstamp: Time we arrived |
179 | * @dev: Device we arrived on/are leaving by | 177 | * @dev: Device we arrived on/are leaving by |
180 | * @input_dev: Device we arrived on | 178 | * @input_dev: Device we arrived on |
181 | * @h: Transport layer header | 179 | * @h: Transport layer header |
@@ -1255,10 +1253,6 @@ static inline void skb_get_timestamp(const struct sk_buff *skb, struct timeval * | |||
1255 | { | 1253 | { |
1256 | stamp->tv_sec = skb->tstamp.off_sec; | 1254 | stamp->tv_sec = skb->tstamp.off_sec; |
1257 | stamp->tv_usec = skb->tstamp.off_usec; | 1255 | stamp->tv_usec = skb->tstamp.off_usec; |
1258 | if (skb->tstamp.off_sec) { | ||
1259 | stamp->tv_sec += skb_tv_base.tv_sec; | ||
1260 | stamp->tv_usec += skb_tv_base.tv_usec; | ||
1261 | } | ||
1262 | } | 1256 | } |
1263 | 1257 | ||
1264 | /** | 1258 | /** |
@@ -1272,8 +1266,8 @@ static inline void skb_get_timestamp(const struct sk_buff *skb, struct timeval * | |||
1272 | */ | 1266 | */ |
1273 | static inline void skb_set_timestamp(struct sk_buff *skb, const struct timeval *stamp) | 1267 | static inline void skb_set_timestamp(struct sk_buff *skb, const struct timeval *stamp) |
1274 | { | 1268 | { |
1275 | skb->tstamp.off_sec = stamp->tv_sec - skb_tv_base.tv_sec; | 1269 | skb->tstamp.off_sec = stamp->tv_sec; |
1276 | skb->tstamp.off_usec = stamp->tv_usec - skb_tv_base.tv_usec; | 1270 | skb->tstamp.off_usec = stamp->tv_usec; |
1277 | } | 1271 | } |
1278 | 1272 | ||
1279 | extern void __net_timestamp(struct sk_buff *skb); | 1273 | extern void __net_timestamp(struct sk_buff *skb); |
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/sysctl.h b/include/linux/sysctl.h index 3a29a9f9b451..fc8e367f671e 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
@@ -202,7 +202,8 @@ enum | |||
202 | NET_TR=14, | 202 | NET_TR=14, |
203 | NET_DECNET=15, | 203 | NET_DECNET=15, |
204 | NET_ECONET=16, | 204 | NET_ECONET=16, |
205 | NET_SCTP=17, | 205 | NET_SCTP=17, |
206 | NET_LLC=18, | ||
206 | }; | 207 | }; |
207 | 208 | ||
208 | /* /proc/sys/kernel/random */ | 209 | /* /proc/sys/kernel/random */ |
@@ -522,6 +523,29 @@ enum { | |||
522 | NET_IPX_FORWARDING=2 | 523 | NET_IPX_FORWARDING=2 |
523 | }; | 524 | }; |
524 | 525 | ||
526 | /* /proc/sys/net/llc */ | ||
527 | enum { | ||
528 | NET_LLC2=1, | ||
529 | NET_LLC_STATION=2, | ||
530 | }; | ||
531 | |||
532 | /* /proc/sys/net/llc/llc2 */ | ||
533 | enum { | ||
534 | NET_LLC2_TIMEOUT=1, | ||
535 | }; | ||
536 | |||
537 | /* /proc/sys/net/llc/station */ | ||
538 | enum { | ||
539 | NET_LLC_STATION_ACK_TIMEOUT=1, | ||
540 | }; | ||
541 | |||
542 | /* /proc/sys/net/llc/llc2/timeout */ | ||
543 | enum { | ||
544 | NET_LLC2_ACK_TIMEOUT=1, | ||
545 | NET_LLC2_P_TIMEOUT=2, | ||
546 | NET_LLC2_REJ_TIMEOUT=3, | ||
547 | NET_LLC2_BUSY_TIMEOUT=4, | ||
548 | }; | ||
525 | 549 | ||
526 | /* /proc/sys/net/appletalk */ | 550 | /* /proc/sys/net/appletalk */ |
527 | enum { | 551 | enum { |
diff --git a/include/linux/tc_ematch/tc_em_meta.h b/include/linux/tc_ematch/tc_em_meta.h index 081b1ee8516e..e21937cf91d0 100644 --- a/include/linux/tc_ematch/tc_em_meta.h +++ b/include/linux/tc_ematch/tc_em_meta.h | |||
@@ -71,7 +71,7 @@ enum | |||
71 | TCF_META_ID_SK_SNDBUF, | 71 | TCF_META_ID_SK_SNDBUF, |
72 | TCF_META_ID_SK_ALLOCS, | 72 | TCF_META_ID_SK_ALLOCS, |
73 | TCF_META_ID_SK_ROUTE_CAPS, | 73 | TCF_META_ID_SK_ROUTE_CAPS, |
74 | TCF_META_ID_SK_HASHENT, | 74 | TCF_META_ID_SK_HASH, |
75 | TCF_META_ID_SK_LINGERTIME, | 75 | TCF_META_ID_SK_LINGERTIME, |
76 | TCF_META_ID_SK_ACK_BACKLOG, | 76 | TCF_META_ID_SK_ACK_BACKLOG, |
77 | TCF_META_ID_SK_MAX_ACK_BACKLOG, | 77 | TCF_META_ID_SK_MAX_ACK_BACKLOG, |
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_ */ | ||
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index f623a33b9abe..89a055761bed 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
@@ -60,12 +60,17 @@ enum v4l2_field { | |||
60 | (field) == V4L2_FIELD_SEQ_BT) | 60 | (field) == V4L2_FIELD_SEQ_BT) |
61 | 61 | ||
62 | enum v4l2_buf_type { | 62 | enum v4l2_buf_type { |
63 | V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, | 63 | V4L2_BUF_TYPE_VIDEO_CAPTURE = 1, |
64 | V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, | 64 | V4L2_BUF_TYPE_VIDEO_OUTPUT = 2, |
65 | V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, | 65 | V4L2_BUF_TYPE_VIDEO_OVERLAY = 3, |
66 | V4L2_BUF_TYPE_VBI_CAPTURE = 4, | 66 | V4L2_BUF_TYPE_VBI_CAPTURE = 4, |
67 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, | 67 | V4L2_BUF_TYPE_VBI_OUTPUT = 5, |
68 | V4L2_BUF_TYPE_PRIVATE = 0x80, | 68 | #if 1 |
69 | /* Experimental Sliced VBI */ | ||
70 | V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6, | ||
71 | V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7, | ||
72 | #endif | ||
73 | V4L2_BUF_TYPE_PRIVATE = 0x80, | ||
69 | }; | 74 | }; |
70 | 75 | ||
71 | enum v4l2_ctrl_type { | 76 | enum v4l2_ctrl_type { |
@@ -149,20 +154,24 @@ struct v4l2_capability | |||
149 | }; | 154 | }; |
150 | 155 | ||
151 | /* Values for 'capabilities' field */ | 156 | /* Values for 'capabilities' field */ |
152 | #define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */ | 157 | #define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */ |
153 | #define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */ | 158 | #define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */ |
154 | #define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */ | 159 | #define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */ |
155 | #define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a VBI capture device */ | 160 | #define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a raw VBI capture device */ |
156 | #define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a VBI output device */ | 161 | #define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a raw VBI output device */ |
157 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ | 162 | #if 1 |
163 | #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */ | ||
164 | #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */ | ||
165 | #endif | ||
166 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ | ||
158 | 167 | ||
159 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ | 168 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ |
160 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ | 169 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ |
161 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ | 170 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ |
162 | 171 | ||
163 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ | 172 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ |
164 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ | 173 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ |
165 | #define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ | 174 | #define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */ |
166 | 175 | ||
167 | /* | 176 | /* |
168 | * V I D E O I M A G E F O R M A T | 177 | * V I D E O I M A G E F O R M A T |
@@ -809,6 +818,8 @@ struct v4l2_audioout | |||
809 | * Data services API by Michael Schimek | 818 | * Data services API by Michael Schimek |
810 | */ | 819 | */ |
811 | 820 | ||
821 | /* Raw VBI */ | ||
822 | |||
812 | struct v4l2_vbi_format | 823 | struct v4l2_vbi_format |
813 | { | 824 | { |
814 | __u32 sampling_rate; /* in 1 Hz */ | 825 | __u32 sampling_rate; /* in 1 Hz */ |
@@ -825,6 +836,54 @@ struct v4l2_vbi_format | |||
825 | #define V4L2_VBI_UNSYNC (1<< 0) | 836 | #define V4L2_VBI_UNSYNC (1<< 0) |
826 | #define V4L2_VBI_INTERLACED (1<< 1) | 837 | #define V4L2_VBI_INTERLACED (1<< 1) |
827 | 838 | ||
839 | #if 1 | ||
840 | /* Sliced VBI | ||
841 | * | ||
842 | * This implements is a proposal V4L2 API to allow SLICED VBI | ||
843 | * required for some hardware encoders. It should change without | ||
844 | * notice in the definitive implementation. | ||
845 | */ | ||
846 | |||
847 | struct v4l2_sliced_vbi_format | ||
848 | { | ||
849 | __u16 service_set; | ||
850 | /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field | ||
851 | service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field | ||
852 | (equals frame lines 313-336 for 625 line video | ||
853 | standards, 263-286 for 525 line standards) */ | ||
854 | __u16 service_lines[2][24]; | ||
855 | __u32 io_size; | ||
856 | __u32 reserved[2]; /* must be zero */ | ||
857 | }; | ||
858 | |||
859 | #define V4L2_SLICED_TELETEXT_B (0x0001) | ||
860 | #define V4L2_SLICED_VPS (0x0400) | ||
861 | #define V4L2_SLICED_CAPTION_525 (0x1000) | ||
862 | #define V4L2_SLICED_WSS_625 (0x4000) | ||
863 | |||
864 | #define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525) | ||
865 | #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625) | ||
866 | |||
867 | struct v4l2_sliced_vbi_cap | ||
868 | { | ||
869 | __u16 service_set; | ||
870 | /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field | ||
871 | service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field | ||
872 | (equals frame lines 313-336 for 625 line video | ||
873 | standards, 263-286 for 525 line standards) */ | ||
874 | __u16 service_lines[2][24]; | ||
875 | __u32 reserved[4]; /* must be 0 */ | ||
876 | }; | ||
877 | |||
878 | struct v4l2_sliced_vbi_data | ||
879 | { | ||
880 | __u32 id; | ||
881 | __u32 field; /* 0: first field, 1: second field */ | ||
882 | __u32 line; /* 1-23 */ | ||
883 | __u32 reserved; /* must be 0 */ | ||
884 | __u8 data[48]; | ||
885 | }; | ||
886 | #endif | ||
828 | 887 | ||
829 | /* | 888 | /* |
830 | * A G G R E G A T E S T R U C T U R E S | 889 | * A G G R E G A T E S T R U C T U R E S |
@@ -837,10 +896,13 @@ struct v4l2_format | |||
837 | enum v4l2_buf_type type; | 896 | enum v4l2_buf_type type; |
838 | union | 897 | union |
839 | { | 898 | { |
840 | struct v4l2_pix_format pix; // V4L2_BUF_TYPE_VIDEO_CAPTURE | 899 | struct v4l2_pix_format pix; // V4L2_BUF_TYPE_VIDEO_CAPTURE |
841 | struct v4l2_window win; // V4L2_BUF_TYPE_VIDEO_OVERLAY | 900 | struct v4l2_window win; // V4L2_BUF_TYPE_VIDEO_OVERLAY |
842 | struct v4l2_vbi_format vbi; // V4L2_BUF_TYPE_VBI_CAPTURE | 901 | struct v4l2_vbi_format vbi; // V4L2_BUF_TYPE_VBI_CAPTURE |
843 | __u8 raw_data[200]; // user-defined | 902 | #if 1 |
903 | struct v4l2_sliced_vbi_format sliced; // V4L2_BUF_TYPE_SLICED_VBI_CAPTURE | ||
904 | #endif | ||
905 | __u8 raw_data[200]; // user-defined | ||
844 | } fmt; | 906 | } fmt; |
845 | }; | 907 | }; |
846 | 908 | ||
@@ -916,6 +978,9 @@ struct v4l2_streamparm | |||
916 | #define VIDIOC_ENUMAUDOUT _IOWR ('V', 66, struct v4l2_audioout) | 978 | #define VIDIOC_ENUMAUDOUT _IOWR ('V', 66, struct v4l2_audioout) |
917 | #define VIDIOC_G_PRIORITY _IOR ('V', 67, enum v4l2_priority) | 979 | #define VIDIOC_G_PRIORITY _IOR ('V', 67, enum v4l2_priority) |
918 | #define VIDIOC_S_PRIORITY _IOW ('V', 68, enum v4l2_priority) | 980 | #define VIDIOC_S_PRIORITY _IOW ('V', 68, enum v4l2_priority) |
981 | #if 1 | ||
982 | #define VIDIOC_G_SLICED_VBI_CAP _IOR ('V', 69, struct v4l2_sliced_vbi_cap) | ||
983 | #endif | ||
919 | 984 | ||
920 | /* for compatibility, will go away some day */ | 985 | /* for compatibility, will go away some day */ |
921 | #define VIDIOC_OVERLAY_OLD _IOWR ('V', 14, int) | 986 | #define VIDIOC_OVERLAY_OLD _IOWR ('V', 14, int) |