Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 314719
b: refs/heads/master
c: 9f10d3f
h: refs/heads/master
i:
  314717: a538eed
  314715: fa76125
  314711: 25d4277
  314703: c455c0c
  314687: 4f1be06
v: v3
  • Loading branch information
Neal Cardwell authored and David S. Miller committed Jun 29, 2012
1 parent f82637a commit 88d4a56
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9494218fbae2f88bd3f9b887714734abfdf38bab
refs/heads/master: 9f10d3f6f966ef6f6a8d025a4b1d341923d04607
19 changes: 10 additions & 9 deletions trunk/net/ipv6/tcp_ipv6.c
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,8 @@ static void tcp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
}


static int tcp_v6_send_synack(struct sock *sk,
static int tcp_v6_send_synack(struct sock *sk, struct dst_entry *dst,
struct flowi6 *fl6,
struct request_sock *req,
struct request_values *rvp,
u16 queue_mapping)
Expand All @@ -486,22 +487,20 @@ static int tcp_v6_send_synack(struct sock *sk,
struct ipv6_pinfo *np = inet6_sk(sk);
struct sk_buff * skb;
struct ipv6_txoptions *opt = np->opt;
struct flowi6 fl6;
struct dst_entry *dst;
int err = -ENOMEM;

dst = inet6_csk_route_req(sk, &fl6, req);
if (!dst)
/* First, grab a route. */
if (!dst && (dst = inet6_csk_route_req(sk, fl6, req)) == NULL)
goto done;

skb = tcp_make_synack(sk, dst, req, rvp);

if (skb) {
__tcp_v6_send_check(skb, &treq->loc_addr, &treq->rmt_addr);

fl6.daddr = treq->rmt_addr;
fl6->daddr = treq->rmt_addr;
skb_set_queue_mapping(skb, queue_mapping);
err = ip6_xmit(sk, skb, &fl6, opt, np->tclass);
err = ip6_xmit(sk, skb, fl6, opt, np->tclass);
err = net_xmit_eval(err);
}

Expand All @@ -514,8 +513,10 @@ static int tcp_v6_send_synack(struct sock *sk,
static int tcp_v6_rtx_synack(struct sock *sk, struct request_sock *req,
struct request_values *rvp)
{
struct flowi6 fl6;

TCP_INC_STATS_BH(sock_net(sk), TCP_MIB_RETRANSSEGS);
return tcp_v6_send_synack(sk, req, rvp, 0);
return tcp_v6_send_synack(sk, NULL, &fl6, req, rvp, 0);
}

static void tcp_v6_reqsk_destructor(struct request_sock *req)
Expand Down Expand Up @@ -1201,7 +1202,7 @@ static int tcp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
if (security_inet_conn_request(sk, skb, req))
goto drop_and_release;

if (tcp_v6_send_synack(sk, req,
if (tcp_v6_send_synack(sk, dst, &fl6, req,
(struct request_values *)&tmp_ext,
skb_get_queue_mapping(skb)) ||
want_cookie)
Expand Down

0 comments on commit 88d4a56

Please sign in to comment.