model:ContainerField - exclude volatile fields in isFieldChanged()
Volatile fields are usually initialized during model setup, but when untouched (no setter being called), they are marked changed.
Found this one by accident while looking at https://github.com/opnsense/core/issues/11048 which triggers validations for unchanged records.
System: Routes: Configuration - further refactor current static route updates for https://github.com/opnsense/core/issues/10569
This code should offer the same functionality as before, but starts with wrapping the "stashed updates" code into its own class, so we can extend that with the rest of the required logic.
In order to change system_routing_configure() to accept multiple targets for a single net, we likely should have a mechanism in place comparing our expected route configuration with the one configured, isolating that inside its own class is likely much easier for future maintenance.
In practice we always marked the networks touched by the UI in order to remove them before apply new ones, we call this action "claiming" now. Our primary issue is that given a running routing table, we can't really know which routes are inserted by us. Following the existing logic (which functioned for single targets), we could state that any network we manually configured (or are configuring) is ours to maintain.
At some point we may consider marking our routes with RTF_PROTO2 (Bird seems to be using RTF_PROTO1) to improve the filtering a bit further, but this is easy to implement later on given the plumning we need anyway.
Interfaces: Assignments - minor cleanup in "Prefix delegation size", make field required to avoid none and blank both being valid options. Since "none" was the previous default, let's keep it that way for now.
health: use logarithmic mbuf reporting, separate formatting responsibilities
Let the y-axis use compact metric formatting such as 10K or 1M.
Since a tooltip should be able to contain more detailed information, allow
separation through a tooltip_formats structure.
system: fix scope change validation
Uses isDefault(), but also provides getDefault() which I think
could be of value in the future. Easily added to a unit test
in any way.
Drop the note about /etc/passwd -- it was 2024 and we no longer
write any users to the OS.
system: fix scope change validation
Uses isDefault(), but also provides getDefault() which I think
could be of value in the future. Easily added to a unit test
in any way.
Drop the note about /etc/passwd -- it was 2024 and we no longer
write any users to the OS.
Services: Kea DHCPv4: Add a simple shared_networks option to subnets
Subnets can now select an interface, subnets with the same interface will be put into a shared network.
This means its not decided by the interface IP of the receiving interface anymore, but by a mandatory client-classes membership
which is decided by matching a single DHCP option of the users choice as the gatekeeper to the subnet.
This way, multiple subnets can be served from the same interface.
backported version
system: multiple users with the same UID share the same groups
This would actually prevent root from logging into the web GUI
as the page lookup failed because looking for the installer user
did not yield any associated pages.
Fix MemberField as well to show all the users.
system: multiple users with the same UID share the same groups
This would actually prevent root from logging into the web GUI
as the page lookup failed because looking for the installer user
did not yield any associated pages.
health: optimize quality graphs
Separate the percentages unit to a separate right-side axis, and
format the left-side axis logarithmically. Make sure the tooltips
contain the right units as well.
Services: Kea DHCPv4: Add a simple shared_networks option to subnets
Subnets can now select an interface, subnets with the same interface will be put into a shared network.
This means its not decided by the interface IP of the receiving interface anymore, but by a mandatory client-classes membership
which is decided by matching a single DHCP option of the users choice as the gatekeeper to the subnet.
This way, multiple subnets can be served from the same interface.
Services: Kea DHCPv4: Add a simple shared_networks option to subnets
Subnets can now select an interface, subnets with the same interface will be put into a shared network.
This means its not decided by the interface IP of the receiving interface anymore, but by a mandatory client-classes membership
which is decided by matching a single DHCP option of the users choice as the gatekeeper to the subnet.
This way, multiple subnets can be served from the same interface.
mvc: avoid empty recordset searches
Ignore whitespace-only search terms and stop scanning fields once a clause matches. This avoids walking every field when the search phrase is empty.
(cherry picked from commit a49caffce607d57113e7d83f24035cdde274bf57)