summaryrefslogtreecommitdiff
path: root/package
diff options
context:
space:
mode:
authormbm <mbm@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-07-04 16:49:08 +0000
committermbm <mbm@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-07-04 16:49:08 +0000
commit3af73594f6f2a676366f83ed33f9e42f680ffeb4 (patch)
tree6ad37e72f04ff3f5e187126ee116122282f0cf08 /package
parent963882cd16e61a5dcc20f24053b65f4de882920d (diff)
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
Diffstat (limited to 'package')
-rw-r--r--package/broadcom-wl/files/lib/wifi/broadcom.sh10
-rw-r--r--package/broadcom-wl/src/wlc/wlc.c29
2 files changed, 38 insertions, 1 deletions
diff --git a/package/broadcom-wl/files/lib/wifi/broadcom.sh b/package/broadcom-wl/files/lib/wifi/broadcom.sh
index 4f11a51591..c6444d6725 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 382e83a7b7..f5db9a7638 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",
@@ -865,6 +888,12 @@ static const struct wlc_call wlc_calls[] = {
.desc = "Built-in WPA supplicant"
},
{
+ .name = "passphrase",
+ .param = STRING,
+ .handler = wlc_pmk,
+ .desc = "Passphrase for built-in WPA supplicant",
+ },
+ {
.name = "maxassoc",
.param = INT,
.handler = wlc_iovar,