[package] hostapd,wpa_supplicant: create control interfaces for hostapd_cli and wpa_cli
[openwrt/svn-archive/archive.git] / package / wpa_supplicant / files / wpa_supplicant.sh
1 wpa_supplicant_setup_vif() {
2 local vif="$1"
3 local driver="$2"
4
5 # wpa_supplicant should use wext for mac80211 cards
6 [ "$driver" = "mac80211" ] && driver='wext'
7
8 case "$enc" in
9 PSK|psk|psk2|PSK2)
10 key_mgmt='WPA-PSK'
11 config_get_bool usepassphrase "$vif" passphrase 1
12 case "$enc" in
13 psk|PSK)
14 proto='WPA'
15 if [ "$usepassphrase" = "1" ]; then
16 passphrase="psk=\"${key}\""
17 else
18 passphrase="psk=${key}"
19 fi
20 ;;
21 psk2|PSK2)
22 proto='RSN'
23 if [ "$usepassphrase" = "1" ]; then
24 passphrase="psk=\"${key}\""
25 else
26 passphrase="psk=${key}"
27 fi
28 ;;
29 esac
30 ;;
31 WPA|wpa|WPA2|wpa2|8021x|8021X)
32 proto='WPA2'
33 key_mgmt='WPA-EAP'
34 config_get ca_cert "$vif" ca_cert
35 ca_cert="ca_cert=\"$ca_cert\""
36 case "$eap_type" in
37 tls|TLS)
38 pairwise='pairwise=CCMP'
39 group='group=CCMP'
40 config_get priv_key "$vif" priv_key
41 config_get priv_key_pwd "$vif" priv_key_pwd
42 priv_key="private_key=\"$priv_key\""
43 priv_key_pwd="private_key_passwd=\"$priv_key_pwd\""
44 ;;
45 peap|PEAP|ttls|TTLS)
46 config_get auth "$vif" auth
47 config_get identity "$vif" identity
48 config_get password "$vif" password
49 phase2="phase2=\"auth=${auth:-MSCHAPV2}\""
50 identity="identity=\"$identity\""
51 password="password=\"$password\""
52 ;;
53 esac
54 eap_type="eap_type=$(echo $eap_type | tr 'a-z' 'A-Z')"
55 ;;
56 esac
57 config_get ifname "$vif" ifname
58 config_get bridge "$vif" bridge
59 config_get ssid "$vif" ssid
60 cat > /var/run/wpa_supplicant-$ifname.conf <<EOF
61 ctrl_interface=/var/run/wpa_supplicant-$ifname
62 network={
63 scan_ssid=1
64 ssid="$ssid"
65 key_mgmt=$key_mgmt
66 proto=$proto
67 $passphrase
68 $pairwise
69 $group
70 $eap_type
71 $ca_cert
72 $priv_key
73 $priv_key_pwd
74 $phase2
75 $identity
76 $password
77 }
78 EOF
79 [ -z "$proto" ] || wpa_supplicant ${bridge:+ -b $bridge} -B -P "/var/run/wifi-${ifname}.pid" -D ${driver:-wext} -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf
80 }