[PATCH v2 1/5] fff-hoods: manually create wifi station interface
Fabian Bläse
fabian at blaese.de
Mi Mär 11 18:11:01 CET 2020
The mac80211 interface script in OpenWrt depends on wpa_supplicant
for the creation of station interfaces. While this is conveniant, it
isn't strictly necessary for connecting to unencrypted networks.
To be able to create station interfaces if wpa_supplicant is removed,
the station interface for obtaining the initial configuration is now
created using iw commands only.
This makes it possible to replace wpad-mini with hostapd-mini, which
does not include wpa_supplicant and therefore shrinks the uncompressed
binary by around 200KiB.
Signed-off-by: Fabian Bläse <fabian at blaese.de>
Acked-by: Christian Dresel <fff at chrisi01.de>
Reviewed-by: Robert Langhammer <rlanghammer at web.de>
---
Changes in v2:
- Remove leftover configsta uci config from configurehood
- Bump PKG_RELEASE
---
src/packages/fff/fff-hoods/Makefile | 2 +-
.../files/etc/uci-defaults/24c-fff-wXsta | 27 -----------------
.../files/usr/lib/functions/fff/hoodfile | 30 +++++++++++--------
.../fff-hoods/files/usr/sbin/configurehood | 3 +-
4 files changed, 19 insertions(+), 43 deletions(-)
delete mode 100644 src/packages/fff/fff-hoods/files/etc/uci-defaults/24c-fff-wXsta
diff --git a/src/packages/fff/fff-hoods/Makefile b/src/packages/fff/fff-hoods/Makefile
index 5eb20ca..423403c 100644
--- a/src/packages/fff/fff-hoods/Makefile
+++ b/src/packages/fff/fff-hoods/Makefile
@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=fff-hoods
-PKG_RELEASE:=7
+PKG_RELEASE:=8
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
diff --git a/src/packages/fff/fff-hoods/files/etc/uci-defaults/24c-fff-wXsta b/src/packages/fff/fff-hoods/files/etc/uci-defaults/24c-fff-wXsta
deleted file mode 100644
index e9867b9..0000000
--- a/src/packages/fff/fff-hoods/files/etc/uci-defaults/24c-fff-wXsta
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-. /lib/functions/fff/wireless
-
-# Set up wXsta
-for radio in $(wifiListRadio); do
- # wXsta: We can use $freq here, as the initial radios are not set up with auto
- freq="$(wifiGetFreq $radio)"
-
- uci batch <<-__EOF__
- set network.configsta${freq}=interface
- set network.configsta${freq}.proto='static'
-
- set wireless.w${freq}sta='wifi-iface'
- set wireless.w${freq}sta.device='${radio}'
- set wireless.w${freq}sta.network='configsta${freq}'
- set wireless.w${freq}sta.ifname='w${freq}sta'
- set wireless.w${freq}sta.mode='sta'
- set wireless.w${freq}sta.ssid='config.franken.freifunk.net'
- set wireless.w${freq}sta.disabled='1'
- __EOF__
-done
-
-uci commit network
-uci commit wireless
-
-# vim: set noexpandtab:tabstop=4
diff --git a/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile
index b148eca..d9119ac 100644
--- a/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile
+++ b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfile
@@ -15,29 +15,33 @@ getWirelessHoodfile() {
# Set channel to auto, enable wXsta, disable other interfaces
for radio in $(wifiListRadio); do
- uci set "wireless.${radio}.channel=auto"
-
freq="$(wifiGetFreq $radio)"
uci set wireless.w${freq}ap.disabled='1'
uci set wireless.w${freq}mesh.disabled='1'
uci set wireless.w${freq}configap.disabled='1'
- uci set wireless.w${freq}sta.disabled='0'
done
uci commit wireless
reload_config
- wifi
- # wait a moment to start the interface
- sleep 10;
+ # wait for wireless interfaces to vanish
+ sleep 5;
- if /bin/busybox wget -T15 -O "$file" "http://[fe80::1%w2sta]:2342/keyxchangev2data"; then
- return 0
- elif /bin/busybox wget -T15 -O "$file" "http://[fe80::1%w5sta]:2342/keyxchangev2data"; then
- return 0
- else
- return 1
- fi
+
+ for phy in $(ls /sys/class/ieee80211); do
+ iw phy $phy interface add configsta type managed
+ ip link set up configsta
+ iw dev configsta connect -w config.franken.freifunk.net 2>/dev/null
+
+ if /bin/busybox wget -T15 -O "$file" "http://[fe80::1%configsta]:2342/keyxchangev2data"; then
+ iw dev configsta del
+ return 0
+ fi
+
+ iw dev configsta del
+ done
+
+ return 1
}
getEthernetHoodfile() {
diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
index d5dc2c0..dcdba89 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -158,8 +158,7 @@ if [ -s "$hoodfiletmp" ]; then
mesh_type="$mesh_type2"
fi
- # Disable wXsta, wXconfigap
- uci set wireless.w${freq}sta.disabled='1'
+ # Disable wXconfigap
uci set wireless.w${freq}configap.disabled='1'
# Configure wXap
--
2.25.1
Mehr Informationen über die Mailingliste franken-dev