Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Apr 1996 10:23:49 +0200 (SAST)
From:      smarq@ucthpx.uct.ac.za (S Marquard)
To:        freebsd-questions@freebsd.org
Subject:   PPPD doesn't die cleanly in 2.1-R (bug?)
Message-ID:  <m0uDoFJ-000vaeC@ucthpx.uct.ac.za>

next in thread | raw e-mail | index | archive | help
In the pppd (kernel PPP) in 2.1-RELEASE, if a pppd process dies
on a read error, the cleanup procedures are never called.

This results in the ppp0 or whatever interface being left configured
with the host and remote IP addresses used for that session.

If the system is setup to dynamically allocate PPP addresses, this
can cause problems - another PPP session can use the same PPP interface,
with different host and remote IPs. The interface doesn't get 
reconfigured for some reason to the new addresses, and a subsequent
PPP session on a different ppp interface which is allocated the 
addresses of the original session (which died), fails.

The PPP addresses are on a different subnet to the ethernet interface,
and proxyarp is not being used.

I fixed this problem by the following patch to 
/usr/src/usr.sbin/pppd/sys-bsd.c:

*** sys-bsd.c.OLD	Mon Feb 26 22:11:17 1996
--- sys-bsd.c	Mon Apr 29 10:13:09 1996
***************
*** 168,173 ****
--- 168,174 ----
  	    return -1;
  	}
  	syslog(LOG_ERR, "read(fd): %m");
+ 	lcp_lowerdown(0);		/* die cleanly */
  	die(1);
      }
      return len;


Since making this change, things have worked perfectly.

Is this a genuine bug in 2.1 pppd, and has it been fixed in -current
and -stable?

Stephen Marquard
smarq@ucthpx.uct.ac.za
scm@picasso.wcape.school.za




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?m0uDoFJ-000vaeC>