[PATCH v2 00/10] Reorganize network initialization

Adrian Schmutzler mail at adrianschmutzler.de
Mo Apr 15 14:46:50 CEST 2019


Nachtrag:

Um das richtig einzuordnen: Das config-file ist /etc/config/network, und meine uci-default Skripte tun damit was.

Die Skripte mit ROUTERMAC, port setup usw. tun ja nichts anderes als die config zu initialisieren. Bisher hatten wir dagegen zwei verschiedene, parallele config-Files (/etc/config/network und network.*). Mit network.config sogar drei ...
Ich finde das auch konzeptionell stimmig zumindest für die Switch-Geräte. Bei den One-Ports kann man sich dann streiten. Da fassen wir halt mehrere uci config-Parameter zu einem Super-Parameter zusammen. Das könnte man dann alternativ auch mit einer Option z.B. in /etc/config/fff lösen o.ä. Aber ich halte es für nicht zielführend, dann auch wieder Zeug für AR150 und die beiden CPEs einzuführen.

Unabhängig davon kann man natürlich einen ganz anderen Weg gehen und sich in Richtung von Tims sysupgrade-Vorschlag orientieren:
https://pw.freifunk-franken.de/patch/1007/

Man könnte z.B. einfach(er) die /etc/config/network in sysupgrade.conf übernehmen, dann wird diese wirklich nur ganz am Anfang einmal (von uns) generiert und danach bleiben die Änderungen des Nutzers einfach beim Upgrade erhalten (halt mit [ ! -s /etc/config/network ] in den setup-Dateien). Dann kann man den ganzen Quatsch mit dem firstboot-Userskript auch weglassen und muss sich beim Start nicht um manuelle Settings kümmern.
Insbesondere bei der /etc/config/network rechne ich auch nicht damit, dass wir hier mit einer neuen Firmware Änderungen einbauen. (Glaube auch nicht, dass es das schon mal gab). Und wenn, kann man wie bei OpenWrt für ganz wenige Fälle auch ein Migrationsskript mitliefern.
Das einzige Problem ist das sysctl.d Zeugs für WAN, das fliegt beim Upgrade weg. Das würde ich dann aber halt einfach trotzdem beim Boot neu setzen, das WAN-If ändert sich ja nicht.
Ich weiß nur noch nicht, ob ich diese ganze Idee so gut finde, weil ich es eigentlich praktisch finde, dass die config-Files beim sysupgrade neu geschrieben wird.

