[PATCH 2/2] Allow initial configuration from Ethernet

Christian Dresel fff at chrisi01.de
So Jun 10 09:07:41 CEST 2018


hi

Ok ich glaub ich habs jetzt verstanden (man muss da echt 3x im Dreieck
denken...):

Der Fehler von der Alpha war, das Ethernet auch vor Gateway bevorzugt wurde.

https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
Ab Zeile 143 (speziell 165 beschreibt das Problem dann wunderbar) wo er
ja nur rein geht, wenn eh schon ein Gateway da ist. Deshalb konnten alte
Hoodfiles sich im Kreis drehen da Ethernet das Gateway "überschrieben" hat.

Dein Patch holt die Hoodfile nur dann per Ethernet, wenn kein Gateway
mehr da ist. Selbst wenn diese veraltet sein sollte, wird im nächsten
durchlauf, wo das Gateway dann erreichbar ist, die Hoodfile vom Gateway
geholt und dann auch richtig aktualisiert.

Somit sieht die Logik für mich schlüssig aus

Reviewed-by: Christian Dresel <fff at chrisi01.de>

Expliziet anmerken möchte ich noch, das ich das ganze nicht getestet
habe sondern nur im Kopf durchgespielt. Weitere Reviewes (auf alles was
ich heute reviewed habe) wären mir daher sehr recht.

mfg

Christian

On 09.06.2018 16:51, Fabian Bläse wrote:
> Signed-off-by: Fabian Bläse <fabian at blaese.de>
> ---
>  .../fff-hoods/files/usr/lib/functions/fff/hoodfile  | 21 +++++++++++++++++++++
>  .../fff/fff-hoods/files/usr/sbin/configurehood      |  2 +-
>  2 files changed, 22 insertions(+), 1 deletion(-)
> 
> 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 62487f9..6c50737 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
> @@ -56,6 +56,27 @@ getWirelessHoodfile() {
>      fi
>  }
>  
> +getEthernetHoodfile() {
> +    if [ $# != 1 ]
> +       then
> +               echo "Usage: getEthernetHoodfile <download-location>"
> +               return 1
> +       fi
> +    file=$1
> +
> +    echo "Trying to get hoodfile from ethernet neighbor..."
> +
> +    ethmesh_dev=$(uci -q get network.ethmesh.ifname)
> +    neighbor_addrs=$(ping6 -c2 ff02::1%${ethmesh_dev} | grep seq | cut -d " " -f4 | sed s/.$//g | sort | uniq)
> +
> +    for addr in $neighbor_addrs; do
> +        wget -T2 -t1 -qO "$file" "http://[${addr}%${ethmesh_dev}]:2342/keyxchangev2data" && return 0
> +    done
> +
> +    # got no hoodfile
> +    return 1
> +}
> +
>  getGatewayHoodfile() {
>      if [ $# != 1 ]
>  	then
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index aee20e5..282e21b 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -101,7 +101,7 @@ else
>  		
>  			sleep 30 # Wait for the config AP, which may be created at the same time as this script has started
>  
> -			getWirelessHoodfile "$hoodfile"
> +			getEthernetHoodfile "$hoodfile" || getWirelessHoodfile "$hoodfile"
>  
>  			#UPLINK: Set up uplink data on first contact:
>  			if [ -s /tmp/keyxchangev2data ]; then
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20180610/42242931/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev