[PATCH v2] fff-hoods: Improve hoodfile gathering logic
mail at adrianschmutzler.de
mail at adrianschmutzler.de
Sa Aug 1 12:11:27 CEST 2020
Applied.
> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Freitag, 31. Juli 2020 22:59
> To: franken-dev at freifunk.net
> Subject: [PATCH v2] fff-hoods: Improve hoodfile gathering logic
>
> Instead of seperately checking for various conditions, which don't actually
> guarantee that the hoodfile can be fetched in a certain way (e.g. internet is
> available but keyxchange is down), the already built in return value of the
> hoodfile gathering functions is utilized.
>
> This change slightly changes the behaviour of nodes in certian edge cases:
> - If no hoodfile could be fetched from keyxchange, the
> next delivery method (getGatewayHoodfile) is used
> - If the gateway is unable to deliver a hoodfile, nodes
> now behave like the gateway is unreachable, instead of
> continuing to use old hoodfiles
>
> These behaviour changes should be an improvement over the previous
> behaviour:
> - VPN nodes don't disconnect and break the whole network
> if the keyxchange is unreachable, but instead try to
> fetch the hoodfile from the gateway
> - Instead of checking for batman gateway announcements,
> which are completely unrelated to hoodfile delivery using
> fe80::1, the actual status of the hoodfile download is
> utilized. This has two effects:
> - hoodfile delivery using fe80::1 works even if batmans
> gateway selection isn't used at all
> - if the batman gateway selection is active, but fe80::1
> hoodfile delivery is broken in the hood, the nodes disconnect
> from the hood and try to gather their hoodfile from nerby
> nodes. Previously they continued to use the old hoodfile.
> This should make misconfigured gateways more apparent.
>
> Signed-off-by: Fabian Bläse <fabian at blaese.de>
> ---
> Changes in v2:
> - Fix incorrect 'else if' syntax
> ---
> .../fff-hoods/files/usr/sbin/configurehood | 46 +++++++++----------
> 1 file changed, 22 insertions(+), 24 deletions(-)
>
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 3b92cbc..766066a 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -69,32 +69,30 @@ if [ -s "$hoodfilelocal" ]; then
> cp "$hoodfilelocal" "$hoodfiletmp"
> echo "Use local hood file"
> else
> - # if we have Internet, we download the Hoodfile from the
> keyxchangev2
> - if hasInternet ; then
> - getKeyserverHoodfile "$hoodfiletmp" && cp "$hoodfiletmp"
> "$hoodfilewww"
> -
> - #if no Internet, we connect to the hidden AP and download
> the file from another Node in range
> + # if internet is available, the hoodfile is downloaded from our
> keyserver
> + if getKeyserverHoodfile "$hoodfiletmp"; then
> + cp "$hoodfiletmp" "$hoodfilewww"
> +
> + # if no internet is available, but the node is already configured,
> + # a gateway with the appropriate hoodfile should be available
> + elif getGatewayHoodfile "$hoodfiletmp"; then
> + cp "$hoodfiletmp" "$hoodfilewww"
> +
> + # no internet and no gateway available. the node is either
> unconfigured,
> + # has lost connectivity or the hood is broken. Try to regain
> connectivity by
> + # fetching hoodfiles from nearby nodes
> else
> - # connect to wireless hidden ap here and download the json
> File from the nearest router
> - # Only do that, when we have no gateway in range. If the
> Uplinkrouter changed the hood, we lost the GW and do this automatically
> again, I think! Nice idea?
> - if ! isGatewayAvailable ; then
> - #now we haven't a gateway in Range, we search for a
> hidden AP to get a keyxchangev2data file!
> - #first we delete all wifi settings
> - rm -f "$hoodfileref" # delete this, so interfaces are
> recreated if reconnect with unchanged hood file takes place
> - rm -f "$hoodfilewww" # delete this, so wrong hood
> file is not broadcasted anymore
> -
> - uci -q del "system. at system[0].hood"
> - uci -q del "system. at system[0].hoodid"
> - uci commit system
> - reload_config
> -
> - sleep 30 # Wait for the config AP, which may be
> created at the same time as this script has started
> + rm -f "$hoodfileref" # delete this, so interfaces are recreated
> if reconnect with unchanged hood file takes place
> + rm -f "$hoodfilewww" # delete this, so wrong hood file is not
> +broadcasted anymore
>
> - getEthernetHoodfile "$hoodfiletmp" ||
> getWirelessHoodfile "$hoodfiletmp"
> - else
> - echo "We have a Gateway in Range, we load the
> keyxchangev2data from fe80::1"
> - getGatewayHoodfile "$hoodfiletmp" && cp
> "$hoodfiletmp" "$hoodfilewww"
> - fi
> + uci -q del "system. at system[0].hood"
> + uci -q del "system. at system[0].hoodid"
> + uci commit system
> + reload_config
> +
> + sleep 30 # Wait for the config AP, which may be created at
> the same
> +time as this script has started
> +
> + getEthernetHoodfile "$hoodfiletmp" || getWirelessHoodfile
> "$hoodfiletmp"
> fi
> fi
>
> --
> 2.28.0
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : openpgp-digital-signature.asc
Dateityp : application/pgp-signature
Dateigröße : 834 bytes
Beschreibung: nicht verfügbar
URL : <https://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20200801/18b7907d/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev