[PATCH 2/2] Allow initial configuration from Ethernet

Tim Niemeyer tim at tn-x.org
So Jun 10 12:41:58 CEST 2018


Moin

Am Sonntag, den 10.06.2018, 12:27 +0200 schrieb Christian Dresel:
> 
> 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)
Ok, hatte nicht verstanden, dass du auf ein ganz bestimmtes zeitliches
Verhalten hin willst.

> 
> > 
> > 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
Die Zeilennummern sind eh doof, weil ich hab vermutlich grad ein
anderes Script vor Augen als du. :(

> 
> > > 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 ist dann noch nicht korrekt, denn wenn sich das Hoodfile
ändert, aber das Meshing noch geht (z.B. UpdateURL o. ESSID ändert
sich), dann würde sich zumindest für eine Weile das veraltete File
übertragen lassen. 

Oder wenn jemand ein festes Hoodfile manuell eingetragen hast, würde
sich dieses dann ggfs auch verbreiten, wenn es zum Meshen reicht.

Vom Gefühl her müssen wir uns an dem Hoodfile merken, dass es von einem
Gateway kommt und somit "authoritativ" ist. Und nur wenn es das ist,
darf es anderen angeboten werden.

Man müsste quasi in Zeile ~15 eine weitere Datei löschen:
rm -f "$hoodfile.isFromGW"

An der Stelle, wo der Download vom Gateway erfolgreich war braucht es
ein touch "$hoodfile.isFromGW"

und beim cp "$hoodfile" "$hoodfilecopy" könnte dann ein "if -f
"$hoodfile.isFromGW"" die Sache abdichten.

Tim

> > > 
> > > 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/pac
> > > > kage
> > > > 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  : 488 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20180610/7f6455b6/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev