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
@@ -562,7 +562,7 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info)
|
||||
/* No need to clone since we're just using its address. */
|
||||
rt2 = rt;
|
||||
|
||||
err = xfrm_lookup((struct dst_entry **)&rt, &fl, NULL, 0);
|
||||
err = xfrm_lookup(net, (struct dst_entry **)&rt, &fl, NULL, 0);
|
||||
switch (err) {
|
||||
case 0:
|
||||
if (rt != rt2)
|
||||
@@ -601,7 +601,7 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info)
|
||||
if (err)
|
||||
goto relookup_failed;
|
||||
|
||||
err = xfrm_lookup((struct dst_entry **)&rt2, &fl, NULL,
|
||||
err = xfrm_lookup(net, (struct dst_entry **)&rt2, &fl, NULL,
|
||||
XFRM_LOOKUP_ICMP);
|
||||
switch (err) {
|
||||
case 0:
|
||||
|
@@ -66,7 +66,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type)
|
||||
#ifdef CONFIG_XFRM
|
||||
if (!(IPCB(skb)->flags & IPSKB_XFRM_TRANSFORMED) &&
|
||||
xfrm_decode_session(skb, &fl, AF_INET) == 0)
|
||||
if (xfrm_lookup(&skb->dst, &fl, skb->sk, 0))
|
||||
if (xfrm_lookup(net, &skb->dst, &fl, skb->sk, 0))
|
||||
return -1;
|
||||
#endif
|
||||
|
||||
@@ -97,7 +97,7 @@ int ip_xfrm_me_harder(struct sk_buff *skb)
|
||||
dst = ((struct xfrm_dst *)dst)->route;
|
||||
dst_hold(dst);
|
||||
|
||||
if (xfrm_lookup(&dst, &fl, skb->sk, 0) < 0)
|
||||
if (xfrm_lookup(dev_net(dst->dev), &dst, &fl, skb->sk, 0) < 0)
|
||||
return -1;
|
||||
|
||||
dst_release(skb->dst);
|
||||
|
@@ -2761,7 +2761,7 @@ int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp,
|
||||
flp->fl4_src = (*rp)->rt_src;
|
||||
if (!flp->fl4_dst)
|
||||
flp->fl4_dst = (*rp)->rt_dst;
|
||||
err = __xfrm_lookup((struct dst_entry **)rp, flp, sk,
|
||||
err = __xfrm_lookup(net, (struct dst_entry **)rp, flp, sk,
|
||||
flags ? XFRM_LOOKUP_WAIT : 0);
|
||||
if (err == -EREMOTE)
|
||||
err = ipv4_dst_blackhole(net, rp, flp);
|
||||
|
Reference in New Issue
Block a user