pppd(ADMN)
pppd --
Point-to-Point Protocol daemon
Syntax
/etc/pppd [-b] [-d debug_level]
[-w wait]
Description
The PPP daemon, pppd, manages PPP
connections between the local host and
remote PPP hosts.
pppd is usually started by the /etc/tcp script.
When it starts up, pppd does the following:
-
It opens a control channel to the PPP driver
through /dev/ppcid.
-
It opens a UNIX domain socket at a predefined file pathname.
-
It reads the /etc/ppphosts file and performs
certain functions depending on the types of link endpoint
configurations specified there.
The types of endpoint are:
automatic dialup (dynamic outgoing),
manual dialup (dynamic outgoing),
remote access (dynamic incoming),
and dedicated serial (static incoming or outgoing).
For more information on link endpoint configurations, see
``PPP endpoint configurations'' in the Networking Guide.
pppd configures the interfaces for automatic dialup
endpoints by performing the following actions:
-
It opens the PPP driver.
-
If filtering is specified, it pushes the IPF module on top
of the PPP driver.
-
It links the PPP driver with the IP driver.
The configured interface is marked down as there is not yet a
serial line associated with the interface.
pppd configures the interfaces for dedicated serial
endpoints by performing the following actions:
-
It opens the PPP driver.
-
If filtering is specified, it pushes the IPF module on top
of the PPP driver.
-
It links the PPP driver with the IP driver.
-
It opens the STREAMS message block to clist
conversion driver (mbcl) over the user-specified tty.
-
It pushes the asynchronous high-level data link control protocol
module (asyhdlc) on top of mbcl.
-
It links mbcl with the PPP driver.
The configured interface is marked down until required.
NOTE: If the /etc/pppstack file (see
pppstack(SFF))
specifies the driver and asynchronous module(s)
for a third-party smart serial port device,
pppd opens the driver
and pushes the specified module(s) on top of it.
If /etc/pppstack does not exist, the PPP
daemon configures the default PPP stack.
pppd listens on a UNIX domain socket for:
-
incoming connection requests to a remote access endpoint
from the PPP shell (see
ppp(ADMN))
-
outgoing connection requests from a manual dialup endpoint
made using
pppattach(ADMN)
-
status requests from
pppstat(ADMN)
pppd also listens on the channel to the
PPP driver for connection requests from
automatic dialup and dedicated serial (incoming/outgoing)
endpoints.
Detection of dynamic outgoing connection requests
Dynamic outgoing links may be established from
automatic dialup and manual dialup endpoints.
For automatic dialup endpoints, the PPP driver
detects a PPP data request
(IP datagram) and notifies pppd
that a pending datagram exists for a specific destination
IP address.
pppd then checks /etc/ppphosts
for information on how to reach the remote host.
Using this information, pppd forks a
child process to perform a
uucp(C)
style login to the remote host.
A link from a manual dialup endpoint is established when the command
pppattach name is executed on the local machine.
pppattach sends a request to the PPP daemon to
establish the link from the endpoint whose configuration entry in
the /etc/ppphosts file contains
the parameter attach=name.
pppd then checks /etc/ppphosts
for information on how to reach the remote host.
Using that information, pppd forks a child process to
perform a
uucp(C)
style login to the remote host.
NOTE: the following paragraphs in this subsection
apply to links made from both automatic and manual dialup endpoints.
Line characteristics defined in /etc/ppphosts,
such as flow control,
are not put into effect during the UUCP style login.
They only become effective, overriding those set in the standard
UUCP configuration files, once the UUCP login is complete.
NOTE:
For the UUCP login to be successful, UUCP must be set up correctly
as described in the System Administration Guide.
PPP shares the serial lines
(it can use them interchangeably) with
cu(C)
(for standard user logins) and
uucp(C)
(for UUCP logins).
The standard UUCP lock file techniques are used to
share these resources.
When the login process on the remote host completes,
pppd performs the following actions:
-
It opens the mbcl driver over the tty
used by the UUCP login.
-
It pushes the asyhdlc module on top of mbcl.
-
It links mbcl with the PPP driver.
-
It passes PPP negotiation parameters as read from
/etc/ppphosts to the PPP driver.
At this point the PPP driver begins PPP negotiation.
NOTE: If the /etc/pppstack file (see
pppstack(SFF))
specifies the driver and asynchronous module(s)
for a third-party smart serial port device,
pppd opens the driver
and pushes the specified module(s) on top of it.
If /etc/pppstack does not exist, the PPP
daemon configures the default PPP stack.
If PPP negotiation is successful on a link made from
an automatic dialup link, the interface is marked up.
If PPP negotiation is successful on a link made from
a manual dialup endpoint, pppd pushes the
IPF module on top of the PPP driver
if filtering is specified, and
links the PPP driver with the IP driver.
Detection of dynamic incoming connection requests
When a remote site logs in via UUCP, the following actions take place:
-
The PPP login used by UUCP executes
the PPP shell (see
ppp(ADMN)).
-
ppp sends the tty name of the control terminal to pppd.
-
pppd opens mbcl over the controlling tty.
-
pppd pushes asyhdlc on top of mbcl.
-
pppd links mbcl with the PPP driver
and passes PPP negotiation parameters as read from the
/etc/ppphosts file to the PPP driver.
At this point the PPP driver begins PPP negotiation.
If PPP negotiation is successful, pppd pushes the
IPF module on top of the PPP driver
if filtering is specified, and
links the PPP driver with the IP driver.
NOTE: If the /etc/pppstack file (see
pppstack(SFF))
specifies the driver and asynchronous module(s)
for a third-party smart serial port device,
pppd opens the driver
and pushes the specified module(s) on top of it.
If /etc/pppstack does not exist, the PPP
daemon configures the default PPP stack.
Detection of dedicated incoming/outgoing connection requests
When the PPP driver detects a PPP data request
(IP datagram) it notifies pppd
that a pending datagram exists for a specified destination
IP address.
pppd then checks /etc/ppphosts for negotiation parameters,
and passes these to the PPP driver.
At this point the driver begins PPP negotiation.
If PPP negotiation is successful, the interface is marked up.
Link disconnection
An established link continues to exist
until a preset countdown timer measuring
continuous link inactivity has expired, or the link is
broken using
ifconfig(ADMN)
to mark the interface down.
When a link is broken, pppd performs the following actions
depending on the type of endpoint at the local end of the link:
Automatic dialup-
It tears down the link between the mbcl driver
and the PPP driver, and marks the interface down.
Manual dialup-
It tears down the PPP STREAMS stack, and deletes the interface.
Remote access-
It tears down the PPP STREAMS stack, and deletes the interface.
Dedicated serial-
It marks the interface down.
Authentication
During PPP negotiation, either side may
require password authentication to ensure authorization for
a PPP connection. pppd
verifies authorization by consulting the
/etc/pppauth file (see
pppauth(SFF)).
Status requests
When pppd receives a status request from pppstat
on the UNIX domain socket, it obtains the information from the
PPP driver.
Options
pppd accepts the following options:
-b-
The bypass framing option instructs pppd to
turn off on-card framing for all PPP
interfaces it configures.
On-card framing can be turned off for an individual link endpoint
by specifying the bypassframing parameter
in the /etc/ppphosts entry for the endpoint.
-d debug_level-
pppd generates four types of messages: ``warnings'',
``errors'', ``alerts'', and ``info''.
pppd logs all ``warning'', ``error'',
and ``alert'' messages through
syslog(SLIB).
``info'' messages are also logged through syslog,
but according to the value of
debug_level.
A debug_level of 0 results in no logging of info messages.
A debug_level greater than 0
results in the logging of all ``info'' messages.
The default value for debug_level is zero.
The value of debug_level also controls the amount of logging to the
console of UUCP messages generated as a result
of pppd using the standard UUCP facilities to establish
a PPP connection with a remote host.
-w wait-
The value of wait specifies the maximum number of incoming
PPP connection requests which the system can
queue while waiting for pppd to execute the
accept system call on the UNIX domain socket it opened.
Any connection requests that
arrive when the number of queued calls equals
wait are discarded by the system. The default
value of wait is ``5.'' pppd passes
wait as the second parameter when calling the
listen system call.
Signals
pppd responds to the following signals:
SIGHUP-
pppd rereads the /etc/ppphosts file and
configures, reconfigures, or deletes those dedicated serial and dynamic
outgoing PPP interfaces whose configuration has changed since
pppd last read the file.
SIGINT
SIGQUIT
SIGTERM-
pppd abruptly disconnects all PPP connections and exits.
SIGUSR1-
pppd increases the current debug level by 1.
SIGUSR2-
pppd sets the current debug level to 0.
Use of the pppd.pid file
More than one PPP daemon process runs.
The process ID (PID) of the
PPP daemon process which accepts signals is
stored in the file /etc/pppd.pid.
Files
/dev/mbcl
/dev/ppcid
/dev/ppp
/etc/pppauth
/etc/pppd.pid
/etc/pppfilter
/etc/ppphosts
/etc/pppstack
/usr/lib/uucp/Devices
/usr/lib/uucp/Systems
See also
asyhdlc(ADMP),
cu(C),
ipf(ADMP),
mbcl(ADMP),
packetfilter(SFF),
ppp(ADMN),
ppp(ADMP),
pppattach(ADMN),
pppauth(SFF),
ppphosts(SFF),
ppppool(SFF),
pppstack(SFF),
pppstat(ADMN),
syslogd(ADM),
uucp(C)
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003