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

Christian Dresel fff at chrisi01.de
So Jun 10 12:02:07 CEST 2018


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 at 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. at 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. at system[0].hood=$hood"
>>>  		uci -q commit system
>>> +		reload_config
>>>  
>>>  		if ! wifiDelIface; then
>>>  			echo "Can't delete current wifi setup"
>>>
>>

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20180610/6adc60f2/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev