IF(4N) — NEWS-OS Programmer’s Manual
名称
if − ネットワークインターフェース
解説
システム中の各ネットワークインターフェースは 送受信する通信経路に相当します。 ネットワークインターフェースは、通常、 ハードウェアデバイスに対応しています。 ただし、ループバックインターフェース lo(4) のようなインターフェースは例外で、対応していません。 ブート時に、ハードウェアがサポートしている各インターフェースは、 オートコンフィグレーション処理中にシステムに自分の存在を知らせます。 インターフェースが自分のアドレスを得ると、 そのインターフェースを経由してメッセージが送られるように ルーティングテーブルエントリをインストールします。 ほとんどのインターフェースには、 そのインターフェースを通して通信を行う前に、 SIOCSIFADDR ioctl で指定されたアドレスの一部が必要です。 ネットワークリンクレイヤアドレスのマッピングが固定された インターフェースでは、ネットワーク番号だけが ioctl から取り出されます。 その他の部分は、ハードウェアの仕様に従ってその番号が取り出されます。 ネットワークリンクレイヤアドレスのマッピングが 動的に設定されている (たとえば、 arp(4P) を使用する 10Mb/s イーサネット)インターフェースでは、 ioctl に指定された全部のアドレスが使用されています。 次の ioctl コールは、ネットワークインターフェースを操作するために使用できます。 もし、その他を指定しないときは、パラメータとして ifreq 構造体が用いられます。この構造体の形式は次のとおりです。
structifreq {
charifr_name[16];/∗ インターフェース名 (たとえば en0) ∗/
union {
structsockaddr ifru_addr;
structsockaddr ifru_dstaddr;
shortifru_flags;
} ifr_ifru;
#define ifr_addrifr_ifru.ifru_addr/∗ アドレス ∗/
#define ifr_dstaddrifr_ifru.ifru_dstaddr/∗ 2 点間リンクの相手局 ∗/
#define ifr_flagsifr_ifru.ifru_flags/∗ フラグ ∗/
};
SIOCSIFADDR
インターフェースアドレスを設定します。アドレスを設定した後に、 インターフェースのための“初期化”ルーチンがコールされます。
SIOCGIFADDR
インターフェースアドレスを得ます。
SIOCSIFDSTADDR
インターフェースの 2 点間のアドレスを設定します。
SIOCGIFDSTADDR
インターフェースの 2 点間のアドレスを得ます。
SIOCSIFFLAGS
インターフェースフラグフィールドを設定します。 インターフェースがダウンした場合に、 そのインターフェースを通してパケットを送受信しているプロセスに通知されます。
SIOCGIFFLAGS
インターフェースフラグを得ます。
SIOCGIFCONF
インターフェース構成のリストを得ます。リターンパラメータとして ifconf 構造体 (次参照) を返します。 ifc_len フィールドには、 ifc_buf で指し示されているバッファのサイズを始めに設定します。 リターン時には、構成リストの長さ (バイト単位) が入ります。
/∗
∗ SIOCGIFCONFで使用する構造体
∗ システムのインターフェース構成の検索に使用する
∗ (全ネットワークのアクセス可否を知る必要があるプログラムに有用)
∗/
structifconf {
intifc_len;/∗ 関連バッファのサイズ ∗/
union {
caddr_t ifcu_buf;
struct ifreq ∗ifcu_req;
} ifc_ifcu;
#define ifc_buf ifc_ifcu.ifcu_buf/∗ バッファアドレス ∗/
#define ifc_req ifc_ifcu.ifcu_req/∗ 返される構造体の配列 ∗/
};
関連事項
NEWS-OSRelease 4.2.1R