[RFC,v1,3/4] fff-hoods: call reload_config after uci commit

Submitted by Tim Niemeyer on April 3, 2018, 7:27 p.m.

Details

Message ID 20180403192749.28637-4-tim@tn-x.org
State Superseded
Headers show

Commit Message

Tim Niemeyer April 3, 2018, 7:27 p.m.
Signed-off-by: Tim Niemeyer <tim@tn-x.org>
---

 src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4 ++++
 1 file changed, 4 insertions(+)

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
index a825eea..2672cfa 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -56,6 +56,7 @@  if [ -s "$hoodfilecopy" ] && isGatewayAvailable ; then
 		uci set network.${iface}.proto='static'
 		uci set network.${iface}.ip6addr='fe80::1/64'
 		uci commit network
+		reload_config
 		if ! wifiAddAP "$radio" "config.franken.freifunk.net" "$iface" "configap" "1"; then
 			echo "Can't add Config interface on $radio."
 			exit 1
@@ -101,6 +102,7 @@  else
 
 			uci -q set "system.@system[0].hood="
 			uci -q commit system
+			reload_config
 		
 			sleep 30 # Wait for the config AP, which may be created at the same time as this script has started
 
@@ -127,6 +129,7 @@  else
 					uci -q set network.configSta=interface
 					uci -q set network.configSta.proto='static'
 					uci -q commit network
+					reload_config
 				fi
 			done
 		
@@ -232,6 +235,7 @@  if [ -s "$hoodfile" ]; then
 		echo "Setting hood name: $hood"
 		uci -q set "system.@system[0].hood=$hood"
 		uci -q commit system
+		reload_config
 
 		if ! wifiDelIface; then
 			echo "Can't delete current wifi setup"

Comments

Adrian Schmutzler April 10, 2018, 1:18 p.m.
Hallo Tim,

warum brauchst du das reload_config?

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Tim Niemeyer
> Sent: Dienstag, 3. April 2018 21:28
> To: franken-dev@freifunk.net
> Subject: [RFC PATCH v1 3/4] fff-hoods: call reload_config after uci commit
> 
> Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> ---
> 
>  src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index a825eea..2672cfa 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -56,6 +56,7 @@ if [ -s "$hoodfilecopy" ] && isGatewayAvailable ; then
>  		uci set network.${iface}.proto='static'
>  		uci set network.${iface}.ip6addr='fe80::1/64'
>  		uci commit network
> +		reload_config
>  		if ! wifiAddAP "$radio" "config.franken.freifunk.net"
"$iface"
> "configap" "1"; then
>  			echo "Can't add Config interface on $radio."
>  			exit 1
> @@ -101,6 +102,7 @@ else
> 
>  			uci -q set "system.@system[0].hood="
>  			uci -q commit system
> +			reload_config
> 
>  			sleep 30 # Wait for the config AP, which may be
> created at the same time as this script has started
> 
> @@ -127,6 +129,7 @@ else
>  					uci -q set
network.configSta=interface
>  					uci -q set
> network.configSta.proto='static'
>  					uci -q commit network
> +					reload_config
>  				fi
>  			done
> 
> @@ -232,6 +235,7 @@ if [ -s "$hoodfile" ]; then
>  		echo "Setting hood name: $hood"
>  		uci -q set "system.@system[0].hood=$hood"
>  		uci -q commit system
> +		reload_config
> 
>  		if ! wifiDelIface; then
>  			echo "Can't delete current wifi setup"
> --
> 2.11.0
> 
> --
> franken-dev mailing list
> franken-dev@freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
Tim Niemeyer April 10, 2018, 5:44 p.m.
Am Dienstag, den 10.04.2018, 15:18 +0200 schrieb Adrian Schmutzler:
> Hallo Tim,
> 
> warum brauchst du das reload_config?
Das sorgt dafür, dass die Settings die in uci gespeichert und mit uci
commit auf Platte geschrieben wurden, auch angewendet werden.

Tim

> 
> Grüße
> 
> Adrian
> 
> > -----Original Message-----
> > From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On
> > Behalf
> > Of Tim Niemeyer
> > Sent: Dienstag, 3. April 2018 21:28
> > To: franken-dev@freifunk.net
> > Subject: [RFC PATCH v1 3/4] fff-hoods: call reload_config after uci
> > commit
> > 
> > Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> > ---
> > 
> >  src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/src/packages/fff/fff-
> > hoods/files/usr/sbin/configurehood
> > b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > index a825eea..2672cfa 100755
> > --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > @@ -56,6 +56,7 @@ if [ -s "$hoodfilecopy" ] && isGatewayAvailable ;
> > then
> >  		uci set network.${iface}.proto='static'
> >  		uci set network.${iface}.ip6addr='fe80::1/64'
> >  		uci commit network
> > +		reload_config
> >  		if ! wifiAddAP "$radio"
> > "config.franken.freifunk.net"
> 
> "$iface"
> > "configap" "1"; then
> >  			echo "Can't add Config interface on
> > $radio."
> >  			exit 1
> > @@ -101,6 +102,7 @@ else
> > 
> >  			uci -q set "system.@system[0].hood="
> >  			uci -q commit system
> > +			reload_config
> > 
> >  			sleep 30 # Wait for the config AP, which
> > may be
> > created at the same time as this script has started
> > 
> > @@ -127,6 +129,7 @@ else
> >  					uci -q set
> 
> network.configSta=interface
> >  					uci -q set
> > network.configSta.proto='static'
> >  					uci -q commit network
> > +					reload_config
> >  				fi
> >  			done
> > 
> > @@ -232,6 +235,7 @@ if [ -s "$hoodfile" ]; then
> >  		echo "Setting hood name: $hood"
> >  		uci -q set "system.@system[0].hood=$hood"
> >  		uci -q commit system
> > +		reload_config
> > 
> >  		if ! wifiDelIface; then
> >  			echo "Can't delete current wifi setup"
> > --
> > 2.11.0
> > 
> > --
> > franken-dev mailing list
> > franken-dev@freifunk.net
> > http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
> 
>
Christian Dresel June 10, 2018, 6:31 a.m.
Hallo

ich werde nicht schlau was reload_config macht, kannst du das evtl.
genauer erklären? Kleinigkeit noch Inline:

On 03.04.2018 21:27, Tim Niemeyer wrote:
> Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> ---
> 
>  src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index a825eea..2672cfa 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -56,6 +56,7 @@ if [ -s "$hoodfilecopy" ] && isGatewayAvailable ; then
>  		uci set network.${iface}.proto='static'
>  		uci set network.${iface}.ip6addr='fe80::1/64'
>  		uci commit network

wir haben überall -q nur hier nicht. Hat das einen Grund? Ist mir hier
beim drüber schauen das erste mal aufgefallen. Eventuell können wir das
gleich mit anpassen (falls es eine v2 bzw. ein nicht-RFC geben sollte)
oder wegen mir auch in nen extra Patch.

mfg

Christian

> +		reload_config
>  		if ! wifiAddAP "$radio" "config.franken.freifunk.net" "$iface" "configap" "1"; then
>  			echo "Can't add Config interface on $radio."
>  			exit 1
> @@ -101,6 +102,7 @@ else
>  
>  			uci -q set "system.@system[0].hood="
>  			uci -q commit system
> +			reload_config
>  		
>  			sleep 30 # Wait for the config AP, which may be created at the same time as this script has started
>  
> @@ -127,6 +129,7 @@ else
>  					uci -q set network.configSta=interface
>  					uci -q set network.configSta.proto='static'
>  					uci -q commit network
> +					reload_config
>  				fi
>  			done
>  		
> @@ -232,6 +235,7 @@ if [ -s "$hoodfile" ]; then
>  		echo "Setting hood name: $hood"
>  		uci -q set "system.@system[0].hood=$hood"
>  		uci -q commit system
> +		reload_config
>  
>  		if ! wifiDelIface; then
>  			echo "Can't delete current wifi setup"
>
Tim Niemeyer June 10, 2018, 9:44 a.m.
Am Sonntag, den 10.06.2018, 08:31 +0200 schrieb Christian Dresel:
> Hallo
> 
> ich werde nicht schlau was reload_config macht, kannst du das evtl.
> genauer erklären?

Am besten du schaust mal kurz die beiden Links an:

Hier wird erklärt, wieso das wichtig ist:
https://wiki.openwrt.org/inbox/procd-init-scripts#procd_triggers_on_config_filenetwork_interface_changes

Hier ist die Funktion beschrieben:
https://github.com/openwrt-mirror/openwrt/blob/master/package/system/procd/files/reload_config

Zusammenfassend:
Wenn ein procd-Init-Script angemeldet hat, dass es gerne bei config-
Änderung benachrichtigt wird, dann wird das durch reload_config erst
ausgelöst. Die Änderung der Dateien reicht nicht.
Im original OpenWRT mit LUCI kennt man das auch, weil es dort ein
Speichern und separat ein Übernehmen gibt.

Generell sollten wir mMn überall auf diesen Mechanismus setzen und
nirgends die Init-Scripte selber reloaden/restarten.


>  Kleinigkeit noch Inline:
> 
> On 03.04.2018 21:27, Tim Niemeyer wrote:
> > Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> > ---
> > 
> >  src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/src/packages/fff/fff-
> > hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-
> > hoods/files/usr/sbin/configurehood
> > index a825eea..2672cfa 100755
> > --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > @@ -56,6 +56,7 @@ if [ -s "$hoodfilecopy" ] && isGatewayAvailable ;
> > then
> >  		uci set network.${iface}.proto='static'
> >  		uci set network.${iface}.ip6addr='fe80::1/64'
> >  		uci commit network
> 
> wir haben überall -q nur hier nicht. Hat das einen Grund? Ist mir
> hier
> beim drüber schauen das erste mal aufgefallen. Eventuell können wir
> das
> gleich mit anpassen (falls es eine v2 bzw. ein nicht-RFC geben
> sollte)
> oder wegen mir auch in nen extra Patch.
Vermutlich ja. Aber das ist vermutlich ein Teil, den Fabian in seinem
Patchset verschiebt. Wenn ich das jetzt anpasse, gibts wieder Ärger
beim Fabian. Also lieber erst ändern, wenn die beiden Patchsets durch
sind. Sollten wir aber im Hinterkopf behalten.

Tim

> 
> mfg
> 
> Christian
> 
> > +		reload_config
> >  		if ! wifiAddAP "$radio"
> > "config.franken.freifunk.net" "$iface" "configap" "1"; then
> >  			echo "Can't add Config interface on
> > $radio."
> >  			exit 1
> > @@ -101,6 +102,7 @@ else
> >  
> >  			uci -q set "system.@system[0].hood="
> >  			uci -q commit system
> > +			reload_config
> >  		
> >  			sleep 30 # Wait for the config AP, which
> > may be created at the same time as this script has started
> >  
> > @@ -127,6 +129,7 @@ else
> >  					uci -q set
> > network.configSta=interface
> >  					uci -q set
> > network.configSta.proto='static'
> >  					uci -q commit network
> > +					reload_config
> >  				fi
> >  			done
> >  		
> > @@ -232,6 +235,7 @@ if [ -s "$hoodfile" ]; then
> >  		echo "Setting hood name: $hood"
> >  		uci -q set "system.@system[0].hood=$hood"
> >  		uci -q commit system
> > +		reload_config
> >  
> >  		if ! wifiDelIface; then
> >  			echo "Can't delete current wifi setup"
> > 
> 
>
Christian Dresel June 10, 2018, 10:02 a.m.
hi

On 10.06.2018 11:44, Tim Niemeyer wrote:
> Am Sonntag, den 10.06.2018, 08:31 +0200 schrieb Christian Dresel:
>> Hallo
>>
>> ich werde nicht schlau was reload_config macht, kannst du das evtl.
>> genauer erklären?
> 
> Am besten du schaust mal kurz die beiden Links an:
> 
> Hier wird erklärt, wieso das wichtig ist:
> https://wiki.openwrt.org/inbox/procd-init-scripts#procd_triggers_on_config_filenetwork_interface_changes
> 
> Hier ist die Funktion beschrieben:
> https://github.com/openwrt-mirror/openwrt/blob/master/package/system/procd/files/reload_config
> 
> Zusammenfassend:
> Wenn ein procd-Init-Script angemeldet hat, dass es gerne bei config-
> Änderung benachrichtigt wird, dann wird das durch reload_config erst
> ausgelöst. Die Änderung der Dateien reicht nicht.
> Im original OpenWRT mit LUCI kennt man das auch, weil es dort ein
> Speichern und separat ein Übernehmen gibt.
> 
> Generell sollten wir mMn überall auf diesen Mechanismus setzen und
> nirgends die Init-Scripte selber reloaden/restarten.

Kurzgefasst:

uci -q set "blabla="
-> ändert es im RAM (nach reboot ist die Änderung futsch)

uci -q commit
-> schreibt es auf die "Platte" (die Änderung steht auf der "Platte",
ein Programm dahinter hat das aber u.U. nicht übernommen)

reload_config
-> startet das dazugehörige Programm neu bzw. sagt ihm das es die config
neu laden soll (oder wie auch immer...)

Beispiel DHCP Server:

uci set dhcp.mesh.start='10.50.138.128'
jetzt ist im RAM mal festgehalten das ab diesen IP Bereich gestartet
wird. dnsmasq weiß davon noch nix und ein reboot setzt es auch wieder
zurück. Es bringt also erstmal gar nichts.

uci commit
jetzt ist es zwar fest gespeichert, nach einem reboot würde es sogar
übernommen werden (da die config neu eingelesen wird) und fest behalten
werden. Aber dnsmasq weiß hier auch noch nix davon und verteilt
weiterhin IPs so, wie es zuvor eingestellt war.

reload_config
jetzt übernimmt auch der dnsmasq diese Änderung und fängt mit der neuen
IP Range an -> Selber "Effekt" wie /etc/init.d/dnsmasq restart nur schöner?

Hab ich das so richtig verstanden?

mfg

Christian

> 
> 
>>  Kleinigkeit noch Inline:
>>
>> On 03.04.2018 21:27, Tim Niemeyer wrote:
>>> Signed-off-by: Tim Niemeyer <tim@tn-x.org>
>>> ---
>>>
>>>  src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4 ++++
>>>  1 file changed, 4 insertions(+)
>>>
>>> diff --git a/src/packages/fff/fff-
>>> hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-
>>> hoods/files/usr/sbin/configurehood
>>> index a825eea..2672cfa 100755
>>> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
>>> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
>>> @@ -56,6 +56,7 @@ if [ -s "$hoodfilecopy" ] && isGatewayAvailable ;
>>> then
>>>  		uci set network.${iface}.proto='static'
>>>  		uci set network.${iface}.ip6addr='fe80::1/64'
>>>  		uci commit network
>>
>> wir haben überall -q nur hier nicht. Hat das einen Grund? Ist mir
>> hier
>> beim drüber schauen das erste mal aufgefallen. Eventuell können wir
>> das
>> gleich mit anpassen (falls es eine v2 bzw. ein nicht-RFC geben
>> sollte)
>> oder wegen mir auch in nen extra Patch.
> Vermutlich ja. Aber das ist vermutlich ein Teil, den Fabian in seinem
> Patchset verschiebt. Wenn ich das jetzt anpasse, gibts wieder Ärger
> beim Fabian. Also lieber erst ändern, wenn die beiden Patchsets durch
> sind. Sollten wir aber im Hinterkopf behalten.
> 
> Tim
> 
>>
>> mfg
>>
>> Christian
>>
>>> +		reload_config
>>>  		if ! wifiAddAP "$radio"
>>> "config.franken.freifunk.net" "$iface" "configap" "1"; then
>>>  			echo "Can't add Config interface on
>>> $radio."
>>>  			exit 1
>>> @@ -101,6 +102,7 @@ else
>>>  
>>>  			uci -q set "system.@system[0].hood="
>>>  			uci -q commit system
>>> +			reload_config
>>>  		
>>>  			sleep 30 # Wait for the config AP, which
>>> may be created at the same time as this script has started
>>>  
>>> @@ -127,6 +129,7 @@ else
>>>  					uci -q set
>>> network.configSta=interface
>>>  					uci -q set
>>> network.configSta.proto='static'
>>>  					uci -q commit network
>>> +					reload_config
>>>  				fi
>>>  			done
>>>  		
>>> @@ -232,6 +235,7 @@ if [ -s "$hoodfile" ]; then
>>>  		echo "Setting hood name: $hood"
>>>  		uci -q set "system.@system[0].hood=$hood"
>>>  		uci -q commit system
>>> +		reload_config
>>>  
>>>  		if ! wifiDelIface; then
>>>  			echo "Can't delete current wifi setup"
>>>
>>
Tim Niemeyer June 10, 2018, 10:07 a.m.
Am Sonntag, den 10.06.2018, 12:02 +0200 schrieb Christian Dresel:
> hi
> 
> On 10.06.2018 11:44, Tim Niemeyer wrote:
> > Am Sonntag, den 10.06.2018, 08:31 +0200 schrieb Christian Dresel:
> > > Hallo
> > > 
> > > ich werde nicht schlau was reload_config macht, kannst du das
> > > evtl.
> > > genauer erklären?
> > 
> > Am besten du schaust mal kurz die beiden Links an:
> > 
> > Hier wird erklärt, wieso das wichtig ist:
> > https://wiki.openwrt.org/inbox/procd-init-scripts#procd_triggers_on
> > _config_filenetwork_interface_changes
> > 
> > Hier ist die Funktion beschrieben:
> > https://github.com/openwrt-mirror/openwrt/blob/master/package/syste
> > m/procd/files/reload_config
> > 
> > Zusammenfassend:
> > Wenn ein procd-Init-Script angemeldet hat, dass es gerne bei
> > config-
> > Änderung benachrichtigt wird, dann wird das durch reload_config
> > erst
> > ausgelöst. Die Änderung der Dateien reicht nicht.
> > Im original OpenWRT mit LUCI kennt man das auch, weil es dort ein
> > Speichern und separat ein Übernehmen gibt.
> > 
> > Generell sollten wir mMn überall auf diesen Mechanismus setzen und
> > nirgends die Init-Scripte selber reloaden/restarten.
> 
> Kurzgefasst:
> 
> uci -q set "blabla="
> -> ändert es im RAM (nach reboot ist die Änderung futsch)
> 
> uci -q commit
> -> schreibt es auf die "Platte" (die Änderung steht auf der "Platte",
> ein Programm dahinter hat das aber u.U. nicht übernommen)
> 
> reload_config
> -> startet das dazugehörige Programm neu bzw. sagt ihm das es die
> config
> neu laden soll (oder wie auch immer...)
> 
> Beispiel DHCP Server:
> 
> uci set dhcp.mesh.start='10.50.138.128'
> jetzt ist im RAM mal festgehalten das ab diesen IP Bereich gestartet
> wird. dnsmasq weiß davon noch nix und ein reboot setzt es auch wieder
> zurück. Es bringt also erstmal gar nichts.

Ich bin mir nicht ganz sicher, was passiert, wenn man hier schon ein
reload_config einbaut. Vermutlich werden die Services dann neugeladen,
aber die Daten sind trotzdem nicht auf der Platte. Im Fall einer
Misskonfiguration könnte dies als "Regeschirm" dienen, denn nach einem
Reboot wäre alles wieder wie vorher.

> uci commit
> jetzt ist es zwar fest gespeichert, nach einem reboot würde es sogar
> übernommen werden (da die config neu eingelesen wird) und fest
> behalten
> werden. Aber dnsmasq weiß hier auch noch nix davon und verteilt
> weiterhin IPs so, wie es zuvor eingestellt war.
> 
> reload_config
> jetzt übernimmt auch der dnsmasq diese Änderung und fängt mit der
> neuen
> IP Range an -> Selber "Effekt" wie /etc/init.d/dnsmasq restart nur
> schöner?
Ja. Es setzt allerdings vorraus, dass der Dienst angemeldet hat, dass
er bei Änderungen (und auch welche Änderungen) neugestartet werden
möchte.

> Hab ich das so richtig verstanden?
Joar.

Tim

> 
> mfg
> 
> Christian
> 
> > 
> > 
> > >  Kleinigkeit noch Inline:
> > > 
> > > On 03.04.2018 21:27, Tim Niemeyer wrote:
> > > > Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> > > > ---
> > > > 
> > > >  src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4
> > > > ++++
> > > >  1 file changed, 4 insertions(+)
> > > > 
> > > > diff --git a/src/packages/fff/fff-
> > > > hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-
> > > > hoods/files/usr/sbin/configurehood
> > > > index a825eea..2672cfa 100755
> > > > --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > > > +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> > > > @@ -56,6 +56,7 @@ if [ -s "$hoodfilecopy" ] &&
> > > > isGatewayAvailable ;
> > > > then
> > > >  		uci set network.${iface}.proto='static'
> > > >  		uci set network.${iface}.ip6addr='fe80::1/64'
> > > >  		uci commit network
> > > 
> > > wir haben überall -q nur hier nicht. Hat das einen Grund? Ist mir
> > > hier
> > > beim drüber schauen das erste mal aufgefallen. Eventuell können
> > > wir
> > > das
> > > gleich mit anpassen (falls es eine v2 bzw. ein nicht-RFC geben
> > > sollte)
> > > oder wegen mir auch in nen extra Patch.
> > 
> > Vermutlich ja. Aber das ist vermutlich ein Teil, den Fabian in
> > seinem
> > Patchset verschiebt. Wenn ich das jetzt anpasse, gibts wieder Ärger
> > beim Fabian. Also lieber erst ändern, wenn die beiden Patchsets
> > durch
> > sind. Sollten wir aber im Hinterkopf behalten.
> > 
> > Tim
> > 
> > > 
> > > mfg
> > > 
> > > Christian
> > > 
> > > > +		reload_config
> > > >  		if ! wifiAddAP "$radio"
> > > > "config.franken.freifunk.net" "$iface" "configap" "1"; then
> > > >  			echo "Can't add Config interface on
> > > > $radio."
> > > >  			exit 1
> > > > @@ -101,6 +102,7 @@ else
> > > >  
> > > >  			uci -q set "system.@system[0].hood="
> > > >  			uci -q commit system
> > > > +			reload_config
> > > >  		
> > > >  			sleep 30 # Wait for the config AP,
> > > > which
> > > > may be created at the same time as this script has started
> > > >  
> > > > @@ -127,6 +129,7 @@ else
> > > >  					uci -q set
> > > > network.configSta=interface
> > > >  					uci -q set
> > > > network.configSta.proto='static'
> > > >  					uci -q commit network
> > > > +					reload_config
> > > >  				fi
> > > >  			done
> > > >  		
> > > > @@ -232,6 +235,7 @@ if [ -s "$hoodfile" ]; then
> > > >  		echo "Setting hood name: $hood"
> > > >  		uci -q set "system.@system[0].hood=$hood"
> > > >  		uci -q commit system
> > > > +		reload_config
> > > >  
> > > >  		if ! wifiDelIface; then
> > > >  			echo "Can't delete current wifi setup"
> > > > 
> 
>
Christian Dresel June 10, 2018, 10:12 a.m.
On 10.06.2018 12:07, Tim Niemeyer wrote:
> Am Sonntag, den 10.06.2018, 12:02 +0200 schrieb Christian Dresel:
>> hi
>>
>> On 10.06.2018 11:44, Tim Niemeyer wrote:
>>> Am Sonntag, den 10.06.2018, 08:31 +0200 schrieb Christian Dresel:
>>>> Hallo
>>>>
>>>> ich werde nicht schlau was reload_config macht, kannst du das
>>>> evtl.
>>>> genauer erklären?
>>>
>>> Am besten du schaust mal kurz die beiden Links an:
>>>
>>> Hier wird erklärt, wieso das wichtig ist:
>>> https://wiki.openwrt.org/inbox/procd-init-scripts#procd_triggers_on
>>> _config_filenetwork_interface_changes
>>>
>>> Hier ist die Funktion beschrieben:
>>> https://github.com/openwrt-mirror/openwrt/blob/master/package/syste
>>> m/procd/files/reload_config
>>>
>>> Zusammenfassend:
>>> Wenn ein procd-Init-Script angemeldet hat, dass es gerne bei
>>> config-
>>> Änderung benachrichtigt wird, dann wird das durch reload_config
>>> erst
>>> ausgelöst. Die Änderung der Dateien reicht nicht.
>>> Im original OpenWRT mit LUCI kennt man das auch, weil es dort ein
>>> Speichern und separat ein Übernehmen gibt.
>>>
>>> Generell sollten wir mMn überall auf diesen Mechanismus setzen und
>>> nirgends die Init-Scripte selber reloaden/restarten.
>>
>> Kurzgefasst:
>>
>> uci -q set "blabla="
>> -> ändert es im RAM (nach reboot ist die Änderung futsch)
>>
>> uci -q commit
>> -> schreibt es auf die "Platte" (die Änderung steht auf der "Platte",
>> ein Programm dahinter hat das aber u.U. nicht übernommen)
>>
>> reload_config
>> -> startet das dazugehörige Programm neu bzw. sagt ihm das es die
>> config
>> neu laden soll (oder wie auch immer...)
>>
>> Beispiel DHCP Server:
>>
>> uci set dhcp.mesh.start='10.50.138.128'
>> jetzt ist im RAM mal festgehalten das ab diesen IP Bereich gestartet
>> wird. dnsmasq weiß davon noch nix und ein reboot setzt es auch wieder
>> zurück. Es bringt also erstmal gar nichts.
> 
> Ich bin mir nicht ganz sicher, was passiert, wenn man hier schon ein
> reload_config einbaut. Vermutlich werden die Services dann neugeladen,
> aber die Daten sind trotzdem nicht auf der Platte. Im Fall einer
> Misskonfiguration könnte dies als "Regeschirm" dienen, denn nach einem
> Reboot wäre alles wieder wie vorher.

