Return to BSD News archive
Xref: sserve comp.sys.next.programmer:17769 comp.protocols.ppp:5923 comp.unix.bsd:14931
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!spool.mu.edu!howland.reston.ans.net!math.ohio-state.edu!jussieu.fr!ensta!itesec!frmug.fr.net!fasterix.frmug.fr.net!fasterix.frmug.fr.net!not-for-mail
From: pb@fasterix.frmug.fr.net (Pierre Beyssac)
Newsgroups: comp.sys.next.programmer,comp.protocols.ppp,comp.unix.bsd
Subject: problem with ppp-2.1.2 interfaces & routes, NextStep3.2/SunOS4.1.3
Date: 23 Sep 1994 02:26:29 +0200
Organization: considered harmful
Lines: 78
Message-ID: <35t7c8$167@fasterix.frmug.fr.net>
NNTP-Posting-Host: fasterix.frmug.fr.net
Keywords: PPP, SunOS, NextStep, routes
I have a problem with PPP interface addresses and routes under
different flavors of BSD Unix (namely, NextStep 3.2 and SunOS
4.1.3).
I remarked this using Philip Prindeville's port of ppp 2.1.2 under
NextStep 3.2, but it seems to be a generic problem.
1) When the interface addresses are set, a route is added by the
kernel *and* the route for the old adresses is deleted.
If I try this by hand :
ifconfig ppp0 1.2.3.4 5.6.7.8
a netstat -r shows a route for 5.6.7.8.
Then if I try this :
ifconfig ppp0 down
ifconfig ppp1 1.2.3.4 5.6.7.8
the route for 5.6.7.8 is still there.
So far, so good, everything works fine.
Now if I do :
ifconfig ppp0 9.10.11.12 13.14.15.16
the route for 5.6.7.8 is deleted, even though the ppp1 interface
is still up !
This situation can occur on a dialup server in the following
circonstances :
1) "A" connects on ppp0
2) "B" connects on ppp1
3) "A" and "B" leave
4) "B" reconnects, getting ppp0
at this time, both ppp0 and ppp1 have B as remote
address.
ppp0 is up, ppp1 is down.
5) "anybody" reconnects, getting ppp1.
ppp1 changes addresses, the route for B is deleted.
This behaviour shows up in the ppp-2.1.2 implementation, at
least under NextStep, and possibly under SunOS 4.1.3 as well (I
have not been able to try the latter, but trying the ifconfigs
above by hand seems to produce the same result as on NextStep).
It can be fixed by deleting any route associated with an interface
when the interface comes down.
To do this, the only way I've found is :
do a SIOCSIFADDR (NextStep does not seem to have SIOCDIFADDR)
to set the interface addresses to 0.0.0.0, 0.0.0.0
The old route is deleted and a new route is created to
0.0.0.0 for 0.0.0.0, which is *bad*
--> delete that route (with SIOCDELRT)
Is there a cleaner/better way to do this ?
2) A probably related problem is that I don't know, under NextStep
or SunOS 4, once an interface's addresses have been set, how to
"remove" them so as to get ifconfig to reply "none" instead of
something like :
inet 0.0.0.0 --> 0.0.0.0 netmask ffffff00
Is it supposed to be done with SIOCDIFADDR (sorry, it might
exist under SunOS 4, I don't have one handy :-)) ? How to do
without it ?
--
Pierre Beyssac FreeBSD@home: pb@fasterix.frmug.fr.net
FreeBSD, NetBSD, Linux -- Il y a moins bien, mais c'est plus cher.
You can also get less bang for more bucks. (translation F. Berjon)