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]; /* 予約 */
};