diff options
Diffstat (limited to 'include/net/inet_connection_sock.h')
| -rw-r--r-- | include/net/inet_connection_sock.h | 47 | 
1 files changed, 42 insertions, 5 deletions
| diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index b0c99060b78d..fa587c94e9d0 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h | |||
| @@ -15,9 +15,11 @@ | |||
| 15 | #ifndef _INET_CONNECTION_SOCK_H | 15 | #ifndef _INET_CONNECTION_SOCK_H | 
| 16 | #define _INET_CONNECTION_SOCK_H | 16 | #define _INET_CONNECTION_SOCK_H | 
| 17 | 17 | ||
| 18 | #include <linux/ip.h> | 18 | #include <linux/compiler.h> | 
| 19 | #include <linux/string.h> | 19 | #include <linux/string.h> | 
| 20 | #include <linux/timer.h> | 20 | #include <linux/timer.h> | 
| 21 | |||
| 22 | #include <net/inet_sock.h> | ||
| 21 | #include <net/request_sock.h> | 23 | #include <net/request_sock.h> | 
| 22 | 24 | ||
| 23 | #define INET_CSK_DEBUG 1 | 25 | #define INET_CSK_DEBUG 1 | 
| @@ -29,6 +31,29 @@ struct inet_bind_bucket; | |||
| 29 | struct inet_hashinfo; | 31 | struct inet_hashinfo; | 
| 30 | struct tcp_congestion_ops; | 32 | struct tcp_congestion_ops; | 
| 31 | 33 | ||
| 34 | /* | ||
| 35 | * Pointers to address related TCP functions | ||
| 36 | * (i.e. things that depend on the address family) | ||
| 37 | */ | ||
| 38 | struct inet_connection_sock_af_ops { | ||
| 39 | int (*queue_xmit)(struct sk_buff *skb, int ipfragok); | ||
| 40 | void (*send_check)(struct sock *sk, int len, | ||
| 41 | struct sk_buff *skb); | ||
| 42 | int (*rebuild_header)(struct sock *sk); | ||
| 43 | int (*conn_request)(struct sock *sk, struct sk_buff *skb); | ||
| 44 | struct sock *(*syn_recv_sock)(struct sock *sk, struct sk_buff *skb, | ||
| 45 | struct request_sock *req, | ||
| 46 | struct dst_entry *dst); | ||
| 47 | int (*remember_stamp)(struct sock *sk); | ||
| 48 | __u16 net_header_len; | ||
| 49 | int (*setsockopt)(struct sock *sk, int level, int optname, | ||
| 50 | char __user *optval, int optlen); | ||
| 51 | int (*getsockopt)(struct sock *sk, int level, int optname, | ||
| 52 | char __user *optval, int __user *optlen); | ||
| 53 | void (*addr2sockaddr)(struct sock *sk, struct sockaddr *); | ||
| 54 | int sockaddr_len; | ||
| 55 | }; | ||
| 56 | |||
| 32 | /** inet_connection_sock - INET connection oriented sock | 57 | /** inet_connection_sock - INET connection oriented sock | 
| 33 | * | 58 | * | 
| 34 | * @icsk_accept_queue: FIFO of established children | 59 | * @icsk_accept_queue: FIFO of established children | 
| @@ -36,13 +61,16 @@ struct tcp_congestion_ops; | |||
| 36 | * @icsk_timeout: Timeout | 61 | * @icsk_timeout: Timeout | 
| 37 | * @icsk_retransmit_timer: Resend (no ack) | 62 | * @icsk_retransmit_timer: Resend (no ack) | 
| 38 | * @icsk_rto: Retransmit timeout | 63 | * @icsk_rto: Retransmit timeout | 
| 64 | * @icsk_pmtu_cookie Last pmtu seen by socket | ||
| 39 | * @icsk_ca_ops Pluggable congestion control hook | 65 | * @icsk_ca_ops Pluggable congestion control hook | 
| 66 | * @icsk_af_ops Operations which are AF_INET{4,6} specific | ||
| 40 | * @icsk_ca_state: Congestion control state | 67 | * @icsk_ca_state: Congestion control state | 
| 41 | * @icsk_retransmits: Number of unrecovered [RTO] timeouts | 68 | * @icsk_retransmits: Number of unrecovered [RTO] timeouts | 
| 42 | * @icsk_pending: Scheduled timer event | 69 | * @icsk_pending: Scheduled timer event | 
| 43 | * @icsk_backoff: Backoff | 70 | * @icsk_backoff: Backoff | 
| 44 | * @icsk_syn_retries: Number of allowed SYN (or equivalent) retries | 71 | * @icsk_syn_retries: Number of allowed SYN (or equivalent) retries | 
| 45 | * @icsk_probes_out: unanswered 0 window probes | 72 | * @icsk_probes_out: unanswered 0 window probes | 
| 73 | * @icsk_ext_hdr_len: Network protocol overhead (IP/IPv6 options) | ||
| 46 | * @icsk_ack: Delayed ACK control data | 74 | * @icsk_ack: Delayed ACK control data | 
| 47 | */ | 75 | */ | 
| 48 | struct inet_connection_sock { | 76 | struct inet_connection_sock { | 
| @@ -54,14 +82,17 @@ struct inet_connection_sock { | |||
| 54 | struct timer_list icsk_retransmit_timer; | 82 | struct timer_list icsk_retransmit_timer; | 
| 55 | struct timer_list icsk_delack_timer; | 83 | struct timer_list icsk_delack_timer; | 
| 56 | __u32 icsk_rto; | 84 | __u32 icsk_rto; | 
| 57 | struct tcp_congestion_ops *icsk_ca_ops; | 85 | __u32 icsk_pmtu_cookie; | 
| 86 | const struct tcp_congestion_ops *icsk_ca_ops; | ||
| 87 | const struct inet_connection_sock_af_ops *icsk_af_ops; | ||
| 88 | unsigned int (*icsk_sync_mss)(struct sock *sk, u32 pmtu); | ||
| 58 | __u8 icsk_ca_state; | 89 | __u8 icsk_ca_state; | 
| 59 | __u8 icsk_retransmits; | 90 | __u8 icsk_retransmits; | 
| 60 | __u8 icsk_pending; | 91 | __u8 icsk_pending; | 
| 61 | __u8 icsk_backoff; | 92 | __u8 icsk_backoff; | 
| 62 | __u8 icsk_syn_retries; | 93 | __u8 icsk_syn_retries; | 
| 63 | __u8 icsk_probes_out; | 94 | __u8 icsk_probes_out; | 
| 64 | /* 2 BYTES HOLE, TRY TO PACK! */ | 95 | __u16 icsk_ext_hdr_len; | 
| 65 | struct { | 96 | struct { | 
| 66 | __u8 pending; /* ACK is pending */ | 97 | __u8 pending; /* ACK is pending */ | 
| 67 | __u8 quick; /* Scheduled number of quick acks */ | 98 | __u8 quick; /* Scheduled number of quick acks */ | 
| @@ -192,8 +223,12 @@ extern struct request_sock *inet_csk_search_req(const struct sock *sk, | |||
| 192 | const __u16 rport, | 223 | const __u16 rport, | 
| 193 | const __u32 raddr, | 224 | const __u32 raddr, | 
| 194 | const __u32 laddr); | 225 | const __u32 laddr); | 
| 226 | extern int inet_csk_bind_conflict(const struct sock *sk, | ||
| 227 | const struct inet_bind_bucket *tb); | ||
| 195 | extern int inet_csk_get_port(struct inet_hashinfo *hashinfo, | 228 | extern int inet_csk_get_port(struct inet_hashinfo *hashinfo, | 
| 196 | struct sock *sk, unsigned short snum); | 229 | struct sock *sk, unsigned short snum, | 
| 230 | int (*bind_conflict)(const struct sock *sk, | ||
| 231 | const struct inet_bind_bucket *tb)); | ||
| 197 | 232 | ||
| 198 | extern struct dst_entry* inet_csk_route_req(struct sock *sk, | 233 | extern struct dst_entry* inet_csk_route_req(struct sock *sk, | 
| 199 | const struct request_sock *req); | 234 | const struct request_sock *req); | 
| @@ -207,7 +242,7 @@ static inline void inet_csk_reqsk_queue_add(struct sock *sk, | |||
| 207 | 242 | ||
| 208 | extern void inet_csk_reqsk_queue_hash_add(struct sock *sk, | 243 | extern void inet_csk_reqsk_queue_hash_add(struct sock *sk, | 
| 209 | struct request_sock *req, | 244 | struct request_sock *req, | 
| 210 | const unsigned timeout); | 245 | unsigned long timeout); | 
| 211 | 246 | ||
| 212 | static inline void inet_csk_reqsk_queue_removed(struct sock *sk, | 247 | static inline void inet_csk_reqsk_queue_removed(struct sock *sk, | 
| 213 | struct request_sock *req) | 248 | struct request_sock *req) | 
| @@ -273,4 +308,6 @@ static inline unsigned int inet_csk_listen_poll(const struct sock *sk) | |||
| 273 | extern int inet_csk_listen_start(struct sock *sk, const int nr_table_entries); | 308 | extern int inet_csk_listen_start(struct sock *sk, const int nr_table_entries); | 
| 274 | extern void inet_csk_listen_stop(struct sock *sk); | 309 | extern void inet_csk_listen_stop(struct sock *sk); | 
| 275 | 310 | ||
| 311 | extern void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr); | ||
| 312 | |||
| 276 | #endif /* _INET_CONNECTION_SOCK_H */ | 313 | #endif /* _INET_CONNECTION_SOCK_H */ | 
