ng_async(4)
NAME
ng_async - asynchronous framing netgraph node type
SYNOPSIS
#include <sys/types.h> #include <netgraph/ng_async.h>
DESCRIPTION
- The async node type performs conversion between synchronous
- frames and
asynchronous frames, as defined for the PPP protocol in RFC - 1662. Asynchronous framing uses flag bytes and octet-stuffing to simu
- late a frame
oriented connection over an octet-oriented asynchronous se - rial line.
- The node transmits and receives asynchronous data on the
- async hook.
Mbuf boundaries of incoming data are ignored. Once a com - plete packet has
been received, it is decoded and stripped of all framing - bytes, and
transmitted out the sync hook as a single frame. - Synchronous frames are transmitted and received on the sync
- hook. Packets received on this hook are encoded as asynchronous frames
- and sent out
on async. Received packets should start with the address - and control
fields, or the PPP protocol field if address and control - field compression is employed, and contain no checksum field. If the
- first four bytes
are 0xff 0x03 0xc0 0x21 (an LCP protocol frame) then com - plete control
character escaping is enabled for that frame (in PPP, LCP - packets are
always sent with no address and control field compression - and all control
characters escaped). - This node supports ``flag sharing'' for packets transmitted
- on async.
This is an optimization where the trailing flag byte of one - frame is
shared with the opening flag byte of the next. Flag sharing - between
frames is disabled after one second of transmit idle time.
HOOKS
This node type supports the following hooks:
- async Asynchronous connection. Typically this hook would
- be connected
- to a ng_tty(4) node, which handles transmission of
- serial data
over a tty device. - sync Synchronous connection. This hook sends and re
- ceives synchronous
- frames. For PPP, these frames should contain ad
- dress, control,
and protocol fields, but no checksum field. Typi - cally this hook
would be connected to an individual link hook of a - ng_ppp(4) type
node.
CONTROL MESSAGES
- This node type supports the generic control messages, plus
- the following:
- NGM_ASYNC_CMD_GET_STATS
- This command returns a struct ng_async_stat containing
- node statistics for packet, octet, and error counts.
- NGM_ASYNC_CMD_CLR_STATS
- Clears the node statistics.
- NGM_ASYNC_CMD_SET_CONFIG
- Sets the node configuration, which is described by a
- struct
ng_async_cfg:
struct ng_async_cfg {u_char enabled; /* Turn encoding on/off */
u_int16_t amru; /* Max receive async framelen */
u_int16_t smru; /* Max receive sync frame len*/
u_int32_t accm; /* ACCM encoding */}; - The enabled field enables or disables all encoding/de
- coding functions (default disabled). When disabled, the node op
- erates in simple ``pass through'' mode. The amru and smru fields
- are the asynchronous and synchronous MRU (maximum receive unit)
- values, respectively. These both default to 1600; note that the
- async MRU applies
to the incoming frame length after asynchronous decod - ing. The accm
field is the asynchronous character control map, which - controls the
escaping of characters 0x00 thorough 0x1f (default - 0xffffffff).
- NGM_ASYNC_CMD_GET_CONFIG
- This command returns the current configuration struc
- ture.
SHUTDOWN
- This node shuts down upon receipt of a NGM_SHUTDOWN control
- message, or
when all hooks have been disconnected.
SEE ALSO
netgraph(4), ng_ppp(4), ng_tty(4), ngctl(8)
W. Simpson, PPP in HDLC-link Framing, RFC 1662.
W. Simpson, The Point-to-Point Protocol (PPP), RFC 1661.
HISTORY
The ng_async node type was implemented in FreeBSD 4.0.
AUTHORS
- Archie Cobbs <archie@FreeBSD.org>
- BSD January 19, 1999