[PATCH 2/2] Allow initial configuration from Ethernet

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


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.

Tim

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


Mehr Informationen über die Mailingliste franken-dev