* [PATCH 05/38] Fix ip{,6}_route_me_harder() in netns [not found] ` <20080821215825.GE31136-2ev+ksY9ol182hYKe6nXyg@public.gmane.org> @ 2008-08-21 22:39 ` adobriyan-Re5JQEeQqe8AvxtiuMwx3w 0 siblings, 0 replies; 4+ messages in thread From: adobriyan-Re5JQEeQqe8AvxtiuMwx3w @ 2008-08-21 22:39 UTC (permalink / raw) To: kaber-dcUjhNyLwpNeoWH0uzbU5w, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, netdev-u79uwXL29TY76Z2rM5mHXA, netfilter-devel-u79uwXL29TY76Z2rM5mHXA ip_route_me_harder() is called on output codepaths: 1) IPVS: honestly, not sure, looks like it can be called during forwarding 2) IPv4 REJECT: refreshing comment re skb->dst is valid and assigment of skb->dst right before call :^) 3) NAT: called in LOCAL_OUT hook 4) iptable_mangle: LOCAL_OUT hook 5) nf_ip_reroute(): LOCAL_OUT hook (no clue about queueing packets to luserspace) ip6_route_me_harder() is also called in output codepaths: 1) ip6table_mangle: LOCAL_OUT hook 2) nf_ip6_reroute: LOCAL_OUT hook (ditto) Signed-off-by: Alexey Dobriyan <adobriyan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> --- net/ipv4/netfilter.c | 7 ++++--- net/ipv6/netfilter.c | 3 +-- 2 files changed, 5 insertions(+), 5 deletions(-) --- a/net/ipv4/netfilter.c +++ b/net/ipv4/netfilter.c @@ -12,6 +12,7 @@ /* route_me_harder function, used by iptable_nat, iptable_mangle + ip_queue */ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) { + struct net *net = dev_net(skb->dst->dev); const struct iphdr *iph = ip_hdr(skb); struct rtable *rt; struct flowi fl = {}; @@ -19,7 +20,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) unsigned int hh_len; unsigned int type; - type = inet_addr_type(&init_net, iph->saddr); + type = inet_addr_type(net, iph->saddr); if (addr_type == RTN_UNSPEC) addr_type = type; @@ -33,7 +34,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) fl.nl_u.ip4_u.tos = RT_TOS(iph->tos); fl.oif = skb->sk ? skb->sk->sk_bound_dev_if : 0; fl.mark = skb->mark; - if (ip_route_output_key(&init_net, &rt, &fl) != 0) + if (ip_route_output_key(net, &rt, &fl) != 0) return -1; /* Drop old route. */ @@ -43,7 +44,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) /* non-local src, find valid iif to satisfy * rp-filter when calling ip_route_input. */ fl.nl_u.ip4_u.daddr = iph->saddr; - if (ip_route_output_key(&init_net, &rt, &fl) != 0) + if (ip_route_output_key(net, &rt, &fl) != 0) return -1; odst = skb->dst; --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c @@ -23,7 +23,7 @@ int ip6_route_me_harder(struct sk_buff *skb) .saddr = iph->saddr, } }, }; - dst = ip6_route_output(&init_net, skb->sk, &fl); + dst = ip6_route_output(dev_net(skb->dst->dev), skb->sk, &fl); #ifdef CONFIG_XFRM if (!(IP6CB(skb)->flags & IP6SKB_XFRM_TRANSFORMED) && -- 1.5.6.3 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 05/38] Fix ip{,6}_route_me_harder() in netns [not found] <20080821215825.GE31136@x200.localdomain> [not found] ` <20080821215825.GE31136-2ev+ksY9ol182hYKe6nXyg@public.gmane.org> @ 2008-08-21 22:39 ` adobriyan [not found] ` <20080821223958.GA31601-2ev+ksY9ol182hYKe6nXyg@public.gmane.org> 2008-09-04 16:10 ` Patrick McHardy 1 sibling, 2 replies; 4+ messages in thread From: adobriyan @ 2008-08-21 22:39 UTC (permalink / raw) To: kaber, containers, netdev, netfilter-devel ip_route_me_harder() is called on output codepaths: 1) IPVS: honestly, not sure, looks like it can be called during forwarding 2) IPv4 REJECT: refreshing comment re skb->dst is valid and assigment of skb->dst right before call :^) 3) NAT: called in LOCAL_OUT hook 4) iptable_mangle: LOCAL_OUT hook 5) nf_ip_reroute(): LOCAL_OUT hook (no clue about queueing packets to luserspace) ip6_route_me_harder() is also called in output codepaths: 1) ip6table_mangle: LOCAL_OUT hook 2) nf_ip6_reroute: LOCAL_OUT hook (ditto) Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> --- net/ipv4/netfilter.c | 7 ++++--- net/ipv6/netfilter.c | 3 +-- 2 files changed, 5 insertions(+), 5 deletions(-) --- a/net/ipv4/netfilter.c +++ b/net/ipv4/netfilter.c @@ -12,6 +12,7 @@ /* route_me_harder function, used by iptable_nat, iptable_mangle + ip_queue */ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) { + struct net *net = dev_net(skb->dst->dev); const struct iphdr *iph = ip_hdr(skb); struct rtable *rt; struct flowi fl = {}; @@ -19,7 +20,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) unsigned int hh_len; unsigned int type; - type = inet_addr_type(&init_net, iph->saddr); + type = inet_addr_type(net, iph->saddr); if (addr_type == RTN_UNSPEC) addr_type = type; @@ -33,7 +34,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) fl.nl_u.ip4_u.tos = RT_TOS(iph->tos); fl.oif = skb->sk ? skb->sk->sk_bound_dev_if : 0; fl.mark = skb->mark; - if (ip_route_output_key(&init_net, &rt, &fl) != 0) + if (ip_route_output_key(net, &rt, &fl) != 0) return -1; /* Drop old route. */ @@ -43,7 +44,7 @@ int ip_route_me_harder(struct sk_buff *skb, unsigned addr_type) /* non-local src, find valid iif to satisfy * rp-filter when calling ip_route_input. */ fl.nl_u.ip4_u.daddr = iph->saddr; - if (ip_route_output_key(&init_net, &rt, &fl) != 0) + if (ip_route_output_key(net, &rt, &fl) != 0) return -1; odst = skb->dst; --- a/net/ipv6/netfilter.c +++ b/net/ipv6/netfilter.c @@ -23,7 +23,7 @@ int ip6_route_me_harder(struct sk_buff *skb) .saddr = iph->saddr, } }, }; - dst = ip6_route_output(&init_net, skb->sk, &fl); + dst = ip6_route_output(dev_net(skb->dst->dev), skb->sk, &fl); #ifdef CONFIG_XFRM if (!(IP6CB(skb)->flags & IP6SKB_XFRM_TRANSFORMED) && -- 1.5.6.3 ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <20080821223958.GA31601-2ev+ksY9ol182hYKe6nXyg@public.gmane.org>]
* Re: [PATCH 05/38] Fix ip{,6}_route_me_harder() in netns [not found] ` <20080821223958.GA31601-2ev+ksY9ol182hYKe6nXyg@public.gmane.org> @ 2008-09-04 16:10 ` Patrick McHardy 0 siblings, 0 replies; 4+ messages in thread From: Patrick McHardy @ 2008-09-04 16:10 UTC (permalink / raw) To: adobriyan-Re5JQEeQqe8AvxtiuMwx3w Cc: netdev-u79uwXL29TY76Z2rM5mHXA, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, netfilter-devel-u79uwXL29TY76Z2rM5mHXA adobriyan-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org wrote: > ip_route_me_harder() is called on output codepaths: > 1) IPVS: honestly, not sure, looks like it can be called during forwarding > 2) IPv4 REJECT: refreshing comment re skb->dst is valid and assigment of > skb->dst right before call :^) > 3) NAT: called in LOCAL_OUT hook > 4) iptable_mangle: LOCAL_OUT hook > 5) nf_ip_reroute(): LOCAL_OUT hook (no clue about queueing packets to luserspace) > > ip6_route_me_harder() is also called in output codepaths: > 1) ip6table_mangle: LOCAL_OUT hook > 2) nf_ip6_reroute: LOCAL_OUT hook (ditto) This changelog doesn't give much clue what the patch is doing or even what the problem is. It also doesn't seem that you're very convinced of its correctness. Please resend with a proper changelog. If you have any questions about the contexts in which this function is called, just ask. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 05/38] Fix ip{,6}_route_me_harder() in netns 2008-08-21 22:39 ` adobriyan [not found] ` <20080821223958.GA31601-2ev+ksY9ol182hYKe6nXyg@public.gmane.org> @ 2008-09-04 16:10 ` Patrick McHardy 1 sibling, 0 replies; 4+ messages in thread From: Patrick McHardy @ 2008-09-04 16:10 UTC (permalink / raw) To: adobriyan; +Cc: containers, netdev, netfilter-devel adobriyan@gmail.com wrote: > ip_route_me_harder() is called on output codepaths: > 1) IPVS: honestly, not sure, looks like it can be called during forwarding > 2) IPv4 REJECT: refreshing comment re skb->dst is valid and assigment of > skb->dst right before call :^) > 3) NAT: called in LOCAL_OUT hook > 4) iptable_mangle: LOCAL_OUT hook > 5) nf_ip_reroute(): LOCAL_OUT hook (no clue about queueing packets to luserspace) > > ip6_route_me_harder() is also called in output codepaths: > 1) ip6table_mangle: LOCAL_OUT hook > 2) nf_ip6_reroute: LOCAL_OUT hook (ditto) This changelog doesn't give much clue what the patch is doing or even what the problem is. It also doesn't seem that you're very convinced of its correctness. Please resend with a proper changelog. If you have any questions about the contexts in which this function is called, just ask. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-09-04 16:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20080821215825.GE31136@x200.localdomain>
[not found] ` <20080821215825.GE31136-2ev+ksY9ol182hYKe6nXyg@public.gmane.org>
2008-08-21 22:39 ` [PATCH 05/38] Fix ip{,6}_route_me_harder() in netns adobriyan-Re5JQEeQqe8AvxtiuMwx3w
2008-08-21 22:39 ` adobriyan
[not found] ` <20080821223958.GA31601-2ev+ksY9ol182hYKe6nXyg@public.gmane.org>
2008-09-04 16:10 ` Patrick McHardy
2008-09-04 16:10 ` Patrick McHardy
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.