# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/10/20 20:27:59+02:00 kaber@coreworks.de # [NETFILTER]: Select source address for gateway in MASQUERADE # # Suggested by Herbert Xu # # Signed-off-by: Patrick McHardy # # net/ipv4/netfilter/ipt_MASQUERADE.c # 2004/10/20 20:26:59+02:00 kaber@coreworks.de +3 -1 # [NETFILTER]: Select source address for gateway in MASQUERADE # # Suggested by Herbert Xu # # Signed-off-by: Patrick McHardy # diff -Nru a/net/ipv4/netfilter/ipt_MASQUERADE.c b/net/ipv4/netfilter/ipt_MASQUERADE.c --- a/net/ipv4/netfilter/ipt_MASQUERADE.c 2004-10-22 03:39:37 +02:00 +++ b/net/ipv4/netfilter/ipt_MASQUERADE.c 2004-10-22 03:39:37 +02:00 @@ -81,6 +81,7 @@ enum ip_conntrack_info ctinfo; const struct ip_nat_multi_range *mr; struct ip_nat_multi_range newrange; + struct rtable *rt; u_int32_t newsrc; IP_NF_ASSERT(hooknum == NF_IP_POST_ROUTING); @@ -95,7 +96,8 @@ || ctinfo == IP_CT_RELATED + IP_CT_IS_REPLY)); mr = targinfo; - newsrc = inet_select_addr(out, 0, RT_SCOPE_UNIVERSE); + rt = (struct rtable *)(*pskb)->dst; + newsrc = inet_select_addr(out, rt->rt_gateway, RT_SCOPE_UNIVERSE); if (!newsrc) { printk("MASQUERADE: %s ate my IP address\n", out->name); return NF_DROP;