Beste Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of
> robert
> Sent: Sonntag, 14. April 2019 23:39
> To: franken-dev at freifunk.net
> Subject: Re: [PATCH v2 00/10] Reorganize network initialization
> 
> Hi Adrian,
> 
> Hut ab, dass du dich an den Start ran gewagt hast!
> 
> configurenetwork los zu werden ist schon mal klasse. Die Aufteilung in
> einzelne uci-defaults gefaellt mir auch recht gut. Ob ich die vielen
> Konfigdaten in Skripten gut finde, hm. Das alte Unix Prinzip,
> Konfiguration in config-Dateien und Skripte/Programme tun damit was, hat
> schon seinen Sinn. Bei den uci-defaults fuehlt sich das nicht ganz so
> schlimm an. Die verschwinden ja auch nach dem ersten Boot. Aber da
> hinten in /lib/functions/... die portorder zu konfigurieren, in einem
> Skript, find ich nicht so schoen.
> 
> Ich muss das alles noch etwas wirken lassen und die Tage noch mal drüber
> schauen. Ich wollte dir nur schon mal meine ersten Gedanken dazu rüber
> werfen.
> 
> Grüße Robert
> 
> Am 14.04.19 um 01:25 schrieb Adrian Schmutzler:
> > V2:
> >
> > This is a refined patchset with several updates:
> > - Removed all restart commands and similar, since at uci-defaults
> >   boot stage this is not necessary (which is actually a big gain)
> > - Various tidy-up stuff
> > - Added old patch for removing wifi initial setup
> > - Added support patch for Nano M second port
> > - Various fixes
> > - Tested everything
> >
> > This has been tested (based on my firmware) on:
> > - Archer C7 v5
> > - Archer C60 v1
> > - CPE210 v2 (=one port)
> > - TL-WR841N v10
> >
> > I consider it "working" at the moment.
> >
> > I will remove my other older configurenetwork patches (and the
> > wifi removal patch) from the patchwork.
> >
> > V1:
> >
> > This is an attempt to get rid of configurenetwork.
> >
> > Where I first tried to get closer to OpenWrt's network setup,
> > which did not work as expected, I found that we can get rid
> > of the nasty configurenetwork script ...
> >
> > History lesson:
> > The necessity to run configurenetwork at each boot is caused by
> > the network.mode file, which was supposed to be changed by a
> > user if he or she wanted to adjust port modes. The rerun on
> > each start was later tackled by the FORCEPARSE parameter, which
> > prevented a rerun on every restart, but made everything more
> > complicated in configurenetwork.
> > The network.config, introduced to make port setup for switch-
> > based devices upgradesafe, then again increased complexity.
> >
> > Problem description:
> > The high complexity of configurenetwork is caused by its design
> > to automatically act based on PARAMETERS defined in the
> > network.* files. So, a multitude of devices has to be mangled
> > in a set of common parameters, from which then everything should
> > be set up correctly. Still, everything has to be performed from
> > the same script.
> >
> > Solution:
> > 1. OpenWrt has a similar problem with the LED and network setup.
> > What they did was splitting the problem into subtopics (LEDS,
> > network, MAC address, etc.) and then deal with them in a
> > switch-case/select-case statement. This patchset leverages the
> > same idea: Instead of specifying parameters, we will have
> > switch-case scripts for every "topic". There, we do not define
> > parameters, but rather call functions: This allows to deal with
> > individual devices more easily, as we can just edit code there
> > or in worst case write an individual solution.
> > On the other hand, this will allow for a lot of grouping of
> > similar devices.
> > 2. We give up the network.mode and network.config files. Most
> > of the network configuration is independent of the port setup:
> > There is no need to redo it. Just use uci-default scripts.
> > To account for manual changes of the porst, just rely on
> > functions and commands instead of predefined parameters. If one
> > wants to change ports: Do so via uci. If one wants it
> > upgrade-safe: Write the commmands into an upgradesafe script.
> > With the port change problem delegated to the user, we can
> > do our setup just at first boot.
> >
> > While at it:
> > - Do everything earlier: Setup of network/wifi will be done
> >   earlier in the boot process, as also suggested by others.
> > - Add the CPUPORT, as this follows the same script layout
> > - Also apply the same logic to the antenna gain and rssiled setup
> >
> > Outlook:
> > I have tested a prototype of this quickly on my Archer C7v5,
> > so it is generally working. If there is positive response, this
> > will obviously have to see some extensive testing.
> >
> > HF
> >
> > Adrian Schmutzler (10):
> >   fff-boardname: Start uci-default script earlier
> >   fff-batman-adv: Set up bat0 earlier
> >   fff-network: Reorganize network initialization
> >   fff-network: Remove obsolete network.* files
> >   fff-config: Split uci-defaults script into early and late part
> >   fff-network/-support/-web: Nice setup of special-port devices
> >   fff-wireless: No initial setup of dummy interfaces
> >   fff-network: Provide script with CPUPORT
> >   fff-wireless: Move antenna gain and rssileds setup to scripts
> >   Add support for second port of Nanostation M
> >
> >  bsp/default/root_file_system/etc/rc.local          |   4 -
> >  src/packages/fff/fff-batman-adv/Makefile           |   3 +-
> >  .../{93-fff-batman-adv => 21-fff-batman-adv}       |   0
> >  src/packages/fff/fff-boardname/Makefile            |   3 +-
> >  .../{50-fff-boardname => 15-fff-boardname}         |   0
> >  src/packages/fff/fff-config/Makefile               |   3 +-
> >  .../fff-config/files/etc/uci-defaults/10-setup-fff |  17 ++
> >  .../files/etc/uci-defaults/98-configure-fff        |  21 +-
> >  src/packages/fff/fff-network/Makefile              |   4 +-
> >  .../fff/fff-network/ar71xx/network.archer-c25-v1   |  10 -
> >  .../fff/fff-network/ar71xx/network.archer-c60-v1   |   9 -
> >  .../fff/fff-network/ar71xx/network.archer-c7-v2    |   8 -
> >  src/packages/fff/fff-network/ar71xx/network.cpe210 |  20 --
> >  .../fff/fff-network/ar71xx/network.cpe210-v2       |   7 -
> >  .../fff/fff-network/ar71xx/network.cpe210-v3       |   7 -
> >  src/packages/fff/fff-network/ar71xx/network.cpe510 |  20 --
> >  .../fff/fff-network/ar71xx/network.gl-ar150        |  16 --
> >  src/packages/fff/fff-network/ar71xx/network.mode   |  30 ---
> >  .../fff/fff-network/ar71xx/network.tl-mr3020-v1    |  11 -
> >  .../fff/fff-network/ar71xx/network.tl-wa850re-v1   |  10 -
> >  .../fff/fff-network/ar71xx/network.tl-wa860re-v1   |  10 -
> >  .../fff/fff-network/ar71xx/network.tl-wa901nd-v2   |  10 -
> >  .../fff/fff-network/ar71xx/network.tl-wdr3500-v1   |   7 -
> >  .../fff/fff-network/ar71xx/network.tl-wdr3600-v1   |   7 -
> >  .../fff/fff-network/ar71xx/network.tl-wdr4300-v1   |   7 -
> >  .../fff/fff-network/ar71xx/network.tl-wdr4310-v1   |   7 -
> >  .../fff/fff-network/ar71xx/network.tl-wr1043n-v5   |  17 --
> >  .../fff/fff-network/ar71xx/network.tl-wr1043nd-v1  |  13 -
> >  .../fff/fff-network/ar71xx/network.tl-wr1043nd-v2  |   7 -
> >  .../fff/fff-network/ar71xx/network.tl-wr1043nd-v3  |   7 -
> >  .../fff/fff-network/ar71xx/network.tl-wr1043nd-v4  |  17 --
> >  .../fff/fff-network/ar71xx/network.tl-wr740n-v4    |   9 -
> >  .../fff/fff-network/ar71xx/network.tl-wr741nd-v2   |   9 -
> >  .../fff/fff-network/ar71xx/network.tl-wr741nd-v4   |   9 -
> >  .../fff/fff-network/ar71xx/network.tl-wr841-v10    |  10 -
> >  .../fff/fff-network/ar71xx/network.tl-wr841-v11    |  10 -
> >  .../fff/fff-network/ar71xx/network.tl-wr841-v12    |  10 -
> >  .../fff/fff-network/ar71xx/network.tl-wr841-v7     |   8 -
> >  .../fff/fff-network/ar71xx/network.tl-wr841-v8     |  10 -
> >  .../fff/fff-network/ar71xx/network.tl-wr841-v9     |   8 -
> >  .../fff/fff-network/ar71xx/network.tl-wr842n-v2    |   8 -
> >  .../fff/fff-network/ar71xx/network.ubnt-bullet-m   |  10 -
> >  .../fff/fff-network/ar71xx/network.ubnt-loco-m     |  10 -
> >  .../fff/fff-network/ar71xx/network.ubnt-loco-m-xw  |  10 -
> >  .../fff/fff-network/ar71xx/network.ubnt-nano-m     |  10 -
> >  .../fff/fff-network/ar71xx/network.ubnt-pico-m     |  10 -
> >  .../fff/fff-network/ar71xx/network.ubnt-power-m-xw |  10 -
> >  .../fff/fff-network/ar71xx/network.ubnt-unifi      |  10 -
> >  .../fff-network/ar71xx/network.ubnt-unifiac-lite   |  13 -
> >  .../files/etc/uci-defaults/22a-config-routermac    |  55 +++++
> >  .../files/etc/uci-defaults/22b-config-ports        |  96 ++++++++
> >  .../files/etc/uci-defaults/22c-config-ethmesh      |  75 ++++++
> >  .../files/etc/uci-defaults/23-config-ipaddr        |  31 +++
> >  .../fff-network/files/lib/functions/fff/cpuport    |  34 +++
> >  .../files/lib/functions/fff/networksetup           | 196 +++++++++++++++
> >  .../fff-network/files/lib/functions/fff/portorder  |  31 +++
> >  .../fff-network/files/usr/sbin/configurenetwork    | 263 ---------------------
> >  .../fff/fff-network/files/usr/sbin/set2ndport      |  30 +++
> >  .../fff/fff-network/files/usr/sbin/setcpev1        |  46 ++++
> >  .../fff/fff-network/files/usr/sbin/setoneport      |  21 ++
> >  .../fff/fff-network/files/usr/sbin/settwoeth       |  26 ++
> >  .../fff/fff-network/mpc85xx/network.tl-wdr4900-v1  |  13 -
> >  src/packages/fff/fff-support/Makefile              |   2 +-
> >  .../files/etc/uci-defaults/90-firstbootfff         |  13 +
> >  .../fff/fff-support/files/usr/sbin/show_info       |  13 +-
> >  src/packages/fff/fff-sysupgrade/Makefile           |   3 +-
> >  .../files/etc/uci-defaults/99-fff-sysupgrade       |   3 +-
> >  src/packages/fff/fff-web/Makefile                  |   2 +-
> >  .../fff/fff-web/files/www/ssl/cgi-bin/ports.html   |  78 +++---
> >  src/packages/fff/fff-wireless/Makefile             |   3 +-
> >  .../{60-fff-wireless => 20a-fff-wireless}          |  10 -
> >  .../files/etc/uci-defaults/20b-config-wireless     |  52 ++++
> >  .../files/etc/uci-defaults/62-config-wireless      |   9 -
> >  .../fff/fff-wireless/files/etc/wifi.cpe210-v2      |   2 -
> >  .../fff/fff-wireless/files/etc/wifi.cpe210-v3      |   2 -
> >  .../fff/fff-wireless/files/etc/wifi.tl-wr1043nd-v1 |   2 -
> >  .../fff/fff-wireless/files/etc/wifi.ubnt-loco-m    |   2 -
> >  .../fff/fff-wireless/files/etc/wifi.ubnt-loco-m-xw |   2 -
> >  .../fff/fff-wireless/files/etc/wifi.ubnt-nano-m    |   2 -
> >  .../fff/fff-wireless/files/etc/wifi.ubnt-pico-m    |   2 -
> >  .../fff-wireless/files/etc/wifi.ubnt-power-m-xw    |   2 -
> >  .../fff/fff-wireless/files/etc/wifi.ubnt-unifi     |   3 -
> >  .../fff-wireless/files/etc/wifi.ubnt-unifiac-lite  |   3 -
> >  83 files changed, 778 insertions(+), 835 deletions(-)
> >  rename src/packages/fff/fff-batman-adv/files/etc/uci-defaults/{93-fff-
> batman-adv => 21-fff-batman-adv} (100%)
> >  rename src/packages/fff/fff-boardname/files/etc/uci-defaults/{50-fff-
> boardname => 15-fff-boardname} (100%)
> >  create mode 100644 src/packages/fff/fff-config/files/etc/uci-defaults/10-
> setup-fff
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.archer-
> c25-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.archer-
> c60-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.archer-c7-
> v2
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.cpe210
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.cpe210-v2
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.cpe210-v3
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.cpe510
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.gl-ar150
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.mode
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> mr3020-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wa850re-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wa860re-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wa901nd-v2
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wdr3500-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wdr3600-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wdr4300-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wdr4310-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr1043n-v5
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr1043nd-v1
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr1043nd-v2
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr1043nd-v3
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr1043nd-v4
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr740n-v4
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr741nd-v2
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr741nd-v4
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-wr841-
> v10
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-wr841-
> v11
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-wr841-
> v12
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-wr841-
> v7
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-wr841-
> v8
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-wr841-
> v9
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.tl-
> wr842n-v2
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.ubnt-
> bullet-m
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.ubnt-
> loco-m
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.ubnt-
> loco-m-xw
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.ubnt-
> nano-m
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.ubnt-
> pico-m
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.ubnt-
> power-m-xw
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> >  delete mode 100644 src/packages/fff/fff-network/ar71xx/network.ubnt-
> unifiac-lite
> >  create mode 100644 src/packages/fff/fff-network/files/etc/uci-defaults/22a-
> config-routermac
> >  create mode 100644 src/packages/fff/fff-network/files/etc/uci-defaults/22b-
> config-ports
> >  create mode 100644 src/packages/fff/fff-network/files/etc/uci-defaults/22c-
> config-ethmesh
> >  create mode 100644 src/packages/fff/fff-network/files/etc/uci-defaults/23-
> config-ipaddr
> >  create mode 100644 src/packages/fff/fff-
> network/files/lib/functions/fff/cpuport
> >  create mode 100644 src/packages/fff/fff-
> network/files/lib/functions/fff/networksetup
> >  create mode 100644 src/packages/fff/fff-
> network/files/lib/functions/fff/portorder
> >  delete mode 100755 src/packages/fff/fff-
> network/files/usr/sbin/configurenetwork
> >  create mode 100755 src/packages/fff/fff-network/files/usr/sbin/set2ndport
> >  create mode 100755 src/packages/fff/fff-network/files/usr/sbin/setcpev1
> >  create mode 100755 src/packages/fff/fff-network/files/usr/sbin/setoneport
> >  create mode 100755 src/packages/fff/fff-network/files/usr/sbin/settwoeth
> >  delete mode 100644 src/packages/fff/fff-network/mpc85xx/network.tl-
> wdr4900-v1
> >  create mode 100644 src/packages/fff/fff-support/files/etc/uci-defaults/90-
> firstbootfff
> >  rename src/packages/fff/fff-wireless/files/etc/uci-defaults/{60-fff-wireless
> => 20a-fff-wireless} (66%)
> >  create mode 100644 src/packages/fff/fff-wireless/files/etc/uci-defaults/20b-
> config-wireless
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/uci-defaults/62-
> config-wireless
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.cpe210-v2
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.cpe210-v3
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.tl-wr1043nd-
> v1
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.ubnt-loco-m
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.ubnt-loco-m-
> xw
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.ubnt-nano-m
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.ubnt-pico-m
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.ubnt-power-
> m-xw
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.ubnt-unifi
> >  delete mode 100644 src/packages/fff/fff-wireless/files/etc/wifi.ubnt-unifiac-
> lite
> >
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 834 bytes
Beschreibung: nicht verfügbar
URL         : <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190415/4f506083/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev