aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/inet_connection_sock.c2
-rw-r--r--net/ipv4/tcp_ipv4.c18
-rw-r--r--net/ipv4/tcp_minisocks.c2
-rw-r--r--net/ipv4/tcp_output.c3
4 files changed, 14 insertions, 11 deletions
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
index 9b35c56d1023..ee16475f8fc3 100644
--- a/net/ipv4/inet_connection_sock.c
+++ b/net/ipv4/inet_connection_sock.c
@@ -531,7 +531,7 @@ void inet_csk_reqsk_queue_prune(struct sock *parent,
531 &expire, &resend); 531 &expire, &resend);
532 if (!expire && 532 if (!expire &&
533 (!resend || 533 (!resend ||
534 !req->rsk_ops->rtx_syn_ack(parent, req) || 534 !req->rsk_ops->rtx_syn_ack(parent, req, NULL) ||
535 inet_rsk(req)->acked)) { 535 inet_rsk(req)->acked)) {
536 unsigned long timeo; 536 unsigned long timeo;
537 537
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index df18ce04f41e..649a36d99c73 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -742,8 +742,9 @@ static void tcp_v4_reqsk_send_ack(struct sock *sk, struct sk_buff *skb,
742 * This still operates on a request_sock only, not on a big 742 * This still operates on a request_sock only, not on a big
743 * socket. 743 * socket.
744 */ 744 */
745static int __tcp_v4_send_synack(struct sock *sk, struct request_sock *req, 745static int __tcp_v4_send_synack(struct sock *sk, struct dst_entry *dst,
746 struct dst_entry *dst) 746 struct request_sock *req,
747 struct request_values *rvp)
747{ 748{
748 const struct inet_request_sock *ireq = inet_rsk(req); 749 const struct inet_request_sock *ireq = inet_rsk(req);
749 int err = -1; 750 int err = -1;
@@ -753,7 +754,7 @@ static int __tcp_v4_send_synack(struct sock *sk, struct request_sock *req,
753 if (!dst && (dst = inet_csk_route_req(sk, req)) == NULL) 754 if (!dst && (dst = inet_csk_route_req(sk, req)) == NULL)
754 return -1; 755 return -1;
755 756
756 skb = tcp_make_synack(sk, dst, req); 757 skb = tcp_make_synack(sk, dst, req, rvp);
757 758
758 if (skb) { 759 if (skb) {
759 struct tcphdr *th = tcp_hdr(skb); 760 struct tcphdr *th = tcp_hdr(skb);
@@ -774,9 +775,10 @@ static int __tcp_v4_send_synack(struct sock *sk, struct request_sock *req,
774 return err; 775 return err;
775} 776}
776 777
777static int tcp_v4_send_synack(struct sock *sk, struct request_sock *req) 778static int tcp_v4_send_synack(struct sock *sk, struct request_sock *req,
779 struct request_values *rvp)
778{ 780{
779 return __tcp_v4_send_synack(sk, req, NULL); 781 return __tcp_v4_send_synack(sk, NULL, req, rvp);
780} 782}
781 783
782/* 784/*
@@ -1211,13 +1213,13 @@ static struct timewait_sock_ops tcp_timewait_sock_ops = {
1211 1213
1212int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb) 1214int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
1213{ 1215{
1214 struct inet_request_sock *ireq;
1215 struct tcp_options_received tmp_opt; 1216 struct tcp_options_received tmp_opt;
1216 struct request_sock *req; 1217 struct request_sock *req;
1218 struct inet_request_sock *ireq;
1219 struct dst_entry *dst = NULL;
1217 __be32 saddr = ip_hdr(skb)->saddr; 1220 __be32 saddr = ip_hdr(skb)->saddr;
1218 __be32 daddr = ip_hdr(skb)->daddr; 1221 __be32 daddr = ip_hdr(skb)->daddr;
1219 __u32 isn = TCP_SKB_CB(skb)->when; 1222 __u32 isn = TCP_SKB_CB(skb)->when;
1220 struct dst_entry *dst = NULL;
1221#ifdef CONFIG_SYN_COOKIES 1223#ifdef CONFIG_SYN_COOKIES
1222 int want_cookie = 0; 1224 int want_cookie = 0;
1223#else 1225#else
@@ -1337,7 +1339,7 @@ int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
1337 } 1339 }
1338 tcp_rsk(req)->snt_isn = isn; 1340 tcp_rsk(req)->snt_isn = isn;
1339 1341
1340 if (__tcp_v4_send_synack(sk, req, dst) || want_cookie) 1342 if (__tcp_v4_send_synack(sk, dst, req, NULL) || want_cookie)
1341 goto drop_and_free; 1343 goto drop_and_free;
1342 1344
1343 inet_csk_reqsk_queue_hash_add(sk, req, TCP_TIMEOUT_INIT); 1345 inet_csk_reqsk_queue_hash_add(sk, req, TCP_TIMEOUT_INIT);
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index ab32c181f749..d3f6bbfc76f0 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -531,7 +531,7 @@ struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
531 * Enforce "SYN-ACK" according to figure 8, figure 6 531 * Enforce "SYN-ACK" according to figure 8, figure 6
532 * of RFC793, fixed by RFC1122. 532 * of RFC793, fixed by RFC1122.
533 */ 533 */
534 req->rsk_ops->rtx_syn_ack(sk, req); 534 req->rsk_ops->rtx_syn_ack(sk, req, NULL);
535 return NULL; 535 return NULL;
536 } 536 }
537 537
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 875bc6dcd920..b8b25049f257 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2224,7 +2224,8 @@ int tcp_send_synack(struct sock *sk)
2224 2224
2225/* Prepare a SYN-ACK. */ 2225/* Prepare a SYN-ACK. */
2226struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst, 2226struct sk_buff *tcp_make_synack(struct sock *sk, struct dst_entry *dst,
2227 struct request_sock *req) 2227 struct request_sock *req,
2228 struct request_values *rvp)
2228{ 2229{
2229 struct inet_request_sock *ireq = inet_rsk(req); 2230 struct inet_request_sock *ireq = inet_rsk(req);
2230 struct tcp_sock *tp = tcp_sk(sk); 2231 struct tcp_sock *tp = tcp_sk(sk);