ネットワーク自動接続

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
...