OPNSense/src d2b418asys/netinet ip_output.c ip_fastfwd.c, sys/netinet6 ip6_output.c ip6_fastfwd.c

pf|ipfw|netinet6?: shared IP forwarding

This removes the if_output calls in the pf(4) code that escape further
processing by defering the forwarding execution to the network stack
using on/off style sysctls for both IPv4 and IPv6.

Also see: https://reviews.freebsd.org/D8877
DeltaFile
+136-12sys/netinet6/ip6_output.c
+108-10sys/netinet/ip_output.c
+39-48sys/netinet6/ip6_fastfwd.c
+28-46sys/netpfil/ipfw/ip_fw_pfil.c
+36-31sys/netinet6/ip6_forward.c
+27-36sys/netinet/ip_fastfwd.c
+374-1836 files not shown
+458-23612 files

OPNSense/core 67d6f60src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt

Firewall Rules: clean this up as well
DeltaFile
+29-32src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+29-321 files

OPNSense/src 68047c9sys/net rss_config.c if_gre.c, sys/netinet ip_input.c

rss: add sysctl enable toggle

This commit also includes the original refactoring changes

This change allows the kernel to operate with the default netisr cpu-affinity settings while having RSS compiled in. Normally, RSS changes quite a bit of the behaviour of the kernel dispatch service - this change allows for reducing impact on incompatible hardware while preserving the option to boost throughput speeds based on packet flow CPU affinity.

Make sure to compile the following options in the kernel:

    options  RSS

As well as setting the following sysctls:

    net.inet.rss.enabled: 1
    net.isr.bindthreads: 1
    net.isr.maxthreads: -1 (automatically sets it to the number of CPUs)

And optionally (to force a 1:1 mapping between CPUs and buckets):

    net.inet.rss.bits: 3 (for 8 CPUs)

    [5 lines not shown]
DeltaFile
+37-1sys/net/rss_config.c
+20-0sys/netinet6/ip6_input.c
+19-0sys/netinet/ip_input.c
+12-7sys/net/if_gre.c
+7-0sys/netinet6/frag6.c
+6-0sys/netinet6/ip6_output.c
+101-811 files not shown
+131-1017 files

OPNSense/core bfa5a52src/opnsense/mvc/app/controllers/OPNsense/Interfaces/Api AssignmentController.php, src/opnsense/mvc/app/models/OPNsense/Interfaces Assignment.php

Interfaces: Assignments - work in progress for https://github.com/opnsense/core/issues/9945

In order to migrate the interface assignments, we need to think of a way to use the differently named xml nodes for interfaces (wan, lan, ..) into something that closely resembles a standard model implementation.
Since we can't match these nodes in our statically defined model xmls, the main idea is to flush all via an in-memory model with a separate load [construct] and save hook [serializeToConfig].

The next challenge is to "stash" updates and wait for "apply" in certain cases, for this we add a temporary database holding the changes  which are synced after the actual system change has happend (pending_action, pending_if). When succesfully applied, the apply function cleans up the final stage of the configuration to make everything consistent again.

This database is a simple single json encoded file named /tmp/.interfaces.todo
DeltaFile
+170-0src/opnsense/mvc/app/controllers/OPNsense/Interfaces/Api/AssignmentController.php
+162-0src/opnsense/mvc/app/models/OPNsense/Interfaces/Assignment.php
+90-0src/opnsense/scripts/interfaces/list_assign_options.php
+73-0src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/AssignmentInterfaceField.php
+64-0src/opnsense/scripts/interfaces/apply_pending_if_changes.php
+54-0src/opnsense/mvc/app/views/OPNsense/Interface/assignment.volt
+613-05 files not shown
+739-011 files

OPNSense/core ee3fe9esrc/opnsense/mvc/app/controllers/OPNsense/Interfaces/Api AssignmentController.php, src/opnsense/mvc/app/models/OPNsense/Interfaces Assignment.php

Interfaces: Assignments - work in progress for https://github.com/opnsense/core/issues/9945

