[PATCH 2/2] Allow initial configuration from Ethernet

Christian Dresel fff at chrisi01.de
So Jun 10 12:57:36 CEST 2018



On 10.06.2018 12:55, mail at adrianschmutzler.de wrote:
> Hallo Christian,
> 
> normal wird zuerst cp hoodfile hoodfilecopy gemacht und danach (im nächsten Durchlauf der configurehood) der w2config aktiviert.

es geht um einme Ethernetverbindung, die Router 1 und Router 2 sind in
meinen Beispiel per Kabel verbunden und hängen nur per WLAN an Router 0
(Hassfurt Situation)

mfg

Christian

> 
> Bei letzterem IST ein vorhandenes Gateway eine Bedingung.
> 
> Ein Problem gibt es also nur, wenn die Gateway-Verbindung verloren geht. Dann wird auch das Hoodfilecopy wieder gelöscht.
> 
> Sollte das das Problem nicht lösen?
> 
> Grüße
> 
> Adrian
> 
>> -----Original Message-----
>> From: Christian Dresel [mailto:fff at chrisi01.de]
>> Sent: Sonntag, 10. Juni 2018 12:42
>> To: mail at adrianschmutzler.de; franken-dev at freifunk.net
>> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
>>
>> hi
>>
>> On 10.06.2018 12:38, mail at adrianschmutzler.de wrote:
>>> Deshalb hatte ich den sleep 30 da mal reingeworfen.
>>>
>>> Wenn kein Gateway verfügbar ist, wird auch auch die hoodfilecopy
>> gelöscht und dann passiert 30 sec. nichts.
>>>
>>> Danach wird erst versucht, über das Netzwerk ein Hoodfile zu bekommen
>> und dann haben alle anderen ohne Gateway ihres bereits gelöscht.
>>>
>>> Ist zwar eine unerotische Lösung mit sleep, sollte aber bei 30 Sekunden
>> zumindest funktionieren, oder?
>>
>> theoretisch ja...
>>
>> Wenn aber z.b. ein Router in der Kette neu gestartet wird erreicht er keinen
>> NTP Server, hat eine falsche Uhrzeit und läuft dann zeitlich "dran vorbei" an
>> deine 30sek. Sich auf eine unsichere Uhrzeit zu verlassen halte ich zumindest
>> für etwas gefährlich.
>>
>> Wie ich bereits angemerkt habe, wäre die Lösung ganz einfach:
>> Das Hoodfile darf nur ins www-root kopiert werden wenn auch ein Gateway
>> da ist. Wenn es dann veraltet ist, ist es kein Problem weil im nächsten
>> durchlauf wird es ganz sicher vom Gateway geholt wo immer das aktuelle
>> legen muss. Es muss nur sichergestellt werden, das eben dieses Gateway
>> auch erreichbar ist und nicht ein Hoodfile im Kreis wandert das KEIN Gateway
>> erreichen kann.
>>
>> Daher ein if isGatewayAvailable ; then um das cp "$hoodfile"
>> "$hoodfilecopy" und schon sollte es sich lösen (glaub ich).
>>
>> mfg
>>
>> Christian
>>
>>>
>>> Grüße
>>>
>>> Adrian
>>>
>>>> -----Original Message-----
>>>> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On
>> Behalf
>>>> Of Christian Dresel
>>>> Sent: Sonntag, 10. Juni 2018 11:52
>>>> To: Fabian Bläse <fabian at blaese.de>; franken-dev at freifunk.net
>>>> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
>>>>
>>>> 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/
>>>> f
>>>>> ff/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/hoodfi
>>>>>> +++ le
>>>>>> @@ -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/1658d817/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev