+
+ 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 ${DEVICE}
+ count=0
+ while ! wpa_cli -i ${DEVICE} status | grep "wpa_state=COMPLETED"; do
+ echo "Waiting for wpa_supplicant to complete"
+ sleep 0.25
+
+ let count=count+1
+ if [ $count -gt 20 ]; then
+ echo "wpa_supplicant failure"
+ exit ${EXIT_CODE_WARNING}
+ fi
+ done
+}
+
+# Make sure interface is available
+if [ ! -d /sys/class/net/${DEVICE} ]; then
+ echo "Interface ${DEVICE} not found"
+ exit ${EXIT_CODE_WARNING}
+fi
+
+# Determining if the interface is a bridge:
+if [ "x${BRIDGE}" = "xyes" ]; then
+ check_brctl
+ 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} ${DEVICE} || exit 1
+fi
+
+if [ "x${BOOTPROTO}" = "xwifi" ]; then
+ proto_wireless
+ # At this point, the SSID script has been sourced, and its
+ # BOOTPROTO variable will contain either "static" or "dhcp",
+ # so configuration will continue below.
+fi
+
+if [ "x${BOOTPROTO}" = "xdhcp" ]; then
+ proto_dhcp
+elif [ "x${BOOTPROTO}" = "xstatic" ]; then
+ proto_static