« August 2007 | Main | November 2007 »

September 09, 2007

Linux: ifconfigコマンドの実装

何度となく実装しているはずだがいつもやりかたが思い出せなくなって時間を無駄にしている気がするので、ここにメモ。

ifconfigコマンドで出てくるようなネットワークインターフェースの情報を直接取得したいときにはどうするか?(Linux限定)

まずはインターフェースのアドレスなどの情報を取得する方法についてはnetdevice(7)にある。基本的にはソケット(種類は何でもいいらしい)を作ってそのソケットに対してioctlすることになる。

次にインターフェースの送受信したバイト数やパケット数等の情報は/proc/net/devから読んでいるようだ。システムが現在認識しているインターフェースの一覧もここから得ることができる。

余談であるが、netdeviceのマニュアルを読むと、デバイスのマルチキャストMACアドレスを設定したり削除したりする方法が示唆されている(SIOCADDMULTI, SIOCDELMULTI )。マルチキャストアドレスの現在の設定については/proc/net/dev_mcastで読むことができる。マルチキャストアドレスを自由に設定するツールは少なくとも標準的にはないような気がするので、知っておくと便利かもしれない。(もしあればコメント欄にツッコミをよろしく)

| | Comments (0) | TrackBack (0)

« August 2007 | Main | November 2007 »