[PATCH v2] configurehood: Provide options to disable AP and Mesh for WiFi
Fabian Bläse
fabian at blaese.de
So Jun 24 11:38:24 CEST 2018
Moin,
ich glaube wir sollten das anders angehen. Mein Vorschlag:
Das permanente Ändern der Wifi Konfiguration sollte weg. Dazu:
- Nur die fürs Hoodfile interessanten Parameter (SSID, Kanal, ..) bei configurehood ändern.
- w2sta generell nur im RAM machen (uci set ohne commit, danach revert)
Dann kann man an die einzelnen Interfaces entweder disabled-Options dran setzen oder das ganze Interface löschen.
(Es sollte natürlich im configurehood beim setzen der Parameter entsprechend geprüft werden, ob das Interface existiert)
Gruß
Fabian
> On 9. Mar 2018, at 23:43, Adrian Schmutzler <freifunk at adrianschmutzler.de> wrote:
>
> Each WiFi interface can be disabled individually.
>
> To apply the settings after having changed uci, one has to
> uci commit fff
> rm /www/hood/keyxchangev2data
> configurehood
>
> Fixes #97.
>
> Fixes misconfiguration in case of mixed IBSS/802.11s.
>
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
>
> ---
>
> Changes in v2:
> - Use separate settings for 2.4 and 5 GHz (an no combined setting)
> - Add default values to fff-config
> - Add comments to fff-config setup script
> - Fix double equal sign in affected area of configurehood
> - Rewrite section to reduce ifs and logical operators
> ---
> .../files/etc/uci-defaults/98-configure-fff | 9 +++++++
> .../fff/fff-hoods/files/usr/sbin/configurehood | 31 ++++++++++++++--------
> 2 files changed, 29 insertions(+), 11 deletions(-)
>
> diff --git a/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> index aa6ac42..8433b7f 100644
> --- a/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> +++ b/src/packages/fff/fff-config/files/etc/uci-defaults/98-configure-fff
> @@ -4,11 +4,19 @@
>
> touch /etc/config/fff
>
> +# default config values
> if ! uci -q get fff.system > /dev/null ; then
> uci -q set fff.system=fff
> uci -q set "fff.system.hostname=FFF"
> fi
>
> +uci -q set fff.wifi=fff
> +uci -q get fff.wifi.disablew2ap > /dev/null || uci -q set "fff.wifi.disablew2ap=0"
> +uci -q get fff.wifi.disablew5ap > /dev/null || uci -q set "fff.wifi.disablew5ap=0"
> +uci -q get fff.wifi.disablew2mesh > /dev/null || uci -q set "fff.wifi.disablew2mesh=0"
> +uci -q get fff.wifi.disablew5mesh > /dev/null || uci -q set "fff.wifi.disablew5mesh=0"
> +
> +# apply config to other uci entries
> FFF_hostname=$(uci -q get "fff.system.hostname")
> test -n "${FFF_hostname}" && uci -q set "system. at system[0].hostname=${FFF_hostname}"
> test -n "${FFF_hostname}" && echo "${FFF_hostname}" > /proc/sys/kernel/hostname
> @@ -24,6 +32,7 @@ uci -q set "simple-tc.example.limit_egress=${traffic_out}"
>
> uci -q commit
>
> +# run configuration scripts
> poe_passthrough=$(uci -q get "fff.poe_passthrough.active")
> if [ "$poe_passthrough" = "1" ] && [ -s /usr/lib/fff-support/activate_poe_passthrough.sh ] ; then
> /usr/lib/fff-support/activate_poe_passthrough.sh
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index fd4126e..ae92f96 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -260,26 +260,35 @@ if [ -s "$hoodfile" ]; then
> fi
>
> for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
> - radio="$(wifiAddPhyCond "$phy" "2" "$chan2ghz")"
> - radio5="$(wifiAddPhyCond "$phy" "5" "$chan5ghz")"
> - [ -n "$radio5" ] && radio="$radio5"
> + radio="$(wifiAddPhyCond "$phy" "5" "$chan5ghz")"
> +
> + if [ -n "$radio" ] ; then
> + # 5 GHz
> + mesh_type="$mesh_type5"
> + disableap="fff.wifi.disablew5ap"
> + disablemesh="fff.wifi.disablew5mesh"
> + else
> + # 2.4 GHz
> + radio="$(wifiAddPhyCond "$phy" "2" "$chan2ghz")"
> + mesh_type="$mesh_type2"
> + disableap="fff.wifi.disablew2ap"
> + disablemesh="fff.wifi.disablew2mesh"
> + fi
>
> - if ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
> + if [ "$(uci -q get "$disableap")" != "1" ] && ! wifiAddAP "$radio" "$essid" "mesh" "ap" "0"; then
> echo "Can't add AP interface on $radio."
> exit 1
> fi
>
> - # add 802.11s mesh if type == "802.11s"
> - if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
> - if ! wifiAddMesh "$radio" "$mesh_id"; then
> + if [ "$(uci -q get "$disablemesh")" != "1" ] ; then
> + # add 802.11s mesh if type = "802.11s"
> + if [ "$mesh_type" = "802.11s" ] && ! wifiAddMesh "$radio" "$mesh_id"; then
> echo "Can't add Mesh interface on $radio."
> exit 1
> fi
> - fi
>
> - # add IBSS mesh if type == "ibss"
> - if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
> - if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
> + # add IBSS mesh if type = "ibss"
> + if [ "$mesh_type" = "ibss" ] && ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
> echo "Can't add AdHocMesh interface on $radio."
> exit 1
> fi
> --
> 2.7.4
>
> --
> franken-dev mailing list
> franken-dev at freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 833 bytes
Beschreibung: Message signed with OpenPGP
URL : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20180624/8738f891/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev