aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorOctavian Purdila <octavian.purdila@intel.com>2014-06-25 10:09:58 -0400
committerDavid S. Miller <davem@davemloft.net>2014-06-27 18:53:36 -0400
commitd6274bd8d6ea84b7b54cc1c3fde6bcb6143b104f (patch)
tree15c41b8907768843f435e2cbe01b998970cdb06f /net/ipv4
parent936b8bdb53f90840e658904530f9db8d02ac804b (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.c9
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 */
816static int tcp_v4_send_synack(struct sock *sk, struct dst_entry *dst, 816static 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
847static int tcp_v4_rtx_synack(struct sock *sk, struct request_sock *req) 848static 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
1290int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) 1293int 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;