nf_conntrack_h323: lookup route from proper net namespace
Subsystems (2)
PATCH 1/1 nf_conntrack_h323: lookup route from proper net namespace
Signed-off-by Vasily Averin <[email protected]>
--- net/netfilter/nf_conntrack_h323_main.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
net/netfilter/nf_conntrack_h323_main.c +8 -6
@@ -728,7 +728,8 @@ static int expect_h245(struct sk_buff *skb, struct nf_conn *ct,/* If the calling party is on the same side of the forward-to party, * we don't need to track the second call */ -static int callforward_do_filter (const union nf_inet_addr *src, +static int callforward_do_filter (struct net *net, +const union nf_inet_addr *src,const union nf_inet_addr *dst,u_int8_t family) {
@@ -750,9 +751,9 @@ static int callforward_do_filter(const union nf_inet_addr *src,memset (&fl2,0 ,sizeof (fl2)); fl2.daddr = dst->ip; -if (!afinfo->route (&init_net, (struct dst_entry **)&rt1, +if (!afinfo->route (net, (struct dst_entry **)&rt1,flowi4_to_flowi (&fl1), false)) { -if (!afinfo->route (&init_net, (struct dst_entry **)&rt2, +if (!afinfo->route (net, (struct dst_entry **)&rt2,flowi4_to_flowi (&fl2), false)) { if (rt_nexthop(rt1, fl1.daddr) == rt_nexthop(rt2, fl2.daddr) &&
@@ -774,9 +775,9 @@ static int callforward_do_filter(const union nf_inet_addr *src,memset (&fl2,0 ,sizeof (fl2)); fl2.daddr = dst->in6; -if (!afinfo->route (&init_net, (struct dst_entry **)&rt1, +if (!afinfo->route (net, (struct dst_entry **)&rt1,flowi6_to_flowi (&fl1), false)) { -if (!afinfo->route (&init_net, (struct dst_entry **)&rt2, +if (!afinfo->route (net, (struct dst_entry **)&rt2,flowi6_to_flowi (&fl2), false)) { if (ipv6_addr_equal(rt6_nexthop(rt1), rt6_nexthop(rt2)) &&
@@ -807,6 +808,7 @@ static int expect_callforwarding(struct sk_buff *skb,__be16 port;union nf_inet_addr addr;struct nf_conntrack_expect *exp; +struct net *net =nf_ct_net (ct);typeof (nat_callforwarding_hook) nat_callforwarding;/* Read alternativeAddress */
@@ -816,7 +818,7 @@ static int expect_callforwarding(struct sk_buff *skb,/* If the calling party is on the same side of the forward-to party, * we don't need to track the second call */ if (callforward_filter && -callforward_do_filter (&addr, &ct->tuplehash[!dir].tuple.src.u3, +callforward_do_filter (net, &addr, &ct->tuplehash[!dir].tuple.src.u3,nf_ct_l3num (ct))) {pr_debug ("nf_ct_q931: Call Forwarding not tracked\n" );return 0 ;
Signature · 1 line
1.9.1
Applied, thanks.