[PATCH 2/2] Allow initial configuration from Ethernet

mail at adrianschmutzler.de mail at adrianschmutzler.de
So Jun 10 13:07:45 CEST 2018


Okay.

Es wäre wohl am einfachsten, dann tatsächlich den cp hoodfile hoodfilecopy in ein if gatewayavailable einzupacken, dann brauchen wir die Variable von Tim gar nicht, oder?

Ich würde nur noch überlegen, ob man gatewayavailable am anfang einmal auswertet und in eine variable schreibt oder das an mehreren stellen hat mit dem risiko, dass sich die situation während des skriptes ändert.

Grüße

Adrian

> -----Original Message-----
> From: Christian Dresel [mailto:fff at chrisi01.de]
> Sent: Sonntag, 10. Juni 2018 12:58
> To: mail at adrianschmutzler.de; franken-dev at freifunk.net
> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> 
> 
> 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/hood
> >>>>>> +++ fi
> >>>>>> +++ 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