[PATCH 2/2] Allow initial configuration from Ethernet

Christian Dresel fff at chrisi01.de
So Jun 10 12:27:53 CEST 2018



On 10.06.2018 12:24, Tim Niemeyer wrote:
> Am Sonntag, den 10.06.2018, 11:52 +0200 schrieb Christian Dresel:
>> 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
> 
> Das hast du mir gerade erklärt, würde er nicht tun, weil er ja in Zeile
> '94 (o.ä.) sein Hoodfile löscht.

Les meinen Text genau der Reihe nach, Router 1 hat zu diesen Zeitpunkt
configurehood noch nicht ausgeführt und somit liegt die File auch noch
da (geh mal davon aus das NTP kaputt ist, ein neu geflashter Router ohne
richtiger Uhrzeit im Netz hängt oder oder.. auf ein sleep 30 sich zu
verlassen halte ich zumindest für leicht gefährlich)


> 
> Tim
> 
>>
>> Router 2 (per Ethernet angebunden an Router 1)
>> (Kein Gateway da Router 0 Meshparameter geändert)
>> startet Script
>> löscht Zeile 15 Hoodfile

tatsächlich ist hier jedes mal Zeile 94 gemeint und nicht 15 auch weiter
unten dann, mein Fehler

mfg

Christian

>> 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/package
>>> s/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/144a6979/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev