netns xfrm: lookup in netns
Pass netns to xfrm_lookup()/__xfrm_lookup(). For that pass netns to flow_cache_lookup() and resolver callback. Take it from socket or netdevice. Stub DECnet to init_net. Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
cdcbca7c1f
commit
52479b623d
@@ -168,7 +168,7 @@ static void dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = xfrm_lookup(&dst, &fl, sk, 0);
|
||||
err = xfrm_lookup(net, &dst, &fl, sk, 0);
|
||||
if (err < 0) {
|
||||
sk->sk_err_soft = -err;
|
||||
goto out;
|
||||
@@ -279,7 +279,7 @@ static int dccp_v6_send_response(struct sock *sk, struct request_sock *req)
|
||||
if (final_p)
|
||||
ipv6_addr_copy(&fl.fl6_dst, final_p);
|
||||
|
||||
err = xfrm_lookup(&dst, &fl, sk, 0);
|
||||
err = xfrm_lookup(sock_net(sk), &dst, &fl, sk, 0);
|
||||
if (err < 0)
|
||||
goto done;
|
||||
|
||||
@@ -343,7 +343,7 @@ static void dccp_v6_ctl_send_reset(struct sock *sk, struct sk_buff *rxskb)
|
||||
|
||||
/* sk = NULL, but it is safe for now. RST socket required. */
|
||||
if (!ip6_dst_lookup(ctl_sk, &skb->dst, &fl)) {
|
||||
if (xfrm_lookup(&skb->dst, &fl, NULL, 0) >= 0) {
|
||||
if (xfrm_lookup(net, &skb->dst, &fl, NULL, 0) >= 0) {
|
||||
ip6_xmit(ctl_sk, skb, &fl, NULL, 0);
|
||||
DCCP_INC_STATS_BH(DCCP_MIB_OUTSEGS);
|
||||
DCCP_INC_STATS_BH(DCCP_MIB_OUTRSTS);
|
||||
@@ -569,7 +569,7 @@ static struct sock *dccp_v6_request_recv_sock(struct sock *sk,
|
||||
if (final_p)
|
||||
ipv6_addr_copy(&fl.fl6_dst, final_p);
|
||||
|
||||
if ((xfrm_lookup(&dst, &fl, sk, 0)) < 0)
|
||||
if ((xfrm_lookup(sock_net(sk), &dst, &fl, sk, 0)) < 0)
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -1004,7 +1004,7 @@ static int dccp_v6_connect(struct sock *sk, struct sockaddr *uaddr,
|
||||
if (final_p)
|
||||
ipv6_addr_copy(&fl.fl6_dst, final_p);
|
||||
|
||||
err = __xfrm_lookup(&dst, &fl, sk, XFRM_LOOKUP_WAIT);
|
||||
err = __xfrm_lookup(sock_net(sk), &dst, &fl, sk, XFRM_LOOKUP_WAIT);
|
||||
if (err < 0) {
|
||||
if (err == -EREMOTE)
|
||||
err = ip6_dst_blackhole(sk, &dst, &fl);
|
||||
|
Reference in New Issue
Block a user