diff options
| author | Eric Dumazet <edumazet@google.com> | 2017-06-07 20:34:36 +0300 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2017-06-08 17:53:28 +0300 | 
| commit | eed29f17f09ad7f400bc245f209acad6a8214fac (patch) | |
| tree | 98ec65923f889616029ece56a785e6038a1e1cf5 /net/ipv4/tcp_input.c | |
| parent | a5fcf8a6c968ed8e312ff0b2a55d4c62d821eabb (diff) | |
| download | linux-eed29f17f09ad7f400bc245f209acad6a8214fac.tar.xz | |
tcp: add a struct net parameter to tcp_parse_options()
We want to move some TCP sysctls to net namespaces in the future.
tcp_window_scaling, tcp_sack and tcp_timestamps being fetched
from tcp_parse_options(), we need to pass an extra parameter.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
| -rw-r--r-- | net/ipv4/tcp_input.c | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 4ea8ec5c7bb4..99ee707f0ef4 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -3724,7 +3724,8 @@ static void tcp_parse_fastopen_option(int len, const unsigned char *cookie,   * But, this can also be called on packets in the established flow when   * the fast version below fails.   */ -void tcp_parse_options(const struct sk_buff *skb, +void tcp_parse_options(const struct net *net, +		       const struct sk_buff *skb,  		       struct tcp_options_received *opt_rx, int estab,  		       struct tcp_fastopen_cookie *foc)  { @@ -3858,7 +3859,8 @@ static bool tcp_parse_aligned_timestamp(struct tcp_sock *tp, const struct tcphdr  /* Fast parse options. This hopes to only see timestamps.   * If it is wrong it falls back on tcp_parse_options().   */ -static bool tcp_fast_parse_options(const struct sk_buff *skb, +static bool tcp_fast_parse_options(const struct net *net, +				   const struct sk_buff *skb,  				   const struct tcphdr *th, struct tcp_sock *tp)  {  	/* In the spirit of fast parsing, compare doff directly to constant @@ -3873,7 +3875,7 @@ static bool tcp_fast_parse_options(const struct sk_buff *skb,  			return true;  	} -	tcp_parse_options(skb, &tp->rx_opt, 1, NULL); +	tcp_parse_options(net, skb, &tp->rx_opt, 1, NULL);  	if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr)  		tp->rx_opt.rcv_tsecr -= tp->tsoffset; @@ -5234,7 +5236,8 @@ static bool tcp_validate_incoming(struct sock *sk, struct sk_buff *skb,  	bool rst_seq_match = false;  	/* RFC1323: H1. Apply PAWS check first. */ -	if (tcp_fast_parse_options(skb, th, tp) && tp->rx_opt.saw_tstamp && +	if (tcp_fast_parse_options(sock_net(sk), skb, th, tp) && +	    tp->rx_opt.saw_tstamp &&  	    tcp_paws_discard(sk, skb)) {  		if (!th->rst) {  			NET_INC_STATS(sock_net(sk), LINUX_MIB_PAWSESTABREJECTED); @@ -5605,7 +5608,7 @@ static bool tcp_rcv_fastopen_synack(struct sock *sk, struct sk_buff *synack,  		/* Get original SYNACK MSS value if user MSS sets mss_clamp */  		tcp_clear_options(&opt);  		opt.user_mss = opt.mss_clamp = 0; -		tcp_parse_options(synack, &opt, 0, NULL); +		tcp_parse_options(sock_net(sk), synack, &opt, 0, NULL);  		mss = opt.mss_clamp;  	} @@ -5659,7 +5662,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,  	int saved_clamp = tp->rx_opt.mss_clamp;  	bool fastopen_fail; -	tcp_parse_options(skb, &tp->rx_opt, 0, &foc); +	tcp_parse_options(sock_net(sk), skb, &tp->rx_opt, 0, &foc);  	if (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr)  		tp->rx_opt.rcv_tsecr -= tp->tsoffset; @@ -6332,7 +6335,8 @@ int tcp_conn_request(struct request_sock_ops *rsk_ops,  	tcp_clear_options(&tmp_opt);  	tmp_opt.mss_clamp = af_ops->mss_clamp;  	tmp_opt.user_mss  = tp->rx_opt.user_mss; -	tcp_parse_options(skb, &tmp_opt, 0, want_cookie ? NULL : &foc); +	tcp_parse_options(sock_net(sk), skb, &tmp_opt, 0, +			  want_cookie ? NULL : &foc);  	if (want_cookie && !tmp_opt.saw_tstamp)  		tcp_clear_options(&tmp_opt);  | 
