Message ID | 20180403192749.28637-4-tim@tn-x.org |
---|---|
State | Superseded |
Headers | show |
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"
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
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 > >
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" >
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" > > > >
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" >>> >>
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" > > > > > >
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" >>>>> >>
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" > > > > > > > >
>>> >>> 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
Signed-off-by: Tim Niemeyer <tim@tn-x.org> --- src/packages/fff/fff-hoods/files/usr/sbin/configurehood | 4 ++++ 1 file changed, 4 insertions(+)