From 5c1d3b1f35226b553cd9f622339151496704720d Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Wed, 7 Feb 2018 15:28:33 +0100 Subject: [PATCH] configurehood: Improve conditions for configap setup This addresses a bunch of issues: - Previously, only the presence of w2configap was checked. With only 5 GHz, this would have caused a recreation every 5 min. (Note that this is only valid for a 5 GHz only device, as we always create all interfaces for disabled radios) - The two outer if-statements are merged - We now check for presence of wXmesh to enable wXconfigap. Although this is no necessity (as the hood file contains the whole config) this assumes that a disabled wXmesh means no intent of the owner to connect to other devices on this radio. - With the dependency of wXconfigap from wXmesh, this patch now enables the deactivation of hood file transmitting by disabling meshing in the hood file Signed-off-by: Adrian Schmutzler Reviewed-by: Christian Dresel Reviewed-by: Tim Niemeyer --- .../fff-hoods/files/usr/sbin/configurehood | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood index 95a1bf4b..cf79b424 100755 --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood @@ -38,27 +38,30 @@ hasInternet() { # Hidden AP check -if [ -s "$hoodfilecopy" ] && ! uci -q get wireless.w2configap > /dev/null ; then - if isGatewayAvailable ; then - - for radio in $(uci show wireless | sed -n 's,.*\.\([a-z0-9]*\)=wifi-device,\1,p'); do - channel=$(uci get "wireless.${radio}.channel") - iface="configap2" - if [ "$channel" -gt "14" ]; then - iface="configap5" - fi - uci set network.${iface}=interface - uci set network.${iface}.proto='static' - uci set network.${iface}.ip6addr='fe80::1/64' - if ! wifiAddAP "$radio" "config.franken.freifunk.net" "$iface" "configap" "1"; then - echo "Can't add Config interface on $radio." - exit 1 - fi - done +if [ -s "$hoodfilecopy" ] && isGatewayAvailable ; then + for radio in $(uci show wireless | sed -n 's,.*\.\([a-z0-9]*\)=wifi-device,\1,p'); do + freq="2" + if [ "$(uci get "wireless.${radio}.channel")" -gt "14" ]; then + freq="5" + fi + # Break: wXconfig is up + uci -q get "wireless.w${freq}configap" > /dev/null && continue + # Break: No mesh interface + (uci -q get "wireless.w${freq}mesh" > /dev/null || uci -q get "wireless.w${freq}ibss" > /dev/null) || continue + + # Create configap + iface="configap$freq" + uci set network.${iface}=interface + uci set network.${iface}.proto='static' + uci set network.${iface}.ip6addr='fe80::1/64' uci commit network + if ! wifiAddAP "$radio" "config.franken.freifunk.net" "$iface" "configap" "1"; then + echo "Can't add Config interface on $radio." + exit 1 + fi + done - wifi - fi + wifi fi lat=$(uci -q get fff.system.latitude)