OPNSense/core ce0d656src/opnsense/mvc/app/controllers/OPNsense/Kea/forms generalSettings6.xml, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.xml KeaDhcpv6.php

Services: Kea DHCPv6: Allow customizing mac_sources and change default to ipv6-link-local (#10220)

* Services: Kea DHCPv6: Allow customizing mac_sources and change default to ipv6-link-local since it seems to align best with the expectations of our setup, especially taking PD route installation via kea_prefix_watcher.py into account.

Per default KEA would derive MAC addresses of clients from the DUID, but these do not take multiple interfaces into account. This means, the route target could be the wrong MAC address. The new default ipv6-link-local takes the EUI-64 assumption of the link-local address, this seems to be better suited as our default.

Two methods have been skipped since they are not implemented by KEA upstream, raw and subscriber-id.

* Specify this influences MAC based reservations. Since blast radius is larger make it non-advanced.
DeltaFile
+14-1src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+6-0src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings6.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+21-13 files

OPNSense/core 2e61d11src/opnsense/mvc/app/controllers/OPNsense/Kea/forms generalSettings6.xml

Specify this influences MAC based reservations. Since blast radius is larger make it non-advanced
DeltaFile
+1-2src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings6.xml
+1-21 files

OPNSense/core 388cf99src/opnsense/mvc/app/controllers/OPNsense/Kea/forms generalSettings6.xml, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.xml KeaDhcpv6.php

Services: Kea DHCPv6: Allow customizing mac_sources and change default to ipv6-link-local since it seems to align best with the expectations of our setup, especially taking PD route installation via kea_prefix_watcher.py into account.

Per default KEA would derive MAC addresses of clients from the DUID, but these do not take multiple interfaces into account. This means, the route target could be the wrong MAC address. The new default ipv6-link-local takes the EUI-64 assumption of the link-local address, this seems to be better suited as our default.

Two methods have been skipped since they are not implemented by KEA upstream, raw and subscriber-id.
DeltaFile
+14-1src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+7-0src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings6.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+22-13 files

OPNSense/core 0513f26src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms dialogSettings.xml, src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes DUIDField.php

interfaces: wrong DUID-UUID format for #10218

Not sure about migration here to avoid future migrations from breaking,
but wrong UUID is simply wrong.  To be continued.
DeltaFile
+1-1src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms/dialogSettings.xml
+1-1src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/DUIDField.php
+1-1src/opnsense/scripts/interfaces/gen_duid.php
+3-33 files

OPNSense/core 09d431bsrc/etc/inc/plugins.inc.d kea.inc, src/opnsense/scripts/kea kea_prefix_watcher.py

Services: Kea DHCPv6: kea_prefix_watcher: Plug socket into dynamic pd route installation script (#10197)

* Services: Kea DHCPv4/v6: Use KeaCtrl python lib for kea_prefix_watcher to switch to polling the socket instead of streaming the csv lease files. The running configuration has structured output, and we stay in memory without needing to read and parse any files. The tradeoff is that we always have to process the full set of leases, yet by using lease6-get-page which is especially made for efficient bulk operations, this should be rather cheap. The main benefit is we always work with structured json data, can filter for ID_PD better, and reprocess the full truth on every poll interval to ensure the whole setup is self-healing

* Use state instead of time based mechanism to decide of lease is still valid

* Make interval parameter explicit

* Time is still needed for polling

* We do not need argparse or parameters anymore

* Add an explicit empty argument for backend parser

* Remove duplicate state check, add documentation for the possible states

* No we still have do add state into the mix or the route lazy drop will not work anymore

* Use new count() base method for hasPdPools()

* Use count() directly in kea.inc
DeltaFile
+54-67src/opnsense/scripts/kea/kea_prefix_watcher.py
+3-3src/etc/inc/plugins.inc.d/kea.inc
+57-702 files

OPNSense/core 23d7501src/opnsense/mvc/app/controllers/OPNsense/Kea/forms dialogReservation6.xml, src/opnsense/mvc/app/library/OPNsense/Firewall Util.php

Merge remote-tracking branch 'origin/master' into kea-prefix-watcher-socket-polling
DeltaFile
+32-0src/opnsense/mvc/app/library/OPNsense/Firewall/Util.php
+13-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+11-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+7-1src/opnsense/mvc/app/views/OPNsense/Kea/leases6.volt
+6-0src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation6.xml
+2-1src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+71-42 files not shown
+73-48 files

OPNSense/core 5d0a25csrc/opnsense/mvc/app/controllers/OPNsense/Kea/forms dialogReservation6.xml, src/opnsense/mvc/app/library/OPNsense/Firewall Util.php

Services: Kea DHCPv6: Add prefix to reservations to allow for static PD allocations based on DUID/MAC (#10206)
DeltaFile
+32-0src/opnsense/mvc/app/library/OPNsense/Firewall/Util.php
+13-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+11-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+7-1src/opnsense/mvc/app/views/OPNsense/Kea/leases6.volt
+6-0src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation6.xml
+1-0src/opnsense/mvc/app/views/OPNsense/Kea/dhcpv6.volt
+70-31 files not shown
+71-37 files

OPNSense/core ca2fe06src/opnsense/mvc/app/views/OPNsense/Firewall nat_rule.volt

Firewall: NAT: Fix inverted source/destination cosmetic issue in SNAT and One-to-One NAT grids (#10215)
DeltaFile
+2-1src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+2-11 files

OPNSense/core 9f71564src/etc/inc/plugins.inc.d kea.inc, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

Use count() directly in kea.inc
DeltaFile
+0-9src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+1-1src/etc/inc/plugins.inc.d/kea.inc
+1-102 files

OPNSense/ports c593c5asecurity/openvpn distinfo Makefile

security/openvpn: update to 2.6.20
DeltaFile
+3-3security/openvpn/distinfo
+1-1security/openvpn/Makefile
+4-42 files

OPNSense/ports 54baca7textproc/expat2 distinfo Makefile

textproc/expat2: sync with upstream

Taken from: FreeBSD
DeltaFile
+3-3textproc/expat2/distinfo
+1-1textproc/expat2/Makefile
+1-1textproc/expat2/pkg-plist
+5-53 files

OPNSense/ports 355f364print/texinfo Makefile

print/texinfo: sync with upstream

Taken from: FreeBSD
DeltaFile
+2-1print/texinfo/Makefile
+2-11 files

OPNSense/ports 73f13c7devel/autoconf pkg-plist distinfo, devel/autoconf/files patch-01-bin_autoreconf.in patch-02-bin_autoreconf.in

devel/autoconf: sync with upstream

Taken from: FreeBSD
DeltaFile
+0-159devel/autoconf/files/patch-01-bin_autoreconf.in
+0-102devel/autoconf/files/patch-02-bin_autoreconf.in
+9-8devel/autoconf/pkg-plist
+5-5devel/autoconf/files/patch-bin_autoreconf.in
+3-3devel/autoconf/distinfo
+1-2devel/autoconf/Makefile
+18-2796 files

OPNSense/ports 7ed0e19opnsense/phpseclib distinfo Makefile

opnsense/phpseclib: update to 3.0.52
DeltaFile
+3-3opnsense/phpseclib/distinfo
+1-1opnsense/phpseclib/Makefile
+4-42 files

OPNSense/core 837a134src/opnsense/mvc/app/views/OPNsense/Firewall nat_rule.volt

Firewall: NAT: Fix inverted source/destination cosmetic issue in SNAT and One-to-One NAT grids
DeltaFile
+2-1src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+2-11 files

OPNSense/core 40ace08src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

Use new count() base method for hasPdPools()
DeltaFile
+1-4src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+1-41 files

OPNSense/core 72ce6b9src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseField.php, src/opnsense/mvc/app/models/OPNsense/Base/Menu MenuItem.php

Merge remote-tracking branch 'origin/master' into kea-prefix-watcher-socket-polling
DeltaFile
+22-22src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/AutoNumberFieldTest.php
+22-22src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/TextFieldTest.php
+5-6src/opnsense/mvc/app/models/OPNsense/Base/Menu/MenuItem.php
+5-5src/opnsense/service/conf/actions.d/actions_zfs.conf
+10-0src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php
+3-3src/opnsense/mvc/app/views/OPNsense/Auth/priv.volt
+67-587 files not shown
+79-6213 files

OPNSense/core 4c796dcsrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseField.php, src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes OptionFieldTest.php NetworkFieldTest.php

mvc: BaseField: extend count() for value-based field types

So getValues() already uses isSet() which makes the count of
set values in the field type correct.  Add the tests to prove
it.
DeltaFile
+3-3src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php
+5-0src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/OptionFieldTest.php
+3-0src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/NetworkFieldTest.php
+1-0src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/TextFieldTest.php
+12-34 files

OPNSense/core 95acd0dsrc/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

use getValues()
DeltaFile
+2-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+2-21 files

OPNSense/core 6bb1a93src/opnsense/mvc/app/models/OPNsense/Routing GatewayGroups.php

update function docs here
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Routing/GatewayGroups.php
+1-11 files

OPNSense/core 1d8095asrc/opnsense/mvc/app/controllers/OPNsense/Kea/forms dialogReservation6.xml, src/opnsense/mvc/app/library/OPNsense/Firewall Util.php

Services: Kea DHCPv6: Add prefix to reservations to allow for static PD allocations based on DUID/MAC
DeltaFile
+32-0src/opnsense/mvc/app/library/OPNsense/Firewall/Util.php
+13-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+11-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+7-1src/opnsense/mvc/app/views/OPNsense/Kea/leases6.volt
+6-0src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation6.xml
+1-0src/opnsense/mvc/app/views/OPNsense/Kea/dhcpv6.volt
+70-31 files not shown
+71-37 files

OPNSense/core 5c4589asrc/opnsense/mvc/app/models/OPNsense/Routing GatewayGroups.php, src/opnsense/scripts/routes gateway_watcher.php

Gateway Groups: typo and lazy-load model in gateway watcher
DeltaFile
+4-2src/opnsense/scripts/routes/gateway_watcher.php
+1-1src/opnsense/mvc/app/models/OPNsense/Routing/GatewayGroups.php
+5-32 files

OPNSense/core d48facasrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseField.php, src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes AutoNumberFieldTest.php TextFieldTest.php

mvc: BaseField: add count() (#10199)

Helps with checking containers for applicability and
can be extended for non-containers.
DeltaFile
+22-22src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/AutoNumberFieldTest.php
+21-22src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/TextFieldTest.php
+10-0src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php
+53-443 files

OPNSense/core 33650c2src/opnsense/mvc/app/controllers/OPNsense/Routing/Api SettingsController.php, src/opnsense/mvc/app/models/OPNsense/Routing GatewayGroups.php Gateways.php

Gateway Groups: convert to MVC
DeltaFile
+305-0src/opnsense/mvc/app/models/OPNsense/Routing/GatewayGroups.php
+0-120src/opnsense/mvc/app/models/OPNsense/Routing/Gateways.php
+60-0src/opnsense/mvc/app/models/OPNsense/Routing/FieldTypes/GatewayGroupItemField.php
+42-0src/opnsense/mvc/app/models/OPNsense/Routing/GatewayGroups.xml
+14-12src/opnsense/scripts/monit/gateway_alert.php
+5-13src/opnsense/mvc/app/controllers/OPNsense/Routing/Api/SettingsController.php
+426-1455 files not shown
+441-16311 files

OPNSense/core 8b47fdcsrc/opnsense/mvc/app/controllers/OPNsense/Core/Api SnapshotsController.php, src/opnsense/scripts/system bectl.py

system: revisit snapshot name validation #9892

See: https://github.com/opnsense/src/blob/6e01be67e/lib/libbe/be.c#L966
PR: https://github.com/opnsense/core/issues/9892

Co-authored-by: Konstantinos Spartalis <scoon405 at gmail.com>

(cherry picked from commit 6251336b064ea248fb1be74f1effa6021a2d05e0)
(cherry picked from commit 6baf035b439aa98dedadfa1e8d670e2f34a7d3b8)
(cherry picked from commit a689bf14e2fa70c19eda044be35e9b57cf452877)
DeltaFile
+5-5src/opnsense/service/conf/actions.d/actions_zfs.conf
+4-4src/opnsense/scripts/system/bectl.py
+2-2src/opnsense/mvc/app/controllers/OPNsense/Core/Api/SnapshotsController.php
+11-113 files

OPNSense/core 73d8debsrc/opnsense/scripts/kea get_kea_leases.py

Services: Kea DHCPv6: Missed DUID during lease collection (#10203)
DeltaFile
+1-0src/opnsense/scripts/kea/get_kea_leases.py
+1-01 files

OPNSense/core a689bf1src/opnsense/mvc/app/controllers/OPNsense/Core/Api SnapshotsController.php, src/opnsense/service/conf/actions.d actions_zfs.conf

system: last round of fixes for snapshot names

"." and ".." are special path names and must be excluded.

"-." or "-_" are somehow problematic inside configd but adding
using ''%s seems to appease the whole system and doesn't mess
with shell quoting.

Reported by: @sopex
DeltaFile
+5-5src/opnsense/service/conf/actions.d/actions_zfs.conf
+1-1src/opnsense/mvc/app/controllers/OPNsense/Core/Api/SnapshotsController.php
+6-62 files

OPNSense/core 9b83c7asrc/opnsense/service/conf/actions.d actions_zfs.conf

qoute all arguments, quotes and shell magic chars are not supported
DeltaFile
+5-5src/opnsense/service/conf/actions.d/actions_zfs.conf
+5-51 files

OPNSense/core 948cda7src/opnsense/mvc/app/controllers/OPNsense/Core/Api SnapshotsController.php

validate more
DeltaFile
+1-1src/opnsense/mvc/app/controllers/OPNsense/Core/Api/SnapshotsController.php
+1-11 files

OPNSense/core 79286a7src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api FilterBaseController.php

Guard all Savepoint Actions additionally as they can interact directly with the config in some instances
DeltaFile
+9-4src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterBaseController.php
+9-41 files