|
@@ -447,7 +447,8 @@ static int tcp_v6_send_synack(const struct sock *sk, struct dst_entry *dst,
|
|
|
int err = -ENOMEM;
|
|
|
|
|
|
/* First, grab a route. */
|
|
|
- if (!dst && (dst = inet6_csk_route_req(sk, fl6, req)) == NULL)
|
|
|
+ if (!dst && (dst = inet6_csk_route_req(sk, fl6, req,
|
|
|
+ IPPROTO_TCP)) == NULL)
|
|
|
goto done;
|
|
|
|
|
|
skb = tcp_make_synack(sk, dst, req, foc);
|
|
@@ -694,7 +695,7 @@ static struct dst_entry *tcp_v6_route_req(struct sock *sk, struct flowi *fl,
|
|
|
{
|
|
|
if (strict)
|
|
|
*strict = true;
|
|
|
- return inet6_csk_route_req(sk, &fl->u.ip6, req);
|
|
|
+ return inet6_csk_route_req(sk, &fl->u.ip6, req, IPPROTO_TCP);
|
|
|
}
|
|
|
|
|
|
struct request_sock_ops tcp6_request_sock_ops __read_mostly = {
|
|
@@ -1058,7 +1059,7 @@ static struct sock *tcp_v6_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
|
|
|
goto out_overflow;
|
|
|
|
|
|
if (!dst) {
|
|
|
- dst = inet6_csk_route_req(sk, &fl6, req);
|
|
|
+ dst = inet6_csk_route_req(sk, &fl6, req, IPPROTO_TCP);
|
|
|
if (!dst)
|
|
|
goto out;
|
|
|
}
|