In order to migrate the interface assignments, we need to think of a way to use the differently named xml nodes for interfaces (wan, lan, ..) into something that closely resembles a standard model implementation.
Since we can't match these nodes in our statically defined model xmls, the main idea is to flush all via an in-memory model with a separate load [construct] and save hook [serializeToConfig].

The next challenge is to "stash" updates and wait for "apply" in certain cases, for this we add a temporary database holding the changes  which are synced after the actual system change has happend (pending_action, pending_if). When succesfully applied, the apply function cleans up the final stage of the configuration to make everything consistent again.

This database is a simple single json encoded file named /tmp/.interfaces.todo
DeltaFile
+159-0src/opnsense/mvc/app/models/OPNsense/Interfaces/Assignment.php
+121-0src/opnsense/mvc/app/controllers/OPNsense/Interfaces/Api/AssignmentController.php
+90-0src/opnsense/scripts/interfaces/list_assign_options.php
+64-0src/opnsense/scripts/interfaces/apply_pending_if_changes.php
+54-0src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/AssignmentInterfaceField.php
+45-0src/opnsense/mvc/app/views/OPNsense/Interface/assignment.volt
+533-05 files not shown
+639-011 files

OPNSense/src 19499c8sys/net pfvar.h, sys/netpfil/pf pf.c

pf: backport changes around the following commit #242

 commit 49f39043a02d6011c1907e1b07eb034652a1269c
 Author: phessler <phessler at openbsd.org>
 Date:   Fri Apr 28 14:08:34 2023 +0000

    Relax the "pass all" rule so all forms of neighbor advertisements are allowed
    in either direction.

    This more closely matches the IPv4 ARP behaviour.

    From sashan@
    discussed with kn@ deraadt@
DeltaFile
+37-2sys/netpfil/pf/pf.c
+3-1sys/net/pfvar.h
+40-32 files

OPNSense/src 661a9bfsys/netinet ip_divert.c

divert: Avoid using atomic_(load|store)_(acq|rel)_16

It's not implemented on some arches.  Use a plain int to count the
number of sockets in a divert lbgroup.

Reported by:    Jenkins
Fixes:          895a0ae67fe2 ("divert: Define semantics for SO_REUSEPORT_LB on divert sockets")
DeltaFile
+7-5sys/netinet/ip_divert.c
+7-51 files

OPNSense/src 57acf85lib/libsys getsockopt.2, share/man/man4 divert.4

divert: Define semantics for SO_REUSEPORT_LB on divert sockets

Allow SO_REUSEPORT_LB to be set on divert sockets.  If set, then bind()
will add the socket to a "load-balancing group".  When a divert-to rule
matches a port with an associated group, the corresponding state ID is
used to select a specific socket from the group.  Packets without an
associated state are simply forwarded to the first socket in the group.
For now I only pass a state ID from pf, as I couldn't see a useful
identifier on the ipfw side.

This implementation is simple but has a caveat, that being that if
sockets are added to the group while flows are being processed, the size
of the group will change and this changes the mapping of state IDs to
sockets.  So, to get a consistent mapping, the divert socket application
must bind all of its sockets before any traffic is diverted by the
firewall.

Reviewed by:    glebius
MFC after:      1 month

    [3 lines not shown]
DeltaFile
+143-17sys/netinet/ip_divert.c
+21-3share/man/man4/divert.4
+5-1lib/libsys/getsockopt.2
+1-1sys/netinet/raw_ip.c
+1-1sys/netpfil/pf/pf.c
+1-1sys/netpfil/ipfw/ip_fw_pfil.c
+172-241 files not shown
+173-257 files

OPNSense/src 2212152usr.sbin/rtsold rtsol.c

rtsold: check RA lifetime before triggering the one-shot always script

Historic context: rtsold is used by *sense to get a router address which
wasn't originally the daemon's purpose.  We only ever get the first address
per interface lifetime so if the RA contains an invalid router with a zero
lifetime and we catch it we cannot get a valid one ever again.

