ネットワーク自動接続
ifplugd-0.28-r7,wpa_supplicant-0.5.4
ifplugdをbaselayoutは認識してくれるので,ifplugdインストール後は/etc/init.d/net.eth0 startはバックグラウンドデーモンを起動してくれる.
wirelessについては,ifplugd_eth1="--api-mode=wlan"としないとデーモンを起動してくれなかった.
無線についてはwpa_supplicantを使うことにした.(wpa_supplicantもbaselayoutに認識される)
ここで,eth0(有線)とeth1(無線)の優先順位をつけたいと思い,以下の設定を用いた.
eth0が使える場合は,eth1は使用しない.eth0が使用できなく,eth1が使用できる場合のみeth1を使用する.
/etc/conf.d/net modules_eth0=( "ifplugd" ) config_eth0=( "dhcp" ) modules_eth1=( "!ifplugd" "wpa_supplicant") config_eth1=( "dhcp" ) wpa_supplicant_eth1="-Dwext" preup() { # eth0が起動している場合はeth1は起動しない if [[ ${IFACE} == "eth1" && -f "${svcdir}/started/net.eth0" ]] ; then ewarn "eth0 is working." return 1 fi # eth1が起動しておりeth0が起動する場合は,eth1を停止させる if [[ ${IFACE} == "eth0" && -f "${svcdir}/started/net.eth1" ]] ; then /sbin/wpa_cli.action eth1 DISCONNECTED fi return 0 } postdown() { # eth1がアソシエーション可能でeth0が停止する場合,eth1を起動させる if [[ ${IFACE} == "eth0" && -f "/var/lib/wpa_supplicant/connected" ]] ; then /sbin/wpa_cli.action eth1 CONNECTED & fi return 0 }
eth1がアソシエーション可能かどうかをファイルの存在で判断
/etc/wpa_supplicant/wpa_cli.sh
... FILE="/var/lib/wpa_supplicant/connected" case ${ACTION} in CONNECTED) EXEC="${EXEC} start" touch $FILE ;; DISCONNECTED) EXEC="${EXEC} stop" rm $FILE ;; *) logger -t wpa_cli "Unknown action ${ACTION}" exit 1 ;; esac ...