一汁三菜

自分が楽しいと思うこと、マラソン、旅行、その他日々の記録をしたい。

Wireless Extensionの概要

ioctl

Wireless ExtensionでWi-Fiの情報の取得・設定は、おおむねioctl(2)を使います。実際にどういうデータが取得できるかは、iwconfigコマンドで見られます。

後はlinux/wireless.hを見ながら、どういうデータをioctl(2)に渡せばいいのかを調べてみれば、ほとんどのWireless Extensionの機能は使いこなせるのではないかと思います。

$ iwconfig wlan0
wlan0     IEEE 802.11abgn  ESSID:"hogefuga"  
          Mode:Managed  Frequency:2.452 GHz  Access Point: 00:11:22:33:44:55   
          Bit Rate=54 Mb/s   Tx-Power=15 dBm   
          Retry min limit:7   RTS thr:off   Fragment thr=2352 B   
          Power Management:off
          Link Quality=100/100  Signal level:-30 dBm  Noise level=-92 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

event

Wi-Fiの状態が変わった瞬間にその変化を通知してくれるのが、このイベントです。実態は何かWi-Fiの状態に変化があった時に、OSからrtnetlink(7)を使って何が変化したのかを受け取るというようになっています。

イベントを使ってWi-Fiの状態変化の通知を受け取る様子を簡単に見る為には、そのものズバリのiweventコマンドを使うと分かりやすいと思います。

iwlib

で。生のioctlやrtnetlinkを触ってプログラムを書くのもそんなに苦ではないのですが、ひたすら構造体を埋める手続きは、似たようなコードの連続になりがちです。なので、少しだけ開発を楽にしてくれるような薄いラッパーライブラリがWireless Toolsには付属しています。それがiwlibです。Wi-Fiの情報の取得だけといった大味な使い方だけでよければ、iwlibを使うというのも一つの手です。