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 frame
len */
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
Copyright © 2010-2024 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout