Date: Fri, 8 Sep 1995 21:16:56 +0200 (MET DST) From: J Wunsch <j@uriah.heep.sax.de> To: freebsd-current@FreeBSD.org (FreeBSD-current users) Cc: kieber@sax.de (Ulf Kieber) Subject: SLIP routing problem Message-ID: <199509081916.VAA14347@uriah.heep.sax.de>
next in thread | raw e-mail | index | archive | help
Hi! I'm stuck with this. We're operating a small non-commercial ISP, and after the upgrade to 2.0.5 (from 1.1.5.1) we experience the following behaviour: whenever the modem line crashes while there's an active SLIP link (the lines are rather noisy, it's old analog equipment), subsequent attempts to log into the machine via SLIP will get an "ioctl(SIOCAIFADDR): Address already exists". (PPP is in the same boat, so i'll refer to them as "pointopoint" below.) Grepping through the code shows that this error could only come from the routing code. Interestingly enough, after a regular shutdown of the link, everything will be okay, and all of those problems "disappear by aging", i.e., after about an hour or so, everything works again normally. I've been digging through all the code in /sys/net, but i've got stuck here. Incidentally, an hour ago i've been logged into the machine while the phenomenon happened to somebody else: Sep 8 20:16:55 sax pppd[2010]: pppd 2.1.2 started by ppufo, uid 68 Sep 8 20:16:55 sax pppd[2010]: Connect: ppp0 <--> /dev/ttyd1 Sep 8 20:16:59 sax pppd[2010]: local IP address 193.175.26.126 Sep 8 20:16:59 sax pppd[2010]: remote IP address 193.175.26.117 Sep 8 20:16:59 sax pppd[2010]: ioctl(SIOCAIFADDR): Address already exists 44 sax:~> /sbin/route get 193.175.26.117 route to: ufo destination: ufo gateway: sax-gw1 interface: ed0 flags: <UP,GATEWAY,HOST,DONE> recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire 0 0 0 0 0 0 0 3597 The interesting fact here is that "sax-gw1" is the _ethernet_ interface. So now i've got the following picture: o at startup time of any pointopoint interface, all routes to that interface are being cleared, and everything is started from scratch [in_ifscrub() is called] o the link breaks, and all routes to the interface are being cleared immediately o anyway, since there have been active connections over that link, further packets with the destination to that pointopoint interface will arrive; since the link is down, the only route that does apply to them is the _default_ route, which points back to the world via the ethernet o this somehow (?) creates a routing table entry for this host, tagged for the (default route) ethernet interface, with an expiration time of 3600 seconds o the pointopoint link comes back after redialing, but somehow (?) the bogus route through the ethernet interface will not be cleared by in_ifscrub() as it ought to be, and the subsequent attempt to create the interface route for this address fails since the routing code claims a route would already exist Who can help us here? It's actually a show-stopper for us. :-( -- cheers, J"org joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ Never trust an operating system you don't have sources for. ;-)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199509081916.VAA14347>