xref: /freebsd/lib/libbsdconf/bsdconf_format_sysctl.c (revision 3fe5961a0b708da599d42cbb6b5e4f030c28ea45)
1*3fe5961aSDevin Teske /*
2*3fe5961aSDevin Teske  * Copyright (c) 2013-2026 Devin Teske <dteske@FreeBSD.org>
3*3fe5961aSDevin Teske  * Copyright (c) 2021-2026 Faraz Vahedi <kfv@FreeBSD.org>
4*3fe5961aSDevin Teske  *
5*3fe5961aSDevin Teske  * SPDX-License-Identifier: BSD-2-Clause
6*3fe5961aSDevin Teske  */
7*3fe5961aSDevin Teske 
8*3fe5961aSDevin Teske #include "bsdconf_formats.h"
9*3fe5961aSDevin Teske 
10*3fe5961aSDevin Teske /*
11*3fe5961aSDevin Teske  * BSDCONF_FORMAT_SYSCTL: sysctl.conf(5)
12*3fe5961aSDevin Teske  *
13*3fe5961aSDevin Teske  * Assignments in the format of the sysctl(8) command, whose file parser
14*3fe5961aSDevin Teske  * trims whitespace around the `=' and strips one pair of quotes around the
15*3fe5961aSDevin Teske  * value, so values are written unquoted unless quoting is required to
16*3fe5961aSDevin Teske  * round-trip (embedded whitespace or a comment character).
17*3fe5961aSDevin Teske  *
18*3fe5961aSDevin Teske  * Sourced at boot in the order below: the first two by rc.d/sysctl (and
19*3fe5961aSDevin Teske  * again by rc.d/sysctl_lastload), the module-specific drop-in by
20*3fe5961aSDevin Teske  * rc.subr(8)'s load_kld when the named kernel module loads.
21*3fe5961aSDevin Teske  */
22*3fe5961aSDevin Teske static const struct bsdconf_source bsdconf_sysctl_sources[] = {
23*3fe5961aSDevin Teske 	{ BSDCONF_SOURCE_FILE,		"/etc/sysctl.conf" },
24*3fe5961aSDevin Teske 	{ BSDCONF_SOURCE_FILE,		"/etc/sysctl.conf.local" },
25*3fe5961aSDevin Teske 	{ BSDCONF_SOURCE_MODDIR,	"/etc/sysctl.kld.d" },
26*3fe5961aSDevin Teske 	{ BSDCONF_SOURCE_FILE,		NULL },
27*3fe5961aSDevin Teske };
28*3fe5961aSDevin Teske 
29*3fe5961aSDevin Teske const struct bsdconf_format_def bsdconf_format_sysctl_def = {
30*3fe5961aSDevin Teske 	.keyword	= "sysctl",
31*3fe5961aSDevin Teske 	.path		= "/etc/sysctl.conf",
32*3fe5961aSDevin Teske 	.sources	= bsdconf_sysctl_sources,
33*3fe5961aSDevin Teske 	.processing	= BSDCONF_BREAK_ON_EQUALS | BSDCONF_CASE_SENSITIVE |
34*3fe5961aSDevin Teske 			  BSDCONF_REQUIRE_EQUALS,
35*3fe5961aSDevin Teske 	.put		= BSDCONF_PUT_ALLOW_EMPTY,
36*3fe5961aSDevin Teske };
37