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 $ 2759308cc9SSascha Wildner.\" 28*c48b2bacSSascha Wildner.Dd July 20, 2018 2959308cc9SSascha Wildner.Dt SYSCTL 9 3059308cc9SSascha Wildner.Os 3159308cc9SSascha Wildner.Sh NAME 3259308cc9SSascha Wildner.Nm SYSCTL_DECL , 3359308cc9SSascha Wildner.Nm SYSCTL_INT , 3459308cc9SSascha Wildner.Nm SYSCTL_LONG , 3559308cc9SSascha Wildner.Nm SYSCTL_QUAD , 3659308cc9SSascha Wildner.Nm SYSCTL_NODE , 3759308cc9SSascha Wildner.Nm SYSCTL_OPAQUE , 3859308cc9SSascha Wildner.Nm SYSCTL_PROC , 3959308cc9SSascha Wildner.Nm SYSCTL_STRING , 4059308cc9SSascha Wildner.Nm SYSCTL_STRUCT , 41*c48b2bacSSascha Wildner.Nm SYSCTL_U32 , 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 126*c48b2bacSSascha Wildner.Fo SYSCTL_U32 127*c48b2bacSSascha Wildner.Fa "parent" 128*c48b2bacSSascha Wildner.Fa "number" 129*c48b2bacSSascha Wildner.Fa "name" 130*c48b2bacSSascha Wildner.Fa "access" 131*c48b2bacSSascha Wildner.Fa "ptr" 132*c48b2bacSSascha Wildner.Fa "val" 133*c48b2bacSSascha Wildner.Fa "descr" 134*c48b2bacSSascha Wildner.Fc 13559308cc9SSascha Wildner.Fo SYSCTL_UINT 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_ULONG 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.Fo SYSCTL_UQUAD 15459308cc9SSascha Wildner.Fa "parent" 15559308cc9SSascha Wildner.Fa "nbr" 15659308cc9SSascha Wildner.Fa "name" 15759308cc9SSascha Wildner.Fa "access" 15859308cc9SSascha Wildner.Fa "ptr" 15959308cc9SSascha Wildner.Fa "val" 16059308cc9SSascha Wildner.Fa "descr" 16159308cc9SSascha Wildner.Fc 16259308cc9SSascha Wildner.Sh DESCRIPTION 16359308cc9SSascha WildnerThe 16459308cc9SSascha Wildner.Nm 16559308cc9SSascha Wildnerkernel interfaces allow code to statically declare 16659308cc9SSascha Wildner.Xr sysctl 8 16759308cc9SSascha WildnerMIB entries, which will be initialized when the kernel module containing the 16859308cc9SSascha Wildnerdeclaration is initialized. 16959308cc9SSascha WildnerWhen the module is unloaded, the sysctl will be automatically destroyed. 17059308cc9SSascha Wildner.Pp 17159308cc9SSascha WildnerSysctl nodes are created in a hierarchical tree, with all static nodes being 17259308cc9SSascha Wildnerrepresented by named C data structures; in order to create a new node under 17359308cc9SSascha Wildneran existing node in the tree, the structure representing the desired parent 17459308cc9SSascha Wildnernode must be declared in the current context using 17559308cc9SSascha Wildner.Fn SYSCTL_DECL . 17659308cc9SSascha Wildner.Pp 17759308cc9SSascha WildnerNew nodes are declared using one of 17859308cc9SSascha Wildner.Nm SYSCTL_INT , 17959308cc9SSascha Wildner.Nm SYSCTL_LONG , 18059308cc9SSascha Wildner.Nm SYSCTL_QUAD , 18159308cc9SSascha Wildner.Nm SYSCTL_NODE , 18259308cc9SSascha Wildner.Nm SYSCTL_OPAQUE , 18359308cc9SSascha Wildner.Nm SYSCTL_PROC , 18459308cc9SSascha Wildner.Nm SYSCTL_STRING , 18559308cc9SSascha Wildner.Nm SYSCTL_STRUCT , 186*c48b2bacSSascha Wildner.Nm SYSCTL_U32 , 18759308cc9SSascha Wildner.Nm SYSCTL_UINT , 18859308cc9SSascha Wildner.Nm SYSCTL_ULONG , 18959308cc9SSascha Wildnerand 19059308cc9SSascha Wildner.Nm SYSCTL_UQUAD . 19159308cc9SSascha WildnerEach macro accepts a parent name, as declared using 19259308cc9SSascha Wildner.Nm SYSCTL_DECL , 19359308cc9SSascha Wildneran OID number, typically 19459308cc9SSascha Wildner.Dv OID_AUTO , 19559308cc9SSascha Wildnera node name, a set of control and access flags, and a description. 19659308cc9SSascha WildnerDepending on the macro, a pointer to a variable supporting the MIB entry, a 19759308cc9SSascha Wildnersize, a value, and a function pointer implementing the MIB entry may also be 19859308cc9SSascha Wildnerpresent. 19959308cc9SSascha Wildner.Pp 20059308cc9SSascha WildnerFor most of the above macros, declaring a type as part of the access flags is 20159308cc9SSascha Wildnernot necessary -- however, when declaring a sysctl implemented by a function, 20259308cc9SSascha Wildnerincluding a type in the access mask is required: 203f54c32e1SSascha Wildner.Bl -tag -width ".Dv CTLTYPE_STRING" 20459308cc9SSascha Wildner.It Dv CTLTYPE_NODE 20559308cc9SSascha WildnerThis is a node intended to be a parent for other nodes. 20659308cc9SSascha Wildner.It Dv CTLTYPE_INT 20759308cc9SSascha WildnerThis is a signed integer. 20859308cc9SSascha Wildner.It Dv CTLTYPE_STRING 20959308cc9SSascha WildnerThis is a nul-terminated string stored in a character array. 21059308cc9SSascha Wildner.It Dv CTLTYPE_QUAD 21159308cc9SSascha WildnerThis is a 64-bit signed integer. 21259308cc9SSascha Wildner.It Dv CTLTYPE_OPAQUE 21359308cc9SSascha WildnerThis is an opaque data structure. 21459308cc9SSascha Wildner.It Dv CTLTYPE_STRUCT 21559308cc9SSascha WildnerAlias for 21659308cc9SSascha Wildner.Dv CTLTYPE_OPAQUE . 217*c48b2bacSSascha Wildner.It Dv CTLTYPE_U32 218*c48b2bacSSascha WildnerThis is a 32-bit unsigned integer. 21959308cc9SSascha Wildner.It Dv CTLTYPE_UINT 22059308cc9SSascha WildnerThis is an unsigned integer. 22159308cc9SSascha Wildner.It Dv CTLTYPE_LONG 22259308cc9SSascha WildnerThis is a signed long. 22359308cc9SSascha Wildner.It Dv CTLTYPE_ULONG 22459308cc9SSascha WildnerThis is an unsigned long. 22559308cc9SSascha Wildner.It Dv CTLTYPE_UQUAD 22659308cc9SSascha WildnerThis is a 64-bit unsigned integer. 22759308cc9SSascha Wildner.El 22859308cc9SSascha Wildner.Pp 22959308cc9SSascha WildnerAll sysctl types except for new node declarations require one or more flags 23059308cc9SSascha Wildnerto be set indicating the read and write disposition of the sysctl: 231f54c32e1SSascha Wildner.Bl -tag -width ".Dv CTLFLAG_ANYBODY" 23259308cc9SSascha Wildner.It Dv CTLFLAG_RD 23359308cc9SSascha WildnerThis is a read-only sysctl. 2346d600fe3SHasso Tepper.It Dv CTLFLAG_WR 23559308cc9SSascha WildnerThis is a writable sysctl. 23659308cc9SSascha Wildner.It Dv CTLFLAG_RW 23759308cc9SSascha WildnerThis sysctl is readable and writable. 23859308cc9SSascha Wildner.It Dv CTLFLAG_ANYBODY 23959308cc9SSascha WildnerAny user or process can write to this sysctl. 24059308cc9SSascha Wildner.It Dv CTLFLAG_SECURE 24159308cc9SSascha WildnerThis sysctl can be written to only if the effective securelevel of the 24259308cc9SSascha Wildnerprocess is <= 0. 24359308cc9SSascha Wildner.It Dv CTLFLAG_PRISON 24459308cc9SSascha WildnerThis sysctl can be written to by processes in 24559308cc9SSascha Wildner.Xr jail 2 . 246afc5c1adSSascha Wildner.\".It Dv CTLFLAG_SKIP 247afc5c1adSSascha Wildner.\"When iterating the sysctl name space, do not list this sysctl. 24859308cc9SSascha Wildner.El 24959308cc9SSascha Wildner.Pp 25059308cc9SSascha WildnerWhen creating new sysctls, careful attention should be paid to the security 25159308cc9SSascha Wildnerimplications of the monitoring or management interface being created. 25259308cc9SSascha WildnerMost sysctls present in the kernel are read-only or writable only by the 25359308cc9SSascha Wildnersuperuser. 25459308cc9SSascha WildnerSysctls exporting extensive information on system data structures and 25559308cc9SSascha Wildneroperation, especially those implemented using procedures, will wish to 25659308cc9SSascha Wildnerimplement access control to limit the undesired exposure of information about 25759308cc9SSascha Wildnerother processes, network connections, etc. 25859308cc9SSascha Wildner.Pp 25959308cc9SSascha WildnerThe following top level sysctl name spaces are commonly used: 260afc5c1adSSascha Wildner.Bl -tag -width ".Va machdep" 261afc5c1adSSascha Wildner.It Va compat 26259308cc9SSascha WildnerCompatibility layer information. 263afc5c1adSSascha Wildner.It Va debug 26459308cc9SSascha WildnerDebugging information. 26559308cc9SSascha WildnerVarious name spaces exist under 266afc5c1adSSascha Wildner.Va debug . 267afc5c1adSSascha Wildner.It Va hw 26859308cc9SSascha WildnerHardware and device driver information. 269afc5c1adSSascha Wildner.It Va lwkt 27059308cc9SSascha WildnerInformation about the 27159308cc9SSascha Wildner.Xr lwkt 9 27259308cc9SSascha Wildnersubsystem. 273afc5c1adSSascha Wildner.It Va kern 27459308cc9SSascha WildnerKernel behavior tuning; generally deprecated in favor of more specific 27559308cc9SSascha Wildnername spaces. 276afc5c1adSSascha Wildner.It Va machdep 27759308cc9SSascha WildnerMachine-dependent configuration parameters. 278afc5c1adSSascha Wildner.It Va net 27959308cc9SSascha WildnerNetwork subsystem. 28059308cc9SSascha WildnerVarious protocols have name spaces under 281afc5c1adSSascha Wildner.Va net . 282afc5c1adSSascha Wildner.It Va sysctl 28359308cc9SSascha WildnerReserved name space for the implementation of sysctl. 284afc5c1adSSascha Wildner.It Va user 28559308cc9SSascha WildnerConfiguration settings relating to user application behavior. 28659308cc9SSascha WildnerGenerally, configuring applications using kernel sysctls is discouraged. 287afc5c1adSSascha Wildner.It Va vfs 28859308cc9SSascha WildnerVirtual file system configuration and information. 289afc5c1adSSascha Wildner.It Va vm 29059308cc9SSascha WildnerVirtual memory subsystem configuration and information. 29159308cc9SSascha Wildner.El 29259308cc9SSascha Wildner.Sh EXAMPLES 29359308cc9SSascha WildnerSample use of 29459308cc9SSascha Wildner.Nm SYSCTL_DECL 29559308cc9SSascha Wildnerto declare the "machdep" sysctl tree for use by new nodes: 29659308cc9SSascha Wildner.Bd -literal -offset indent 29759308cc9SSascha WildnerSYSCTL_DECL(_machdep); 29859308cc9SSascha Wildner.Ed 29959308cc9SSascha Wildner.Pp 30059308cc9SSascha WildnerExamples of integer, opaque, string, and procedure sysctls follow: 30159308cc9SSascha Wildner.Bd -literal -offset indent 30259308cc9SSascha Wildner/* 30359308cc9SSascha Wildner * Example of a constant integer value. Notice that the control 30459308cc9SSascha Wildner * flags are CTLFLAG_RD, the variable pointer is NULL, and the 30559308cc9SSascha Wildner * value is declared. 30659308cc9SSascha Wildner */ 30759308cc9SSascha WildnerSYSCTL_INT(_debug_sizeof, OID_AUTO, bio, CTLFLAG_RD, NULL, 30859308cc9SSascha Wildner sizeof(struct bio), "sizeof(struct bio)"); 30959308cc9SSascha Wildner 31059308cc9SSascha Wildner/* 31159308cc9SSascha Wildner * Example of a variable integer value. Notice that the control 31259308cc9SSascha Wildner * flags are CTLFLAG_RW, the variable pointer is set, and the 31359308cc9SSascha Wildner * value is 0. 31459308cc9SSascha Wildner */ 31559308cc9SSascha Wildnerstatic int doingcache = 1; /* 1 => enable the cache */ 31659308cc9SSascha WildnerSYSCTL_INT(_debug, OID_AUTO, vfscache, CTLFLAG_RW, &doingcache, 0, 31759308cc9SSascha Wildner "Enable name cache"); 31859308cc9SSascha Wildner 31959308cc9SSascha Wildner/* 32059308cc9SSascha Wildner * Example of a variable string value. Notice that the control 32159308cc9SSascha Wildner * flags are CTLFLAG_RW, that the variable pointer and string 32259308cc9SSascha Wildner * size are set. Unlike newer sysctls, this older sysctl uses a 32359308cc9SSascha Wildner * static oid number. 32459308cc9SSascha Wildner */ 3258e1c6f81SMatthias Schmidtchar kernelname[MAXPATHLEN] = "/boot/kernel"; /* XXX bloat */ 32659308cc9SSascha WildnerSYSCTL_STRING(_kern, KERN_BOOTFILE, bootfile, CTLFLAG_RW, 32759308cc9SSascha Wildner kernelname, sizeof(kernelname), "Name of kernel file booted"); 32859308cc9SSascha Wildner 32959308cc9SSascha Wildner/* 33059308cc9SSascha Wildner * Example of an opaque data type exported by sysctl. Notice that 33159308cc9SSascha Wildner * the variable pointer and size are provided, as well as a format 33259308cc9SSascha Wildner * string for sysctl(8). 33359308cc9SSascha Wildner */ 3342a1faf81SSascha Wildnerstatic l_fp pps_freq; /* scaled frequency offset (ns/s) */ 33559308cc9SSascha WildnerSYSCTL_OPAQUE(_kern_ntp_pll, OID_AUTO, pps_freq, CTLFLAG_RD, 33659308cc9SSascha Wildner &pps_freq, sizeof(pps_freq), "I", ""); 33759308cc9SSascha Wildner 33859308cc9SSascha Wildner/* 33959308cc9SSascha Wildner * Example of a procedure based sysctl exporting string 34059308cc9SSascha Wildner * information. Notice that the data type is declared, the NULL 34159308cc9SSascha Wildner * variable pointer and 0 size, the function pointer, and the 34259308cc9SSascha Wildner * format string for sysctl(8). 34359308cc9SSascha Wildner */ 34459308cc9SSascha WildnerSYSCTL_PROC(_kern, OID_AUTO, msgbuf, CTLTYPE_STRING | CTLFLAG_RD, 34559308cc9SSascha Wildner 0, 0, sysctl_kern_msgbuf, "A", "Contents of kernel message buffer"); 34659308cc9SSascha Wildner.Ed 34759308cc9SSascha Wildner.Pp 34859308cc9SSascha WildnerWhen adding, modifying, or removing sysctl names, it is important to be 34959308cc9SSascha Wildneraware that these interfaces may be used by users, libraries, applications, 35059308cc9SSascha Wildneror documentation (such as published books), and are implicitly published 35159308cc9SSascha Wildnerapplication interfaces. 35259308cc9SSascha WildnerAs with other application interfaces, caution must be taken not to break 35359308cc9SSascha Wildnerexisting applications, and to think about future use of new name spaces so as 35459308cc9SSascha Wildnerto avoid the need to rename or remove interfaces that might be depended on in 35559308cc9SSascha Wildnerthe future. 35659308cc9SSascha Wildner.Sh SEE ALSO 35759308cc9SSascha Wildner.Xr sysctl 8 , 35859308cc9SSascha Wildner.Xr sysctl_add_oid 9 , 35959308cc9SSascha Wildner.Xr sysctl_ctx_free 9 , 36059308cc9SSascha Wildner.Xr sysctl_ctx_init 9 , 36159308cc9SSascha Wildner.Xr sysctl_remove_oid 9 36259308cc9SSascha Wildner.Sh HISTORY 36359308cc9SSascha Wildner.Xr sysctl 8 36459308cc9SSascha Wildnerfirst appeared in 36559308cc9SSascha Wildner.Bx 4.4 . 36659308cc9SSascha Wildner.Sh AUTHORS 36718dfd54eSSascha Wildner.An -nosplit 36859308cc9SSascha WildnerThe sysctl implementation originally found in 36959308cc9SSascha Wildner.Bx 37059308cc9SSascha Wildnerhas been extensively rewritten by 37159308cc9SSascha Wildner.An Poul-Henning Kamp 37259308cc9SSascha Wildnerin order to add support for name lookups, name space iteration, and dynamic 37359308cc9SSascha Wildneraddition of MIB nodes. 37459308cc9SSascha Wildner.Pp 37559308cc9SSascha WildnerThis man page was written by 37659308cc9SSascha Wildner.An Robert N. M. Watson . 377