日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
NETISR(9) FreeBSD カーネル開発者マニュアル NETISR(9) 名称 netisr -- カーネルネットワークディスパッチ (dispatch) サービス 書式 #include <net/netisr.h> void netisr_register(const struct netisr_handler *nhp); void netisr_unregister(const struct netisr_handler *nhp); int netisr_dispatch(u_int proto, struct mbuf *m); int netisr_dispatch_src(u_int proto, uintptr_t source, struct mbuf *m); int netisr_queue(u_int proto, struct mbuf *m); int netisr_queue_src(u_int proto, uintptr_t source, struct mbuf *m); void netisr_clearqdrops(const struct netisr_handler *nhp); void netisr_getqdrops(const struct netisr_handler *nhp, uint64_t *qdropsp); void netisr_getqlimit(const struct netisr_handler *nhp, u_int *qlimitp); int netisr_setqlimit(const struct netisr_handler *nhp, u_int qlimit); u_int netisr_default_flow2cpu(u_int flowid); u_int netisr_get_cpucount(void); u_int netisr_get_cpuid(u_int cpunumber); 次のカーネルコンパイルオプションによって有効にされたオプションの仮想ネッ トワークスタックサポートが付で: options VIMAGE void netisr_register_vnet(const struct netisr_handler *nhp); void netisr_unregister_vnet(const struct netisr_handler *nhp); 解説 netisr カーネルインタフェーススイート (一連のソフト) によって、デバイスド ライバ (と、他のパケットソース) は、直接ディスパッチされるか、または延期 された処理のためのプロトコルにパケットを向けることができます。プロトコル 登録と作業ストリーム統計は、netstat(1) を使用してモニタされます。 プロトコル登録 プロトコルは、netisr_register() と netisr_unregister() を使用してハンドラ を登録して、登録解除し、また netisr_clearqdrops(), netisr_getqdrops(), netisr_getqlimit() と netisr_setqlimit() を使用して、キューの制限と統計を 管理します。 VIMAGE カーネルごとの仮想ネットワークスタック (vnet) の場合に、すなわち、 デフォルトの基本ステムネットワークスタックではない、プロトコルごとに netisr によってパケット処理を有効にするか、または無効にするために、 netisr_register_vnet() と netisr_unregister_vnet() を呼び出します。また、 無効にすることは、プロトコルキューからあらゆる未解決のパケットを消去しま す。 netisr は、ハンドラのマルチプロセッサ実行をサポートし、ソース順序とプロト コル特有の順序の組み合わせと、1 つ以上の作業スレッドの向こう側に仕事をど のように配布するかを決定する作業配置 (work-placement) ポリシに依存しま す。プロトコルを登録すると、3 つのポリシの 1 つを宣言します: NETISR_POLICY_SOURCE netisr は、プロトコルからのアドバイスなしでソースの 順序を維持するべきです。netisr は、作業配置 (work placement) の目的のための mbuf ヘッダに存在するすべ てのフロー ID を無視します。 NETISR_POLICY_FLOW netisr は、mbuf ヘッダフロー ID フィールドによって 定義されるように、フロー順序を維持するべきです。プ ロトコルが nh_m2flow を実装するなら、netisr は、 mbuf に、ソース順序を当てにするフロー ID がない場合 に、プロトコルを問い合わせます。 NETISR_POLICY_CPU netisr は、各パケットのために nh_m2cpuid に問い合わ せ、プロトコルへのすべての作業配置 (work placement) 決定を完全に委譲します。 登録は、フィールドが次の通り定義される struct netisr_handler を使用して宣 言されます: const char * nh_name sysctl(3) MIB 名に含まれる、プロトコルのユ ニークな文字列名、空白を含むべきではありませ ん。 netisr_handler_t nh_handler プロトコルのために受信された各パケット上で呼 び出されるプロトコルハンドラ関数。 netisr_m2flow_t nh_m2flow フロー ID を生成し、M_HASHTYPE_NONE と等しい M_HASHTYPE_GET(m) で netisr を入力するパケッ トのための有効なハッシュタイプを設定する、オ プションのプロトコル関数。NETISR_POLICY_FLOW だけで使用されます。 netisr_m2cpuid_t nh_m2cpuid パケットがどのような CPU に処理されるべきで あるか決定するためのプロトコル関数。 NETISR_POLICY_CPU 付きだけで使用されます。 netisr_drainedcpu_t nh_drainedcpu CPU ごとのキューが使い果たされたとき、呼び出 されるオプションのコールバック。それは、直接 ディスパッチされたパケットに対して決して発火 しません。完全に理解しているわけではないな ら、この特殊目的の関数を使用するべきではあり ません。 u_int nh_proto netisr へのそれら自体を識別するための両方の プロトコルによって、およびどのようなハンドラ がパケットを処理するために使用されるかを選択 するためのパケットソースによって使用されるプ ロトコル番号。サポートしているプロトコル番号 のテーブルは、下記に現れます。実装の理由に関 して、15 より大きいプロトコル番号は、現在サ ポートされていません。 u_int nh_qlimit プロトコルのための最大の CPU ごとのキューの 深さ。内部の実装の詳細のために、有効なキュー の深さは、ほぼこの数の 2 倍となります。 u_int nh_policy 以前に説明されたように、プロトコルのための順 序と作業配置 (work placement) ポリシ。 パケットソースインタフェース ネットワークインタフェースのような、パケットソースは、netisr_dispatch() と netisr_queue() インタフェースを使用してプロトコル処理を要求します。プ ロトコル番号と mbuf 引数の両方を受け付けますが、netisr_queue() が延期され たコンテキストで非同期にプロトコルハンドラを常に実行する間に、 netisr_dispatch() は、グローバルでプロトコルごとのポリシによって許可され るなら、オプションで直接ディスパッチします。 また、追加のロードバランスとフロー情報を提供するために、パケットソース は、また、netisr_dispatch_src() と netisr_queue_src() 変異型を使用して、 実際には、ネットワークインタフェース番号またはソケットポインタであるかも しれない、不透明なソース識別子を指定します。 プロトコル番号定数 次のプロトコル番号が現在定義されています: NETISR_IP IPv4 NETISR_IGMP IGMPv3 loopback NETISR_ROUTE Routing socket loopback NETISR_ARP ARP NETISR_IPV6 IPv6 NETISR_NATM ATM NETISR_EPAIR netstat(1), epair(4) 作者 このマニュアルページと netisr の実装は、Robert N. M. Watson によって書か れました。 FreeBSD 11.4 June 3, 2016 FreeBSD 11.4