[2/2] Allow initial configuration from Ethernet

Submitted by Fabian Blaese on June 9, 2018, 2:51 p.m.

Details

Message ID 20180609145129.28707-2-fabian@blaese.de
State Superseded
Headers show

Commit Message

Fabian Blaese June 9, 2018, 2:51 p.m.
Signed-off-by: Fabian Bläse <fabian@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(-)

Patch hide | download patch | download mbox

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

Comments

Robert Langhammer June 9, 2018, 11:15 p.m.
Hallo Fabian,

ja, die Patches lösen #95. Habs jetzt auch gesehen. Mir hat der 832er
gefehlt.

Gut ist auch, dass configurehood etwas schlanker wird.

Kleine Anmerkung: kein shebang in files die nur gesourced werden.

Reviewed-by: Robert Langhgammer <rlanghammer@web.de>


Am 09.06.2018 um 16:51 schrieb Fabian Bläse:
> Signed-off-by: Fabian Bläse <fabian@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
Christian Dresel June 10, 2018, 7:07 a.m.
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/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@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@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
>
Fabian Blaese June 10, 2018, 9:28 a.m.
Oh, wie ist das denn da rein gekommen? Kommt in der nächsten Version raus.
Danke fürs angucken.

Gruß
Fabian

> On 10. Jun 2018, at 01:15, robert <rlanghammer@web.de> wrote:
> 
> Kleine Anmerkung: kein shebang in files die nur gesourced werden.
Fabian Blaese June 10, 2018, 9:33 a.m.
Hallo Christian,

> On 10. Jun 2018, at 09:07, Christian Dresel <fff@chrisi01.de> wrote:
> 
> Der Fehler von der Alpha war, das Ethernet auch vor Gateway bevorzugt wurde.

Jo.

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

Jo.

Gruß
Fabian
Tim Niemeyer June 10, 2018, 9:38 a.m.
Am Sonntag, den 10.06.2018, 01:15 +0200 schrieb robert:
> Hallo Fabian,
> ja, die Patches lösen #95.
Puh. Jetzt ist es alles so lange. Das ist schwierig alles zusammen zu
kriegen.

Meinst du jetzt die beiden Patches von Fabian + meine 4-MacNocker
Patches zusammen?

> Habs jetzt auch gesehen. Mir hat der 832er gefehlt. 
https://pw.freifunk-franken.de/patch/832/

> Gut ist auch, dass configurehood etwas schlanker wird.
Oh ja. :)

Tim

> Kleine Anmerkung: kein shebang in files die nur gesourced werden.
> Reviewed-by: Robert Langhgammer <rlanghammer@web.de>
> 
> Am 09.06.2018 um 16:51 schrieb Fabian Bläse:
> > Signed-off-by: Fabian Bläse <fabian@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
>
Christian Dresel June 10, 2018, 9:52 a.m.
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/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@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@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
>>
>
Robert Langhammer June 10, 2018, 10:07 a.m.
Vermutlich C&P, Der ist in den anderen auch drin.

Robert


Am 10.06.2018 um 11:28 schrieb Fabian Bläse:
> Oh, wie ist das denn da rein gekommen? Kommt in der nächsten Version
> raus.
> Danke fürs angucken.
>
> Gruß
> Fabian
>
>> On 10. Jun 2018, at 01:15, robert <rlanghammer@web.de
>> <mailto:rlanghammer@web.de>> wrote:
>>
>> Kleine Anmerkung: kein shebang in files die nur gesourced werden.
>
Tim Niemeyer June 10, 2018, 10:11 a.m.
Am Sonntag, den 10.06.2018, 12:07 +0200 schrieb robert:
> Vermutlich C&P, Der ist in den anderen auch drin.
Magst n Ticket dazu anlegen?

Tim

> Robert
> 
> Am 10.06.2018 um 11:28 schrieb Fabian Bläse:
> > Oh, wie ist das denn da rein gekommen? Kommt in der nächsten
> > Version raus.
> > Danke fürs angucken.
> > 
> > Gruß
> > Fabian
> > 
> > > On 10. Jun 2018, at 01:15, robert <rlanghammer@web.de> wrote:
> > > 
> > > Kleine Anmerkung: kein shebang in files die nur gesourced werden.
>
Tim Niemeyer June 10, 2018, 10:14 a.m.
Hi

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

