From 3af73594f6f2a676366f83ed33f9e42f680ffeb4 Mon Sep 17 00:00:00 2001 From: mbm Date: Wed, 4 Jul 2007 16:49:08 +0000 Subject: [PATCH] patch wlc and scripts to control wl's builtin wpa supplicant git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7875 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../broadcom-wl/files/lib/wifi/broadcom.sh | 10 ++++++- package/broadcom-wl/src/wlc/wlc.c | 29 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh index 4f11a5159..c6444d672 100644 --- a/package/broadcom-wl/files/lib/wifi/broadcom.sh +++ b/package/broadcom-wl/files/lib/wifi/broadcom.sh @@ -201,7 +201,15 @@ enable_broadcom() { [ -z "$nasopts" ] || { eval "${vif}_ssid=\"\$ssid\"" mode="-A" - [ "$vif" = "$sta_if" ] && mode="-S" + [ "$ap" = "0" ] && { + mode="-S" + [ -z "$bridge" ] || { + append vif_pre_up "supplicant 1" "$N" + append vif_pre_up "passphrase $key" "$N" + + nas="" + } + } [ -z "$nas" ] || nas_cmd="${nas_cmd:+$nas_cmd$N}$nas -P /var/run/nas.$ifname.pid -H 34954 ${bridge:+ -l $bridge} -i $ifname $mode -m $auth -w $wsec -s \"\$${vif}_ssid\" -g 3600 $nasopts &" } _c=$(($_c + 1)) diff --git a/package/broadcom-wl/src/wlc/wlc.c b/package/broadcom-wl/src/wlc/wlc.c index 382e83a7b..f5db9a763 100644 --- a/package/broadcom-wl/src/wlc/wlc.c +++ b/package/broadcom-wl/src/wlc/wlc.c @@ -679,6 +679,29 @@ static int wlc_wdsmac(wlc_param param, void *data, void *value) return ret; } +static int wlc_pmk(wlc_param param, void *data, void *value) +{ + int ret = -1; + char *str = (char *) value; + wsec_pmk_t pmk; + + /* driver doesn't support GET */ + + if ((param & PARAM_MODE) == SET) { + strncpy(pmk.key, value, WSEC_MAX_PSK_LEN); + pmk.key_len = strlen(value); + + if (pmk.key_len > WSEC_MAX_PSK_LEN) + pmk.key_len = WSEC_MAX_PSK_LEN; + + pmk.flags = WSEC_PASSPHRASE; + + ret = wl_ioctl(interface, WLC_SET_WSEC_PMK, &pmk, sizeof(pmk)); + } + + return ret; +} + static const struct wlc_call wlc_calls[] = { { .name = "version", @@ -864,6 +887,12 @@ static const struct wlc_call wlc_calls[] = { .data.str = "sup_wpa", .desc = "Built-in WPA supplicant" }, + { + .name = "passphrase", + .param = STRING, + .handler = wlc_pmk, + .desc = "Passphrase for built-in WPA supplicant", + }, { .name = "maxassoc", .param = INT, -- 2.35.1