EN JA
NG_ASYNC(4)
NG_ASYNC(4) FreeBSD Kernel Interfaces Manual NG_ASYNC(4)

名称

ng_async非同期フレーミング netgraph ノードタイプ

書式

#include < sys/types.h>
#include < netgraph/ng_async.h>

解説

async ノードタイプは、RFC 1662 の PPP プロトコルで定義されるように同期フレームと非同期フレームの間の変換を実行します。非同期フレームは、フラグバイトとオクテット指向の非同期なシリアルラインでフレーム指向の接続をシミュレートするためのオクテットの詰め物を使用します。

ノードは、 async フックで非同期データを送信し、受信します。着信データの mbuf 境界は、無視されます。いったん完全なパケットを受信すると、それをデコードして、すべてのフレームバイトを取り除き、シングルフレームとして sync フックで送信します。

同期フレームは、 sync フックで送信して、受信します。このフックで受信されたパケットは、非同期なフレームとしてコード化して、 async で送信します。アドレスと制御フィールド圧縮が採用され、チェックサムフィールドを含んでいない場合、受信されたパケットは、アドレスと制御フィールドか PPP プロトコルフィールドから始まるべきです。最初の 4 バイトが 0xff 0x03 0xc0 0x21 である (LCP プロトコルフレーム) なら、完全な制御文字エスケープは、そのフレームのために有効にされます (PPP では、LCP パケットは、アドレスなしで、制御フィールド圧縮、とすべての制御文字エスケープを常に送信します)。

このノードは、 async で送信されたパケットのための“フラグ共有”をサポートします。これは、1 つのフレームのトレーリング (後尾) フラグバイトが次のオープニング (開始) フラグバイトと共有されるところの最適化です。フレーム間のフラグ共有は、送信アイドル時間の 1 秒後に無効にされます。

フック

このノードタイプは、次のフックをサポートします:
async
非同期の接続です。一般的に、このフックは、tty デバイス上のシリアルデータの送信を操作する ng_tty(4) ノードに接続されます。
sync
同期の接続です。このフックは、同期フレームを送信し、受信します。 PPP に関しては、これらのフレームは、アドレス、コントロールとプロトコルフィールドを含んでいますが、チェックサムフールドは含んでいません。一般的に、このフックは、 ng_ppp(4) タイプノードの個々のリンクフックに接続されます。

コントロールメッセージ

このノードタイプは、次を加えて、一般的なコントロールメッセージをサポートします:
NGM_ASYNC_CMD_SET_CONFIG ( setconfig)
struct ng_async_cfg によって説明されているノード設定を設定します。

struct ng_async_cfg { 
 u_char    enabled;  /* コード化をオン/オフします */ 
 uint16_t  amru;     /* 最大受信 async フレーム長 */ 
 uint16_t  smru;     /* 最大受信 sync フレーム長 */ 
 uint32_t  accm;     /* ACCM エンコード */ 
};

enabled フィールドは、すべてのエンコード(コード化)/デコード関数を (デフォルトは、無効) を有効にするか無効にします。無効にされると、ノードは、単純な“パススルー”モードで動作します。 amrusmru フィールドは、それぞれ非同期と同期 MRU (最大受信ユニット) 値です。これらは、ともに 1600 がデフォルトです。 async MRU は、非同期なデコード (復号化する) の後の着信フレームの長さに適用するのに注意してください。 accm フィールドは、文字 0x00 から 0x1f (デフォルトは、0xffffffff) のエスケープを制御する非同期文字制御マップです。

NGM_ASYNC_CMD_GET_CONFIG ( getconfig)
このコマンドは、現在の設定の構造体を返します。
NGM_ASYNC_CMD_GET_STATS ( getstats)
このコマンドは、パケット、オクテット、とエラーカウントのためのノード統計を含む struct ng_async_stat を返します。
NGM_ASYNC_CMD_CLR_STATS ( clrstats)
ノード統計をクリアします。

シャットダウン

このノードは、 NGM_SHUTDOWN コントロールメッセージを受け取るか、すべてのフックが切断されている時、シャットダウンします。

関連項目

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.

歴史

ng_async ノードタイプは、 FreeBSD 4.0 で実装されました。

作者

Archie Cobbs <archie@FreeBSD.org>
November 13, 2012 FreeBSD