Ich vermisse auch noch das Löschen des Hoodfiles, wenn das Gateway weg
ist. Ich habe aber noch nicht alles gesichtet.

Tim

> 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@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@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
> > > 
> 
>
Christian Dresel June 10, 2018, 10:15 a.m.
On 10.06.2018 12:14, Tim Niemeyer wrote:
> Hi
> 
> 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
>>
>> 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.
> 
> Ich vermisse auch noch das Löschen des Hoodfiles, wenn das Gateway weg
> ist. Ich habe aber noch nicht alles gesichtet.

ganz ganz am Anfang (Zeile 15) wird die temp-hoodfile gelöscht und dann
bei Zeile 94 wird auch aus dem www-root gelöscht wenn kein GW mehr da ist.

So zumindest hab ich es verstanden

mfg

Christian

> 
> Tim
> 
>> 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@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@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
>>>>
>>
Adrian Schmutzler June 10, 2018, 10:24 a.m.
Hallo,

wie mündlich schon besprochen würde ich aus "download location" "target file" oder so was machen (im echo Usage).

Außerdem könnte man im sed statt ".$" ein ":$" verwenden, dann wird das letzte Zeichen nur gelöscht, wenn es wirklich ein Doppelpunkt ist. (Und nicht die letzte Stelle der IP, falls der Doppelpunkt mal nicht mehr da ist)

Der Rest sieht gut aus.

Grüße

Adrian



> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Samstag, 9. Juni 2018 16:51
> To: franken-dev@freifunk.net
> Subject: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> Signed-off-by: Fabian Bläse <fabian@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
> --
> 2.11.0
Tim Niemeyer June 10, 2018, 10:24 a.m.
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@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@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
> > > 
> 
>
Christian Dresel June 10, 2018, 10:27 a.m.
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)


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

mfg

Christian

>> 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@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@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
>>>>
>>
Adrian Schmutzler June 10, 2018, 10:32 a.m.
Hallo,

 

das Ethernet wurde aber ja nur im w2sta bevorzugt, wo vorher geprüft wurde, ob es kein GW gab, oder?

 

Grüße

 

Adrian

 

From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of Fabian Bläse
Sent: Sonntag, 10. Juni 2018 11:33
To: Christian Dresel <fff@chrisi01.de>
Cc: franken-dev@freifunk.net
Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet

 

Hallo Christian,





On 10. Jun 2018, at 09:07, Christian Dresel <fff@chrisi01.de <mailto:fff@chrisi01.de> > wrote:

 

Der Fehler von der Alpha war, das Ethernet auch vor Gateway bevorzugt wurde.

 

Jo.





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.

 

Jo.

 

Gruß

Fabian
Adrian Schmutzler June 10, 2018, 10:38 a.m.
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?

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Christian Dresel
> Sent: Sonntag, 10. Juni 2018 11:52
> To: Fabian Bläse <fabian@blaese.de>; franken-dev@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@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@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
> >>
> >
Christian Dresel June 10, 2018, 10:41 a.m.
hi

On 10.06.2018 12:38, mail@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@freifunk.net] On Behalf
>> Of Christian Dresel
>> Sent: Sonntag, 10. Juni 2018 11:52
>> To: Fabian Bläse <fabian@blaese.de>; franken-dev@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@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@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
>>>>
>>>
> 
>
Tim Niemeyer June 10, 2018, 10:41 a.m.
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@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@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
> > > > > 
> 
>
Fabian Blaese June 10, 2018, 10:47 a.m.
> On 10. Jun 2018, at 12:41, Tim Niemeyer <tim@tn-x.org> wrote:
> 
> 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.

Jo, genau die Idee hatte ich für diesen Randfall auch schon, wenn auch ein wenig einfacher gestrickt:
In /www/.. landet NIE ein hoodfile, was nicht vom gateway kommt. Brauchen wir dort auch nicht.

Was man mit den manuell eingetragenen Hoodfiles macht.. Hmm.

Gruß
Fabian
Christian Dresel June 10, 2018, 10:53 a.m.
hi

On 10.06.2018 12:47, Fabian Bläse wrote:
> 
>> On 10. Jun 2018, at 12:41, Tim Niemeyer <tim@tn-x.org
>> <mailto:tim@tn-x.org>> wrote:
>>
>> 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.
> 
> Jo, genau die Idee hatte ich für diesen Randfall auch schon, wenn auch
> ein wenig einfacher gestrickt:
> In /www/.. landet NIE ein hoodfile, was nicht vom gateway kommt.
> Brauchen wir dort auch nicht.
> 
> Was man mit den manuell eingetragenen Hoodfiles macht.. Hmm.

entweder man bietet doch die vom GW an (neben den nutzen der eigenen
Hoodfile, holt man sie dennoch die Hoodfile vom GW, nutzt sie aber nicht
sondern kopiert sie nur weiter ins www-root) oder man bietet gar keine
an achtet aber darauf keinesfalls nen w2configap aufzumachen weil sonst
kakke....

problematisch ist, wenn die manuelle Hoodfile nen anderen Kanal als die
vom GW hat. Dann holen sich Meshrouter zwar die Hoodfile vom GW können
am Ende aber nicht meshen weil Kanal falsch und landen wieder in w2sta...

Warscheinlich ist es dann das beste, wenn ich nie vom GW eine Hoodfile
hole (aus welchen Grund auch immer, weil locale Hoodfile oder nur eth
geholt oder oder...), das ich dann auch nie eine anbiete.

Zeile 41 sollte sich darum schon kümmern das zumindest keiner aufgemacht
wird wenn keine hoodfile im www-root liegt, ist die Frage was ist wenn
bereits einer offen ist, müsste man dann wieder zu machen (ich finde
dazu gerade keine passende Stelle, fehlt das?).

Danach müsste man 218 das cp "$hoodfile" "$hoodfilecopy" nach 113
schieben. Was dadurch aber u.U. wieder kaputt geht, hab ich jetzt nicht
mehr zu Ende überlegt.

mfg

Christian

> 
> Gruß
> Fabian
Christian Dresel June 10, 2018, 10:54 a.m.
On 10.06.2018 12:53, Christian Dresel wrote:
> hi
> 
> On 10.06.2018 12:47, Fabian Bläse wrote:
>>
>>> On 10. Jun 2018, at 12:41, Tim Niemeyer <tim@tn-x.org
>>> <mailto:tim@tn-x.org>> wrote:
>>>
>>> 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.
>>
>> Jo, genau die Idee hatte ich für diesen Randfall auch schon, wenn auch
>> ein wenig einfacher gestrickt:
>> In /www/.. landet NIE ein hoodfile, was nicht vom gateway kommt.
>> Brauchen wir dort auch nicht.
>>
>> Was man mit den manuell eingetragenen Hoodfiles macht.. Hmm.
> 
> entweder man bietet doch die vom GW an (neben den nutzen der eigenen
> Hoodfile, holt man sie dennoch die Hoodfile vom GW, nutzt sie aber nicht
> sondern kopiert sie nur weiter ins www-root) oder man bietet gar keine
> an achtet aber darauf keinesfalls nen w2configap aufzumachen weil sonst
> kakke....
> 
> problematisch ist, wenn die manuelle Hoodfile nen anderen Kanal als die
> vom GW hat. Dann holen sich Meshrouter zwar die Hoodfile vom GW können
> am Ende aber nicht meshen weil Kanal falsch und landen wieder in w2sta...
> 
> Warscheinlich ist es dann das beste, wenn ich nie vom GW eine Hoodfile
> hole (aus welchen Grund auch immer, weil locale Hoodfile oder nur eth
> geholt oder oder...), das ich dann auch nie eine anbiete.
> 
> Zeile 41 sollte sich darum schon kümmern das zumindest keiner aufgemacht
> wird wenn keine hoodfile im www-root liegt, ist die Frage was ist wenn
> bereits einer offen ist, müsste man dann wieder zu machen (ich finde
> dazu gerade keine passende Stelle, fehlt das?).

^ hier geht es natürlich um den w2configap, falls das gerade nicht klar
genug war. Sry bissle verwirrend

> 
> Danach müsste man 218 das cp "$hoodfile" "$hoodfilecopy" nach 113
> schieben. Was dadurch aber u.U. wieder kaputt geht, hab ich jetzt nicht
> mehr zu Ende überlegt.
> 
> mfg
> 
> Christian
> 
>>
>> Gruß
>> Fabian
>
Adrian Schmutzler June 10, 2018, 10:55 a.m.
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@chrisi01.de]
> Sent: Sonntag, 10. Juni 2018 12:42
> To: mail@adrianschmutzler.de; franken-dev@freifunk.net
> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> hi
> 
> On 10.06.2018 12:38, mail@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@freifunk.net] On
> Behalf
> >> Of Christian Dresel
> >> Sent: Sonntag, 10. Juni 2018 11:52
> >> To: Fabian Bläse <fabian@blaese.de>; franken-dev@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@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@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
> >>>>
> >>>
> >
> >
Adrian Schmutzler June 10, 2018, 10:57 a.m.
Das manuell eingetragene Hoodfile hat die höchste Priorität. Da sollte weiterverbreitet werden.

 

From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of Fabian Bläse
Sent: Sonntag, 10. Juni 2018 12:47
To: Tim Niemeyer <tim@tn-x.org>
Cc: franken-dev@freifunk.net
Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet

 

 

On 10. Jun 2018, at 12:41, Tim Niemeyer <tim@tn-x.org <mailto:tim@tn-x.org> > wrote:

 

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.

 

Jo, genau die Idee hatte ich für diesen Randfall auch schon, wenn auch ein wenig einfacher gestrickt:

In /www/.. landet NIE ein hoodfile, was nicht vom gateway kommt. Brauchen wir dort auch nicht.

 

Was man mit den manuell eingetragenen Hoodfiles macht.. Hmm.

 

Gruß

Fabian
Christian Dresel June 10, 2018, 10:57 a.m.
On 10.06.2018 12:55, mail@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@chrisi01.de]
>> Sent: Sonntag, 10. Juni 2018 12:42
>> To: mail@adrianschmutzler.de; franken-dev@freifunk.net
>> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
>>
>> hi
>>
>> On 10.06.2018 12:38, mail@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@freifunk.net] On
>> Behalf
>>>> Of Christian Dresel
>>>> Sent: Sonntag, 10. Juni 2018 11:52
>>>> To: Fabian Bläse <fabian@blaese.de>; franken-dev@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@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@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
>>>>>>
>>>>>
>>>
>>>
> 
>
Adrian Schmutzler June 10, 2018, 11:01 a.m.
Hallo,

das Vorhandensein von hoodfilecopy wird meiner Erinnerung nach als Indikator dafür verwendet, dass das Setup vollständig durchgelaufen ist. Daher sollten wir das NICHT verschieben, sondern ganz am Ende belassen.

Verwendet wird das z.B. beim if für den hiddenap, denn der macht nur Sinn, wenn korrekt konfiguriert wurde.

Gehen wir davon aus, dass hoodfilecopy nur für autorative hoodfiles generiert wird, wäre für den Fall eines nicht-autoritiven Hoodfiles an der Stelle dann auch automatisch gelöst, dass der hiddenap nicht aufgemacht wird, weil es ja kein hoodfilecopy gibt.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Christian Dresel
> Sent: Sonntag, 10. Juni 2018 12:53
> To: Fabian Bläse <fabian@blaese.de>; Tim Niemeyer <tim@tn-x.org>
> Cc: franken-dev@freifunk.net
> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> hi
> 
> On 10.06.2018 12:47, Fabian Bläse wrote:
> >
> >> On 10. Jun 2018, at 12:41, Tim Niemeyer <tim@tn-x.org
> >> <mailto:tim@tn-x.org>> wrote:
> >>
> >> 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.
> >
> > Jo, genau die Idee hatte ich für diesen Randfall auch schon, wenn auch
> > ein wenig einfacher gestrickt:
> > In /www/.. landet NIE ein hoodfile, was nicht vom gateway kommt.
> > Brauchen wir dort auch nicht.
> >
> > Was man mit den manuell eingetragenen Hoodfiles macht.. Hmm.
> 
> entweder man bietet doch die vom GW an (neben den nutzen der eigenen
> Hoodfile, holt man sie dennoch die Hoodfile vom GW, nutzt sie aber nicht
> sondern kopiert sie nur weiter ins www-root) oder man bietet gar keine an
> achtet aber darauf keinesfalls nen w2configap aufzumachen weil sonst
> kakke....
> 
> problematisch ist, wenn die manuelle Hoodfile nen anderen Kanal als die
> vom GW hat. Dann holen sich Meshrouter zwar die Hoodfile vom GW
> können am Ende aber nicht meshen weil Kanal falsch und landen wieder in
> w2sta...
> 
> Warscheinlich ist es dann das beste, wenn ich nie vom GW eine Hoodfile hole
> (aus welchen Grund auch immer, weil locale Hoodfile oder nur eth geholt
> oder oder...), das ich dann auch nie eine anbiete.
> 
> Zeile 41 sollte sich darum schon kümmern das zumindest keiner aufgemacht
> wird wenn keine hoodfile im www-root liegt, ist die Frage was ist wenn
> bereits einer offen ist, müsste man dann wieder zu machen (ich finde dazu
> gerade keine passende Stelle, fehlt das?).
> 
> Danach müsste man 218 das cp "$hoodfile" "$hoodfilecopy" nach 113
> schieben. Was dadurch aber u.U. wieder kaputt geht, hab ich jetzt nicht
> mehr zu Ende überlegt.
> 
> mfg
> 
> Christian
> 
> >
> > Gruß
> > Fabian
Adrian Schmutzler June 10, 2018, 11:07 a.m.
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@chrisi01.de]
> Sent: Sonntag, 10. Juni 2018 12:58
> To: mail@adrianschmutzler.de; franken-dev@freifunk.net
> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> 
> 
> On 10.06.2018 12:55, mail@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@chrisi01.de]
> >> Sent: Sonntag, 10. Juni 2018 12:42
> >> To: mail@adrianschmutzler.de; franken-dev@freifunk.net
> >> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> >>
> >> hi
> >>
> >> On 10.06.2018 12:38, mail@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@freifunk.net] On
> >> Behalf
> >>>> Of Christian Dresel
> >>>> Sent: Sonntag, 10. Juni 2018 11:52
> >>>> To: Fabian Bläse <fabian@blaese.de>; franken-dev@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@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@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
> >>>>>>
> >>>>>
> >>>
> >>>
> >
> >
Tim Niemeyer June 10, 2018, 11:15 a.m.
Am Sonntag, den 10.06.2018, 12:57 +0200 schrieb
mail@adrianschmutzler.de:
> Das manuell eingetragene Hoodfile hat die höchste Priorität. Da
> sollte weiterverbreitet werden.
Das sehe ich anders. Das macht nur noch mehr Sorgen- und Problemfälle
auf.

Wenn jemand gern das manuelle Hoodfile nutzen will, gern, dann baut er
es bitte aber auf jedem Knoten ein!

Man sollte sowieso daraufhin wirken, dass dort wo ein manuelles
Hoodfile genutzt wird, wohl ein v3 Setup besser gefahren werden kann.

Tim

>  
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Sonntag, 10. Juni 2018 12:47
> To: Tim Niemeyer <tim@tn-x.org>
> Cc: franken-dev@freifunk.net
> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
>  
>  
> On 10. Jun 2018, at 12:41, Tim Niemeyer <tim@tn-x.org> wrote:
>  
> 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.
>  
> Jo, genau die Idee hatte ich für diesen Randfall auch schon, wenn
> auch ein wenig einfacher gestrickt:
> In /www/.. landet NIE ein hoodfile, was nicht vom gateway kommt.
> Brauchen wir dort auch nicht.
>  
> Was man mit den manuell eingetragenen Hoodfiles macht.. Hmm.
>  
> Gruß
> Fabian
Adrian Schmutzler June 10, 2018, 11:32 a.m.
Wenn das manuelle Hoodfile nicht die höchste Priorität hat, erzeugt das diverse Problemfälle, wie z.B. die Kanalkonfiguration etc. bei mehreren Geräten. Im Prinzip wäre es dann nicht viel mehr als ein zweites Sektorfile.

