xref: /dflybsd-src/share/man/man9/sysctl.9 (revision 59308cc9ee66507c9cbb4ad1418c5f4b3cf04a96)
1*59308cc9SSascha Wildner.\"
2*59308cc9SSascha Wildner.\" Copyright (c) 2006 Robert N. M. Watson
3*59308cc9SSascha Wildner.\" All rights reserved.
4*59308cc9SSascha Wildner.\"
5*59308cc9SSascha Wildner.\" Redistribution and use in source and binary forms, with or without
6*59308cc9SSascha Wildner.\" modification, are permitted provided that the following conditions
7*59308cc9SSascha Wildner.\" are met:
8*59308cc9SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
9*59308cc9SSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
10*59308cc9SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
11*59308cc9SSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
12*59308cc9SSascha Wildner.\"    documentation and/or other materials provided with the distribution.
13*59308cc9SSascha Wildner.\"
14*59308cc9SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*59308cc9SSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*59308cc9SSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*59308cc9SSascha Wildner.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*59308cc9SSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*59308cc9SSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*59308cc9SSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*59308cc9SSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*59308cc9SSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*59308cc9SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*59308cc9SSascha Wildner.\" SUCH DAMAGE.
25*59308cc9SSascha Wildner.\"
26*59308cc9SSascha Wildner.\" $FreeBSD: src/share/man/man9/sysctl.9,v 1.3 2006/04/28 23:21:36 keramida Exp $
27*59308cc9SSascha Wildner.\" $DragonFly: src/share/man/man9/sysctl.9,v 1.1 2006/06/22 20:10:54 swildner Exp $
28*59308cc9SSascha Wildner.\"
29*59308cc9SSascha Wildner.Dd June 22, 2006
30*59308cc9SSascha Wildner.Dt SYSCTL 9
31*59308cc9SSascha Wildner.Os
32*59308cc9SSascha Wildner.Sh NAME
33*59308cc9SSascha Wildner.Nm SYSCTL_DECL ,
34*59308cc9SSascha Wildner.Nm SYSCTL_INT ,
35*59308cc9SSascha Wildner.Nm SYSCTL_LONG ,
36*59308cc9SSascha Wildner.Nm SYSCTL_QUAD ,
37*59308cc9SSascha Wildner.Nm SYSCTL_NODE ,
38*59308cc9SSascha Wildner.Nm SYSCTL_OPAQUE ,
39*59308cc9SSascha Wildner.Nm SYSCTL_PROC ,
40*59308cc9SSascha Wildner.Nm SYSCTL_STRING ,
41*59308cc9SSascha Wildner.Nm SYSCTL_STRUCT ,
42*59308cc9SSascha Wildner.Nm SYSCTL_UINT ,
43*59308cc9SSascha Wildner.Nm SYSCTL_ULONG ,
44*59308cc9SSascha Wildner.Nm SYSCTL_UQUAD
45*59308cc9SSascha Wildner.Nd Static sysctl declaration functions
46*59308cc9SSascha Wildner.Sh SYNOPSIS
47*59308cc9SSascha Wildner.In sys/types.h
48*59308cc9SSascha Wildner.In sys/sysctl.h
49*59308cc9SSascha Wildner.Fo SYSCTL_DECL
50*59308cc9SSascha Wildner.Fa "name"
51*59308cc9SSascha Wildner.Fc
52*59308cc9SSascha Wildner.Fo SYSCTL_INT
53*59308cc9SSascha Wildner.Fa "parent"
54*59308cc9SSascha Wildner.Fa "nbr"
55*59308cc9SSascha Wildner.Fa "name"
56*59308cc9SSascha Wildner.Fa "access"
57*59308cc9SSascha Wildner.Fa "ptr"
58*59308cc9SSascha Wildner.Fa "val"
59*59308cc9SSascha Wildner.Fa "descr"
60*59308cc9SSascha Wildner.Fc
61*59308cc9SSascha Wildner.Fo SYSCTL_LONG
62*59308cc9SSascha Wildner.Fa "parent"
63*59308cc9SSascha Wildner.Fa "nbr"
64*59308cc9SSascha Wildner.Fa "name"
65*59308cc9SSascha Wildner.Fa "access"
66*59308cc9SSascha Wildner.Fa "ptr"
67*59308cc9SSascha Wildner.Fa "val"
68*59308cc9SSascha Wildner.Fa "descr"
69*59308cc9SSascha Wildner.Fc
70*59308cc9SSascha Wildner.Fo SYSCTL_QUAD
71*59308cc9SSascha Wildner.Fa "parent"
72*59308cc9SSascha Wildner.Fa "nbr"
73*59308cc9SSascha Wildner.Fa "name"
74*59308cc9SSascha Wildner.Fa "access"
75*59308cc9SSascha Wildner.Fa "ptr"
76*59308cc9SSascha Wildner.Fa "val"
77*59308cc9SSascha Wildner.Fa "descr"
78*59308cc9SSascha Wildner.Fc
79*59308cc9SSascha Wildner.Fo SYSCTL_NODE
80*59308cc9SSascha Wildner.Fa "parent"
81*59308cc9SSascha Wildner.Fa "nbr"
82*59308cc9SSascha Wildner.Fa "name"
83*59308cc9SSascha Wildner.Fa "access"
84*59308cc9SSascha Wildner.Fa "handler"
85*59308cc9SSascha Wildner.Fa "descr"
86*59308cc9SSascha Wildner.Fc
87*59308cc9SSascha Wildner.Fo SYSCTL_OPAQUE
88*59308cc9SSascha Wildner.Fa "parent"
89*59308cc9SSascha Wildner.Fa "nbr"
90*59308cc9SSascha Wildner.Fa "name"
91*59308cc9SSascha Wildner.Fa "access"
92*59308cc9SSascha Wildner.Fa "ptr"
93*59308cc9SSascha Wildner.Fa "len"
94*59308cc9SSascha Wildner.Fa "fmt"
95*59308cc9SSascha Wildner.Fa "descr"
96*59308cc9SSascha Wildner.Fc
97*59308cc9SSascha Wildner.Fo SYSCTL_PROC
98*59308cc9SSascha Wildner.Fa "parent"
99*59308cc9SSascha Wildner.Fa "nbr"
100*59308cc9SSascha Wildner.Fa "name"
101*59308cc9SSascha Wildner.Fa "access"
102*59308cc9SSascha Wildner.Fa "ptr"
103*59308cc9SSascha Wildner.Fa "arg"
104*59308cc9SSascha Wildner.Fa "handler"
105*59308cc9SSascha Wildner.Fa "fmt"
106*59308cc9SSascha Wildner.Fa "descr"
107*59308cc9SSascha Wildner.Fc
108*59308cc9SSascha Wildner.Fo SYSCTL_STRING
109*59308cc9SSascha Wildner.Fa "parent"
110*59308cc9SSascha Wildner.Fa "nbr"
111*59308cc9SSascha Wildner.Fa "name"
112*59308cc9SSascha Wildner.Fa "access"
113*59308cc9SSascha Wildner.Fa "arg"
114*59308cc9SSascha Wildner.Fa "len"
115*59308cc9SSascha Wildner.Fa "descr"
116*59308cc9SSascha Wildner.Fc
117*59308cc9SSascha Wildner.Fo SYSCTL_STRUCT
118*59308cc9SSascha Wildner.Fa "parent"
119*59308cc9SSascha Wildner.Fa "nbr"
120*59308cc9SSascha Wildner.Fa "name"
121*59308cc9SSascha Wildner.Fa "access"
122*59308cc9SSascha Wildner.Fa "ptr"
123*59308cc9SSascha Wildner.Fa "type"
124*59308cc9SSascha Wildner.Fa "descr"
125*59308cc9SSascha Wildner.Fc
126*59308cc9SSascha Wildner.Fo SYSCTL_UINT
127*59308cc9SSascha Wildner.Fa "parent"
128*59308cc9SSascha Wildner.Fa "nbr"
129*59308cc9SSascha Wildner.Fa "name"
130*59308cc9SSascha Wildner.Fa "access"
131*59308cc9SSascha Wildner.Fa "ptr"
132*59308cc9SSascha Wildner.Fa "val"
133*59308cc9SSascha Wildner.Fa "descr"
134*59308cc9SSascha Wildner.Fc
135*59308cc9SSascha Wildner.Fo SYSCTL_ULONG
136*59308cc9SSascha Wildner.Fa "parent"
137*59308cc9SSascha Wildner.Fa "nbr"
138*59308cc9SSascha Wildner.Fa "name"
139*59308cc9SSascha Wildner.Fa "access"
140*59308cc9SSascha Wildner.Fa "ptr"
141*59308cc9SSascha Wildner.Fa "val"
142*59308cc9SSascha Wildner.Fa "descr"
143*59308cc9SSascha Wildner.Fc
144*59308cc9SSascha Wildner.Fo SYSCTL_UQUAD
145*59308cc9SSascha Wildner.Fa "parent"
146*59308cc9SSascha Wildner.Fa "nbr"
147*59308cc9SSascha Wildner.Fa "name"
148*59308cc9SSascha Wildner.Fa "access"
149*59308cc9SSascha Wildner.Fa "ptr"
150*59308cc9SSascha Wildner.Fa "val"
151*59308cc9SSascha Wildner.Fa "descr"
152*59308cc9SSascha Wildner.Fc
153*59308cc9SSascha Wildner.Sh DESCRIPTION
154*59308cc9SSascha WildnerThe
155*59308cc9SSascha Wildner.Nm
156*59308cc9SSascha Wildnerkernel interfaces allow code to statically declare
157*59308cc9SSascha Wildner.Xr sysctl 8
158*59308cc9SSascha WildnerMIB entries, which will be initialized when the kernel module containing the
159*59308cc9SSascha Wildnerdeclaration is initialized.
160*59308cc9SSascha WildnerWhen the module is unloaded, the sysctl will be automatically destroyed.
161*59308cc9SSascha Wildner.Pp
162*59308cc9SSascha WildnerSysctl nodes are created in a hierarchical tree, with all static nodes being
163*59308cc9SSascha Wildnerrepresented by named C data structures; in order to create a new node under
164*59308cc9SSascha Wildneran existing node in the tree, the structure representing the desired parent
165*59308cc9SSascha Wildnernode must be declared in the current context using
166*59308cc9SSascha Wildner.Fn SYSCTL_DECL .
167*59308cc9SSascha Wildner.Pp
168*59308cc9SSascha WildnerNew nodes are declared using one of
169*59308cc9SSascha Wildner.Nm SYSCTL_INT ,
170*59308cc9SSascha Wildner.Nm SYSCTL_LONG ,
171*59308cc9SSascha Wildner.Nm SYSCTL_QUAD ,
172*59308cc9SSascha Wildner.Nm SYSCTL_NODE ,
173*59308cc9SSascha Wildner.Nm SYSCTL_OPAQUE ,
174*59308cc9SSascha Wildner.Nm SYSCTL_PROC ,
175*59308cc9SSascha Wildner.Nm SYSCTL_STRING ,
176*59308cc9SSascha Wildner.Nm SYSCTL_STRUCT ,
177*59308cc9SSascha Wildner.Nm SYSCTL_UINT ,
178*59308cc9SSascha Wildner.Nm SYSCTL_ULONG ,
179*59308cc9SSascha Wildnerand
180*59308cc9SSascha Wildner.Nm SYSCTL_UQUAD .
181*59308cc9SSascha WildnerEach macro accepts a parent name, as declared using
182*59308cc9SSascha Wildner.Nm SYSCTL_DECL ,
183*59308cc9SSascha Wildneran OID number, typically
184*59308cc9SSascha Wildner.Dv OID_AUTO ,
185*59308cc9SSascha Wildnera node name, a set of control and access flags, and a description.
186*59308cc9SSascha WildnerDepending on the macro, a pointer to a variable supporting the MIB entry, a
187*59308cc9SSascha Wildnersize, a value, and a function pointer implementing the MIB entry may also be
188*59308cc9SSascha Wildnerpresent.
189*59308cc9SSascha Wildner.Pp
190*59308cc9SSascha WildnerFor most of the above macros, declaring a type as part of the access flags is
191*59308cc9SSascha Wildnernot necessary -- however, when declaring a sysctl implemented by a function,
192*59308cc9SSascha Wildnerincluding a type in the access mask is required:
193*59308cc9SSascha Wildner.Bl -tag -width CTLTYPE_STRING
194*59308cc9SSascha Wildner.It Dv CTLTYPE_NODE
195*59308cc9SSascha WildnerThis is a node intended to be a parent for other nodes.
196*59308cc9SSascha Wildner.It Dv CTLTYPE_INT
197*59308cc9SSascha WildnerThis is a signed integer.
198*59308cc9SSascha Wildner.It Dv CTLTYPE_STRING
199*59308cc9SSascha WildnerThis is a nul-terminated string stored in a character array.
200*59308cc9SSascha Wildner.It Dv CTLTYPE_QUAD
201*59308cc9SSascha WildnerThis is a 64-bit signed integer.
202*59308cc9SSascha Wildner.It Dv CTLTYPE_OPAQUE
203*59308cc9SSascha WildnerThis is an opaque data structure.
204*59308cc9SSascha Wildner.It Dv CTLTYPE_STRUCT
205*59308cc9SSascha WildnerAlias for
206*59308cc9SSascha Wildner.Dv CTLTYPE_OPAQUE.
207*59308cc9SSascha Wildner.It Dv CTLTYPE_UINT
208*59308cc9SSascha WildnerThis is an unsigned integer.
209*59308cc9SSascha Wildner.It Dv CTLTYPE_LONG
210*59308cc9SSascha WildnerThis is a signed long.
211*59308cc9SSascha Wildner.It Dv CTLTYPE_ULONG
212*59308cc9SSascha WildnerThis is an unsigned long.
213*59308cc9SSascha Wildner.It Dv CTLTYPE_UQUAD
214*59308cc9SSascha WildnerThis is a 64-bit unsigned integer.
215*59308cc9SSascha Wildner.El
216*59308cc9SSascha Wildner.Pp
217*59308cc9SSascha WildnerAll sysctl types except for new node declarations require one or more flags
218*59308cc9SSascha Wildnerto be set indicating the read and write disposition of the sysctl:
219*59308cc9SSascha Wildner.Bl -tag -width CTLFLAG_ANYBODY
220*59308cc9SSascha Wildner.It Dv CTLFLAG_RD
221*59308cc9SSascha WildnerThis is a read-only sysctl.
222*59308cc9SSascha WildnerIt Dv CTLFLAG_WR
223*59308cc9SSascha WildnerThis is a writable sysctl.
224*59308cc9SSascha Wildner.It Dv CTLFLAG_RW
225*59308cc9SSascha WildnerThis sysctl is readable and writable.
226*59308cc9SSascha Wildner.It Dv CTLFLAG_ANYBODY
227*59308cc9SSascha WildnerAny user or process can write to this sysctl.
228*59308cc9SSascha Wildner.It Dv CTLFLAG_NOLOCK
229*59308cc9SSascha WildnerDon't lock.
230*59308cc9SSascha Wildner.It Dv CTLFLAG_SECURE
231*59308cc9SSascha WildnerThis sysctl can be written to only if the effective securelevel of the
232*59308cc9SSascha Wildnerprocess is <= 0.
233*59308cc9SSascha Wildner.It Dv CTLFLAG_PRISON
234*59308cc9SSascha WildnerThis sysctl can be written to by processes in
235*59308cc9SSascha Wildner.Xr jail 2 .
236*59308cc9SSascha Wildner.It Dv CTLFLAG_SKIP
237*59308cc9SSascha WildnerWhen iterating the sysctl name space, do not list this sysctl.
238*59308cc9SSascha Wildner.El
239*59308cc9SSascha Wildner.Pp
240*59308cc9SSascha WildnerWhen creating new sysctls, careful attention should be paid to the security
241*59308cc9SSascha Wildnerimplications of the monitoring or management interface being created.
242*59308cc9SSascha WildnerMost sysctls present in the kernel are read-only or writable only by the
243*59308cc9SSascha Wildnersuperuser.
244*59308cc9SSascha WildnerSysctls exporting extensive information on system data structures and
245*59308cc9SSascha Wildneroperation, especially those implemented using procedures, will wish to
246*59308cc9SSascha Wildnerimplement access control to limit the undesired exposure of information about
247*59308cc9SSascha Wildnerother processes, network connections, etc.
248*59308cc9SSascha Wildner.Pp
249*59308cc9SSascha WildnerThe following top level sysctl name spaces are commonly used:
250*59308cc9SSascha Wildner.Bl -tag -width machdep
251*59308cc9SSascha Wildner.It Dv compat
252*59308cc9SSascha WildnerCompatibility layer information.
253*59308cc9SSascha Wildner.It Dv debug
254*59308cc9SSascha WildnerDebugging information.
255*59308cc9SSascha WildnerVarious name spaces exist under
256*59308cc9SSascha Wildner.Dv debug .
257*59308cc9SSascha Wildner.It Dv hw
258*59308cc9SSascha WildnerHardware and device driver information.
259*59308cc9SSascha Wildner.It Dv lwkt
260*59308cc9SSascha WildnerInformation about the
261*59308cc9SSascha Wildner.Xr lwkt 9
262*59308cc9SSascha Wildnersubsystem.
263*59308cc9SSascha Wildner.It Dv kern
264*59308cc9SSascha WildnerKernel behavior tuning; generally deprecated in favor of more specific
265*59308cc9SSascha Wildnername spaces.
266*59308cc9SSascha Wildner.It Dv machdep
267*59308cc9SSascha WildnerMachine-dependent configuration parameters.
268*59308cc9SSascha Wildner.It Dv net
269*59308cc9SSascha WildnerNetwork subsystem.
270*59308cc9SSascha WildnerVarious protocols have name spaces under
271*59308cc9SSascha Wildner.Dv net .
272*59308cc9SSascha Wildner.It Dv sysctl
273*59308cc9SSascha WildnerReserved name space for the implementation of sysctl.
274*59308cc9SSascha Wildner.It Dv user
275*59308cc9SSascha WildnerConfiguration settings relating to user application behavior.
276*59308cc9SSascha WildnerGenerally, configuring applications using kernel sysctls is discouraged.
277*59308cc9SSascha Wildner.It Dv vfs
278*59308cc9SSascha WildnerVirtual file system configuration and information.
279*59308cc9SSascha Wildner.It Dv vm
280*59308cc9SSascha WildnerVirtual memory subsystem configuration and information.
281*59308cc9SSascha Wildner.El
282*59308cc9SSascha Wildner.Sh EXAMPLES
283*59308cc9SSascha WildnerSample use of
284*59308cc9SSascha Wildner.Nm SYSCTL_DECL
285*59308cc9SSascha Wildnerto declare the "machdep" sysctl tree for use by new nodes:
286*59308cc9SSascha Wildner.Bd -literal -offset indent
287*59308cc9SSascha WildnerSYSCTL_DECL(_machdep);
288*59308cc9SSascha Wildner.Ed
289*59308cc9SSascha Wildner.Pp
290*59308cc9SSascha WildnerExamples of integer, opaque, string, and procedure sysctls follow:
291*59308cc9SSascha Wildner.Bd -literal -offset indent
292*59308cc9SSascha Wildner/*
293*59308cc9SSascha Wildner * Example of a constant integer value.  Notice that the control
294*59308cc9SSascha Wildner * flags are CTLFLAG_RD, the variable pointer is NULL, and the
295*59308cc9SSascha Wildner * value is declared.
296*59308cc9SSascha Wildner */
297*59308cc9SSascha WildnerSYSCTL_INT(_debug_sizeof, OID_AUTO, bio, CTLFLAG_RD, NULL,
298*59308cc9SSascha Wildner    sizeof(struct bio), "sizeof(struct bio)");
299*59308cc9SSascha Wildner
300*59308cc9SSascha Wildner/*
301*59308cc9SSascha Wildner * Example of a variable integer value.  Notice that the control
302*59308cc9SSascha Wildner * flags are CTLFLAG_RW, the variable pointer is set, and the
303*59308cc9SSascha Wildner * value is 0.
304*59308cc9SSascha Wildner */
305*59308cc9SSascha Wildnerstatic int	doingcache = 1;		/* 1 => enable the cache */
306*59308cc9SSascha WildnerSYSCTL_INT(_debug, OID_AUTO, vfscache, CTLFLAG_RW, &doingcache, 0,
307*59308cc9SSascha Wildner    "Enable name cache");
308*59308cc9SSascha Wildner
309*59308cc9SSascha Wildner/*
310*59308cc9SSascha Wildner * Example of a variable string value.  Notice that the control
311*59308cc9SSascha Wildner * flags are CTLFLAG_RW, that the variable pointer and string
312*59308cc9SSascha Wildner * size are set.  Unlike newer sysctls, this older sysctl uses a
313*59308cc9SSascha Wildner * static oid number.
314*59308cc9SSascha Wildner */
315*59308cc9SSascha Wildnerchar kernelname[MAXPATHLEN] = "/kernel";	/* XXX bloat */
316*59308cc9SSascha WildnerSYSCTL_STRING(_kern, KERN_BOOTFILE, bootfile, CTLFLAG_RW,
317*59308cc9SSascha Wildner    kernelname, sizeof(kernelname), "Name of kernel file booted");
318*59308cc9SSascha Wildner
319*59308cc9SSascha Wildner/*
320*59308cc9SSascha Wildner * Example of an opaque data type exported by sysctl.  Notice that
321*59308cc9SSascha Wildner * the variable pointer and size are provided, as well as a format
322*59308cc9SSascha Wildner * string for sysctl(8).
323*59308cc9SSascha Wildner */
324*59308cc9SSascha Wildnerstatic l_fp pps_freq;	/* scaled frequence offset (ns/s) */
325*59308cc9SSascha WildnerSYSCTL_OPAQUE(_kern_ntp_pll, OID_AUTO, pps_freq, CTLFLAG_RD,
326*59308cc9SSascha Wildner    &pps_freq, sizeof(pps_freq), "I", "");
327*59308cc9SSascha Wildner
328*59308cc9SSascha Wildner/*
329*59308cc9SSascha Wildner * Example of a procedure based sysctl exporting string
330*59308cc9SSascha Wildner * information.  Notice that the data type is declared, the NULL
331*59308cc9SSascha Wildner * variable pointer and 0 size, the function pointer, and the
332*59308cc9SSascha Wildner * format string for sysctl(8).
333*59308cc9SSascha Wildner */
334*59308cc9SSascha WildnerSYSCTL_PROC(_kern, OID_AUTO, msgbuf, CTLTYPE_STRING | CTLFLAG_RD,
335*59308cc9SSascha Wildner    0, 0, sysctl_kern_msgbuf, "A", "Contents of kernel message buffer");
336*59308cc9SSascha Wildner.Ed
337*59308cc9SSascha Wildner.Pp
338*59308cc9SSascha WildnerWhen adding, modifying, or removing sysctl names, it is important to be
339*59308cc9SSascha Wildneraware that these interfaces may be used by users, libraries, applications,
340*59308cc9SSascha Wildneror documentation (such as published books), and are implicitly published
341*59308cc9SSascha Wildnerapplication interfaces.
342*59308cc9SSascha WildnerAs with other application interfaces, caution must be taken not to break
343*59308cc9SSascha Wildnerexisting applications, and to think about future use of new name spaces so as
344*59308cc9SSascha Wildnerto avoid the need to rename or remove interfaces that might be depended on in
345*59308cc9SSascha Wildnerthe future.
346*59308cc9SSascha Wildner.Sh SEE ALSO
347*59308cc9SSascha Wildner.Xr sysctl 8 ,
348*59308cc9SSascha Wildner.Xr sysctl_add_oid 9 ,
349*59308cc9SSascha Wildner.Xr sysctl_ctx_free 9 ,
350*59308cc9SSascha Wildner.Xr sysctl_ctx_init 9 ,
351*59308cc9SSascha Wildner.Xr sysctl_remove_oid 9
352*59308cc9SSascha Wildner.Sh HISTORY
353*59308cc9SSascha Wildner.Xr sysctl 8
354*59308cc9SSascha Wildnerfirst appeared in
355*59308cc9SSascha Wildner.Bx 4.4 .
356*59308cc9SSascha Wildner.Sh AUTHORS
357*59308cc9SSascha WildnerThe sysctl implementation originally found in
358*59308cc9SSascha Wildner.Bx
359*59308cc9SSascha Wildnerhas been extensively rewritten by
360*59308cc9SSascha Wildner.An Poul-Henning Kamp
361*59308cc9SSascha Wildnerin order to add support for name lookups, name space iteration, and dynamic
362*59308cc9SSascha Wildneraddition of MIB nodes.
363*59308cc9SSascha Wildner.Pp
364*59308cc9SSascha WildnerThis man page was written by
365*59308cc9SSascha Wildner.An Robert N. M. Watson .
366