ng_ppp.4 revision 52419
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 <archie@whistle.com>

$FreeBSD: head/share/man/man4/ng_ppp.4 52419 1999-10-21 09:06:11Z julian $
$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 <netgraph/ng_ppp.h> .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.

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

p 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).

p Any frames received on the .Dv bypass hook are forwarded to .Dv downstream without modification. .Sh HOOKS This node type supports the following hooks:

p l -tag -width foobarbazi t Dv downstream Connection to the PPP link layer. t Dv bypass Frames that do not correspond to a connected protocol hook; the PPP protocol header is included. t Dv 0xNNNN Conection to the PPP protocol with 16-bit hex value .Dv NNNN . No PPP protocol header is included. .El

p For convenience, the .Nm node type defines several hook name aliases for common PPP protocols:

p l -tag -width abcdefgh -compact -offset 4n t Dv lcp LCP protocol data (0xc021) t Dv ipcp IPCP protocol data (0x8021) t Dv atcp ATCP protocol data (0x8029) t Dv ccp CCP protocol data (0x80fd) t Dv ecp ECP protocol data (0x8053) t Dv ip IP protocol data (0x0021) t Dv vjcomp Van Jacobsen compressed TCP data (0x002d) t Dv vjuncomp Van Jacobsen uncompressed TCP data (0x002f) t Dv mp Multi-link protocol data (0x003d) t Dv compd Compressed protocol data (0x00fd) t Dv cryptd Encrypted protocol data (0x0053) t Dv pap PAP authentication protocol data (0xc023) t Dv chap CHAP authentication protocol data (0xc223) t Dv lqr LQR protocol data (0xc025) .El .Sh CONTROL MESSAGES This node type supports the generic control messages, plus the following: l -tag -width foo t 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. t Dv NGM_PPP_GET_STATS This command returns a .Dv "struct ng_ppp_stat" containing various node statistics. t 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 <archie@whistle.com>