aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOctavian Purdila <octavian.purdila@intel.com>2014-06-25 10:10:00 -0400
committerDavid S. Miller <davem@davemloft.net>2014-06-27 18:53:36 -0400
commit2aec4a297b21f3690486bbf8f7d5d29281ba6a48 (patch)
tree8df79a2b1eaf021a541eb6a5dde384c7cf2acbbe
parent5db92c994982ed826cf38f38d58bd09bc326aef6 (diff)
tcp: add mss_clamp to tcp_request_sock_ops
Add mss_clamp member to tcp_request_sock_ops so that we can later unify tcp_v4_conn_request and tcp_v6_conn_request. Signed-off-by: Octavian Purdila <octavian.purdila@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/tcp.h1
-rw-r--r--net/ipv4/tcp_ipv4.c3
-rw-r--r--net/ipv6/tcp_ipv6.c4
3 files changed, 6 insertions, 2 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 8e9c28dccb80..30fe98bc8957 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -1592,6 +1592,7 @@ struct tcp_sock_af_ops {
1592}; 1592};
1593 1593
1594struct tcp_request_sock_ops { 1594struct tcp_request_sock_ops {
1595 u16 mss_clamp;
1595#ifdef CONFIG_TCP_MD5SIG 1596#ifdef CONFIG_TCP_MD5SIG
1596 struct tcp_md5sig_key *(*md5_lookup) (struct sock *sk, 1597 struct tcp_md5sig_key *(*md5_lookup) (struct sock *sk,
1597 struct request_sock *req); 1598 struct request_sock *req);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 597dd9d75210..499d440539ad 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1265,6 +1265,7 @@ struct request_sock_ops tcp_request_sock_ops __read_mostly = {
1265}; 1265};
1266 1266
1267static const struct tcp_request_sock_ops tcp_request_sock_ipv4_ops = { 1267static const struct tcp_request_sock_ops tcp_request_sock_ipv4_ops = {
1268 .mss_clamp = TCP_MSS_DEFAULT,
1268#ifdef CONFIG_TCP_MD5SIG 1269#ifdef CONFIG_TCP_MD5SIG
1269 .md5_lookup = tcp_v4_reqsk_md5_lookup, 1270 .md5_lookup = tcp_v4_reqsk_md5_lookup,
1270 .calc_md5_hash = tcp_v4_md5_hash_skb, 1271 .calc_md5_hash = tcp_v4_md5_hash_skb,
@@ -1324,7 +1325,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
1324 af_ops = tcp_rsk(req)->af_specific = &tcp_request_sock_ipv4_ops; 1325 af_ops = tcp_rsk(req)->af_specific = &tcp_request_sock_ipv4_ops;
1325 1326
1326 tcp_clear_options(&tmp_opt); 1327 tcp_clear_options(&tmp_opt);
1327 tmp_opt.mss_clamp = TCP_MSS_DEFAULT; 1328 tmp_opt.mss_clamp = af_ops->mss_clamp;
1328 tmp_opt.user_mss = tp->rx_opt.user_mss; 1329 tmp_opt.user_mss = tp->rx_opt.user_mss;
1329 tcp_parse_options(skb, &tmp_opt, 0, want_cookie ? NULL : &foc); 1330 tcp_parse_options(skb, &tmp_opt, 0, want_cookie ? NULL : &foc);
1330 1331
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 41389bbb08c0..ad658332cf7d 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -754,6 +754,8 @@ struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
754}; 754};
755 755
756static const struct tcp_request_sock_ops tcp_request_sock_ipv6_ops = { 756static const struct tcp_request_sock_ops tcp_request_sock_ipv6_ops = {
757 .mss_clamp = IPV6_MIN_MTU - sizeof(struct tcphdr) -
758 sizeof(struct ipv6hdr),
757#ifdef CONFIG_TCP_MD5SIG 759#ifdef CONFIG_TCP_MD5SIG
758 .md5_lookup = tcp_v6_reqsk_md5_lookup, 760 .md5_lookup = tcp_v6_reqsk_md5_lookup,
759 .calc_md5_hash = tcp_v6_md5_hash_skb, 761 .calc_md5_hash = tcp_v6_md5_hash_skb,
@@ -1047,7 +1049,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
1047 af_ops = tcp_rsk(req)->af_specific = &tcp_request_sock_ipv6_ops; 1049 af_ops = tcp_rsk(req)->af_specific = &tcp_request_sock_ipv6_ops;
1048 1050
1049 tcp_clear_options(&tmp_opt); 1051 tcp_clear_options(&tmp_opt);
1050 tmp_opt.mss_clamp = IPV6_MIN_MTU - sizeof(struct tcphdr) - sizeof(struct ipv6hdr); 1052 tmp_opt.mss_clamp = af_ops->mss_clamp;
1051 tmp_opt.user_mss = tp->rx_opt.user_mss; 1053 tmp_opt.user_mss = tp->rx_opt.user_mss;
1052 tcp_parse_options(skb, &tmp_opt, 0, want_cookie ? NULL : &foc); 1054 tcp_parse_options(skb, &tmp_opt, 0, want_cookie ? NULL : &foc);
1053 1055