summaryrefslogtreecommitdiff
path: root/package/wpa_supplicant
diff options
context:
space:
mode:
Diffstat (limited to 'package/wpa_supplicant')
-rw-r--r--package/wpa_supplicant/Makefile2
-rw-r--r--package/wpa_supplicant/files/wpa_supplicant.sh78
2 files changed, 80 insertions, 0 deletions
diff --git a/package/wpa_supplicant/Makefile b/package/wpa_supplicant/Makefile
index 41b9b12396..ed6e45588e 100644
--- a/package/wpa_supplicant/Makefile
+++ b/package/wpa_supplicant/Makefile
@@ -75,6 +75,8 @@ define Package/wpa-supplicant/install
$(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant \
$(PKG_BUILD_DIR)/wpa_supplicant/wpa_passphrase \
$(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/lib/wifi
+ $(INSTALL_DATA) ./files/wpa_supplicant.sh $(1)/lib/wifi/wpa_supplicant.sh
endef
define Package/wpa-cli/install
diff --git a/package/wpa_supplicant/files/wpa_supplicant.sh b/package/wpa_supplicant/files/wpa_supplicant.sh
new file mode 100644
index 0000000000..192c903540
--- /dev/null
+++ b/package/wpa_supplicant/files/wpa_supplicant.sh
@@ -0,0 +1,78 @@
+wpa_supplicant_setup_vif() {
+ local vif="$1"
+ local driver="$2"
+
+ # wpa_supplicant should use wext for mac80211 cards
+ [ "$driver" = "mac80211" ] && driver='wext'
+
+ case "$enc" in
+ PSK|psk|psk2|PSK2)
+ key_mgmt='WPA-PSK'
+ config_get_bool usepassphrase "$vif" passphrase 1
+ case "$enc" in
+ psk|PSK)
+ proto='WPA'
+ if [ "$usepassphrase" = "1" ]; then
+ passphrase="psk=\"${key}\""
+ else
+ passphrase="psk=${key}"
+ fi
+ ;;
+ psk2|PSK2)
+ proto='RSN'
+ if [ "$usepassphrase" = "1" ]; then
+ passphrase="psk=\"${key}\""
+ else
+ passphrase="psk=${key}"
+ fi
+ ;;
+ esac
+ ;;
+ WPA|wpa|WPA2|wpa2i|8021x|8021X)
+ proto='WPA2'
+ key_mgmt='WPA-EAP'
+ config_get ca_cert "$vif" ca_cert
+ case "$eap_type" in
+ tls|TLS)
+ pairwise='pairwise=CCMP'
+ group='group=CCMP'
+ config_get priv_key "$vif" priv_key
+ config_get priv_key_pwd "$vif" priv_key_pwd
+ priv_key="private_key=\"$priv_key\""
+ priv_key_pwd="private_key_passwd=\"$priv_key_pwd\""
+ ;;
+ peap|PEAP|ttls|TTLS)
+ config_get auth "$vif" auth
+ config_get identity "$vif" identity
+ config_get password "$vif" password
+ phase2="phase2=\"auth=${auth:-MSCHAPV2}\""
+ identity="identity=\"$identity\""
+ password="password=\"$password\""
+ ;;
+ esac
+ ;;
+ esac
+ config_get ifname "$vif" ifname
+ config_get bridge "$vif" bridge
+ config_get ssid "$vif" ssid
+ eap_type=$(echo $eap_type | tr 'a-z' 'A-Z')
+ cat > /var/run/wpa_supplicant-$ifname.conf <<EOF
+network={
+ scan_ssid=1
+ ssid="$ssid"
+ key_mgmt=$key_mgmt
+ proto=$proto
+ $passphrase
+ $pairwise
+ $group
+ eap=$eap_type
+ ca_cert="$ca_cert"
+ $priv_key
+ $priv_key_pwd
+ $phase2
+ $identity
+ $password
+}
+EOF
+ [ -z "$proto" ] || wpa_supplicant ${bridge:+ -b $bridge} -B -D ${driver:-wext} -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf
+}