|
|
This PPP implementation involves the following programs,
STREAMS drivers, and STREAMS modules:
PPP driver,
ppp(ADMP)
PPP daemon,
pppd(ADMN)
PPP login script,
ppp(ADMN)
pppattach command,
pppattach(ADMN)
STREAMS message to clist conversion driver,
mbcl(ADMP)
asynchronous High-level Data Link Control (HDLC) protocol module,
asyhdlc(ADMP)
packet filter module,
bpf(ADMP)
PPP interface statistics display,
pppstat(ADMN)
There are also several configuration files used in this implementation:
PPP link configuration file,
ppphosts(SFF)
packet filter file,
packetfilter(SFF)
PPP authentication file,
pppauth(SFF)
IP address pool,
ppppool(SFF)
The PPP daemon manages PPP connections. See pppd(ADMN) for a description of how PPP connections are established.
NOTE: This implementation permits the use of an asynchronous driver that can perform the packetization and framing required by PPP to send data over a smart third-party serial port device. Such a driver offloads this processing from PPP onto the hardware. The third-party driver and module(s) are specified in the /etc/pppstack file (see pppstack(SFF)). If this file exists, the PPP daemon configures the PPP stack with the named driver and module(s). If the file does not exist, the PPP daemon configures the default PPP stack by linking the asyhdlc(ADMP) module with the mbcl(ADMP) driver.
The PPP driver implements a two-level priority scheme in the handling of packets. Given highest priority over other packets, but equal priority amongst themselves, are rlogin, telnet, and ftp control packets. All other packets, including ftp data packets, are handled as a lower priority.
Statistics can be gathered on both MIBs by sending an I_STR ioctl command (see streamio(M)) to the driver. The following structure is passed as an argument to the I_STR ioctl to extract the desired information:
struct tablerd { int ifIndex; union { struct linkstatus lks; struct linkconfig lkc; struct secconfig secc; struct secsecret secs; struct ipstatus ips; struct ipconfig ipc; } u_val; };The secc and secs structures are not supported at this time. The other four structures are defined in ppp.h. The user must fill the
ifIndex
element, which specifies the
corresponding PPP interface. The return value is
stored in u_val.
The following internal ioctl commands, passed to the I_STR ioctl and defined in <netinet/ppp.h>, are supported by the PPP driver to gather MIB statistics:
RFC 1144, RFC 1332, RFC 1334, RFC 1471, RFC 1473, RFC 1548