Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.cs.su.oz.au!metro!metro!news.nsw.CSIRO.AU!mel.dit.csiro.au!munnari.OZ.AU!spool.mu.edu!howland.reston.ans.net!newsfeed.internetmci.com!news.mathworks.com!fu-berlin.de!zib-berlin.de!narses.hrz.tu-chemnitz.de!news.tu-chemnitz.de!irz401!uriah.heep!news
From: j@uriah.heep.sax.de (J Wunsch)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: Please Help: After few days ppp and SLIP stops working?
Date: 20 Feb 1996 22:31:17 GMT
Organization: Private BSD site, Dresden
Lines: 61
Message-ID: <4gdi3l$gsj@uriah.heep.sax.de>
References: <4gc0q2$ndk@giga.bga.com>
Reply-To: joerg_wunsch@uriah.heep.sax.de (Joerg Wunsch)
NNTP-Posting-Host: localhost.heep.sax.de
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Newsreader: knews 0.9.3
tushar@ecpi.com (Tushar Patel) writes:
> I have strange problem, PPP and slip stops operating after few days
> in operation. If I reboot the FreeBSD machine every thing starts
> working properly. I am running FreeBSD 2.0.5.
Try this:
Index: /sys/net/route.c
===================================================================
RCS file: /home/cvs/src/sys/net/route.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -u -r1.25 -r1.26
--- route.c 1995/07/29 11:41:02 1.25
+++ route.c 1995/10/16 19:09:40 1.26
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)route.c 8.2 (Berkeley) 11/15/93
- * $Id: route.c,v 1.25 1995/07/29 11:41:02 bde Exp $
+ * $Id: route.c,v 1.26 1995/10/16 19:09:40 wollman Exp $
*/
#include <sys/param.h>
@@ -464,6 +464,28 @@
rn = rnh->rnh_addaddr((caddr_t)ndst, (caddr_t)netmask,
rnh, rt->rt_nodes);
+ if (rn == 0) {
+ struct rtentry *rt2;
+ /*
+ * Uh-oh, we already have one of these in the tree.
+ * We do a special hack: if the route that's already
+ * there was generated by the protocol-cloning
+ * mechanism, then we just blow it away and retry
+ * the insertion of the new one.
+ */
+ rt2 = rtalloc1(dst, 0, RTF_PRCLONING);
+ if (rt2 && rt2->rt_parent) {
+ rtrequest(RTM_DELETE,
+ (struct sockaddr *)rt_key(rt2),
+ rt2->rt_gateway,
+ rt_mask(rt2), rt2->rt_flags, 0);
+ RTFREE(rt2);
+ rn = rnh->rnh_addaddr((caddr_t)ndst,
+ (caddr_t)netmask,
+ rnh, rt->rt_nodes);
+ }
+ }
+
if (rn == 0) {
if (rt->rt_gwroute)
rtfree(rt->rt_gwroute);
--
cheers, J"org
joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)