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.\" $FreeBSD: src/share/man/man9/sysctl.9,v 1.3 2006/04/28 23:21:36 keramida Exp $ 27*afc5c1adSSascha Wildner.\" $DragonFly: src/share/man/man9/sysctl.9,v 1.5 2007/12/15 09:07:13 swildner Exp $ 2859308cc9SSascha Wildner.\" 2959308cc9SSascha Wildner.Dd June 22, 2006 3059308cc9SSascha Wildner.Dt SYSCTL 9 3159308cc9SSascha Wildner.Os 3259308cc9SSascha Wildner.Sh NAME 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 , 4059308cc9SSascha Wildner.Nm SYSCTL_STRING , 4159308cc9SSascha Wildner.Nm SYSCTL_STRUCT , 4259308cc9SSascha Wildner.Nm SYSCTL_UINT , 4359308cc9SSascha Wildner.Nm SYSCTL_ULONG , 4459308cc9SSascha Wildner.Nm SYSCTL_UQUAD 4559308cc9SSascha Wildner.Nd Static sysctl declaration functions 4659308cc9SSascha Wildner.Sh SYNOPSIS 4759308cc9SSascha Wildner.In sys/types.h 4859308cc9SSascha Wildner.In sys/sysctl.h 4959308cc9SSascha Wildner.Fo SYSCTL_DECL 5059308cc9SSascha Wildner.Fa "name" 5159308cc9SSascha Wildner.Fc 5259308cc9SSascha Wildner.Fo SYSCTL_INT 5359308cc9SSascha Wildner.Fa "parent" 5459308cc9SSascha Wildner.Fa "nbr" 5559308cc9SSascha Wildner.Fa "name" 5659308cc9SSascha Wildner.Fa "access" 5759308cc9SSascha Wildner.Fa "ptr" 5859308cc9SSascha Wildner.Fa "val" 5959308cc9SSascha Wildner.Fa "descr" 6059308cc9SSascha Wildner.Fc 6159308cc9SSascha Wildner.Fo SYSCTL_LONG 6259308cc9SSascha Wildner.Fa "parent" 6359308cc9SSascha Wildner.Fa "nbr" 6459308cc9SSascha Wildner.Fa "name" 6559308cc9SSascha Wildner.Fa "access" 6659308cc9SSascha Wildner.Fa "ptr" 6759308cc9SSascha Wildner.Fa "val" 6859308cc9SSascha Wildner.Fa "descr" 6959308cc9SSascha Wildner.Fc 7059308cc9SSascha Wildner.Fo SYSCTL_QUAD 7159308cc9SSascha Wildner.Fa "parent" 7259308cc9SSascha Wildner.Fa "nbr" 7359308cc9SSascha Wildner.Fa "name" 7459308cc9SSascha Wildner.Fa "access" 7559308cc9SSascha Wildner.Fa "ptr" 7659308cc9SSascha Wildner.Fa "val" 7759308cc9SSascha Wildner.Fa "descr" 7859308cc9SSascha Wildner.Fc 7959308cc9SSascha Wildner.Fo SYSCTL_NODE 8059308cc9SSascha Wildner.Fa "parent" 8159308cc9SSascha Wildner.Fa "nbr" 8259308cc9SSascha Wildner.Fa "name" 8359308cc9SSascha Wildner.Fa "access" 8459308cc9SSascha Wildner.Fa "handler" 8559308cc9SSascha Wildner.Fa "descr" 8659308cc9SSascha Wildner.Fc 8759308cc9SSascha Wildner.Fo SYSCTL_OPAQUE 8859308cc9SSascha Wildner.Fa "parent" 8959308cc9SSascha Wildner.Fa "nbr" 9059308cc9SSascha Wildner.Fa "name" 9159308cc9SSascha Wildner.Fa "access" 9259308cc9SSascha Wildner.Fa "ptr" 9359308cc9SSascha Wildner.Fa "len" 9459308cc9SSascha Wildner.Fa "fmt" 9559308cc9SSascha Wildner.Fa "descr" 9659308cc9SSascha Wildner.Fc 9759308cc9SSascha Wildner.Fo SYSCTL_PROC 9859308cc9SSascha Wildner.Fa "parent" 9959308cc9SSascha Wildner.Fa "nbr" 10059308cc9SSascha Wildner.Fa "name" 10159308cc9SSascha Wildner.Fa "access" 10259308cc9SSascha Wildner.Fa "ptr" 10359308cc9SSascha Wildner.Fa "arg" 10459308cc9SSascha Wildner.Fa "handler" 10559308cc9SSascha Wildner.Fa "fmt" 10659308cc9SSascha Wildner.Fa "descr" 10759308cc9SSascha Wildner.Fc 10859308cc9SSascha Wildner.Fo SYSCTL_STRING 10959308cc9SSascha Wildner.Fa "parent" 11059308cc9SSascha Wildner.Fa "nbr" 11159308cc9SSascha Wildner.Fa "name" 11259308cc9SSascha Wildner.Fa "access" 11359308cc9SSascha Wildner.Fa "arg" 11459308cc9SSascha Wildner.Fa "len" 11559308cc9SSascha Wildner.Fa "descr" 11659308cc9SSascha Wildner.Fc 11759308cc9SSascha Wildner.Fo SYSCTL_STRUCT 11859308cc9SSascha Wildner.Fa "parent" 11959308cc9SSascha Wildner.Fa "nbr" 12059308cc9SSascha Wildner.Fa "name" 12159308cc9SSascha Wildner.Fa "access" 12259308cc9SSascha Wildner.Fa "ptr" 12359308cc9SSascha Wildner.Fa "type" 12459308cc9SSascha Wildner.Fa "descr" 12559308cc9SSascha Wildner.Fc 12659308cc9SSascha Wildner.Fo SYSCTL_UINT 12759308cc9SSascha Wildner.Fa "parent" 12859308cc9SSascha Wildner.Fa "nbr" 12959308cc9SSascha Wildner.Fa "name" 13059308cc9SSascha Wildner.Fa "access" 13159308cc9SSascha Wildner.Fa "ptr" 13259308cc9SSascha Wildner.Fa "val" 13359308cc9SSascha Wildner.Fa "descr" 13459308cc9SSascha Wildner.Fc 13559308cc9SSascha Wildner.Fo SYSCTL_ULONG 13659308cc9SSascha Wildner.Fa "parent" 13759308cc9SSascha Wildner.Fa "nbr" 13859308cc9SSascha Wildner.Fa "name" 13959308cc9SSascha Wildner.Fa "access" 14059308cc9SSascha Wildner.Fa "ptr" 14159308cc9SSascha Wildner.Fa "val" 14259308cc9SSascha Wildner.Fa "descr" 14359308cc9SSascha Wildner.Fc 14459308cc9SSascha Wildner.Fo SYSCTL_UQUAD 14559308cc9SSascha Wildner.Fa "parent" 14659308cc9SSascha Wildner.Fa "nbr" 14759308cc9SSascha Wildner.Fa "name" 14859308cc9SSascha Wildner.Fa "access" 14959308cc9SSascha Wildner.Fa "ptr" 15059308cc9SSascha Wildner.Fa "val" 15159308cc9SSascha Wildner.Fa "descr" 15259308cc9SSascha Wildner.Fc 15359308cc9SSascha Wildner.Sh DESCRIPTION 15459308cc9SSascha WildnerThe 15559308cc9SSascha Wildner.Nm 15659308cc9SSascha Wildnerkernel interfaces allow code to statically declare 15759308cc9SSascha Wildner.Xr sysctl 8 15859308cc9SSascha WildnerMIB entries, which will be initialized when the kernel module containing the 15959308cc9SSascha Wildnerdeclaration is initialized. 16059308cc9SSascha WildnerWhen the module is unloaded, the sysctl will be automatically destroyed. 16159308cc9SSascha Wildner.Pp 16259308cc9SSascha WildnerSysctl nodes are created in a hierarchical tree, with all static nodes being 16359308cc9SSascha Wildnerrepresented by named C data structures; in order to create a new node under 16459308cc9SSascha Wildneran existing node in the tree, the structure representing the desired parent 16559308cc9SSascha Wildnernode must be declared in the current context using 16659308cc9SSascha Wildner.Fn SYSCTL_DECL . 16759308cc9SSascha Wildner.Pp 16859308cc9SSascha WildnerNew nodes are declared using one of 16959308cc9SSascha Wildner.Nm SYSCTL_INT , 17059308cc9SSascha Wildner.Nm SYSCTL_LONG , 17159308cc9SSascha Wildner.Nm SYSCTL_QUAD , 17259308cc9SSascha Wildner.Nm SYSCTL_NODE , 17359308cc9SSascha Wildner.Nm SYSCTL_OPAQUE , 17459308cc9SSascha Wildner.Nm SYSCTL_PROC , 17559308cc9SSascha Wildner.Nm SYSCTL_STRING , 17659308cc9SSascha Wildner.Nm SYSCTL_STRUCT , 17759308cc9SSascha Wildner.Nm SYSCTL_UINT , 17859308cc9SSascha Wildner.Nm SYSCTL_ULONG , 17959308cc9SSascha Wildnerand 18059308cc9SSascha Wildner.Nm SYSCTL_UQUAD . 18159308cc9SSascha WildnerEach macro accepts a parent name, as declared using 18259308cc9SSascha Wildner.Nm SYSCTL_DECL , 18359308cc9SSascha Wildneran OID number, typically 18459308cc9SSascha Wildner.Dv OID_AUTO , 18559308cc9SSascha Wildnera node name, a set of control and access flags, and a description. 18659308cc9SSascha WildnerDepending on the macro, a pointer to a variable supporting the MIB entry, a 18759308cc9SSascha Wildnersize, a value, and a function pointer implementing the MIB entry may also be 18859308cc9SSascha Wildnerpresent. 18959308cc9SSascha Wildner.Pp 19059308cc9SSascha WildnerFor most of the above macros, declaring a type as part of the access flags is 19159308cc9SSascha Wildnernot necessary -- however, when declaring a sysctl implemented by a function, 19259308cc9SSascha Wildnerincluding a type in the access mask is required: 19359308cc9SSascha Wildner.Bl -tag -width CTLTYPE_STRING 19459308cc9SSascha Wildner.It Dv CTLTYPE_NODE 19559308cc9SSascha WildnerThis is a node intended to be a parent for other nodes. 19659308cc9SSascha Wildner.It Dv CTLTYPE_INT 19759308cc9SSascha WildnerThis is a signed integer. 19859308cc9SSascha Wildner.It Dv CTLTYPE_STRING 19959308cc9SSascha WildnerThis is a nul-terminated string stored in a character array. 20059308cc9SSascha Wildner.It Dv CTLTYPE_QUAD 20159308cc9SSascha WildnerThis is a 64-bit signed integer. 20259308cc9SSascha Wildner.It Dv CTLTYPE_OPAQUE 20359308cc9SSascha WildnerThis is an opaque data structure. 20459308cc9SSascha Wildner.It Dv CTLTYPE_STRUCT 20559308cc9SSascha WildnerAlias for 20659308cc9SSascha Wildner.Dv CTLTYPE_OPAQUE . 20759308cc9SSascha Wildner.It Dv CTLTYPE_UINT 20859308cc9SSascha WildnerThis is an unsigned integer. 20959308cc9SSascha Wildner.It Dv CTLTYPE_LONG 21059308cc9SSascha WildnerThis is a signed long. 21159308cc9SSascha Wildner.It Dv CTLTYPE_ULONG 21259308cc9SSascha WildnerThis is an unsigned long. 21359308cc9SSascha Wildner.It Dv CTLTYPE_UQUAD 21459308cc9SSascha WildnerThis is a 64-bit unsigned integer. 21559308cc9SSascha Wildner.El 21659308cc9SSascha Wildner.Pp 21759308cc9SSascha WildnerAll sysctl types except for new node declarations require one or more flags 21859308cc9SSascha Wildnerto be set indicating the read and write disposition of the sysctl: 21959308cc9SSascha Wildner.Bl -tag -width CTLFLAG_ANYBODY 22059308cc9SSascha Wildner.It Dv CTLFLAG_RD 22159308cc9SSascha WildnerThis is a read-only sysctl. 2226d600fe3SHasso Tepper.It Dv CTLFLAG_WR 22359308cc9SSascha WildnerThis is a writable sysctl. 22459308cc9SSascha Wildner.It Dv CTLFLAG_RW 22559308cc9SSascha WildnerThis sysctl is readable and writable. 22659308cc9SSascha Wildner.It Dv CTLFLAG_ANYBODY 22759308cc9SSascha WildnerAny user or process can write to this sysctl. 22859308cc9SSascha Wildner.It Dv CTLFLAG_NOLOCK 22959308cc9SSascha WildnerDon't lock. 23059308cc9SSascha Wildner.It Dv CTLFLAG_SECURE 23159308cc9SSascha WildnerThis sysctl can be written to only if the effective securelevel of the 23259308cc9SSascha Wildnerprocess is <= 0. 23359308cc9SSascha Wildner.It Dv CTLFLAG_PRISON 23459308cc9SSascha WildnerThis sysctl can be written to by processes in 23559308cc9SSascha Wildner.Xr jail 2 . 236*afc5c1adSSascha Wildner.\".It Dv CTLFLAG_SKIP 237*afc5c1adSSascha Wildner.\"When iterating the sysctl name space, do not list this sysctl. 23859308cc9SSascha Wildner.El 23959308cc9SSascha Wildner.Pp 24059308cc9SSascha WildnerWhen creating new sysctls, careful attention should be paid to the security 24159308cc9SSascha Wildnerimplications of the monitoring or management interface being created. 24259308cc9SSascha WildnerMost sysctls present in the kernel are read-only or writable only by the 24359308cc9SSascha Wildnersuperuser. 24459308cc9SSascha WildnerSysctls exporting extensive information on system data structures and 24559308cc9SSascha Wildneroperation, especially those implemented using procedures, will wish to 24659308cc9SSascha Wildnerimplement access control to limit the undesired exposure of information about 24759308cc9SSascha Wildnerother processes, network connections, etc. 24859308cc9SSascha Wildner.Pp 24959308cc9SSascha WildnerThe following top level sysctl name spaces are commonly used: 250*afc5c1adSSascha Wildner.Bl -tag -width ".Va machdep" 251*afc5c1adSSascha Wildner.It Va compat 25259308cc9SSascha WildnerCompatibility layer information. 253*afc5c1adSSascha Wildner.It Va debug 25459308cc9SSascha WildnerDebugging information. 25559308cc9SSascha WildnerVarious name spaces exist under 256*afc5c1adSSascha Wildner.Va debug . 257*afc5c1adSSascha Wildner.It Va hw 25859308cc9SSascha WildnerHardware and device driver information. 259*afc5c1adSSascha Wildner.It Va lwkt 26059308cc9SSascha WildnerInformation about the 26159308cc9SSascha Wildner.Xr lwkt 9 26259308cc9SSascha Wildnersubsystem. 263*afc5c1adSSascha Wildner.It Va kern 26459308cc9SSascha WildnerKernel behavior tuning; generally deprecated in favor of more specific 26559308cc9SSascha Wildnername spaces. 266*afc5c1adSSascha Wildner.It Va machdep 26759308cc9SSascha WildnerMachine-dependent configuration parameters. 268*afc5c1adSSascha Wildner.It Va net 26959308cc9SSascha WildnerNetwork subsystem. 27059308cc9SSascha WildnerVarious protocols have name spaces under 271*afc5c1adSSascha Wildner.Va net . 272*afc5c1adSSascha Wildner.It Va sysctl 27359308cc9SSascha WildnerReserved name space for the implementation of sysctl. 274*afc5c1adSSascha Wildner.It Va user 27559308cc9SSascha WildnerConfiguration settings relating to user application behavior. 27659308cc9SSascha WildnerGenerally, configuring applications using kernel sysctls is discouraged. 277*afc5c1adSSascha Wildner.It Va vfs 27859308cc9SSascha WildnerVirtual file system configuration and information. 279*afc5c1adSSascha Wildner.It Va vm 28059308cc9SSascha WildnerVirtual memory subsystem configuration and information. 28159308cc9SSascha Wildner.El 28259308cc9SSascha Wildner.Sh EXAMPLES 28359308cc9SSascha WildnerSample use of 28459308cc9SSascha Wildner.Nm SYSCTL_DECL 28559308cc9SSascha Wildnerto declare the "machdep" sysctl tree for use by new nodes: 28659308cc9SSascha Wildner.Bd -literal -offset indent 28759308cc9SSascha WildnerSYSCTL_DECL(_machdep); 28859308cc9SSascha Wildner.Ed 28959308cc9SSascha Wildner.Pp 29059308cc9SSascha WildnerExamples of integer, opaque, string, and procedure sysctls follow: 29159308cc9SSascha Wildner.Bd -literal -offset indent 29259308cc9SSascha Wildner/* 29359308cc9SSascha Wildner * Example of a constant integer value. Notice that the control 29459308cc9SSascha Wildner * flags are CTLFLAG_RD, the variable pointer is NULL, and the 29559308cc9SSascha Wildner * value is declared. 29659308cc9SSascha Wildner */ 29759308cc9SSascha WildnerSYSCTL_INT(_debug_sizeof, OID_AUTO, bio, CTLFLAG_RD, NULL, 29859308cc9SSascha Wildner sizeof(struct bio), "sizeof(struct bio)"); 29959308cc9SSascha Wildner 30059308cc9SSascha Wildner/* 30159308cc9SSascha Wildner * Example of a variable integer value. Notice that the control 30259308cc9SSascha Wildner * flags are CTLFLAG_RW, the variable pointer is set, and the 30359308cc9SSascha Wildner * value is 0. 30459308cc9SSascha Wildner */ 30559308cc9SSascha Wildnerstatic int doingcache = 1; /* 1 => enable the cache */ 30659308cc9SSascha WildnerSYSCTL_INT(_debug, OID_AUTO, vfscache, CTLFLAG_RW, &doingcache, 0, 30759308cc9SSascha Wildner "Enable name cache"); 30859308cc9SSascha Wildner 30959308cc9SSascha Wildner/* 31059308cc9SSascha Wildner * Example of a variable string value. Notice that the control 31159308cc9SSascha Wildner * flags are CTLFLAG_RW, that the variable pointer and string 31259308cc9SSascha Wildner * size are set. Unlike newer sysctls, this older sysctl uses a 31359308cc9SSascha Wildner * static oid number. 31459308cc9SSascha Wildner */ 31559308cc9SSascha Wildnerchar kernelname[MAXPATHLEN] = "/kernel"; /* XXX bloat */ 31659308cc9SSascha WildnerSYSCTL_STRING(_kern, KERN_BOOTFILE, bootfile, CTLFLAG_RW, 31759308cc9SSascha Wildner kernelname, sizeof(kernelname), "Name of kernel file booted"); 31859308cc9SSascha Wildner 31959308cc9SSascha Wildner/* 32059308cc9SSascha Wildner * Example of an opaque data type exported by sysctl. Notice that 32159308cc9SSascha Wildner * the variable pointer and size are provided, as well as a format 32259308cc9SSascha Wildner * string for sysctl(8). 32359308cc9SSascha Wildner */ 32459308cc9SSascha Wildnerstatic l_fp pps_freq; /* scaled frequence offset (ns/s) */ 32559308cc9SSascha WildnerSYSCTL_OPAQUE(_kern_ntp_pll, OID_AUTO, pps_freq, CTLFLAG_RD, 32659308cc9SSascha Wildner &pps_freq, sizeof(pps_freq), "I", ""); 32759308cc9SSascha Wildner 32859308cc9SSascha Wildner/* 32959308cc9SSascha Wildner * Example of a procedure based sysctl exporting string 33059308cc9SSascha Wildner * information. Notice that the data type is declared, the NULL 33159308cc9SSascha Wildner * variable pointer and 0 size, the function pointer, and the 33259308cc9SSascha Wildner * format string for sysctl(8). 33359308cc9SSascha Wildner */ 33459308cc9SSascha WildnerSYSCTL_PROC(_kern, OID_AUTO, msgbuf, CTLTYPE_STRING | CTLFLAG_RD, 33559308cc9SSascha Wildner 0, 0, sysctl_kern_msgbuf, "A", "Contents of kernel message buffer"); 33659308cc9SSascha Wildner.Ed 33759308cc9SSascha Wildner.Pp 33859308cc9SSascha WildnerWhen adding, modifying, or removing sysctl names, it is important to be 33959308cc9SSascha Wildneraware that these interfaces may be used by users, libraries, applications, 34059308cc9SSascha Wildneror documentation (such as published books), and are implicitly published 34159308cc9SSascha Wildnerapplication interfaces. 34259308cc9SSascha WildnerAs with other application interfaces, caution must be taken not to break 34359308cc9SSascha Wildnerexisting applications, and to think about future use of new name spaces so as 34459308cc9SSascha Wildnerto avoid the need to rename or remove interfaces that might be depended on in 34559308cc9SSascha Wildnerthe future. 34659308cc9SSascha Wildner.Sh SEE ALSO 34759308cc9SSascha Wildner.Xr sysctl 8 , 34859308cc9SSascha Wildner.Xr sysctl_add_oid 9 , 34959308cc9SSascha Wildner.Xr sysctl_ctx_free 9 , 35059308cc9SSascha Wildner.Xr sysctl_ctx_init 9 , 35159308cc9SSascha Wildner.Xr sysctl_remove_oid 9 35259308cc9SSascha Wildner.Sh HISTORY 35359308cc9SSascha Wildner.Xr sysctl 8 35459308cc9SSascha Wildnerfirst appeared in 35559308cc9SSascha Wildner.Bx 4.4 . 35659308cc9SSascha Wildner.Sh AUTHORS 35718dfd54eSSascha Wildner.An -nosplit 35859308cc9SSascha WildnerThe sysctl implementation originally found in 35959308cc9SSascha Wildner.Bx 36059308cc9SSascha Wildnerhas been extensively rewritten by 36159308cc9SSascha Wildner.An Poul-Henning Kamp 36259308cc9SSascha Wildnerin order to add support for name lookups, name space iteration, and dynamic 36359308cc9SSascha Wildneraddition of MIB nodes. 36459308cc9SSascha Wildner.Pp 36559308cc9SSascha WildnerThis man page was written by 36659308cc9SSascha Wildner.An Robert N. M. Watson . 367