Messages in this thread Patch in this message |  | | From | Herbert Xu <> | Subject | Re: 2.1.12 & routing | Date | Tue, 26 Nov 1996 18:13:16 +1100 (EST) |
| |
I wrote: > > I have a Pentium that has an ethernet connection and > a PPP connection. My local (ethernet) network has been unable > to reach the outside since I upgraded the router to 2.1.12 from > 2.1.10. I can ping the outside with unusually high packet loss > rates, but traceroute does not work, neither does any other > network services. I've attached my kernel .config. Note that > I've applied the vm86 patch for dosemu if that makes any > difference. Thanks.
I've found the patch that broke this. It's in 2.1.11 to net/ipv4/ip_forward.c. I've appended it.
Removing it cures the problem. But the question is of course what is the right fix?
-- Debian GNU/Linux 1.1 is out! { http://www.debian.org/ } Email: Herbert Xu ~{PmV>HI~} <herbert@greathan.apana.org.au> { http://greathan.apana.org.au/~herbert/ } PGP Key: pgp-public-keys@pgp.mit.edu or any other key sites -- diff -u --recursive --new-file v2.1.10/linux/net/ipv4/ip_forward.c linux/net/ipv4/ip_forward.c --- v2.1.10/linux/net/ipv4/ip_forward.c Thu Oct 10 19:10:58 1996 +++ linux/net/ipv4/ip_forward.c Mon Nov 18 11:31:35 1996 @@ -16,6 +16,7 @@ * use output device for accounting. * Jos Vos : Call forward firewall after routing * (always use output device). + * Alan Cox : Unshare buffer on forward. */ #include <linux/config.h> @@ -120,6 +121,13 @@ struct sk_buff *skb_in = skb; /* So we can remember if the masquerader did some swaps */ #endif /* CONFIG_IP_MASQUERADE */ #endif /* CONFIG_FIREWALL */ + + /* + * We may be sharing the buffer with a snooper. That won't do + */ + + if((skb=skb_unshare(skb, GFP_ATOMIC,FREE_READ))==NULL) + return -1; /* * According to the RFC, we must first decrease the TTL field. If
|  |