diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2008-11-25 20:35:18 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-25 20:35:18 -0500 |
commit | 52479b623d3d41df84c499325b6a8c7915413032 (patch) | |
tree | 196f303f296b53dc89a05954d9c03226a9b4158b /net/ipv4 | |
parent | cdcbca7c1f1946758cfacb69bc1c7eeaccb11e2d (diff) |
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>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/icmp.c | 4 | ||||
-rw-r--r-- | net/ipv4/netfilter.c | 4 | ||||
-rw-r--r-- | net/ipv4/route.c | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index 7b88be9803b1..705b33b184a3 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c | |||
@@ -562,7 +562,7 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info) | |||
562 | /* No need to clone since we're just using its address. */ | 562 | /* No need to clone since we're just using its address. */ |
563 | rt2 = rt; | 563 | rt2 = rt; |
564 | 564 | ||
565 | err = xfrm_lookup((struct dst_entry **)&rt, &fl, NULL, 0); | 565 | err = xfrm_lookup(net, (struct dst_entry **)&rt, &fl, NULL, 0); |
566 | switch (err) { | 566 | switch (err) { |
567 | case 0: | 567 | case 0: |
568 | if (rt != rt2) | 568 | if (rt != rt2) |
@@ -601,7 +601,7 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info) | |||
601 | if (err) | 601 | if (err) |
602 | goto relookup_failed; | 602 | goto relookup_failed; |
603 | 603 | ||
604 | err = xfrm_lookup((struct dst_entry **)&rt2, &fl, NULL, | 604 | err = xfrm_lookup(net, (struct dst_entry **)&rt2, &fl, NULL, |
605 | XFRM_LOOKUP_ICMP); | 605 | XFRM_LOOKUP_ICMP); |
606 | switch (err) { | 606 | switch (err) { |
607 | case 0: | 607 | case 0: |
diff --git a/net/ipv4/netfilter.c b/net/ipv4/netfilter.c index 6efdb70b3eb2..c99eecf89da5 100644 --- a/net/ipv4/netfilter.c +++ b/net/ipv4/netfilter.c | |||
@@ -66,7 +66,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) | |||
66 | #ifdef CONFIG_XFRM | 66 | #ifdef CONFIG_XFRM |
67 | if (!(IPCB(skb)->flags & IPSKB_XFRM_TRANSFORMED) && | 67 | if (!(IPCB(skb)->flags & IPSKB_XFRM_TRANSFORMED) && |
68 | xfrm_decode_session(skb, &fl, AF_INET) == 0) | 68 | xfrm_decode_session(skb, &fl, AF_INET) == 0) |
69 | if (xfrm_lookup(&skb->dst, &fl, skb->sk, 0)) | 69 | if (xfrm_lookup(net, &skb->dst, &fl, skb->sk, 0)) |
70 | return -1; | 70 | return -1; |
71 | #endif | 71 | #endif |
72 | 72 | ||
@@ -97,7 +97,7 @@ int ip_xfrm_me_harder(struct sk_buff *skb) | |||
97 | dst = ((struct xfrm_dst *)dst)->route; | 97 | dst = ((struct xfrm_dst *)dst)->route; |
98 | dst_hold(dst); | 98 | dst_hold(dst); |
99 | 99 | ||
100 | if (xfrm_lookup(&dst, &fl, skb->sk, 0) < 0) | 100 | if (xfrm_lookup(dev_net(dst->dev), &dst, &fl, skb->sk, 0) < 0) |
101 | return -1; | 101 | return -1; |
102 | 102 | ||
103 | dst_release(skb->dst); | 103 | dst_release(skb->dst); |
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 4e6959c29819..77bfba975959 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -2761,7 +2761,7 @@ int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp, | |||
2761 | flp->fl4_src = (*rp)->rt_src; | 2761 | flp->fl4_src = (*rp)->rt_src; |
2762 | if (!flp->fl4_dst) | 2762 | if (!flp->fl4_dst) |
2763 | flp->fl4_dst = (*rp)->rt_dst; | 2763 | flp->fl4_dst = (*rp)->rt_dst; |
2764 | err = __xfrm_lookup((struct dst_entry **)rp, flp, sk, | 2764 | err = __xfrm_lookup(net, (struct dst_entry **)rp, flp, sk, |
2765 | flags ? XFRM_LOOKUP_WAIT : 0); | 2765 | flags ? XFRM_LOOKUP_WAIT : 0); |
2766 | if (err == -EREMOTE) | 2766 | if (err == -EREMOTE) |
2767 | err = ipv4_dst_blackhole(net, rp, flp); | 2767 | err = ipv4_dst_blackhole(net, rp, flp); |