Finalisation Wifi selon tests concluants du HP-Mini
[hvlinux.git] / stage2 / bootscripts / ifup
index 7f7d15f..b363046 100755 (executable)
@@ -23,17 +23,54 @@ check_brctl()
     fi
 }
 
+# Make sure interface is available
+if ! ip link show ${DEVICE} > /dev/null 2>&1; then
+    echo "Interface ${1} not found"
+    exit ${EXIT_CODE_WARNING}
+fi
+
 # Determining if the interface is a bridge:
-if [ "x${BRIDGE}" == "xyes" ]; then
+if [ "x${BRIDGE}" = "xyes" ]; then
     check_brctl
-    cmd_run_log ${BRCTL} addbr ${1} &&
-    cmd_run_log ${BRCTL} stp ${1} off || exit 1
+    cmd_run_log ${BRCTL} addbr ${DEVICE} &&
+    cmd_run_log ${BRCTL} stp ${DEVICE} off || exit 1
 fi
 
 # Determining if the interface is part of a bridge:
 if [ -n "${BRIDGE_TO}" ]; then
     check_brctl
-    cmd_run_log ${BRCTL} addif ${BRIDGE_TO} ${1} || exit 1
+    cmd_run_log ${BRCTL} addif ${BRIDGE_TO} ${DEVICE} || exit 1
+fi
+
+if [ "x${BOOTPROTO}" = "xwifi" ]; then
+    # Bring interface up
+    link_status=$(ip link show ${DEVICE})
+    if [ -n "${link_status}" ]; then
+        if ! echo "${link_status}" | grep -q UP; then
+            cmd_run_log ip link set ${DEVICE} up
+        fi
+    fi
+
+    if [ -f /var/run/wpa_supplicant/${DEVICE} ]; then
+        echo "Stopping previous wpa_supplicant"
+        killall wpa_supplicant
+        rm /var/run/wpa_supplicant/${DEVICE}
+    fi
+
+    wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlan0
+    count=0
+    while ! wpa_cli -i wlan0 status | grep "wpa_state=COMPLETED"; do
+        echo "Waiting for wpa_supplicant to complete"
+        sleep 1
+
+        let count=count+1
+        if [ $count -gt 10 ]; then
+            echo "wpa_supplicant failure"
+            exit ${EXIT_CODE_WARNING}
+        fi
+    done
+
+    BOOTPROTO=dhcp
 fi
 
 if [ "x${BOOTPROTO}" = "xdhcp" ]; then
@@ -57,6 +94,15 @@ elif [ x${BOOTPROTO} = "xstatic" ]; then
     # Static configuration
     cmd_run_log ip addr add ${IPADDR}/${PREFIX_LENGTH} dev ${DEVICE} brd + ${IFSCOPE} &&
     cmd_run_log ip link set ${DEVICE} up
+
+    if [ -n "${GATEWAY}" ]; then
+       if ip route | grep -q default; then
+           msg_log "Gateway already setup; skipping."
+       else
+           cmd_run_log_box "Adding default route to gateway ${GATEWAY}" \
+                ip route add default via ${GATEWAY} dev ${DEVICE}
+       fi
+    fi
 elif [ x${BOOTPROTO} = "xpppoe" ]; then
     # PPPoE configuration
     cmd_run_log pppoe-start