[PATCH 2/2] Allow initial configuration from Ethernet

mail at adrianschmutzler.de mail at adrianschmutzler.de
So Jun 10 12:55:53 CEST 2018


Hallo Christian,

normal wird zuerst cp hoodfile hoodfilecopy gemacht und danach (im nächsten Durchlauf der configurehood) der w2config aktiviert.

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
> >>>>
> >>>
> >
> >




Mehr Informationen über die Mailingliste franken-dev