diff options
author | Octavian Purdila <octavian.purdila@intel.com> | 2014-06-25 10:09:58 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-06-27 18:53:36 -0400 |
commit | d6274bd8d6ea84b7b54cc1c3fde6bcb6143b104f (patch) | |
tree | 15c41b8907768843f435e2cbe01b998970cdb06f /net/ipv4 | |
parent | 936b8bdb53f90840e658904530f9db8d02ac804b (diff) |
tcp: add send_synack method to tcp_request_sock_ops
Create a new tcp_request_sock_ops method to unify the IPv4/IPv6
signature for tcp_v[46]_send_synack. This allows us to later unify
tcp_v4_rtx_synack with tcp_v6_rtx_synack and tcp_v4_conn_request with
tcp_v4_conn_request.
Signed-off-by: Octavian Purdila <octavian.purdila@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 43478265006a..b5945ac50876 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -814,6 +814,7 @@ static void tcp_v4_reqsk_send_ack(struct sock *sk, struct sk_buff *skb, | |||
814 | * socket. | 814 | * socket. |
815 | */ | 815 | */ |
816 | static int tcp_v4_send_synack(struct sock *sk, struct dst_entry *dst, | 816 | static int tcp_v4_send_synack(struct sock *sk, struct dst_entry *dst, |
817 | struct flowi *fl, | ||
817 | struct request_sock *req, | 818 | struct request_sock *req, |
818 | u16 queue_mapping, | 819 | u16 queue_mapping, |
819 | struct tcp_fastopen_cookie *foc) | 820 | struct tcp_fastopen_cookie *foc) |
@@ -846,7 +847,8 @@ static int tcp_v4_send_synack(struct sock *sk, struct dst_entry *dst, | |||
846 | 847 | ||
847 | static int tcp_v4_rtx_synack(struct sock *sk, struct request_sock *req) | 848 | static int tcp_v4_rtx_synack(struct sock *sk, struct request_sock *req) |
848 | { | 849 | { |
849 | int res = tcp_v4_send_synack(sk, NULL, req, 0, NULL); | 850 | const struct tcp_request_sock_ops *af_ops = tcp_rsk(req)->af_specific; |
851 | int res = af_ops->send_synack(sk, NULL, NULL, req, 0, NULL); | ||
850 | 852 | ||
851 | if (!res) { | 853 | if (!res) { |
852 | TCP_INC_STATS_BH(sock_net(sk), TCP_MIB_RETRANSSEGS); | 854 | TCP_INC_STATS_BH(sock_net(sk), TCP_MIB_RETRANSSEGS); |
@@ -1285,6 +1287,7 @@ static const struct tcp_request_sock_ops tcp_request_sock_ipv4_ops = { | |||
1285 | #endif | 1287 | #endif |
1286 | .route_req = tcp_v4_route_req, | 1288 | .route_req = tcp_v4_route_req, |
1287 | .init_seq = tcp_v4_init_sequence, | 1289 | .init_seq = tcp_v4_init_sequence, |
1290 | .send_synack = tcp_v4_send_synack, | ||
1288 | }; | 1291 | }; |
1289 | 1292 | ||
1290 | int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) | 1293 | int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) |
@@ -1404,8 +1407,8 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) | |||
1404 | tcp_openreq_init_rwin(req, sk, dst); | 1407 | tcp_openreq_init_rwin(req, sk, dst); |
1405 | fastopen = !want_cookie && | 1408 | fastopen = !want_cookie && |
1406 | tcp_try_fastopen(sk, skb, req, &foc, dst); | 1409 | tcp_try_fastopen(sk, skb, req, &foc, dst); |
1407 | err = tcp_v4_send_synack(sk, dst, req, | 1410 | err = af_ops->send_synack(sk, dst, NULL, req, |
1408 | skb_get_queue_mapping(skb), &foc); | 1411 | skb_get_queue_mapping(skb), &foc); |
1409 | if (!fastopen) { | 1412 | if (!fastopen) { |
1410 | if (err || want_cookie) | 1413 | if (err || want_cookie) |
1411 | goto drop_and_free; | 1414 | goto drop_and_free; |