patch-1.3.81 linux/net/ipv4/ip_forward.c
Next file: linux/net/ipv4/ip_fw.c
Previous file: linux/net/ipv4/igmp.c
Back to the patch index
Back to the overall index
-  Lines: 22
 -  Date:
Sat Mar 30 13:20:34 1996
 -  Orig file: 
v1.3.80/linux/net/ipv4/ip_forward.c
 -  Orig date: 
Mon Mar 25 08:58:25 1996
 
diff -u --recursive --new-file v1.3.80/linux/net/ipv4/ip_forward.c linux/net/ipv4/ip_forward.c
@@ -29,6 +29,9 @@
 #include <linux/udp.h>
 #include <linux/firewall.h>
 #include <linux/ip_fw.h>
+#ifdef CONFIG_IP_MASQUERADE
+#include <net/ip_masq.h>
+#endif
 #include <net/checksum.h>
 #include <linux/route.h>
 #include <net/route.h>
@@ -210,7 +213,10 @@
 #ifndef CONFIG_IP_NO_ICMP_REDIRECT
 		if (dev == dev2 && 
 			!((iph->saddr^dev->pa_addr)&dev->pa_mask) &&
-		    	(rt->rt_flags&RTF_MODIFIED) && !opt->srr)
+			/* The daddr!=raddr test isnt obvious - what its doing
+			   is avoiding sending a frame the receiver will not 
+			   believe anyway.. */
+			iph->daddr != raddr/*ANK*/ && !opt->srr)
 				icmp_send(skb, ICMP_REDIRECT, ICMP_REDIR_HOST, raddr, dev);
 #endif
 #ifdef CONFIG_IP_MROUTE
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this