IF(4N) — UNIX 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 3.3