git: 09267cc15284 - main - /etc/rc.subr: add support for kld sysctl variables

From: Doug Rabson <dfr_at_FreeBSD.org>
Date: Fri, 14 Jul 2023 09:57:33 UTC
The branch main has been updated by dfr:

URL: https://cgit.FreeBSD.org/src/commit/?id=09267cc15284795fef958fb9ed786bb2382d6763

commit 09267cc15284795fef958fb9ed786bb2382d6763
Author:     Doug Rabson <dfr@FreeBSD.org>
AuthorDate: 2023-06-21 12:26:17 +0000
Commit:     Doug Rabson <dfr@FreeBSD.org>
CommitDate: 2023-07-14 09:49:47 +0000

    /etc/rc.subr: add support for kld sysctl variables
    
    For kernel modules loaded by scripts in /etc/rc.d and
    /usr/local/etc/rc.d, if there is a file in /etc/sysctl.conf.d named <kld
    name>.conf, then this will be loaded using the sysctl(8) utility. For
    instance, sysctl variable changes for the pf kernel module would be
    placed in the file /etc/sysctl.conf.d/pf.conf.
    
    PR:             272129
    Reviewed by:    imp freebsd_igalic.co
    MFC after:      2 weeks
    Differential Revision: https://reviews.freebsd.org/D40886
---
 etc/mtree/BSD.root.dist      |  2 ++
 libexec/rc/rc.subr           |  3 +++
 share/man/man5/sysctl.conf.5 | 10 ++++++++++
 3 files changed, 15 insertions(+)

diff --git a/etc/mtree/BSD.root.dist b/etc/mtree/BSD.root.dist
index 3a3a3a78d995..2ec079b0abd1 100644
--- a/etc/mtree/BSD.root.dist
+++ b/etc/mtree/BSD.root.dist
@@ -96,6 +96,8 @@
         ..
         ssl
         ..
+	sysctl.conf.d
+	..
         syslog.d
         ..
         zfs
diff --git a/libexec/rc/rc.subr b/libexec/rc/rc.subr
index 6a7f070f7f5b..ef3da46b3206 100644
--- a/libexec/rc/rc.subr
+++ b/libexec/rc/rc.subr
@@ -1970,6 +1970,9 @@ load_kld()
 			return 1
 		else
 			info "$1 kernel module loaded."
+			if [ -f "/etc/sysctl.conf.d/$1.conf" ]; then
+				sysctl -f "/etc/sysctl.conf.d/$1.conf"
+			fi
 		fi
 	else
 		debug "load_kld: $1 kernel module already loaded."
diff --git a/share/man/man5/sysctl.conf.5 b/share/man/man5/sysctl.conf.5
index 5df168661d85..26ecf763ca12 100644
--- a/share/man/man5/sysctl.conf.5
+++ b/share/man/man5/sysctl.conf.5
@@ -51,6 +51,13 @@ Comments can also exist at the end of a line,
 as seen in the
 .Sx EXAMPLES
 section, below.
+.Pp
+For kernel modules loaded via
+.Xr rc.subr 8
+system ,
+additional module-specific settings can be applied
+by adding a file in the same format named
+.Pf /etc/sysctl.d/<module name>.conf .
 .Sh FILES
 .Bl -tag -width /etc/rc.d/sysctl_lastload -compact
 .It Pa /etc/rc.d/sysctl
@@ -69,6 +76,9 @@ Initial settings for
 .It Pa /etc/sysctl.conf.local
 Machine-specific settings for sites with a common
 .Pa /etc/sysctl.conf .
+.It Pa /etc/sysctl.conf.d
+Module specific settings for kernel modules loaded via
+.Xr rc.subr 8 .
 .El
 .Sh EXAMPLES
 To turn off logging of programs that exit due to fatal signals you may use