Skip to contentSkip to conversation

: Select source address for gateway in MASQUERADE

PATCH In review Patrick McHardy 1 participant 1 message Oct 25, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 10/19 : Select source address for gateway in MASQUERADE

Select source address for gateway in MASQUERADE, based on Herbert's suggestion.

# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/10/20 20:27:59+02:00 [email protected]
# [NETFILTER]: Select source address for gateway in MASQUERADE
#
# Suggested by Herbert Xu <[email protected]>
#
# Signed-off-by: Patrick McHardy <[email protected]>
#
# net/ipv4/netfilter/ipt_MASQUERADE.c
# 2004/10/20 20:26:59+02:00 [email protected] +3 -1
# [NETFILTER]: Select source address for gateway in MASQUERADE
#
# Suggested by Herbert Xu <[email protected]>
#
# Signed-off-by: Patrick McHardy <[email protected]>
#

net/ipv4/netfilter/ipt_MASQUERADE.c +3 -1
diff -Nru a/net/ipv4/netfilter/ipt_MASQUERADE.c b/net/ipv4/netfilter/ipt_MASQUERADE.c
@@ -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;