netconfig
ファイルでは、
"トランスポート名"
のリストを定義して、それぞれのセマンティクスやプロトコルを記述しています。
FreeBSD
では、このファイルは RPC ライブラリのコードだけが使用しています。
エントリは次のようなフォーマットになっています:
network_id semantics flags family protoname device libraries
エントリを構成するフィールドは次の通りです:
network_id
|
|
記述するトランスポートの名称
|
semantics
|
トランスポートのセマンティクスを記述します。
これは次のうちの一つです:
|
tpi_clts
|
コネクションレストランスポート
|
tpi_cots
|
コネクション指向トランスポート
|
tpi_cots_ord
|
|
コネクション指向順序付きトランスポート
|
tpi_raw
|
素のコネクション
|
flags
|
このフィールドはブランクか(
"-"
と指定します)、
または
"v"
を含みます。
"v"
を含むときは
getnetconfig(3) [英語]
関数で見ることが出来るということを表します。
|
family
|
トランスポートのプロトコルファミリで、
現在は次のうちの一つです:
|
inet6
|
IPv6
( PF_INET6)
プロトコルファミリ
|
inet
|
IPv4
( PF_INET)
プロトコルファミリ
|
loopback
|
|
PF_LOCAL
プロトコルファミリ
|
protoname
|
|
トランスポートのプロトコル名で、
現在は
udp,
tcp
のどちらかか、もしくは空です。
|
device
|
FreeBSD
では、このフィールドは常に空です。
|
libraries
|
|
FreeBSD
では、このフィールドは常に空です。
|
このファイル内のエントリの順序によって、指定されたネットワークタイプに対する
RPC ライブラリコードのトランスポートの優先順位が決まります。
例えば、サンプルとしてネットワーク設定ファイルが下のようになっていたとします:
udp6 tpi_clts v inet6 udp - -
tcp6 tpi_cots_ord v inet6 tcp - -
udp tpi_clts v inet udp - -
tcp tpi_cots_ord v inet tcp - -
rawip tpi_raw - inet - - -
local tpi_cots_ord - loopback - - -
このとき、ネットワークタイプとして
udp
を使用して RPC ライブラリ関数を呼び出すと
((rpc) 3
参照)、
まず最初に
udp6
を試してから
udp
を試します。
getnetconfig(3) [英語]
や、その関連の関数はこのファイルを構文解析して次のようなフォーマットの
構造体を返します:
struct netconfig {
char *nc_netid; /* ネットワーク ID */
unsigned long nc_semantics; /* セマンティクス (下記参照) */
unsigned long nc_flag; /* フラグ (下記参照) */
char *nc_protofmly; /* プロトコルファミリ */
char *nc_proto; /* プロトコル名 */
char *nc_device; /* ネットワークデバイスのパス名 (未使用) */
unsigned long nc_nlookups; /* 参照するライブラリの数 (未使用) */
char **nc_lookups; /* ライブラリ名の並び (未使用) */
unsigned long nc_unused[9]; /* 予約 */
};