xref: /dflybsd-src/share/man/man9/sysctl.9 (revision 4669995708554c390a2566040af699397ea547e4)
159308cc9SSascha Wildner.\"
259308cc9SSascha Wildner.\" Copyright (c) 2006 Robert N. M. Watson
359308cc9SSascha Wildner.\" All rights reserved.
459308cc9SSascha Wildner.\"
559308cc9SSascha Wildner.\" Redistribution and use in source and binary forms, with or without
659308cc9SSascha Wildner.\" modification, are permitted provided that the following conditions
759308cc9SSascha Wildner.\" are met:
859308cc9SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
959308cc9SSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
1059308cc9SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
1159308cc9SSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
1259308cc9SSascha Wildner.\"    documentation and/or other materials provided with the distribution.
1359308cc9SSascha Wildner.\"
1459308cc9SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1559308cc9SSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1659308cc9SSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1759308cc9SSascha Wildner.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1859308cc9SSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1959308cc9SSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2059308cc9SSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2159308cc9SSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2259308cc9SSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2359308cc9SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2459308cc9SSascha Wildner.\" SUCH DAMAGE.
2559308cc9SSascha Wildner.\"
2659308cc9SSascha Wildner.\"
27df0102f1SAntonio Huete Jimenez.Dd December 2, 2019
2859308cc9SSascha Wildner.Dt SYSCTL 9
2959308cc9SSascha Wildner.Os
3059308cc9SSascha Wildner.Sh NAME
31df0102f1SAntonio Huete Jimenez.Nm SYSCTL_BIT32 ,
3264c6a0feSSascha Wildner.Nm SYSCTL_BIT64 ,
3359308cc9SSascha Wildner.Nm SYSCTL_DECL ,
3459308cc9SSascha Wildner.Nm SYSCTL_INT ,
3559308cc9SSascha Wildner.Nm SYSCTL_LONG ,
3659308cc9SSascha Wildner.Nm SYSCTL_QUAD ,
3759308cc9SSascha Wildner.Nm SYSCTL_NODE ,
3859308cc9SSascha Wildner.Nm SYSCTL_OPAQUE ,
3959308cc9SSascha Wildner.Nm SYSCTL_PROC ,
40347aefc6SSascha Wildner.Nm SYSCTL_S8 ,
41347aefc6SSascha Wildner.Nm SYSCTL_S16 ,
42347aefc6SSascha Wildner.Nm SYSCTL_S32 ,
43347aefc6SSascha Wildner.Nm SYSCTL_S64 ,
4459308cc9SSascha Wildner.Nm SYSCTL_STRING ,
4559308cc9SSascha Wildner.Nm SYSCTL_STRUCT ,
46347aefc6SSascha Wildner.Nm SYSCTL_U8 ,
47347aefc6SSascha Wildner.Nm SYSCTL_U16 ,
48c48b2bacSSascha Wildner.Nm SYSCTL_U32 ,
49347aefc6SSascha Wildner.Nm SYSCTL_U64 ,
5059308cc9SSascha Wildner.Nm SYSCTL_UINT ,
5159308cc9SSascha Wildner.Nm SYSCTL_ULONG ,
5259308cc9SSascha Wildner.Nm SYSCTL_UQUAD
5359308cc9SSascha Wildner.Nd Static sysctl declaration functions
5459308cc9SSascha Wildner.Sh SYNOPSIS
5559308cc9SSascha Wildner.In sys/types.h
5659308cc9SSascha Wildner.In sys/sysctl.h
57df0102f1SAntonio Huete Jimenez.Fo SYSCTL_BIT32
58df0102f1SAntonio Huete Jimenez.Fa "parent"
59df0102f1SAntonio Huete Jimenez.Fa "nbr"
60df0102f1SAntonio Huete Jimenez.Fa "name"
61df0102f1SAntonio Huete Jimenez.Fa "access"
62df0102f1SAntonio Huete Jimenez.Fa "ptr"
63df0102f1SAntonio Huete Jimenez.Fa "val"
64df0102f1SAntonio Huete Jimenez.Fa "bit"
65df0102f1SAntonio Huete Jimenez.Fa "descr"
66df0102f1SAntonio Huete Jimenez.Fc
67df0102f1SAntonio Huete Jimenez.Fo SYSCTL_BIT64
68df0102f1SAntonio Huete Jimenez.Fa "parent"
69df0102f1SAntonio Huete Jimenez.Fa "nbr"
70df0102f1SAntonio Huete Jimenez.Fa "name"
71df0102f1SAntonio Huete Jimenez.Fa "access"
72df0102f1SAntonio Huete Jimenez.Fa "ptr"
73df0102f1SAntonio Huete Jimenez.Fa "val"
74df0102f1SAntonio Huete Jimenez.Fa "bit"
75df0102f1SAntonio Huete Jimenez.Fa "descr"
76df0102f1SAntonio Huete Jimenez.Fc
7759308cc9SSascha Wildner.Fo SYSCTL_DECL
7859308cc9SSascha Wildner.Fa "name"
7959308cc9SSascha Wildner.Fc
8059308cc9SSascha Wildner.Fo SYSCTL_INT
8159308cc9SSascha Wildner.Fa "parent"
8259308cc9SSascha Wildner.Fa "nbr"
8359308cc9SSascha Wildner.Fa "name"
8459308cc9SSascha Wildner.Fa "access"
8559308cc9SSascha Wildner.Fa "ptr"
8659308cc9SSascha Wildner.Fa "val"
8759308cc9SSascha Wildner.Fa "descr"
8859308cc9SSascha Wildner.Fc
8959308cc9SSascha Wildner.Fo SYSCTL_LONG
9059308cc9SSascha Wildner.Fa "parent"
9159308cc9SSascha Wildner.Fa "nbr"
9259308cc9SSascha Wildner.Fa "name"
9359308cc9SSascha Wildner.Fa "access"
9459308cc9SSascha Wildner.Fa "ptr"
9559308cc9SSascha Wildner.Fa "val"
9659308cc9SSascha Wildner.Fa "descr"
9759308cc9SSascha Wildner.Fc
9859308cc9SSascha Wildner.Fo SYSCTL_NODE
9959308cc9SSascha Wildner.Fa "parent"
10059308cc9SSascha Wildner.Fa "nbr"
10159308cc9SSascha Wildner.Fa "name"
10259308cc9SSascha Wildner.Fa "access"
10359308cc9SSascha Wildner.Fa "handler"
10459308cc9SSascha Wildner.Fa "descr"
10559308cc9SSascha Wildner.Fc
10659308cc9SSascha Wildner.Fo SYSCTL_OPAQUE
10759308cc9SSascha Wildner.Fa "parent"
10859308cc9SSascha Wildner.Fa "nbr"
10959308cc9SSascha Wildner.Fa "name"
11059308cc9SSascha Wildner.Fa "access"
11159308cc9SSascha Wildner.Fa "ptr"
11259308cc9SSascha Wildner.Fa "len"
11359308cc9SSascha Wildner.Fa "fmt"
11459308cc9SSascha Wildner.Fa "descr"
11559308cc9SSascha Wildner.Fc
11659308cc9SSascha Wildner.Fo SYSCTL_PROC
11759308cc9SSascha Wildner.Fa "parent"
11859308cc9SSascha Wildner.Fa "nbr"
11959308cc9SSascha Wildner.Fa "name"
12059308cc9SSascha Wildner.Fa "access"
12159308cc9SSascha Wildner.Fa "ptr"
12259308cc9SSascha Wildner.Fa "arg"
12359308cc9SSascha Wildner.Fa "handler"
12459308cc9SSascha Wildner.Fa "fmt"
12559308cc9SSascha Wildner.Fa "descr"
12659308cc9SSascha Wildner.Fc
127347aefc6SSascha Wildner.Fo SYSCTL_QUAD
128347aefc6SSascha Wildner.Fa "parent"
129347aefc6SSascha Wildner.Fa "nbr"
130347aefc6SSascha Wildner.Fa "name"
131347aefc6SSascha Wildner.Fa "access"
132347aefc6SSascha Wildner.Fa "ptr"
133347aefc6SSascha Wildner.Fa "val"
134347aefc6SSascha Wildner.Fa "descr"
135347aefc6SSascha Wildner.Fc
136347aefc6SSascha Wildner.Fo SYSCTL_S8
137347aefc6SSascha Wildner.Fa "parent"
138347aefc6SSascha Wildner.Fa "number"
139347aefc6SSascha Wildner.Fa "name"
140347aefc6SSascha Wildner.Fa "access"
141347aefc6SSascha Wildner.Fa "ptr"
142347aefc6SSascha Wildner.Fa "val"
143347aefc6SSascha Wildner.Fa "descr"
144347aefc6SSascha Wildner.Fc
145347aefc6SSascha Wildner.Fo SYSCTL_S16
146347aefc6SSascha Wildner.Fa "parent"
147347aefc6SSascha Wildner.Fa "number"
148347aefc6SSascha Wildner.Fa "name"
149347aefc6SSascha Wildner.Fa "access"
150347aefc6SSascha Wildner.Fa "ptr"
151347aefc6SSascha Wildner.Fa "val"
152347aefc6SSascha Wildner.Fa "descr"
153347aefc6SSascha Wildner.Fc
154347aefc6SSascha Wildner.Fo SYSCTL_S32
155347aefc6SSascha Wildner.Fa "parent"
156347aefc6SSascha Wildner.Fa "number"
157347aefc6SSascha Wildner.Fa "name"
158347aefc6SSascha Wildner.Fa "access"
159347aefc6SSascha Wildner.Fa "ptr"
160347aefc6SSascha Wildner.Fa "val"
161347aefc6SSascha Wildner.Fa "descr"
162347aefc6SSascha Wildner.Fc
163347aefc6SSascha Wildner.Fo SYSCTL_S64
164347aefc6SSascha Wildner.Fa "parent"
165347aefc6SSascha Wildner.Fa "number"
166347aefc6SSascha Wildner.Fa "name"
167347aefc6SSascha Wildner.Fa "access"
168347aefc6SSascha Wildner.Fa "ptr"
169347aefc6SSascha Wildner.Fa "val"
170347aefc6SSascha Wildner.Fa "descr"
171347aefc6SSascha Wildner.Fc
17259308cc9SSascha Wildner.Fo SYSCTL_STRING
17359308cc9SSascha Wildner.Fa "parent"
17459308cc9SSascha Wildner.Fa "nbr"
17559308cc9SSascha Wildner.Fa "name"
17659308cc9SSascha Wildner.Fa "access"
17759308cc9SSascha Wildner.Fa "arg"
17859308cc9SSascha Wildner.Fa "len"
17959308cc9SSascha Wildner.Fa "descr"
18059308cc9SSascha Wildner.Fc
18159308cc9SSascha Wildner.Fo SYSCTL_STRUCT
18259308cc9SSascha Wildner.Fa "parent"
18359308cc9SSascha Wildner.Fa "nbr"
18459308cc9SSascha Wildner.Fa "name"
18559308cc9SSascha Wildner.Fa "access"
18659308cc9SSascha Wildner.Fa "ptr"
18759308cc9SSascha Wildner.Fa "type"
18859308cc9SSascha Wildner.Fa "descr"
18959308cc9SSascha Wildner.Fc
190347aefc6SSascha Wildner.Fo SYSCTL_U8
191347aefc6SSascha Wildner.Fa "parent"
192347aefc6SSascha Wildner.Fa "number"
193347aefc6SSascha Wildner.Fa "name"
194347aefc6SSascha Wildner.Fa "access"
195347aefc6SSascha Wildner.Fa "ptr"
196347aefc6SSascha Wildner.Fa "val"
197347aefc6SSascha Wildner.Fa "descr"
198347aefc6SSascha Wildner.Fc
199347aefc6SSascha Wildner.Fo SYSCTL_U16
200347aefc6SSascha Wildner.Fa "parent"
201347aefc6SSascha Wildner.Fa "number"
202347aefc6SSascha Wildner.Fa "name"
203347aefc6SSascha Wildner.Fa "access"
204347aefc6SSascha Wildner.Fa "ptr"
205347aefc6SSascha Wildner.Fa "val"
206347aefc6SSascha Wildner.Fa "descr"
207347aefc6SSascha Wildner.Fc
208c48b2bacSSascha Wildner.Fo SYSCTL_U32
209c48b2bacSSascha Wildner.Fa "parent"
210c48b2bacSSascha Wildner.Fa "number"
211c48b2bacSSascha Wildner.Fa "name"
212c48b2bacSSascha Wildner.Fa "access"
213c48b2bacSSascha Wildner.Fa "ptr"
214c48b2bacSSascha Wildner.Fa "val"
215c48b2bacSSascha Wildner.Fa "descr"
216c48b2bacSSascha Wildner.Fc
217347aefc6SSascha Wildner.Fo SYSCTL_U64
218347aefc6SSascha Wildner.Fa "parent"
219347aefc6SSascha Wildner.Fa "number"
220347aefc6SSascha Wildner.Fa "name"
221347aefc6SSascha Wildner.Fa "access"
222347aefc6SSascha Wildner.Fa "ptr"
223347aefc6SSascha Wildner.Fa "val"
224347aefc6SSascha Wildner.Fa "descr"
225347aefc6SSascha Wildner.Fc
22659308cc9SSascha Wildner.Fo SYSCTL_UINT
22759308cc9SSascha Wildner.Fa "parent"
22859308cc9SSascha Wildner.Fa "nbr"
22959308cc9SSascha Wildner.Fa "name"
23059308cc9SSascha Wildner.Fa "access"
23159308cc9SSascha Wildner.Fa "ptr"
23259308cc9SSascha Wildner.Fa "val"
23359308cc9SSascha Wildner.Fa "descr"
23459308cc9SSascha Wildner.Fc
23559308cc9SSascha Wildner.Fo SYSCTL_ULONG
23659308cc9SSascha Wildner.Fa "parent"
23759308cc9SSascha Wildner.Fa "nbr"
23859308cc9SSascha Wildner.Fa "name"
23959308cc9SSascha Wildner.Fa "access"
24059308cc9SSascha Wildner.Fa "ptr"
24159308cc9SSascha Wildner.Fa "val"
24259308cc9SSascha Wildner.Fa "descr"
24359308cc9SSascha Wildner.Fc
24459308cc9SSascha Wildner.Fo SYSCTL_UQUAD
24559308cc9SSascha Wildner.Fa "parent"
24659308cc9SSascha Wildner.Fa "nbr"
24759308cc9SSascha Wildner.Fa "name"
24859308cc9SSascha Wildner.Fa "access"
24959308cc9SSascha Wildner.Fa "ptr"
25059308cc9SSascha Wildner.Fa "val"
25159308cc9SSascha Wildner.Fa "descr"
25259308cc9SSascha Wildner.Fc
25359308cc9SSascha Wildner.Sh DESCRIPTION
25459308cc9SSascha WildnerThe
25559308cc9SSascha Wildner.Nm
25659308cc9SSascha Wildnerkernel interfaces allow code to statically declare
25759308cc9SSascha Wildner.Xr sysctl 8
25859308cc9SSascha WildnerMIB entries, which will be initialized when the kernel module containing the
25959308cc9SSascha Wildnerdeclaration is initialized.
26059308cc9SSascha WildnerWhen the module is unloaded, the sysctl will be automatically destroyed.
26159308cc9SSascha Wildner.Pp
26259308cc9SSascha WildnerSysctl nodes are created in a hierarchical tree, with all static nodes being
26359308cc9SSascha Wildnerrepresented by named C data structures; in order to create a new node under
26459308cc9SSascha Wildneran existing node in the tree, the structure representing the desired parent
26559308cc9SSascha Wildnernode must be declared in the current context using
26659308cc9SSascha Wildner.Fn SYSCTL_DECL .
26759308cc9SSascha Wildner.Pp
26859308cc9SSascha WildnerNew nodes are declared using one of
269df0102f1SAntonio Huete Jimenez.Nm SYSCTL_BIT32 ,
270df0102f1SAntonio Huete Jimenez.Nm SYSCTL_BIT64 ,
27159308cc9SSascha Wildner.Nm SYSCTL_INT ,
27259308cc9SSascha Wildner.Nm SYSCTL_LONG ,
27359308cc9SSascha Wildner.Nm SYSCTL_QUAD ,
27459308cc9SSascha Wildner.Nm SYSCTL_NODE ,
27559308cc9SSascha Wildner.Nm SYSCTL_OPAQUE ,
27659308cc9SSascha Wildner.Nm SYSCTL_PROC ,
277347aefc6SSascha Wildner.Nm SYSCTL_S8 ,
278347aefc6SSascha Wildner.Nm SYSCTL_S16 ,
279347aefc6SSascha Wildner.Nm SYSCTL_S32 ,
280347aefc6SSascha Wildner.Nm SYSCTL_S64 ,
28159308cc9SSascha Wildner.Nm SYSCTL_STRING ,
28259308cc9SSascha Wildner.Nm SYSCTL_STRUCT ,
283347aefc6SSascha Wildner.Nm SYSCTL_U8 ,
284347aefc6SSascha Wildner.Nm SYSCTL_U16 ,
285c48b2bacSSascha Wildner.Nm SYSCTL_U32 ,
286347aefc6SSascha Wildner.Nm SYSCTL_U64 ,
28759308cc9SSascha Wildner.Nm SYSCTL_UINT ,
28859308cc9SSascha Wildner.Nm SYSCTL_ULONG ,
28959308cc9SSascha Wildnerand
29059308cc9SSascha Wildner.Nm SYSCTL_UQUAD .
29159308cc9SSascha WildnerEach macro accepts a parent name, as declared using
29259308cc9SSascha Wildner.Nm SYSCTL_DECL ,
29359308cc9SSascha Wildneran OID number, typically
29459308cc9SSascha Wildner.Dv OID_AUTO ,
29559308cc9SSascha Wildnera node name, a set of control and access flags, and a description.
29659308cc9SSascha WildnerDepending on the macro, a pointer to a variable supporting the MIB entry, a
29759308cc9SSascha Wildnersize, a value, and a function pointer implementing the MIB entry may also be
29859308cc9SSascha Wildnerpresent.
29959308cc9SSascha Wildner.Pp
30059308cc9SSascha WildnerFor most of the above macros, declaring a type as part of the access flags is
30159308cc9SSascha Wildnernot necessary -- however, when declaring a sysctl implemented by a function,
30259308cc9SSascha Wildnerincluding a type in the access mask is required:
303f54c32e1SSascha Wildner.Bl -tag -width ".Dv CTLTYPE_STRING"
30459308cc9SSascha Wildner.It Dv CTLTYPE_NODE
30559308cc9SSascha WildnerThis is a node intended to be a parent for other nodes.
30659308cc9SSascha Wildner.It Dv CTLTYPE_INT
30759308cc9SSascha WildnerThis is a signed integer.
308347aefc6SSascha Wildner.It Dv CTLTYPE_S8
309347aefc6SSascha WildnerThis is an 8-bit signed integer.
310347aefc6SSascha Wildner.It Dv CTLTYPE_S16
311347aefc6SSascha WildnerThis is a 16-bit signed integer.
312347aefc6SSascha Wildner.It Dv CTLTYPE_S32
313347aefc6SSascha WildnerThis is a 32-bit signed integer.
314347aefc6SSascha Wildner.It Dv CTLTYPE_S64
315347aefc6SSascha WildnerThis is a 64-bit signed integer.
31659308cc9SSascha Wildner.It Dv CTLTYPE_STRING
31759308cc9SSascha WildnerThis is a nul-terminated string stored in a character array.
31859308cc9SSascha Wildner.It Dv CTLTYPE_QUAD
31959308cc9SSascha WildnerThis is a 64-bit signed integer.
32059308cc9SSascha Wildner.It Dv CTLTYPE_OPAQUE
32159308cc9SSascha WildnerThis is an opaque data structure.
32259308cc9SSascha Wildner.It Dv CTLTYPE_STRUCT
32359308cc9SSascha WildnerAlias for
32459308cc9SSascha Wildner.Dv CTLTYPE_OPAQUE .
325347aefc6SSascha Wildner.It Dv CTLTYPE_U8
326347aefc6SSascha WildnerThis is an 8-bit unsigned integer.
327347aefc6SSascha Wildner.It Dv CTLTYPE_U16
328347aefc6SSascha WildnerThis is a 16-bit unsigned integer.
329c48b2bacSSascha Wildner.It Dv CTLTYPE_U32
330c48b2bacSSascha WildnerThis is a 32-bit unsigned integer.
331347aefc6SSascha Wildner.It Dv CTLTYPE_U64
332347aefc6SSascha WildnerThis is a 64-bit unsigned integer.
33359308cc9SSascha Wildner.It Dv CTLTYPE_UINT
33459308cc9SSascha WildnerThis is an unsigned integer.
33559308cc9SSascha Wildner.It Dv CTLTYPE_LONG
33659308cc9SSascha WildnerThis is a signed long.
33759308cc9SSascha Wildner.It Dv CTLTYPE_ULONG
33859308cc9SSascha WildnerThis is an unsigned long.
33959308cc9SSascha Wildner.It Dv CTLTYPE_UQUAD
34059308cc9SSascha WildnerThis is a 64-bit unsigned integer.
34159308cc9SSascha Wildner.El
34259308cc9SSascha Wildner.Pp
34359308cc9SSascha WildnerAll sysctl types except for new node declarations require one or more flags
34459308cc9SSascha Wildnerto be set indicating the read and write disposition of the sysctl:
345f54c32e1SSascha Wildner.Bl -tag -width ".Dv CTLFLAG_ANYBODY"
34659308cc9SSascha Wildner.It Dv CTLFLAG_RD
34759308cc9SSascha WildnerThis is a read-only sysctl.
3486d600fe3SHasso Tepper.It Dv CTLFLAG_WR
34959308cc9SSascha WildnerThis is a writable sysctl.
35059308cc9SSascha Wildner.It Dv CTLFLAG_RW
35159308cc9SSascha WildnerThis sysctl is readable and writable.
35259308cc9SSascha Wildner.It Dv CTLFLAG_ANYBODY
35359308cc9SSascha WildnerAny user or process can write to this sysctl.
35459308cc9SSascha Wildner.It Dv CTLFLAG_SECURE
35559308cc9SSascha WildnerThis sysctl can be written to only if the effective securelevel of the
35659308cc9SSascha Wildnerprocess is <= 0.
35759308cc9SSascha Wildner.It Dv CTLFLAG_PRISON
35859308cc9SSascha WildnerThis sysctl can be written to by processes in
35959308cc9SSascha Wildner.Xr jail 2 .
360afc5c1adSSascha Wildner.\".It Dv CTLFLAG_SKIP
361afc5c1adSSascha Wildner.\"When iterating the sysctl name space, do not list this sysctl.
36259308cc9SSascha Wildner.El
36359308cc9SSascha Wildner.Pp
36459308cc9SSascha WildnerWhen creating new sysctls, careful attention should be paid to the security
36559308cc9SSascha Wildnerimplications of the monitoring or management interface being created.
36659308cc9SSascha WildnerMost sysctls present in the kernel are read-only or writable only by the
36759308cc9SSascha Wildnersuperuser.
36859308cc9SSascha WildnerSysctls exporting extensive information on system data structures and
36959308cc9SSascha Wildneroperation, especially those implemented using procedures, will wish to
37059308cc9SSascha Wildnerimplement access control to limit the undesired exposure of information about
37159308cc9SSascha Wildnerother processes, network connections, etc.
37259308cc9SSascha Wildner.Pp
37359308cc9SSascha WildnerThe following top level sysctl name spaces are commonly used:
374afc5c1adSSascha Wildner.Bl -tag -width ".Va machdep"
375afc5c1adSSascha Wildner.It Va compat
37659308cc9SSascha WildnerCompatibility layer information.
377afc5c1adSSascha Wildner.It Va debug
37859308cc9SSascha WildnerDebugging information.
37959308cc9SSascha WildnerVarious name spaces exist under
380afc5c1adSSascha Wildner.Va debug .
381afc5c1adSSascha Wildner.It Va hw
38259308cc9SSascha WildnerHardware and device driver information.
383afc5c1adSSascha Wildner.It Va lwkt
384*46699957SSascha WildnerInformation about the LWKT subsystem.
385afc5c1adSSascha Wildner.It Va kern
38659308cc9SSascha WildnerKernel behavior tuning; generally deprecated in favor of more specific
38759308cc9SSascha Wildnername spaces.
388afc5c1adSSascha Wildner.It Va machdep
38959308cc9SSascha WildnerMachine-dependent configuration parameters.
390afc5c1adSSascha Wildner.It Va net
39159308cc9SSascha WildnerNetwork subsystem.
39259308cc9SSascha WildnerVarious protocols have name spaces under
393afc5c1adSSascha Wildner.Va net .
394afc5c1adSSascha Wildner.It Va sysctl
39559308cc9SSascha WildnerReserved name space for the implementation of sysctl.
396afc5c1adSSascha Wildner.It Va user
39759308cc9SSascha WildnerConfiguration settings relating to user application behavior.
39859308cc9SSascha WildnerGenerally, configuring applications using kernel sysctls is discouraged.
399afc5c1adSSascha Wildner.It Va vfs
40059308cc9SSascha WildnerVirtual file system configuration and information.
401afc5c1adSSascha Wildner.It Va vm
40259308cc9SSascha WildnerVirtual memory subsystem configuration and information.
40359308cc9SSascha Wildner.El
40459308cc9SSascha Wildner.Sh EXAMPLES
40559308cc9SSascha WildnerSample use of
40659308cc9SSascha Wildner.Nm SYSCTL_DECL
40759308cc9SSascha Wildnerto declare the "machdep" sysctl tree for use by new nodes:
40859308cc9SSascha Wildner.Bd -literal -offset indent
40959308cc9SSascha WildnerSYSCTL_DECL(_machdep);
41059308cc9SSascha Wildner.Ed
41159308cc9SSascha Wildner.Pp
41259308cc9SSascha WildnerExamples of integer, opaque, string, and procedure sysctls follow:
41359308cc9SSascha Wildner.Bd -literal -offset indent
41459308cc9SSascha Wildner/*
41559308cc9SSascha Wildner * Example of a constant integer value.  Notice that the control
41659308cc9SSascha Wildner * flags are CTLFLAG_RD, the variable pointer is NULL, and the
41759308cc9SSascha Wildner * value is declared.
41859308cc9SSascha Wildner */
41959308cc9SSascha WildnerSYSCTL_INT(_debug_sizeof, OID_AUTO, bio, CTLFLAG_RD, NULL,
42059308cc9SSascha Wildner    sizeof(struct bio), "sizeof(struct bio)");
42159308cc9SSascha Wildner
42259308cc9SSascha Wildner/*
42359308cc9SSascha Wildner * Example of a variable integer value.  Notice that the control
42459308cc9SSascha Wildner * flags are CTLFLAG_RW, the variable pointer is set, and the
42559308cc9SSascha Wildner * value is 0.
42659308cc9SSascha Wildner */
42759308cc9SSascha Wildnerstatic int	doingcache = 1;		/* 1 => enable the cache */
42859308cc9SSascha WildnerSYSCTL_INT(_debug, OID_AUTO, vfscache, CTLFLAG_RW, &doingcache, 0,
42959308cc9SSascha Wildner    "Enable name cache");
43059308cc9SSascha Wildner
43159308cc9SSascha Wildner/*
43259308cc9SSascha Wildner * Example of a variable string value.  Notice that the control
43359308cc9SSascha Wildner * flags are CTLFLAG_RW, that the variable pointer and string
43459308cc9SSascha Wildner * size are set.  Unlike newer sysctls, this older sysctl uses a
43559308cc9SSascha Wildner * static oid number.
43659308cc9SSascha Wildner */
4378e1c6f81SMatthias Schmidtchar kernelname[MAXPATHLEN] = "/boot/kernel";	/* XXX bloat */
43859308cc9SSascha WildnerSYSCTL_STRING(_kern, KERN_BOOTFILE, bootfile, CTLFLAG_RW,
43959308cc9SSascha Wildner    kernelname, sizeof(kernelname), "Name of kernel file booted");
44059308cc9SSascha Wildner
44159308cc9SSascha Wildner/*
44259308cc9SSascha Wildner * Example of an opaque data type exported by sysctl.  Notice that
44359308cc9SSascha Wildner * the variable pointer and size are provided, as well as a format
44459308cc9SSascha Wildner * string for sysctl(8).
44559308cc9SSascha Wildner */
4462a1faf81SSascha Wildnerstatic l_fp pps_freq;	/* scaled frequency offset (ns/s) */
44759308cc9SSascha WildnerSYSCTL_OPAQUE(_kern_ntp_pll, OID_AUTO, pps_freq, CTLFLAG_RD,
44859308cc9SSascha Wildner    &pps_freq, sizeof(pps_freq), "I", "");
44959308cc9SSascha Wildner
45059308cc9SSascha Wildner/*
45159308cc9SSascha Wildner * Example of a procedure based sysctl exporting string
45259308cc9SSascha Wildner * information.  Notice that the data type is declared, the NULL
45359308cc9SSascha Wildner * variable pointer and 0 size, the function pointer, and the
45459308cc9SSascha Wildner * format string for sysctl(8).
45559308cc9SSascha Wildner */
45659308cc9SSascha WildnerSYSCTL_PROC(_kern, OID_AUTO, msgbuf, CTLTYPE_STRING | CTLFLAG_RD,
45759308cc9SSascha Wildner    0, 0, sysctl_kern_msgbuf, "A", "Contents of kernel message buffer");
45859308cc9SSascha Wildner.Ed
45959308cc9SSascha Wildner.Pp
46059308cc9SSascha WildnerWhen adding, modifying, or removing sysctl names, it is important to be
46159308cc9SSascha Wildneraware that these interfaces may be used by users, libraries, applications,
46259308cc9SSascha Wildneror documentation (such as published books), and are implicitly published
46359308cc9SSascha Wildnerapplication interfaces.
46459308cc9SSascha WildnerAs with other application interfaces, caution must be taken not to break
46559308cc9SSascha Wildnerexisting applications, and to think about future use of new name spaces so as
46659308cc9SSascha Wildnerto avoid the need to rename or remove interfaces that might be depended on in
46759308cc9SSascha Wildnerthe future.
46859308cc9SSascha Wildner.Sh SEE ALSO
46959308cc9SSascha Wildner.Xr sysctl 8 ,
47059308cc9SSascha Wildner.Xr sysctl_add_oid 9 ,
47159308cc9SSascha Wildner.Xr sysctl_ctx_free 9 ,
47259308cc9SSascha Wildner.Xr sysctl_ctx_init 9 ,
47359308cc9SSascha Wildner.Xr sysctl_remove_oid 9
47459308cc9SSascha Wildner.Sh HISTORY
47559308cc9SSascha Wildner.Xr sysctl 8
47659308cc9SSascha Wildnerfirst appeared in
47759308cc9SSascha Wildner.Bx 4.4 .
47859308cc9SSascha Wildner.Sh AUTHORS
47918dfd54eSSascha Wildner.An -nosplit
48059308cc9SSascha WildnerThe sysctl implementation originally found in
48159308cc9SSascha Wildner.Bx
48259308cc9SSascha Wildnerhas been extensively rewritten by
48359308cc9SSascha Wildner.An Poul-Henning Kamp
48459308cc9SSascha Wildnerin order to add support for name lookups, name space iteration, and dynamic
48559308cc9SSascha Wildneraddition of MIB nodes.
48659308cc9SSascha Wildner.Pp
48759308cc9SSascha WildnerThis man page was written by
48859308cc9SSascha Wildner.An Robert N. M. Watson .
489