This is suboptimal in a number of ways, but the obvious way to deal with
this is to ignore all RA messages from routers that do not advertise a
default route.

PR: https://github.com/opnsense/core/issues/9551
DeltaFile
+4-2usr.sbin/rtsold/rtsol.c
+4-21 files

OPNSense/src b85af66sys/netpfil/ipfw dn_sched_fq_codel.c

dummynet: move these exessive logging messages under debug output
DeltaFile
+3-2sys/netpfil/ipfw/dn_sched_fq_codel.c
+3-21 files

OPNSense/src 68b0658sys/fs/tmpfs tmpfs_subr.c

tmpfs: allow recurse as that does happen when using unionfs
DeltaFile
+1-1sys/fs/tmpfs/tmpfs_subr.c
+1-11 files

OPNSense/src 8aaa100sys/amd64/conf GENERIC.hints

Revert "amd64 GENERIC: Switch uart hints from "isa" to "acpi""

This reverts commit 74b9fc7adcf4afb1c3039267e338c3cfdf022957.
DeltaFile
+4-2sys/amd64/conf/GENERIC.hints
+4-21 files

OPNSense/src 7be8586sys/netinet ip_input.c, sys/netinet6 ip6_input.c in6.h

dummynet: passin after dispatch

Based on a patch originally found in m0n0wall, expanded
to IPv6 and aligned with FreeBSD's IP input path.

The limit may not be correctly accounted for on the WAN
interface due to dummynet counting the packet again even
though it was already processed.

The problem here is that there's no proper way to reinject
the packet at the point where it was previously removed
from so we make the assumption that ip input was already
done (including pfil) and more or less directly move to
packet output processing.

While here move the passin label up to take the extra check
but avoiding a second label.  Also remove the spurious tag
read for forward check since we don't use it and we should
really trust the mbuf flag.
DeltaFile
+22-11sys/netinet/ip_input.c
+11-3sys/netinet6/ip6_input.c
+6-0sys/netpfil/ipfw/ip_dn_io.c
+1-0sys/netinet6/in6.h
+40-144 files

OPNSense/src 0704a2blibexec/getty gettytab

tty: patch in 3wire autologin support

PR: https://github.com/opnsense/core/issues/3921
DeltaFile
+18-0libexec/getty/gettytab
+18-01 files

OPNSense/src 8b93012sys/dev/ixgbe ixgbe_phy.c if_ix.c

ixgbe: workaround to prevent an i2c bus read to keep trying to read an empty slot

When executing `ifconfig -v` this will lead to stalls for a second per
interface due to the timeout being set to a static 10 without a module
placed, this patch makes sure this is only allowed once per insertion.
DeltaFile
+12-0sys/dev/ixgbe/ixgbe_phy.c
+6-0sys/dev/ixgbe/if_ix.c
+2-0sys/dev/ixgbe/ixgbe_type.h
+20-03 files

OPNSense/src 88eac6esys/netpfil/pf pf_table.c

pf: align sanity checks for pfrw_free
DeltaFile
+7-3sys/netpfil/pf/pf_table.c
+7-31 files

OPNSense/src ea7aa1blib/libfetch common.c

libfetch: allow use of SSL_CRL_VERIFY

Since the default store already points to /etc/ssl/certs and the
CRLs are hashed there too it is trivial to bring libfetch applications
to verifying the CRLs contained when doing a SSL connection.

libfetch: ignore the error of an absence of a CRL

... when passing SSL_CRL_FILE / SSL_CRL_VERIFY.

The situation isn't ideal, but since we don't know what we are going to deal
with the situation is tricky.  It's especially pointless in scenarios of
pkg multi-repo cases where we need to deal wit a mixed bag of URLs during
the same context.  For the benefit of the doubt print the appropriate message
for the user to see.

In general it would be a bit safer if we could enforce the existence of a
CRL distribution point as a mandatory CRL check and the others as an optional
one with the warning as printed for the user to see.  It would also need a

    [18 lines not shown]
