.\" Copyright (c) 1996-1999 Whistle Communications, Inc. .\" All rights reserved. .\" .\" Subject to the following obligations and disclaimer of warranty, use and .\" redistribution of this software, in source or object code forms, with or .\" without modifications are expressly permitted by Whistle Communications; .\" provided, however, that: .\" 1. Any and all reproductions of the source or object code must include the .\" copyright notice above and the following disclaimer of warranties; and .\" 2. No rights are granted, in any manner or form, to use Whistle .\" Communications, Inc. trademarks, including the mark "WHISTLE .\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as .\" such appears in the above copyright notice or in the software. .\" .\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND .\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO .\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, .\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. .\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY .\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS .\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE. .\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES .\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING .\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, .\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR .\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY .\" OF SUCH DAMAGE. .\" .\" Author: Archie Cobbs .\" .\" $FreeBSD$ .\" $Whistle: ng_ppp.8,v 1.3 1999/01/25 23:46:27 archie Exp $ .\" .Dd January 19, 1999 .Dt NG_PPP 8 .Os FreeBSD 3 .Sh NAME .Nm ng_ppp .Nd PPP protocol multiplexor negraph node type .Sh SYNOPSIS .Fd #include .Sh DESCRIPTION The .Nm ppp node type performs multiplexing for the PPP protocol. On the .Dv downstream hook it transmits and receives full PPP frames, which include the protocol field, but no address, control or checksum fields. On outgoing frames, when protocol compression has been enabled and the protocol number is suitable for compression, the protocol field will be compressed (i.e., sent as one byte instead of two). Either compressed or uncompressed protocol fields are accepted on incoming frames. .Pp For each 16-bit PPP procotol number there is a corresponding ``upstream'' hook. Packets on these hooks contain no PPP protocol header. The node simply multiplexes between the .Dv downstream hook and all of the upstream hooks by adding or subtracting the PPP protocol field, depending on the direction of flow. .Pp When a frame is received on .Dv downstream , if the corresponding protocol hook is not connected, the packet is forwarded to a special upstream hook called .Dv bypass . This hook is a catch-all for any incoming frames not destined for another already connected hook. Packets sent out on the .Dv bypass hook always have the PPP protcol header prepended as the first two bytes (even if the original incoming frame was protocol compressed to one byte). .Pp Any frames received on the .Dv bypass hook are forwarded to .Dv downstream without modification. .Sh HOOKS This node type supports the following hooks: .Pp .Bl -tag -width foobarbazi .It Dv downstream Connection to the PPP link layer. .It Dv bypass Frames that do not correspond to a connected protocol hook; the PPP protocol header is included. .It Dv 0xNNNN Conection to the PPP protocol with 16-bit hex value .Dv NNNN . No PPP protocol header is included. .El .Pp For convenience, the .Nm node type defines several hook name aliases for common PPP protocols: .Pp .Bl -tag -width abcdefgh -compact -offset 4n .It Dv lcp LCP protocol data (0xc021) .It Dv ipcp IPCP protocol data (0x8021) .It Dv atcp ATCP protocol data (0x8029) .It Dv ccp CCP protocol data (0x80fd) .It Dv ecp ECP protocol data (0x8053) .It Dv ip IP protocol data (0x0021) .It Dv vjcomp Van Jacobsen compressed TCP data (0x002d) .It Dv vjuncomp Van Jacobsen uncompressed TCP data (0x002f) .It Dv mp Multi-link protocol data (0x003d) .It Dv compd Compressed protocol data (0x00fd) .It Dv cryptd Encrypted protocol data (0x0053) .It Dv pap PAP authentication protocol data (0xc023) .It Dv chap CHAP authentication protocol data (0xc223) .It Dv lqr LQR protocol data (0xc025) .El .Sh CONTROL MESSAGES This node type supports the generic control messages, plus the following: .Bl -tag -width foo .It Dv NGM_PPP_SET_PROTOCOMP This command takes a single integer as argument and enables or disables protocol field compression as the value is zero or non-zero. Note that only protocols with high order byte equal to .Dv 0x00 are compressible. .It Dv NGM_PPP_GET_STATS This command returns a .Dv "struct ng_ppp_stat" containing various node statistics. .It Dv NGM_PPP_CLR_STATS Clears the node statistics. Statistics are also cleared whenever the .Dv downstream hook is reconnected. .Sh SHUTDOWN This node shuts down upon receipt of a .Dv NGM_SHUTDOWN control message, or when all hooks have been disconnected. .Sh SEE ALSO .Xr netgraph 4 , .Xr ng_async 8 , .Xr ng_vjc 8 , .Xr ngctl 8 . .Rs .%A W. Simpson .%T "The Point-to-Point Protocol (PPP)" .%O RFC 1661 .Re .Sh AUTHOR Archie Cobbs