-
Notifications
You must be signed in to change notification settings - Fork 326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Regenerate network and system UCI configs on every reconfigure, switch to role-based interface configuration #2372
Conversation
This kills the loopback interfacce |
Oops, fixed. |
Proposal for new site.conf settings for default interface assignment, superseding interfaces = {
lan = {
default_roles = { 'client' },
},
wan = {
default_roles = { 'uplink', 'mesh' },
},
single = {
default_roles = { 'uplink', 'mesh' },
},
},
|
Migration of Mesh-on-WAN/LAN setting from the old configuration is implemented now. I've also added a simple migration for single -> WAN and vice-versa to account for added and removed interfaces. |
096478e
to
afe399f
Compare
http://lilienstra-e.n.ffh.zone/ runs the current version of the PR. Wireless mesh is disabled as it has been before the update. https://hannover.freifunk.net/karte/#/en/map/b44bd6202778 This appears not to break a device that has nothing to migrate, which is nice. |
The PR description now contains a list of things to test. I have two devices for tests that actually need migration of interface names (a TP-LINK CPE510 v1 and a D-Link DIR-860L), but I don't think I have a single-interface device like that. Might be sufficient to test with x86 VMs, as I have also pushed a small change that should handle migration of the Mesh-on-LAN/WAN flag more correctly for single-interface devices. |
Strange but I can confirm it is fixed now. |
I noticed a new problem. When using this branch I'm not able to change the hostname via the config-mode but pretty-hostname on the shell works. I did not notice any other options which are not saved. I tried to reproduce the problem with the master branch but there it is working fine. EDIT: Never mind! I just noticed the conversation on IRC regarding the same problem. Can confirm it is fixed. |
Starting a build for the CPE210 now, @belzebub40k sorry I effectively put the hostname-discussion in the wrong PR. |
Do not write files when the content is unchanged. Avoids a few unnecessary filesystem writes when resetting ifname sysconfigs on each upgrade.
The new configuration generates sections iface_single/lan/wan in /etc/config/gluon. These sections usually refer to a sysconfig-controlled interface list, but adding custom sections with verbatim interfaces names is also possible. Each interface section contains a list of roles. The supported roles are 'client', 'uplink' and 'mesh'. Multiple roles can be configured on the same interface (for example the old 'mesh_on_wan' setting would become 'uplink'+'mesh'). 'client' is subsumed by any other role configured on the same interface ('client'+'mesh' is equivalent to 'mesh'). This property is important, as it allows the Wired Mesh settings in gluon-web-network to simply add and remove the mesh role without having to care what other roles are set - so in the default setup, this would switch between 'client' and 'client'+'mesh' for the LAN interface. By default, the WAN interface has role 'uplink' and the LAN interface 'client'; if only a single interface exists, the roles from the WAN interface are used by default. The default for each of the three interfaces (WAN/LAN/single) can be changed separated in site.conf, superseding the old mesh_on_wan, mesh_on_lan and single_as_lan settings.
With the new role-based interface configuration, it would be better to rename the wan/wan6 interfaces to uplink/uplink6, but that would cause unnecessary churn for the firewall configuration, so it is left for a later update. As all interfaces with the 'uplink' role are in the br-wan bridge, it is not possible to assign these to the 'mesh' role independently - instead, br-wan is added as a mesh interface as soon as a single interface has both the 'uplink' and 'mesh' roles. The UCI section for this configuration is now called 'mesh_uplink' instead of 'mesh_wan'. For all interfaces that have the 'mesh', but not the 'uplink' role a second configuration 'mesh_other' is created. If there is more than one such interface, all these interfaces are bridged as well (creating a bridge 'br-mesh_other'). This replaces the 'mesh_lan' section with its optional 'br-mesh_lan' bridge, but can also include interfaces that were not considered "LAN" when interfaces roles are modified (via site.conf or manually).
… introduce single_ifname Allow interface names to change on updates to handle hwconfig -> DSA and similar migrations. On devices with only a single interface, a sysconfig single_ifname is created instead of wan_ifname or lan_ifname to allow separate configuration in site.conf.
A section can be marked as preseved by setting the gluon_preserve option to 1. In addition the following conditions must hold: - The preserved section must not already exist after OpenWrt's and Gluons setup scripts run. Modifying existing sections is currently unsupported. - Preserved sections must be named, so it can be detected whether a section conflicts with a preexisting one.
Rebased and unblocked again. |
What is the current state here? How are we going to proceed? |
From my side this is ready to merge. |
Thanks! |
This PR is now based on #2382 (therefore blocked)TODO:
Preserve manually added sections if they have a 'gluon_preserve' marker optionMigrate old configuration to role-based settingsMuch more testingDocumentationBlocked: Rebase after gluon-config-mode-core: discard gluon-reconfigure output #2395To test:
single_as_lan = true