darüber hab ich tatsächlich beim schreiben auch nachgedacht und kam zu
den gleichen Schluss. Man kann es hier einbauen, config testen, wenn
alles gut noch ein uci commit drüber und fertig. Wenn es kracht und man
sich auf einmal wegen Missconfig selbst rausgesperrt hat, Stecker
ziehen, neu starten wieder alles wie zuvor. Ähnliches vorgehen verwendet
Fabian ja auch in seiner Gatewayfirmware (nur das er die Services
einzeln neu startet, /etc/init.d/bla restart wenn ich mich jetz tnicht
gerade gewaltig täusche)

> 
>> uci commit
>> jetzt ist es zwar fest gespeichert, nach einem reboot würde es sogar
>> übernommen werden (da die config neu eingelesen wird) und fest
>> behalten
>> werden. Aber dnsmasq weiß hier auch noch nix davon und verteilt
>> weiterhin IPs so, wie es zuvor eingestellt war.
>>
>> reload_config
>> jetzt übernimmt auch der dnsmasq diese Änderung und fängt mit der
>> neuen
>> IP Range an -> Selber "Effekt" wie /etc/init.d/dnsmasq restart nur
>> schöner?
> Ja. Es setzt allerdings vorraus, dass der Dienst angemeldet hat, dass
> er bei Änderungen (und auch welche Änderungen) neugestartet werden
> möchte.
> 
>> Hab ich das so richtig verstanden?
> Joar.

wollen wir das dann wirklich überall einbauen? Bei sowas wie

uci -q set "system.@system[0].hood="
uci -q commit system
+reload_config

macht es ja irgendwie absolut gar keinen Sinn oder?

mfg

Christian

> 
> Tim
> 
>>
>> mfg
>>
>> Christian
>>
>>>
>>>
>>>>  Kleinigkeit noch Inline:
>>>>
>>>> On 03.04.2018 21:27, Tim Niemeyer wrote:
>>>>> Signed-off-by: Tim Niemeyer <tim@tn-x.org>
>>>>> ---
>>>>>
>>>>>  src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4
>>>>> ++++
>>>>>  1 file changed, 4 insertions(+)
>>>>>
>>>>> diff --git a/src/packages/fff/fff-
>>>>> hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-
>>>>> hoods/files/usr/sbin/configurehood
>>>>> index a825eea..2672cfa 100755
>>>>> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
>>>>> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
>>>>> @@ -56,6 +56,7 @@ if [ -s "$hoodfilecopy" ] &&
>>>>> isGatewayAvailable ;
>>>>> then
>>>>>  		uci set network.${iface}.proto='static'
>>>>>  		uci set network.${iface}.ip6addr='fe80::1/64'
>>>>>  		uci commit network
>>>>
>>>> wir haben überall -q nur hier nicht. Hat das einen Grund? Ist mir
>>>> hier
>>>> beim drüber schauen das erste mal aufgefallen. Eventuell können
>>>> wir
>>>> das
>>>> gleich mit anpassen (falls es eine v2 bzw. ein nicht-RFC geben
>>>> sollte)
>>>> oder wegen mir auch in nen extra Patch.
>>>
>>> Vermutlich ja. Aber das ist vermutlich ein Teil, den Fabian in
>>> seinem
>>> Patchset verschiebt. Wenn ich das jetzt anpasse, gibts wieder Ärger
>>> beim Fabian. Also lieber erst ändern, wenn die beiden Patchsets
>>> durch
>>> sind. Sollten wir aber im Hinterkopf behalten.
>>>
>>> Tim
>>>
>>>>
>>>> mfg
>>>>
>>>> Christian
>>>>
>>>>> +		reload_config
>>>>>  		if ! wifiAddAP "$radio"
>>>>> "config.franken.freifunk.net" "$iface" "configap" "1"; then
>>>>>  			echo "Can't add Config interface on
>>>>> $radio."
>>>>>  			exit 1
>>>>> @@ -101,6 +102,7 @@ else
>>>>>  
>>>>>  			uci -q set "system.@system[0].hood="
>>>>>  			uci -q commit system
>>>>> +			reload_config
>>>>>  		
>>>>>  			sleep 30 # Wait for the config AP,
>>>>> which
>>>>> may be created at the same time as this script has started
>>>>>  
>>>>> @@ -127,6 +129,7 @@ else
>>>>>  					uci -q set
>>>>> network.configSta=interface
>>>>>  					uci -q set
>>>>> network.configSta.proto='static'
>>>>>  					uci -q commit network
>>>>> +					reload_config
>>>>>  				fi
>>>>>  			done
>>>>>  		
>>>>> @@ -232,6 +235,7 @@ if [ -s "$hoodfile" ]; then
>>>>>  		echo "Setting hood name: $hood"
>>>>>  		uci -q set "system.@system[0].hood=$hood"
>>>>>  		uci -q commit system
>>>>> +		reload_config
>>>>>  
>>>>>  		if ! wifiDelIface; then
>>>>>  			echo "Can't delete current wifi setup"
>>>>>
>>
Tim Niemeyer June 10, 2018, 10:17 a.m.
Am Sonntag, den 10.06.2018, 12:12 +0200 schrieb Christian Dresel:
> 
> On 10.06.2018 12:07, Tim Niemeyer wrote:
> > Am Sonntag, den 10.06.2018, 12:02 +0200 schrieb Christian Dresel:
> > > hi
> > > 
> > > On 10.06.2018 11:44, Tim Niemeyer wrote:
> > > > Am Sonntag, den 10.06.2018, 08:31 +0200 schrieb Christian
> > > > Dresel:
> > > > > Hallo
> > > > > 
> > > > > ich werde nicht schlau was reload_config macht, kannst du das
> > > > > evtl.
> > > > > genauer erklären?
> > > > 
> > > > Am besten du schaust mal kurz die beiden Links an:
> > > > 
> > > > Hier wird erklärt, wieso das wichtig ist:
> > > > https://wiki.openwrt.org/inbox/procd-init-scripts#procd_trigger
> > > > s_on
> > > > _config_filenetwork_interface_changes
> > > > 
> > > > Hier ist die Funktion beschrieben:
> > > > https://github.com/openwrt-mirror/openwrt/blob/master/package/s
> > > > yste
> > > > m/procd/files/reload_config
> > > > 
> > > > Zusammenfassend:
> > > > Wenn ein procd-Init-Script angemeldet hat, dass es gerne bei
> > > > config-
> > > > Änderung benachrichtigt wird, dann wird das durch reload_config
> > > > erst
> > > > ausgelöst. Die Änderung der Dateien reicht nicht.
> > > > Im original OpenWRT mit LUCI kennt man das auch, weil es dort
> > > > ein
> > > > Speichern und separat ein Übernehmen gibt.
> > > > 
> > > > Generell sollten wir mMn überall auf diesen Mechanismus setzen
> > > > und
> > > > nirgends die Init-Scripte selber reloaden/restarten.
> > > 
> > > Kurzgefasst:
> > > 
> > > uci -q set "blabla="
> > > -> ändert es im RAM (nach reboot ist die Änderung futsch)
> > > 
> > > uci -q commit
> > > -> schreibt es auf die "Platte" (die Änderung steht auf der
> > > "Platte",
> > > ein Programm dahinter hat das aber u.U. nicht übernommen)
> > > 
> > > reload_config
> > > -> startet das dazugehörige Programm neu bzw. sagt ihm das es die
> > > config
> > > neu laden soll (oder wie auch immer...)
> > > 
> > > Beispiel DHCP Server:
> > > 
> > > uci set dhcp.mesh.start='10.50.138.128'
> > > jetzt ist im RAM mal festgehalten das ab diesen IP Bereich
> > > gestartet
> > > wird. dnsmasq weiß davon noch nix und ein reboot setzt es auch
> > > wieder
> > > zurück. Es bringt also erstmal gar nichts.
> > 
> > Ich bin mir nicht ganz sicher, was passiert, wenn man hier schon
> > ein
> > reload_config einbaut. Vermutlich werden die Services dann
> > neugeladen,
> > aber die Daten sind trotzdem nicht auf der Platte. Im Fall einer
> > Misskonfiguration könnte dies als "Regeschirm" dienen, denn nach
> > einem
> > Reboot wäre alles wieder wie vorher.
> 
> darüber hab ich tatsächlich beim schreiben auch nachgedacht und kam
> zu
> den gleichen Schluss. Man kann es hier einbauen, config testen, wenn
> alles gut noch ein uci commit drüber und fertig. Wenn es kracht und
> man
> sich auf einmal wegen Missconfig selbst rausgesperrt hat, Stecker
> ziehen, neu starten wieder alles wie zuvor. Ähnliches vorgehen
> verwendet
> Fabian ja auch in seiner Gatewayfirmware (nur das er die Services
> einzeln neu startet, /etc/init.d/bla restart wenn ich mich jetz
> tnicht
> gerade gewaltig täusche)
> 
> > 
> > > uci commit
> > > jetzt ist es zwar fest gespeichert, nach einem reboot würde es
> > > sogar
> > > übernommen werden (da die config neu eingelesen wird) und fest
> > > behalten
> > > werden. Aber dnsmasq weiß hier auch noch nix davon und verteilt
> > > weiterhin IPs so, wie es zuvor eingestellt war.
> > > 
> > > reload_config
> > > jetzt übernimmt auch der dnsmasq diese Änderung und fängt mit der
> > > neuen
> > > IP Range an -> Selber "Effekt" wie /etc/init.d/dnsmasq restart
> > > nur
> > > schöner?
> > 
> > Ja. Es setzt allerdings vorraus, dass der Dienst angemeldet hat,
> > dass
> > er bei Änderungen (und auch welche Änderungen) neugestartet werden
> > möchte.
> > 
> > > Hab ich das so richtig verstanden?
> > 
> > Joar.
> 
> wollen wir das dann wirklich überall einbauen? Bei sowas wie
> 
> uci -q set "system.@system[0].hood="
> uci -q commit system
> +reload_config
> 
> macht es ja irgendwie absolut gar keinen Sinn oder?
Doch, machts. Wenn z.B. ein Dienst von der Hood-Information abhängt,
dann müsste dieser neugestartet werden.

Tim

> 
> mfg
> 
> Christian
> 
> > 
> > Tim
> > 
> > > 
> > > mfg
> > > 
> > > Christian
> > > 
> > > > 
> > > > 
> > > > >  Kleinigkeit noch Inline:
> > > > > 
> > > > > On 03.04.2018 21:27, Tim Niemeyer wrote:
> > > > > > Signed-off-by: Tim Niemeyer <tim@tn-x.org>
> > > > > > ---
> > > > > > 
> > > > > >  src/packages/fff/fff-hoods/files/usr/sbin/configurehood |
> > > > > > 4
> > > > > > ++++
> > > > > >  1 file changed, 4 insertions(+)
> > > > > > 
> > > > > > diff --git a/src/packages/fff/fff-
> > > > > > hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-
> > > > > > hoods/files/usr/sbin/configurehood
> > > > > > index a825eea..2672cfa 100755
> > > > > > --- a/src/packages/fff/fff-
> > > > > > hoods/files/usr/sbin/configurehood
> > > > > > +++ b/src/packages/fff/fff-
> > > > > > hoods/files/usr/sbin/configurehood
> > > > > > @@ -56,6 +56,7 @@ if [ -s "$hoodfilecopy" ] &&
> > > > > > isGatewayAvailable ;
> > > > > > then
> > > > > >  		uci set network.${iface}.proto='static'
> > > > > >  		uci set
> > > > > > network.${iface}.ip6addr='fe80::1/64'
> > > > > >  		uci commit network
> > > > > 
> > > > > wir haben überall -q nur hier nicht. Hat das einen Grund? Ist
> > > > > mir
> > > > > hier
> > > > > beim drüber schauen das erste mal aufgefallen. Eventuell
> > > > > können
> > > > > wir
> > > > > das
> > > > > gleich mit anpassen (falls es eine v2 bzw. ein nicht-RFC
> > > > > geben
> > > > > sollte)
> > > > > oder wegen mir auch in nen extra Patch.
> > > > 
> > > > Vermutlich ja. Aber das ist vermutlich ein Teil, den Fabian in
> > > > seinem
> > > > Patchset verschiebt. Wenn ich das jetzt anpasse, gibts wieder
> > > > Ärger
> > > > beim Fabian. Also lieber erst ändern, wenn die beiden Patchsets
> > > > durch
> > > > sind. Sollten wir aber im Hinterkopf behalten.
> > > > 
> > > > Tim
> > > > 
> > > > > 
> > > > > mfg
> > > > > 
> > > > > Christian
> > > > > 
> > > > > > +		reload_config
> > > > > >  		if ! wifiAddAP "$radio"
> > > > > > "config.franken.freifunk.net" "$iface" "configap" "1"; then
> > > > > >  			echo "Can't add Config interface
> > > > > > on
> > > > > > $radio."
> > > > > >  			exit 1
> > > > > > @@ -101,6 +102,7 @@ else
> > > > > >  
> > > > > >  			uci -q set "system.@system[0].hood
> > > > > > ="
> > > > > >  			uci -q commit system
> > > > > > +			reload_config
> > > > > >  		
> > > > > >  			sleep 30 # Wait for the config AP,
> > > > > > which
> > > > > > may be created at the same time as this script has started
> > > > > >  
> > > > > > @@ -127,6 +129,7 @@ else
> > > > > >  					uci -q set
> > > > > > network.configSta=interface
> > > > > >  					uci -q set
> > > > > > network.configSta.proto='static'
> > > > > >  					uci -q commit
> > > > > > network
> > > > > > +					reload_config
> > > > > >  				fi
> > > > > >  			done
> > > > > >  		
> > > > > > @@ -232,6 +235,7 @@ if [ -s "$hoodfile" ]; then
> > > > > >  		echo "Setting hood name: $hood"
> > > > > >  		uci -q set "system.@system[0].hood=$hood"
> > > > > >  		uci -q commit system
> > > > > > +		reload_config
> > > > > >  
> > > > > >  		if ! wifiDelIface; then
> > > > > >  			echo "Can't delete current wifi
> > > > > > setup"
> > > > > > 
> 
>
Christian Dresel June 10, 2018, 10:18 a.m.
>>>
>>> Ja. Es setzt allerdings vorraus, dass der Dienst angemeldet hat,
>>> dass
>>> er bei Änderungen (und auch welche Änderungen) neugestartet werden
>>> möchte.
>>>
>>>> Hab ich das so richtig verstanden?
>>>
>>> Joar.
>>
>> wollen wir das dann wirklich überall einbauen? Bei sowas wie
>>
>> uci -q set "system.@system[0].hood="
>> uci -q commit system
>> +reload_config
>>
>> macht es ja irgendwie absolut gar keinen Sinn oder?
> Doch, machts. Wenn z.B. ein Dienst von der Hood-Information abhängt,
> dann müsste dieser neugestartet werden.
> 
> Tim

Gut stimmt, da kann ich dir dann nur noch recht geben ;)

Reviewed-by: Christian Dresel <fff@chrisi01.de>

mfg

Christian