Messages in this thread Patch in this message | | | Subject | Re: 2.2.12pre[13] network problem | Date | Sat, 14 Aug 1999 01:02:26 +0100 (BST) | From | Alan Cox <> |
| |
> I've tried 2.2.12pre1 and 2.2.12pre3 today. Output from ifconfig looks > normal. Interface eth0 works fine. Interface eth1 doesn't: if pinged > from another box, it may or may not (mostly not) wake up and ping back, > and if it does, and I ping from the local host, that may work for a bit; > but very soon (under 20 seconds) the interface seems to revert to > inactivity. All this time eth0 is quite normal. Taking eth1 down and > bringing it back up manually with ifconfig doesn't help. Rebooting > 2.2.11 causes the problem to go away.
Do you have any of the IP virtual server stuff built in ?
Can you see if backing out this helps
diff -u --new-file --recursive --exclude-from ../exclude linux.vanilla/net/ipv4/arp.c linux.12p2/net/ipv4/arp.c --- linux.vanilla/net/ipv4/arp.c Tue Aug 10 21:45:41 1999 +++ linux.12p2/net/ipv4/arp.c Wed Aug 11 22:54:16 1999 @@ -65,6 +65,8 @@ * clean up the APFDDI & gen. FDDI bits. * Alexey Kuznetsov: new arp state machine; * now it is in net/core/neighbour.c. + * Wensong Zhang : NOARP device (such as tunl) arp fix. + * Peter Kese : arp_solicit: saddr opt disabled for vs. */ /* RFC1122 Status: @@ -306,9 +308,15 @@ u32 target = *(u32*)neigh->primary_key; int probes = neigh->probes; +#if !defined(CONFIG_IP_MASQUERADE_VS) /* Virtual server */ + /* use default interface address as source address in virtual + * server environment. Otherways the saddr might be the virtual + * address and gateway's arp cache might start routing packets + * to the real server */ if (skb && inet_addr_type(skb->nh.iph->saddr) == RTN_LOCAL) saddr = skb->nh.iph->saddr; else +#endif saddr = inet_select_addr(dev, target, RT_SCOPE_LINK); if ((probes -= neigh->parms->ucast_probes) < 0) { @@ -534,6 +542,7 @@ struct rtable *rt; unsigned char *sha, *tha; u32 sip, tip; + struct device *tdev; u16 dev_type = dev->type; int addr_type; struct in_device *in_dev = dev->ip_ptr; @@ -627,6 +636,13 @@ * addresses. If this is one such, delete it. */ if (LOOPBACK(tip) || MULTICAST(tip)) + goto out; + +/* + * Check for the device flags for the target IP. If the IFF_NOARP + * is set, just delete it. No arp reply is sent. -- WZ + */ + if ((tdev = ip_dev_find(tip)) && (tdev->flags & IFF_NOARP)) goto out; /* - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |