From patchwork Sun Mar 15 14:48:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [v3,1/5] fff-hoods: manually create wifi station interface From: Fabian Blaese X-Patchwork-Id: 1299 Message-Id: <20200315144820.141706-2-fabian@blaese.de> To: franken-dev@freifunk.net Cc: Adrian Schmutzler Date: Sun, 15 Mar 2020 15:48:16 +0100 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 Acked-by: Christian Dresel Reviewed-by: Robert Langhammer Reviewed-by: Adrian Schmutzler Tested-by: Adrian Schmutzler --- Changes in v2: - Remove leftover configsta uci config from configurehood - Bump PKG_RELEASE Changes in v3: - Wait 8 seconds instead of 5 for wifi interface deconfiguration. --- 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..7d1898f 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 8; - 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