[PATCH 2/2] Allow initial configuration from Ethernet

Christian Dresel fff at chrisi01.de
So Jun 10 11:52:24 CEST 2018


Hi

mir ist noch ein Problem aufgefallen das auftreten kann:

Konstellation:
Router 0 UPLINK
Router 1 per WiFiMesh an Router 0
Router 2 per Ethernet an Router 1

Ablauf:

Hoodfile wird geändert mit neue MeshParameter

Router 0 ändert Meshparameter, damit von Router 1 nicht mehr erreichbar

Router 1
bietet Hoodfile mit alten Meshparameter an

Router 2 (per Ethernet angebunden an Router 1)
(Kein Gateway da Router 0 Meshparameter geändert)
startet Script
löscht Zeile 15 Hoodfile
Zeile 81 kein Internet
Zeile 88
holt Zeile 104 von Ethernet alte Hoodfile von Router 1
bietet diese Hoodfile an
beendet Script

Router 1
startet Script
löscht Zeile 15 Hoodfile
Zeile 81 kein Internet
Zeile 88
holt Zeile 104 von Ethernet alte Hoodfile von Router 2
bietet diese Hoodfile an
beendet Script

Router 2 (per Ethernet angebunden an Router 1)
Kein Gateway
startet Script
löscht Zeile 15 Hoodfile
Zeile 81 kein Internet
Zeile 88
holt Zeile 104 von Ethernet kaputte Hoodfile von Router 1
bietet diese Hoodfile an
beendet Script

[..........]

wir hätten wieder nahzeu das selbe Problem wie in Hassfurt.

In meinen Augen wäre die einfachste Lösung um die Zeile:

cp "$hoodfile" "$hoodfilecopy"
(müsste mit allen Patches dann Zeile 218 sein)

ein if isGatewayAvailable ; then

fi

herumlegen.

Ich glaube das wurde gestern auch schon mal genannt, da aber gestern
nicht alle anwesend waren die aktuell mitdiskutieren und ich heute
morgen auch drüber gestolpert bin, will ich das hier nochmal erwähnen.

mfg

Christian



On 10.06.2018 09:07, Christian Dresel wrote:
> 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/452094ba/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev