DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

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:

  1. It opens a control channel to the PPP driver through /dev/ppcid.

  2. It opens a UNIX domain socket at a predefined file pathname.

  3. 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:

  1. It opens the PPP driver.

  2. If filtering is specified, it pushes the IPF module on top of the PPP driver.

  3. 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:

  1. It opens the PPP driver.

  2. If filtering is specified, it pushes the IPF module on top of the PPP driver.

  3. It links the PPP driver with the IP driver.

  4. It opens the STREAMS message block to clist conversion driver (mbcl) over the user-specified tty.

  5. It pushes the asynchronous high-level data link control protocol module (asyhdlc) on top of mbcl.

  6. 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:


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:

  1. It opens the mbcl driver over the tty used by the UUCP login.

  2. It pushes the asyhdlc module on top of mbcl.

  3. It links mbcl with the PPP driver.

  4. 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:

  1. The PPP login used by UUCP executes the PPP shell (see ppp(ADMN)).

  2. ppp sends the tty name of the control terminal to pppd.

  3. pppd opens mbcl over the controlling tty.

  4. pppd pushes asyhdlc on top of mbcl.

  5. 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