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