Die jetzige Konzeption des manuellen Hoodfiles fußt darauf, dass es an allen Stellen wie ein "echtes" Hoodfile verwendet wird. So wurde es ursprünglich designed. Wenn du das ändern willst, müsste man da denke ich an verschiedenen Stellen noch mal Hand anlegen. Das würde ich in jedem Fall von der aktuellen Diskussion trennen.

Grüße

Adrian

> -----Original Message-----
> From: Tim Niemeyer [mailto:tim@tn-x.org]
> Sent: Sonntag, 10. Juni 2018 13:15
> To: mail@adrianschmutzler.de; franken-dev@freifunk.net; 'Fabian Bläse'
> <fabian@blaese.de>
> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> Am Sonntag, den 10.06.2018, 12:57 +0200 schrieb
> mail@adrianschmutzler.de:
> > Das manuell eingetragene Hoodfile hat die höchste Priorität. Da sollte
> > weiterverbreitet werden.
> Das sehe ich anders. Das macht nur noch mehr Sorgen- und Problemfälle auf.
> 
> Wenn jemand gern das manuelle Hoodfile nutzen will, gern, dann baut er es
> bitte aber auf jedem Knoten ein!
> 
> Man sollte sowieso daraufhin wirken, dass dort wo ein manuelles Hoodfile
> genutzt wird, wohl ein v3 Setup besser gefahren werden kann.
> 
> Tim
> 
> >
> > From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> > Of Fabian Bläse
> > Sent: Sonntag, 10. Juni 2018 12:47
> > To: Tim Niemeyer <tim@tn-x.org>
> > Cc: franken-dev@freifunk.net
> > Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> >
> >
> > On 10. Jun 2018, at 12:41, Tim Niemeyer <tim@tn-x.org> wrote:
> >
> > 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.
> >
> > Jo, genau die Idee hatte ich für diesen Randfall auch schon, wenn auch
> > ein wenig einfacher gestrickt:
> > In /www/.. landet NIE ein hoodfile, was nicht vom gateway kommt.
> > Brauchen wir dort auch nicht.
> >
> > Was man mit den manuell eingetragenen Hoodfiles macht.. Hmm.
> >
> > Gruß
> > Fabian
Adrian Schmutzler June 10, 2018, 11:40 a.m.
Nachtrag:

Die von mir vorgeschlagene Lösung hat dann den Nachteil, dass die Konfiguration immer doppelt stattfindet, da ja am Anfang des Konfigurationsblocks hoodfile und hoodfilecopy verglichen werden. Dann wird quasi nochmal alles gelöscht und konfiguriert.

Wenn man hingegen einfach gar nichts ändert hat man dennoch eine relativ geringe Wahrscheinlichkeit, dass zwei Router so eine blöde Zeitverschiebung haben, dass das Herunterladen eines alten Hoodfiles ermöglicht wird. Ich tendiere dazu, diesen Spezialfall eines Spezialfalles für ein erstes Release zu ignorieren.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of mail@adrianschmutzler.de
> Sent: Sonntag, 10. Juni 2018 13:08
> To: 'Christian Dresel' <fff@chrisi01.de>; franken-dev@freifunk.net
> Subject: RE: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> 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@chrisi01.de]
> > Sent: Sonntag, 10. Juni 2018 12:58
> > To: mail@adrianschmutzler.de; franken-dev@freifunk.net
> > Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> >
> >
> >
> > On 10.06.2018 12:55, mail@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@chrisi01.de]
> > >> Sent: Sonntag, 10. Juni 2018 12:42
> > >> To: mail@adrianschmutzler.de; franken-dev@freifunk.net
> > >> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> > >>
> > >> hi
> > >>
> > >> On 10.06.2018 12:38, mail@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@freifunk.net] On
> > >> Behalf
> > >>>> Of Christian Dresel
> > >>>> Sent: Sonntag, 10. Juni 2018 11:52
> > >>>> To: Fabian Bläse <fabian@blaese.de>; franken-dev@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@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@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/hoodfi
> > >>>>>> le
> > >>>>>> b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfi
> > >>>>>> le
> > >>>>>> index 62487f9..6c50737 100644
> > >>>>>> ---
> > >>>>>> a/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/hoodfi
> > >>>>>> le
> > >>>>>> +++ b/src/packages/fff/fff-hoods/files/usr/lib/functions/fff/ho
> > >>>>>> +++ od
> > >>>>>> +++ 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
> > >>>>>>
> > >>>>>
> > >>>
> > >>>
> > >
> > >
>
Fabian Blaese June 10, 2018, 11:42 a.m.
Hallo Adrian,