DeltaFile
+38-3lib/libfetch/common.c
+38-31 files

OPNSense/core e83a209src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt, src/opnsense/www/js opnsense_bootgrid.js

Firewall: Rules: semi-persistence for top-level categories
DeltaFile
+149-99src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+2-1src/opnsense/www/js/opnsense_bootgrid.js
+151-1002 files

OPNSense/core 591830asrc/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt, src/opnsense/www/js opnsense_bootgrid.js

Firewall: Rules: improved tree grouping logic
DeltaFile
+54-28src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+4-2src/opnsense/www/js/opnsense_bootgrid.js
+58-302 files

OPNSense/core c5b84a6src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt

Firewall: Rules: clean up
DeltaFile
+17-23src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+17-231 files

OPNSense/core 1251c97src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt

Firewall: Rules: clean up
DeltaFile
+17-23src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+17-231 files

OPNSense/src d7cffbabin/date date.c

date: Include old and new time in audit log (#221)

DeltaFile
+6-1bin/date/date.c
+6-11 files

OPNSense/src a987775usr.sbin/bsdinstall/include Makefile, usr.sbin/bsdinstall/partedit partedit_x86.c

bsdinstall: react to WORKAROUND_HYBRID to force UEFI install on BIOS boot

Also add branding name.
DeltaFile
+3-1usr.sbin/bsdinstall/partedit/partedit_x86.c
+1-1usr.sbin/bsdinstall/include/Makefile
+4-22 files

OPNSense/core aac82a7src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt, src/opnsense/www/js opnsense_bootgrid.js

Firewall: Rules: semi-persistence for top-level categories
DeltaFile
+149-99src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+2-1src/opnsense/www/js/opnsense_bootgrid.js
+151-1002 files

OPNSense/src af29b5c.github/ISSUE_TEMPLATE bug_report.md

github: sync our template
DeltaFile
+55-0.github/ISSUE_TEMPLATE/bug_report.md
+55-01 files

OPNSense/src 4567e0d.github CODEOWNERS, .github/PULL_REQUEST_TEMPLATE pull_request_template.md

github: clear directory
DeltaFile
+0-119.github/CODEOWNERS
+0-107.github/workflows/checklist.yml
+0-70.github/workflows/cross-bootstrap-tools.yml
+0-36.github/workflows/style.yml
+0-16.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
+0-3485 files

OPNSense/src f169ea9bin/csh dot.cshrc, share/skel dot.cshrc dot.profile

etc: OPNsense customisations

o add more key bindings to .cshrc
o add .vimrc to base installation
o disable fortune cookie
DeltaFile
+16-0usr.bin/vi/dot.vimrc
+4-0bin/csh/dot.cshrc
+4-0share/skel/dot.cshrc
+4-0usr.bin/vi/Makefile
+1-1share/skel/dot.profile
+29-15 files

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

The other NAT pages should also be allowed to unhide their grid
DeltaFile
+7-2src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+7-21 files

OPNSense/core 9969711src/opnsense/mvc/app/controllers/OPNsense/Kea/Api Leases6Controller.php, src/opnsense/mvc/app/controllers/OPNsense/Monit/Api SettingsController.php

mvc: fix a few stale imports via linter
DeltaFile
+0-4src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/Leases6Controller.php
+0-2src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api/GeneralController.php
+0-2src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/VipNetworkField.php
+0-1src/opnsense/mvc/app/controllers/OPNsense/Monit/Api/SettingsController.php
+0-1src/opnsense/mvc/app/controllers/OPNsense/Routes/Api/RoutesController.php
+0-1src/opnsense/mvc/app/controllers/OPNsense/Trust/Api/CrlController.php
+0-116 files not shown
+0-1712 files

OPNSense/core 2571f8cScripts class-import.sh

make: improve import linter for edge cases
DeltaFile
+2-1Scripts/class-import.sh
+2-11 files