etc/rc.d/wpa_supplicant: Fix broken check for ndis(4) interfaces.
[dragonfly.git] / etc / rc.d / wpa_supplicant
1 #!/bin/sh
2 #
3 # $FreeBSD: src/etc/rc.d/wpa_supplicant,v 1.2 2005/10/19 22:26:47 jkim Exp $
4 #
5
6 # PROVIDE: wpa_supplicant
7 # REQUIRE: mountcritremote
8 # KEYWORD: nojail nostart
9
10 . /etc/rc.subr
11 . /etc/network.subr
12
13 name="wpa_supplicant"
14 rcvar=
15 command="/usr/sbin/${name}"
16 conf_file="/etc/wpa_supplicant.conf"
17
18 start_precmd="wpa_supplicant_precmd"
19 wpa_supplicant_precmd()
20 {
21         ifconfig $ifn up
22 }
23 start_postcmd="wpa_supplicant_postcmd"
24 wpa_supplicant_postcmd()
25 {
26         while ! ifconfig $ifn | grep -qw "status: associated"; do
27                 sleep 1
28         done
29 }
30
31 ifn="$2"
32 if [ -z "$ifn" ]; then
33         return 1
34 fi
35
36 is_ndis_interface()
37 {
38         case `sysctl -n net.wlan.${1#wlan}.%parent 2>/dev/null` in
39                 ndis*) true ;;
40                 *) false ;;
41         esac
42 }
43
44 if is_ndis_interface ${ifn}; then
45         driver="ndis"
46 else
47         driver="bsd"
48 fi
49
50 load_rc_config $name
51
52 pid_file="/var/run/${name}/${ifn}.pid"
53 command_args="-B -q -i $ifn -c $conf_file -D $driver -P $pid_file"
54 required_files=$conf_file
55
56 run_rc_command "$1"