> On 10. Jun 2018, at 13:32, <mail@adrianschmutzler.de> <mail@adrianschmutzler.de> wrote:
> 
> Die jetzige Konzeption des manuellen Hoodfiles fußt darauf, dass es an allen Stellen wie ein "echtes" Hoodfile verwendet wird. So wurde es ursprünglich designed. Wenn du das ändern willst, müsste man da denke ich an verschiedenen Stellen noch mal Hand anlegen. Das würde ich in jedem Fall von der aktuellen Diskussion trennen.

Ist dem wirklich so? Auch aktuell wird das Hoodfile nämlich immer vom KeyXchange bezogen, auch wenn der Nachbar, von dem man das initiale erhalten hat ein eigenes verwendet.

Im Fall manuelles Hoodfile sollte imho auf jeden Fall die automatische Konfiguration komplett! unterbunden werden (kein hiddenap), und wer an so ein Netz ran möchte, soll sich das Hoodfile dann auch manuell eintragen. Alles andere macht unüberschaubar viele Randfälle auf.

Gruß
Fabian
Tim Niemeyer June 10, 2018, 11:51 a.m.
Am Sonntag, den 10.06.2018, 13:42 +0200 schrieb Fabian Bläse:
> Hallo Adrian,
> 
> > On 10. Jun 2018, at 13:32, <mail@adrianschmutzler.de> <mail@adrians
> > chmutzler.de> wrote:
> > 
> > Die jetzige Konzeption des manuellen Hoodfiles fußt darauf, dass es
> > an allen Stellen wie ein "echtes" Hoodfile verwendet wird. So wurde
> > es ursprünglich designed. Wenn du das ändern willst, müsste man da
> > denke ich an verschiedenen Stellen noch mal Hand anlegen. Das würde
> > ich in jedem Fall von der aktuellen Diskussion trennen.
> 
> Ist dem wirklich so? Auch aktuell wird das Hoodfile nämlich immer vom
> KeyXchange bezogen, auch wenn der Nachbar, von dem man das initiale
> erhalten hat ein eigenes verwendet.
> 
> Im Fall manuelles Hoodfile sollte imho auf jeden Fall die
> automatische Konfiguration komplett! unterbunden werden (kein
> hiddenap), und wer an so ein Netz ran möchte, soll sich das Hoodfile
> dann auch manuell eintragen. Alles andere macht unüberschaubar viele
> Randfälle auf.
Sehe ich genauso.

Tim

> Gruß
> Fabian
Adrian Schmutzler June 10, 2018, 11:52 a.m.
Hallo Fabian,

ich glaube, du hast Recht.

Sobald ein Mesh-Router ein Gateway sieht, wird er sich damit konfigurieren und das ursprüngliche (ehemals lokale) Hood-File verwerfen. Bei unterschiedlichen Kanälen ginge er dann wieder kaputt und würde wieder in w2sta gehen etc.

Die einfache Lösung wäre dann beim hiddenap nur auf Nicht-Vorhandensein des /etc/hoodfile zu prüfen. Nützt dann aber nichts, wenn jemand nachträglich ein /etc/hoodfile erstellt.

Die Frage ist ob es stört, wenn das lokale Hoodfile per Kabel verteilt wird?

Grüße

Adrian

