diff options
Diffstat (limited to 'include/net/tcp.h')
| -rw-r--r-- | include/net/tcp.h | 47 | 
1 files changed, 31 insertions, 16 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index cf54034019d..60e5be8b925 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -266,12 +266,10 @@ static inline int tcp_too_many_orphans(struct sock *sk, int num)  extern struct proto tcp_prot;  DECLARE_SNMP_STAT(struct tcp_mib, tcp_statistics); -#define TCP_INC_STATS(field)		SNMP_INC_STATS(tcp_statistics, field) -#define TCP_INC_STATS_BH(field)		SNMP_INC_STATS_BH(tcp_statistics, field) -#define TCP_INC_STATS_USER(field) 	SNMP_INC_STATS_USER(tcp_statistics, field) -#define TCP_DEC_STATS(field)		SNMP_DEC_STATS(tcp_statistics, field) -#define TCP_ADD_STATS_BH(field, val)	SNMP_ADD_STATS_BH(tcp_statistics, field, val) -#define TCP_ADD_STATS_USER(field, val)	SNMP_ADD_STATS_USER(tcp_statistics, field, val) +#define TCP_INC_STATS(net, field)	do { (void)net; SNMP_INC_STATS(tcp_statistics, field); } while (0) +#define TCP_INC_STATS_BH(net, field)	do { (void)net; SNMP_INC_STATS_BH(tcp_statistics, field); } while (0) +#define TCP_DEC_STATS(net, field)	do { (void)net; SNMP_DEC_STATS(tcp_statistics, field); } while (0) +#define TCP_ADD_STATS_USER(net, field, val) do { (void)net; SNMP_ADD_STATS_USER(tcp_statistics, field, val); } while (0)  extern void			tcp_v4_err(struct sk_buff *skb, u32); @@ -398,6 +396,8 @@ extern void			tcp_parse_options(struct sk_buff *skb,  						  struct tcp_options_received *opt_rx,  						  int estab); +extern u8			*tcp_parse_md5sig_option(struct tcphdr *th); +  /*   *	TCP v4 functions exported for the inet6 API   */ @@ -894,7 +894,7 @@ static inline int tcp_prequeue(struct sock *sk, struct sk_buff *skb)  			while ((skb1 = __skb_dequeue(&tp->ucopy.prequeue)) != NULL) {  				sk->sk_backlog_rcv(sk, skb1); -				NET_INC_STATS_BH(LINUX_MIB_TCPPREQUEUEDROPPED); +				NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPPREQUEUEDROPPED);  			}  			tp->ucopy.memory = 0; @@ -975,7 +975,7 @@ static inline void tcp_openreq_init(struct request_sock *req,  	ireq->rmt_port = tcp_hdr(skb)->source;  } -extern void tcp_enter_memory_pressure(void); +extern void tcp_enter_memory_pressure(struct sock *sk);  static inline int keepalive_intvl_when(const struct tcp_sock *tp)  { @@ -1024,13 +1024,13 @@ static inline int tcp_paws_check(const struct tcp_options_received *rx_opt, int  #define TCP_CHECK_TIMER(sk) do { } while (0) -static inline void tcp_mib_init(void) +static inline void tcp_mib_init(struct net *net)  {  	/* See RFC 2012 */ -	TCP_ADD_STATS_USER(TCP_MIB_RTOALGORITHM, 1); -	TCP_ADD_STATS_USER(TCP_MIB_RTOMIN, TCP_RTO_MIN*1000/HZ); -	TCP_ADD_STATS_USER(TCP_MIB_RTOMAX, TCP_RTO_MAX*1000/HZ); -	TCP_ADD_STATS_USER(TCP_MIB_MAXCONN, -1); +	TCP_ADD_STATS_USER(net, TCP_MIB_RTOALGORITHM, 1); +	TCP_ADD_STATS_USER(net, TCP_MIB_RTOMIN, TCP_RTO_MIN*1000/HZ); +	TCP_ADD_STATS_USER(net, TCP_MIB_RTOMAX, TCP_RTO_MAX*1000/HZ); +	TCP_ADD_STATS_USER(net, TCP_MIB_MAXCONN, -1);  }  /* from STCP */ @@ -1113,13 +1113,19 @@ struct tcp_md5sig_pool {  #define TCP_MD5SIG_MAXKEYS	(~(u32)0)	/* really?! */  /* - functions */ +extern int			tcp_calc_md5_hash(char *md5_hash, +						  struct tcp_md5sig_key *key, +						  int bplen, +						  struct tcphdr *th, +						  unsigned int tcplen, +						  struct tcp_md5sig_pool *hp); +  extern int			tcp_v4_calc_md5_hash(char *md5_hash,  						     struct tcp_md5sig_key *key,  						     struct sock *sk,  						     struct dst_entry *dst,  						     struct request_sock *req,  						     struct tcphdr *th, -						     int protocol,  						     unsigned int tcplen);  extern struct tcp_md5sig_key	*tcp_v4_md5_lookup(struct sock *sk,  						   struct sock *addr_sk); @@ -1132,6 +1138,16 @@ extern int			tcp_v4_md5_do_add(struct sock *sk,  extern int			tcp_v4_md5_do_del(struct sock *sk,  						  __be32 addr); +#ifdef CONFIG_TCP_MD5SIG +#define tcp_twsk_md5_key(twsk)	((twsk)->tw_md5_keylen ? 		 \ +				 &(struct tcp_md5sig_key) {		 \ +					.key = (twsk)->tw_md5_key,	 \ +					.keylen = (twsk)->tw_md5_keylen, \ +				} : NULL) +#else +#define tcp_twsk_md5_key(twsk)	NULL +#endif +  extern struct tcp_md5sig_pool	**tcp_alloc_md5sig_pool(void);  extern void			tcp_free_md5sig_pool(void); @@ -1348,7 +1364,7 @@ extern void tcp_proc_unregister(struct net *net, struct tcp_seq_afinfo *afinfo);  extern struct request_sock_ops tcp_request_sock_ops;  extern struct request_sock_ops tcp6_request_sock_ops; -extern int tcp_v4_destroy_sock(struct sock *sk); +extern void tcp_v4_destroy_sock(struct sock *sk);  extern int tcp_v4_gso_send_check(struct sk_buff *skb);  extern struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features); @@ -1369,7 +1385,6 @@ struct tcp_sock_af_ops {  						  struct dst_entry *dst,  						  struct request_sock *req,  						  struct tcphdr *th, -						  int protocol,  						  unsigned int len);  	int			(*md5_add) (struct sock *sk,  					    struct sock *addr_sk,  |