> -----Original Message-----
> From: Fabian Bläse [mailto:fabian@blaese.de]
> Sent: Sonntag, 10. Juni 2018 13:42
> To: <mail@adrianschmutzler.de> <mail@adrianschmutzler.de>; franken-
> dev@freifunk.net
> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> Hallo Adrian,
> 
> > On 10. Jun 2018, at 13:32, <mail@adrianschmutzler.de>
> <mail@adrianschmutzler.de> wrote:
> >
> > Die jetzige Konzeption des manuellen Hoodfiles fußt darauf, dass es an
> allen Stellen wie ein "echtes" Hoodfile verwendet wird. So wurde es
> ursprünglich designed. Wenn du das ändern willst, müsste man da denke ich
> an verschiedenen Stellen noch mal Hand anlegen. Das würde ich in jedem
> Fall von der aktuellen Diskussion trennen.
> 
> Ist dem wirklich so? Auch aktuell wird das Hoodfile nämlich immer vom
> KeyXchange bezogen, auch wenn der Nachbar, von dem man das initiale
> erhalten hat ein eigenes verwendet.
> 
> Im Fall manuelles Hoodfile sollte imho auf jeden Fall die automatische
> Konfiguration komplett! unterbunden werden (kein hiddenap), und wer an
> so ein Netz ran möchte, soll sich das Hoodfile dann auch manuell eintragen.
> Alles andere macht unüberschaubar viele Randfälle auf.
> 
> Gruß
> Fabian
Fabian Blaese June 10, 2018, 11:54 a.m.
Hallo Adrian,

> On 10. Jun 2018, at 13:52, <mail@adrianschmutzler.de> <mail@adrianschmutzler.de> wrote:
> 
> Die einfache Lösung wäre dann beim hiddenap nur auf Nicht-Vorhandensein des /etc/hoodfile zu prüfen. Nützt dann aber nichts, wenn jemand nachträglich ein /etc/hoodfile erstellt.
> 
> Die Frage ist ob es stört, wenn das lokale Hoodfile per Kabel verteilt wird?

warum lassen wir das Hoodfile in diesem Fall in /www/hood/.. nicht einfach weg?

Gruß
Fabian
Adrian Schmutzler June 10, 2018, 11:58 a.m.
Hallo Fabian,

der Block ab Zeile 175 (in der alpha-Version), der die Konfiguration macht, soll ja möglichst selten laufen. Da wird überprüft, ob sich das Hoodfile geändert hat. Für die Überprüfung braucht man eine Referenz und die ist hoodfilecopy.

Man könnte dem entgehen, indem man statt einer zwei Copies erzeugt, eine für die Checksumme, die es immer gibt, und eine für den hiddenap/www. Das ist dann noch ein bisschen komplizierter, löst aber evtl. unsere Probleme, dass wir nicht immer eine copy in /www anlegen müssen/wollen.

Grüße

Adrian

> -----Original Message-----
> From: Fabian Bläse [mailto:fabian@blaese.de]
> Sent: Sonntag, 10. Juni 2018 13:54
> To: <mail@adrianschmutzler.de> <mail@adrianschmutzler.de>
> Cc: franken-dev@freifunk.net
> Subject: Re: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> Hallo Adrian,
> 
> > On 10. Jun 2018, at 13:52, <mail@adrianschmutzler.de>
> <mail@adrianschmutzler.de> wrote:
> >
> > Die einfache Lösung wäre dann beim hiddenap nur auf Nicht-
> Vorhandensein des /etc/hoodfile zu prüfen. Nützt dann aber nichts, wenn
> jemand nachträglich ein /etc/hoodfile erstellt.
> >
> > Die Frage ist ob es stört, wenn das lokale Hoodfile per Kabel verteilt wird?
> 
> warum lassen wir das Hoodfile in diesem Fall in /www/hood/.. nicht einfach
> weg?
> 
> Gruß
> Fabian
Adrian Schmutzler June 10, 2018, 12:08 p.m.
Hallo nochmal,

wie gestern schon festgestellt sollte man noch abfangen, wenn

network.ethmesh.ifname

nicht gesetzt ist.

Danach würde ich das als Reviewed markieren. Die anderen vorgeschlagenen Änderungen wären schön, aber optional.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Samstag, 9. Juni 2018 16:51
> To: franken-dev@freifunk.net
> Subject: [PATCH 2/2] Allow initial configuration from Ethernet
> 
> Signed-off-by: Fabian Bläse <fabian@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
> --
> 2.11.0