834 lines
27 KiB
Groff
834 lines
27 KiB
Groff
.\" Copyright (c) 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)sysctl.3 8.4 (Berkeley) 5/9/95
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd January 23, 2001
|
|
.Dt SYSCTL 3
|
|
.Os
|
|
.Sh NAME
|
|
.Nm sysctl ,
|
|
.Nm sysctlbyname ,
|
|
.Nm sysctlnametomib
|
|
.Nd get or set system information
|
|
.Sh LIBRARY
|
|
.Lb libc
|
|
.Sh SYNOPSIS
|
|
.Fd #include <sys/types.h>
|
|
.Fd #include <sys/sysctl.h>
|
|
.Ft int
|
|
.Fn sysctl "int *name" "u_int namelen" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen"
|
|
.Ft int
|
|
.Fn sysctlbyname "const char *name" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen"
|
|
.Ft int
|
|
.Fn sysctlnametomib "const char *name" "int *mibp" "size_t *sizep"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Fn sysctl
|
|
function retrieves system information and allows processes with
|
|
appropriate privileges to set system information.
|
|
The information available from
|
|
.Fn sysctl
|
|
consists of integers, strings, and tables.
|
|
Information may be retrieved and set from the command interface
|
|
using the
|
|
.Xr sysctl 8
|
|
utility.
|
|
.Pp
|
|
Unless explicitly noted below,
|
|
.Fn sysctl
|
|
returns a consistent snapshot of the data requested.
|
|
Consistency is obtained by locking the destination
|
|
buffer into memory so that the data may be copied out without blocking.
|
|
Calls to
|
|
.Fn sysctl
|
|
are serialized to avoid deadlock.
|
|
.Pp
|
|
The state is described using a ``Management Information Base'' (MIB)
|
|
style name, listed in
|
|
.Fa name ,
|
|
which is a
|
|
.Fa namelen
|
|
length array of integers.
|
|
.Pp
|
|
The
|
|
.Fn sysctlbyname
|
|
function accepts an ASCII representation of the name and internally
|
|
looks up the integer name vector. Apart from that, it behaves the same
|
|
as the standard
|
|
.Fn sysctl
|
|
function.
|
|
.Pp
|
|
The information is copied into the buffer specified by
|
|
.Fa oldp .
|
|
The size of the buffer is given by the location specified by
|
|
.Fa oldlenp
|
|
before the call,
|
|
and that location gives the amount of data copied after a successful call
|
|
and after a call that returns with the error code
|
|
.Er ENOMEM .
|
|
If the amount of data available is greater
|
|
than the size of the buffer supplied,
|
|
the call supplies as much data as fits in the buffer provided
|
|
and returns with the error code
|
|
.Er ENOMEM .
|
|
If the old value is not desired,
|
|
.Fa oldp
|
|
and
|
|
.Fa oldlenp
|
|
should be set to NULL.
|
|
.Pp
|
|
The size of the available data can be determined by calling
|
|
.Fn sysctl
|
|
with a NULL parameter for
|
|
.Fa oldp .
|
|
The size of the available data will be returned in the location pointed to by
|
|
.Fa oldlenp .
|
|
For some operations, the amount of space may change often.
|
|
For these operations,
|
|
the system attempts to round up so that the returned size is
|
|
large enough for a call to return the data shortly thereafter.
|
|
.Pp
|
|
To set a new value,
|
|
.Fa newp
|
|
is set to point to a buffer of length
|
|
.Fa newlen
|
|
from which the requested value is to be taken.
|
|
If a new value is not to be set,
|
|
.Fa newp
|
|
should be set to NULL and
|
|
.Fa newlen
|
|
set to 0.
|
|
.Pp
|
|
The
|
|
.Fn sysctlnametomib
|
|
function accepts an ASCII representation of the name,
|
|
looks up the integer name vector,
|
|
and returns the numeric representation in the mib array pointed to by
|
|
.Fa mibp .
|
|
The number of elements in the mib array is given by the location specified by
|
|
.Fa sizep
|
|
before the call,
|
|
and that location gives the number of entries copied after a successful call.
|
|
The resulting
|
|
.Fa mib
|
|
and
|
|
.Fa size
|
|
may be used in subsequent
|
|
.Fn sysctl
|
|
calls to get the data associated with the requested ASCII name.
|
|
This interface is intended for use by applications that want to
|
|
repeatedly request the same variable (the
|
|
.Fn sysctl
|
|
function runs in about a third the time as the same request made via the
|
|
.Fn sysctlbyname
|
|
function).
|
|
The
|
|
.Fn sysctlbyname
|
|
function is also useful for fetching mib prefixes and then adding
|
|
a final component.
|
|
For example, to fetch process information
|
|
for processes with pid's less than 100:
|
|
.Pp
|
|
.Bd -literal -offset indent -compact
|
|
int i, mib[4];
|
|
size_t len;
|
|
struct kinfo_proc kp;
|
|
|
|
/* Fill out the first three components of the mib */
|
|
len = 4;
|
|
sysctlnametomib("kern.proc.pid", mib, &len);
|
|
|
|
/* Fetch and print entries for pid's < 100 */
|
|
for (i = 0; i < 100; i++) {
|
|
mib[3] = i;
|
|
len = sizeof(kp);
|
|
if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
|
|
perror("sysctl");
|
|
else if (len > 0)
|
|
printkproc(&kp);
|
|
}
|
|
.Ed
|
|
.Pp
|
|
The top level names are defined with a CTL_ prefix in
|
|
.Aq Pa sys/sysctl.h ,
|
|
and are as follows.
|
|
The next and subsequent levels down are found in the include files
|
|
listed here, and described in separate sections below.
|
|
.Pp
|
|
.Bl -column CTLXMACHDEPXXX "Next level namesXXXXXX" -offset indent
|
|
.It Sy "Name Next level names Description"
|
|
.It "CTL\_DEBUG sys/sysctl.h Debugging"
|
|
.It "CTL\_VFS sys/mount.h Filesystem"
|
|
.It "CTL\_HW sys/sysctl.h Generic CPU, I/O"
|
|
.It "CTL\_KERN sys/sysctl.h High kernel limits"
|
|
.It "CTL\_MACHDEP sys/sysctl.h Machine dependent"
|
|
.It "CTL\_NET sys/socket.h Networking"
|
|
.It "CTL\_USER sys/sysctl.h User-level"
|
|
.It "CTL\_VM vm/vm_param.h Virtual memory"
|
|
.El
|
|
.Pp
|
|
For example, the following retrieves the maximum number of processes allowed
|
|
in the system:
|
|
.Pp
|
|
.Bd -literal -offset indent -compact
|
|
int mib[2], maxproc;
|
|
size_t len;
|
|
|
|
mib[0] = CTL_KERN;
|
|
mib[1] = KERN_MAXPROC;
|
|
len = sizeof(maxproc);
|
|
sysctl(mib, 2, &maxproc, &len, NULL, 0);
|
|
.Ed
|
|
.Pp
|
|
To retrieve the standard search path for the system utilities:
|
|
.Pp
|
|
.Bd -literal -offset indent -compact
|
|
int mib[2];
|
|
size_t len;
|
|
char *p;
|
|
|
|
mib[0] = CTL_USER;
|
|
mib[1] = USER_CS_PATH;
|
|
sysctl(mib, 2, NULL, &len, NULL, 0);
|
|
p = malloc(len);
|
|
sysctl(mib, 2, p, &len, NULL, 0);
|
|
.Ed
|
|
.Ss CTL_DEBUG
|
|
The debugging variables vary from system to system.
|
|
A debugging variable may be added or deleted without need to recompile
|
|
.Fn sysctl
|
|
to know about it.
|
|
Each time it runs,
|
|
.Fn sysctl
|
|
gets the list of debugging variables from the kernel and
|
|
displays their current values.
|
|
The system defines twenty
|
|
.Ns ( Va struct ctldebug )
|
|
variables named
|
|
.Nm debug0
|
|
through
|
|
.Nm debug19 .
|
|
They are declared as separate variables so that they can be
|
|
individually initialized at the location of their associated variable.
|
|
The loader prevents multiple use of the same variable by issuing errors
|
|
if a variable is initialized in more than one place.
|
|
For example, to export the variable
|
|
.Nm dospecialcheck
|
|
as a debugging variable, the following declaration would be used:
|
|
.Bd -literal -offset indent -compact
|
|
int dospecialcheck = 1;
|
|
struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };
|
|
.Ed
|
|
.Ss CTL_VFS
|
|
A distinguished second level name, VFS_GENERIC,
|
|
is used to get general information about all filesystems.
|
|
One of its third level identifiers is VFS_MAXTYPENUM
|
|
that gives the highest valid filesystem type number.
|
|
Its other third level identifier is VFS_CONF that
|
|
returns configuration information about the filesystem
|
|
type given as a fourth level identifier (see
|
|
.Xr getvfsbyname 3
|
|
as an example of its use).
|
|
The remaining second level identifiers are the
|
|
filesystem type number returned by a
|
|
.Xr statfs 2
|
|
call or from VFS_CONF.
|
|
The third level identifiers available for each filesystem
|
|
are given in the header file that defines the mount
|
|
argument structure for that filesystem.
|
|
.Ss CTL_HW
|
|
The string and integer information available for the CTL_HW level
|
|
is detailed below.
|
|
The changeable column shows whether a process with appropriate
|
|
privilege may change the value.
|
|
.Bl -column "Second level nameXXXXXX" integerXXX -offset indent
|
|
.It Sy "Second level name Type Changeable"
|
|
.It "HW\_MACHINE string no"
|
|
.It "HW\_MODEL string no"
|
|
.It "HW\_NCPU integer no"
|
|
.It "HW\_BYTEORDER integer no"
|
|
.It "HW\_PHYSMEM integer no"
|
|
.It "HW\_USERMEM integer no"
|
|
.It "HW\_PAGESIZE integer no"
|
|
.It "HW\_FLOATINGPOINT integer no"
|
|
.It "HW\_MACHINE\_ARCH string no"
|
|
.\".It "HW\_DISKNAMES integer no"
|
|
.\".It "HW\_DISKSTATS integer no"
|
|
.El
|
|
.Pp
|
|
.Bl -tag -width 6n
|
|
.It Li HW_MACHINE
|
|
The machine class.
|
|
.It Li HW_MODEL
|
|
The machine model
|
|
.It Li HW_NCPU
|
|
The number of cpus.
|
|
.It Li HW_BYTEORDER
|
|
The byteorder (4,321, or 1,234).
|
|
.It Li HW_PHYSMEM
|
|
The bytes of physical memory.
|
|
.It Li HW_USERMEM
|
|
The bytes of non-kernel memory.
|
|
.It Li HW_PAGESIZE
|
|
The software page size.
|
|
.It Li HW_FLOATINGPOINT
|
|
Nonzero if the floating point support is in hardware.
|
|
.It Li HW_MACHINE_ARCH
|
|
The machine dependent architecture type.
|
|
.\".It Fa HW_DISKNAMES
|
|
.\".It Fa HW_DISKSTATS
|
|
.El
|
|
.Ss CTL_KERN
|
|
The string and integer information available for the CTL_KERN level
|
|
is detailed below.
|
|
The changeable column shows whether a process with appropriate
|
|
privilege may change the value.
|
|
The types of data currently available are process information,
|
|
system vnodes, the open file entries, routing table entries,
|
|
virtual memory statistics, load average history, and clock rate
|
|
information.
|
|
.Bl -column "KERNXMAXFILESPERPROCXXX" "struct clockrateXXX" -offset indent
|
|
.It Sy "Second level name Type Changeable"
|
|
.It "KERN\_ARGMAX integer no"
|
|
.It "KERN\_BOOTFILE string yes"
|
|
.It "KERN\_BOOTTIME struct timeval no"
|
|
.It "KERN\_CLOCKRATE struct clockinfo no"
|
|
.It "KERN\_FILE struct file no"
|
|
.It "KERN\_HOSTID integer yes"
|
|
.It "KERN\_HOSTNAME string yes"
|
|
.It "KERN\_JOB\_CONTROL integer no"
|
|
.It "KERN\_MAXFILES integer yes"
|
|
.It "KERN\_MAXFILESPERPROC integer yes"
|
|
.It "KERN\_MAXPROC integer no"
|
|
.It "KERN\_MAXPROCPERUID integer yes"
|
|
.It "KERN\_MAXVNODES integer yes"
|
|
.It "KERN\_NGROUPS integer no"
|
|
.It "KERN\_NISDOMAINNAME string yes"
|
|
.It "KERN\_OSRELDATE integer no"
|
|
.It "KERN\_OSRELEASE string no"
|
|
.It "KERN\_OSREV integer no"
|
|
.It "KERN\_OSTYPE string no"
|
|
.It "KERN\_POSIX1 integer no"
|
|
.It "KERN\_PROC struct proc no"
|
|
.It "KERN\_PROF node not applicable"
|
|
.It "KERN\_QUANTUM integer yes"
|
|
.It "KERN\_SAVED\_IDS integer no"
|
|
.It "KERN\_SECURELVL integer raise only"
|
|
.It "KERN\_UPDATEINTERVAL integer no"
|
|
.It "KERN\_VERSION string no"
|
|
.It "KERN\_VNODE struct vnode no"
|
|
.El
|
|
.Pp
|
|
.Bl -tag -width 6n
|
|
.It Li KERN_ARGMAX
|
|
The maximum bytes of argument to
|
|
.Xr execve 2 .
|
|
.It Li KERN_BOOTFILE
|
|
The full pathname of the file from which the kernel was loaded.
|
|
.It Li KERN_BOOTTIME
|
|
A
|
|
.Va struct timeval
|
|
structure is returned.
|
|
This structure contains the time that the system was booted.
|
|
.It Li KERN_CLOCKRATE
|
|
A
|
|
.Va struct clockinfo
|
|
structure is returned.
|
|
This structure contains the clock, statistics clock and profiling clock
|
|
frequencies, the number of micro-seconds per hz tick and the skew rate.
|
|
.It Li KERN_FILE
|
|
Return the entire file table.
|
|
The returned data consists of a single
|
|
.Va struct filehead
|
|
followed by an array of
|
|
.Va struct file ,
|
|
whose size depends on the current number of such objects in the system.
|
|
.It Li KERN_HOSTID
|
|
Get or set the host id.
|
|
.It Li KERN_HOSTNAME
|
|
Get or set the hostname.
|
|
.It Li KERN_JOB_CONTROL
|
|
Return 1 if job control is available on this system, otherwise 0.
|
|
.It Li KERN_MAXFILES
|
|
The maximum number of files that may be open in the system.
|
|
.It Li KERN_MAXFILESPERPROC
|
|
The maximum number of files that may be open for a single process.
|
|
This limit only applies to processes with an effective uid of nonzero
|
|
at the time of the open request.
|
|
Files that have already been opened are not affected if the limit
|
|
or the effective uid is changed.
|
|
.It Li KERN_MAXPROC
|
|
The maximum number of concurrent processes the system will allow.
|
|
.It Li KERN_MAXPROCPERUID
|
|
The maximum number of concurrent processes the system will allow
|
|
for a single effective uid.
|
|
This limit only applies to processes with an effective uid of nonzero
|
|
at the time of a fork request.
|
|
Processes that have already been started are not affected if the limit
|
|
is changed.
|
|
.It Li KERN_MAXVNODES
|
|
The maximum number of vnodes available on the system.
|
|
.It Li KERN_NGROUPS
|
|
The maximum number of supplemental groups.
|
|
.It Li KERN_NISDOMAINNAME
|
|
The name of the current YP/NIS domain.
|
|
.It Li KERN_OSRELDATE
|
|
The system release date in YYYYMM format
|
|
(January 1996 is encoded as 199601).
|
|
.It Li KERN_OSRELEASE
|
|
The system release string.
|
|
.It Li KERN_OSREV
|
|
The system revision string.
|
|
.It Li KERN_OSTYPE
|
|
The system type string.
|
|
.It Li KERN_POSIX1
|
|
The version of
|
|
.St -p1003.1
|
|
with which the system
|
|
attempts to comply.
|
|
.It Li KERN_PROC
|
|
Return the entire process table, or a subset of it.
|
|
An array of pairs of
|
|
.Va struct proc
|
|
followed by corresponding
|
|
.Va struct eproc
|
|
structures is returned,
|
|
whose size depends on the current number of such objects in the system.
|
|
The third and fourth level names are as follows:
|
|
.Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent
|
|
.It "Third level name Fourth level is:"
|
|
.It "KERN\_PROC\_ALL None"
|
|
.It "KERN\_PROC\_PID A process ID"
|
|
.It "KERN\_PROC\_PGRP A process group"
|
|
.It "KERN\_PROC\_TTY A tty device"
|
|
.It "KERN\_PROC\_UID A user ID"
|
|
.It "KERN\_PROC\_RUID A real user ID"
|
|
.El
|
|
.Pp
|
|
If the third level name is KERN_PROC_ARGS then the command line argument
|
|
array is returned in a flattened form, i.e. zero-terminated arguments
|
|
follow each other.
|
|
The total size of array is returned.
|
|
It is also possible for a process to set its own process title this way.
|
|
.Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent
|
|
.It Sy "Third level name Fourth level is:"
|
|
.It "KERN\_PROC\_ARGS A process ID"
|
|
.El
|
|
.It Li KERN_PROF
|
|
Return profiling information about the kernel.
|
|
If the kernel is not compiled for profiling,
|
|
attempts to retrieve any of the KERN_PROF values will
|
|
fail with
|
|
.Er EOPNOTSUPP .
|
|
The third level names for the string and integer profiling information
|
|
is detailed below.
|
|
The changeable column shows whether a process with appropriate
|
|
privilege may change the value.
|
|
.Bl -column "GPROFXGMONPARAMXXX" "struct gmonparamXXX" -offset indent
|
|
.It Sy "Third level name Type Changeable"
|
|
.It "GPROF\_STATE integer yes"
|
|
.It "GPROF\_COUNT u_short[\|] yes"
|
|
.It "GPROF\_FROMS u_short[\|] yes"
|
|
.It "GPROF\_TOS struct tostruct yes"
|
|
.It "GPROF\_GMONPARAM struct gmonparam no"
|
|
.El
|
|
.Pp
|
|
The variables are as follows:
|
|
.Bl -tag -width 6n
|
|
.It Li GPROF_STATE
|
|
Returns GMON_PROF_ON or GMON_PROF_OFF to show that profiling
|
|
is running or stopped.
|
|
.It Li GPROF_COUNT
|
|
Array of statistical program counter counts.
|
|
.It Li GPROF_FROMS
|
|
Array indexed by program counter of call-from points.
|
|
.It Li GPROF_TOS
|
|
Array of
|
|
.Va struct tostruct
|
|
describing destination of calls and their counts.
|
|
.It Li GPROF_GMONPARAM
|
|
Structure giving the sizes of the above arrays.
|
|
.El
|
|
.It Li KERN_QUANTUM
|
|
The maximum period of time, in microseconds, for which a process is allowed
|
|
to run without being preempted if other processes are in the run queue.
|
|
.It Li KERN_SAVED_IDS
|
|
Returns 1 if saved set-group and saved set-user ID is available.
|
|
.It Li KERN_SECURELVL
|
|
The system security level.
|
|
This level may be raised by processes with appropriate privilege.
|
|
It may not be lowered.
|
|
.It Li KERN_VERSION
|
|
The system version string.
|
|
.It Li KERN_VNODE
|
|
Return the entire vnode table.
|
|
Note, the vnode table is not necessarily a consistent snapshot of
|
|
the system.
|
|
The returned data consists of an array whose size depends on the
|
|
current number of such objects in the system.
|
|
Each element of the array contains the kernel address of a vnode
|
|
.Va struct vnode *
|
|
followed by the vnode itself
|
|
.Va struct vnode .
|
|
.El
|
|
.Ss CTL_MACHDEP
|
|
The set of variables defined is architecture dependent.
|
|
The following variables are defined for the i386 architecture.
|
|
.Bl -column "CONSOLE_DEVICEXXX" "struct bootinfoXXX" -offset indent
|
|
.It Sy "Second level name Type Changeable"
|
|
.It Li "CPU_CONSDEV dev_t no"
|
|
.It Li "CPU_ADJKERNTZ int yes"
|
|
.It Li "CPU_DISRTCSET int yes"
|
|
.It Li "CPU_BOOTINFO struct bootinfo no"
|
|
.It Li "CPU_WALLCLOCK int yes"
|
|
.El
|
|
.Ss CTL_NET
|
|
The string and integer information available for the CTL_NET level
|
|
is detailed below.
|
|
The changeable column shows whether a process with appropriate
|
|
privilege may change the value.
|
|
.Bl -column "Second level nameXXXXXX" "routing messagesXXX" -offset indent
|
|
.It Sy "Second level name Type Changeable"
|
|
.It "PF\_ROUTE routing messages no"
|
|
.It "PF\_INET IPv4 values yes"
|
|
.It "PF\_INET6 IPv6 values yes"
|
|
.El
|
|
.Pp
|
|
.Bl -tag -width 6n
|
|
.It Li PF_ROUTE
|
|
Return the entire routing table or a subset of it.
|
|
The data is returned as a sequence of routing messages (see
|
|
.Xr route 4
|
|
for the header file, format and meaning).
|
|
The length of each message is contained in the message header.
|
|
.Pp
|
|
The third level name is a protocol number, which is currently always 0.
|
|
The fourth level name is an address family, which may be set to 0 to
|
|
select all address families.
|
|
The fifth and sixth level names are as follows:
|
|
.Bl -column "Fifth level nameXXXXXX" "Sixth level is:XXX" -offset indent
|
|
.It Sy "Fifth level name Sixth level is:"
|
|
.It "NET\_RT\_FLAGS rtflags"
|
|
.It "NET\_RT\_DUMP None"
|
|
.It "NET\_RT\_IFLIST None"
|
|
.El
|
|
.It Li PF_INET
|
|
Get or set various global information about the IPv4
|
|
.Pq Internet Protocol version 4 .
|
|
The third level name is the protocol.
|
|
The fourth level name is the variable name.
|
|
The currently defined protocols and names are:
|
|
.Bl -column ProtocolXX VariableXX TypeXX ChangeableXX
|
|
.It Sy "Protocol Variable Type Changeable"
|
|
.It "icmp bmcastecho integer yes"
|
|
.It "icmp maskrepl integer yes"
|
|
.It "ip forwarding integer yes"
|
|
.It "ip redirect integer yes"
|
|
.It "ip ttl integer yes"
|
|
.It "udp checksum integer yes"
|
|
.El
|
|
.Pp
|
|
The variables are as follows:
|
|
.Bl -tag -width 6n
|
|
.It Li icmp.bmcastecho
|
|
Returns 1 if an ICMP echo request to a broadcast or multicast address is
|
|
to be answered.
|
|
.It Li icmp.maskrepl
|
|
Returns 1 if ICMP network mask requests are to be answered.
|
|
.It Li ip.forwarding
|
|
Returns 1 when IP forwarding is enabled for the host,
|
|
meaning that the host is acting as a router.
|
|
.It Li ip.redirect
|
|
Returns 1 when ICMP redirects may be sent by the host.
|
|
This option is ignored unless the host is routing IP packets,
|
|
and should normally be enabled on all systems.
|
|
.It Li ip.ttl
|
|
The maximum time-to-live (hop count) value for an IP packet sourced by
|
|
the system.
|
|
This value applies to normal transport protocols, not to ICMP.
|
|
.It Li udp.checksum
|
|
Returns 1 when UDP checksums are being computed and checked.
|
|
Disabling UDP checksums is strongly discouraged.
|
|
.Pp
|
|
For variables net.inet.*.ipsec, please refer to
|
|
.Xr ipsec 4 .
|
|
.El
|
|
.It Li PF_INET6
|
|
Get or set various global information about the IPv6
|
|
.Pq Internet Protocol version 6 .
|
|
The third level name is the protocol.
|
|
The fourth level name is the variable name.
|
|
.Pp
|
|
For variables net.inet6.* please refer to
|
|
.Xr inet6 4 .
|
|
For variables net.inet6.*.ipsec6, please refer to
|
|
.Xr ipsec 4 .
|
|
.El
|
|
.Ss CTL_USER
|
|
The string and integer information available for the CTL_USER level
|
|
is detailed below.
|
|
The changeable column shows whether a process with appropriate
|
|
privilege may change the value.
|
|
.Bl -column "USER_COLL_WEIGHTS_MAXXXX" "integerXXX" -offset indent
|
|
.It Sy "Second level name Type Changeable"
|
|
.It "USER\_BC\_BASE\_MAX integer no"
|
|
.It "USER\_BC\_DIM\_MAX integer no"
|
|
.It "USER\_BC\_SCALE\_MAX integer no"
|
|
.It "USER\_BC\_STRING\_MAX integer no"
|
|
.It "USER\_COLL\_WEIGHTS\_MAX integer no"
|
|
.It "USER\_CS\_PATH string no"
|
|
.It "USER\_EXPR\_NEST\_MAX integer no"
|
|
.It "USER\_LINE\_MAX integer no"
|
|
.It "USER\_POSIX2\_CHAR\_TERM integer no"
|
|
.It "USER\_POSIX2\_C\_BIND integer no"
|
|
.It "USER\_POSIX2\_C\_DEV integer no"
|
|
.It "USER\_POSIX2\_FORT\_DEV integer no"
|
|
.It "USER\_POSIX2\_FORT\_RUN integer no"
|
|
.It "USER\_POSIX2\_LOCALEDEF integer no"
|
|
.It "USER\_POSIX2\_SW\_DEV integer no"
|
|
.It "USER\_POSIX2\_UPE integer no"
|
|
.It "USER\_POSIX2\_VERSION integer no"
|
|
.It "USER\_RE\_DUP\_MAX integer no"
|
|
.It "USER\_STREAM\_MAX integer no"
|
|
.It "USER\_TZNAME\_MAX integer no"
|
|
.El
|
|
.Bl -tag -width 6n
|
|
.Pp
|
|
.It Li USER_BC_BASE_MAX
|
|
The maximum ibase/obase values in the
|
|
.Xr bc 1
|
|
utility.
|
|
.It Li USER_BC_DIM_MAX
|
|
The maximum array size in the
|
|
.Xr bc 1
|
|
utility.
|
|
.It Li USER_BC_SCALE_MAX
|
|
The maximum scale value in the
|
|
.Xr bc 1
|
|
utility.
|
|
.It Li USER_BC_STRING_MAX
|
|
The maximum string length in the
|
|
.Xr bc 1
|
|
utility.
|
|
.It Li USER_COLL_WEIGHTS_MAX
|
|
The maximum number of weights that can be assigned to any entry of
|
|
the LC_COLLATE order keyword in the locale definition file.
|
|
.It Li USER_CS_PATH
|
|
Return a value for the
|
|
.Ev PATH
|
|
environment variable that finds all the standard utilities.
|
|
.It Li USER_EXPR_NEST_MAX
|
|
The maximum number of expressions that can be nested within
|
|
parenthesis by the
|
|
.Xr expr 1
|
|
utility.
|
|
.It Li USER_LINE_MAX
|
|
The maximum length in bytes of a text-processing utility's input
|
|
line.
|
|
.It Li USER_POSIX2_CHAR_TERM
|
|
Return 1 if the system supports at least one terminal type capable of
|
|
all operations described in
|
|
.St -p1003.2 ,
|
|
otherwise 0.
|
|
.It Li USER_POSIX2_C_BIND
|
|
Return 1 if the system's C-language development facilities support the
|
|
C-Language Bindings Option, otherwise 0.
|
|
.It Li USER_POSIX2_C_DEV
|
|
Return 1 if the system supports the C-Language Development Utilities Option,
|
|
otherwise 0.
|
|
.It Li USER_POSIX2_FORT_DEV
|
|
Return 1 if the system supports the FORTRAN Development Utilities Option,
|
|
otherwise 0.
|
|
.It Li USER_POSIX2_FORT_RUN
|
|
Return 1 if the system supports the FORTRAN Runtime Utilities Option,
|
|
otherwise 0.
|
|
.It Li USER_POSIX2_LOCALEDEF
|
|
Return 1 if the system supports the creation of locales, otherwise 0.
|
|
.It Li USER_POSIX2_SW_DEV
|
|
Return 1 if the system supports the Software Development Utilities Option,
|
|
otherwise 0.
|
|
.It Li USER_POSIX2_UPE
|
|
Return 1 if the system supports the User Portability Utilities Option,
|
|
otherwise 0.
|
|
.It Li USER_POSIX2_VERSION
|
|
The version of
|
|
.St -p1003.2
|
|
with which the system attempts to comply.
|
|
.It Li USER_RE_DUP_MAX
|
|
The maximum number of repeated occurrences of a regular expression
|
|
permitted when using interval notation.
|
|
.It Li USER_STREAM_MAX
|
|
The minimum maximum number of streams that a process may have open
|
|
at any one time.
|
|
.It Li USER_TZNAME_MAX
|
|
The minimum maximum number of types supported for the name of a
|
|
timezone.
|
|
.El
|
|
.Ss CTL_VM
|
|
The string and integer information available for the CTL_VM level
|
|
is detailed below.
|
|
The changeable column shows whether a process with appropriate
|
|
privilege may change the value.
|
|
.Bl -column "Second level nameXXXXXX" "struct loadavgXXX" -offset indent
|
|
.It Sy "Second level name Type Changeable"
|
|
.It "VM\_LOADAVG struct loadavg no"
|
|
.It "VM\_METER struct vmtotal no"
|
|
.It "VM\_PAGEOUT\_ALGORITHM integer yes"
|
|
.It "VM\_SWAPPING\_ENABLED integer maybe"
|
|
.It "VM\_V\_CACHE\_MAX integer yes"
|
|
.It "VM\_V\_CACHE\_MIN integer yes"
|
|
.It "VM\_V\_FREE\_MIN integer yes"
|
|
.It "VM\_V\_FREE\_RESERVED integer yes"
|
|
.It "VM\_V\_FREE\_TARGET integer yes"
|
|
.It "VM\_V\_INACTIVE\_TARGET integer yes"
|
|
.It "VM\_V\_PAGEOUT\_FREE\_MIN integer yes"
|
|
.El
|
|
.Pp
|
|
.Bl -tag -width 6n
|
|
.It Li VM_LOADAVG
|
|
Return the load average history.
|
|
The returned data consists of a
|
|
.Va struct loadavg .
|
|
.It Li VM_METER
|
|
Return the system wide virtual memory statistics.
|
|
The returned data consists of a
|
|
.Va struct vmtotal .
|
|
.It Li VM_PAGEOUT_ALGORITHM
|
|
0 if the statistics-based page management algorithm is in use
|
|
or 1 if the near-LRU algorithm is in use.
|
|
.It Li VM_SWAPPING_ENABLED
|
|
1 if process swapping is enabled or 0 if disabled. This variable is
|
|
permanently set to 0 if the kernel was built with swapping disabled.
|
|
.It Li VM_V_CACHE_MAX
|
|
Maximum desired size of the cache queue.
|
|
.It Li VM_V_CACHE_MIN
|
|
Minimum desired size of the cache queue. If the cache queue size
|
|
falls very far below this value, the pageout daemon is awakened.
|
|
.It Li VM_V_FREE_MIN
|
|
Minimum amount of memory (cache memory plus free memory)
|
|
required to be available before a process waiting on memory will be
|
|
awakened.
|
|
.It Li VM_V_FREE_RESERVED
|
|
Processes will awaken the pageout daemon and wait for memory if the
|
|
number of free and cached pages drops below this value.
|
|
.It Li VM_V_FREE_TARGET
|
|
The total amount of free memory (including cache memory) that the
|
|
pageout daemon tries to maintain.
|
|
.It Li VM_V_INACTIVE_TARGET
|
|
The desired number of inactive pages that the pageout daemon should
|
|
achieve when it runs. Inactive pages can be quickly inserted into
|
|
process address space when needed.
|
|
.It Li VM_V_PAGEOUT_FREE_MIN
|
|
If the amount of free and cache memory falls below this value, the
|
|
pageout daemon will enter "memory conserving mode" to avoid deadlock.
|
|
.El
|
|
.Sh RETURN VALUES
|
|
.Fn sysctl
|
|
and
|
|
.Fn sysctlbyname
|
|
return 0 when successful.
|
|
Otherwise \-1 is returned and
|
|
.Va errno
|
|
is set appropriately.
|
|
.Sh ERRORS
|
|
The following errors may be reported:
|
|
.Bl -tag -width Er
|
|
.It Bq Er EFAULT
|
|
The buffer
|
|
.Fa name ,
|
|
.Fa oldp ,
|
|
.Fa newp ,
|
|
or length pointer
|
|
.Fa oldlenp
|
|
contains an invalid address.
|
|
.It Bq Er EINVAL
|
|
The
|
|
.Fa name
|
|
array is less than two or greater than CTL_MAXNAME.
|
|
.It Bq Er EINVAL
|
|
A non-null
|
|
.Fa newp
|
|
is given and its specified length in
|
|
.Fa newlen
|
|
is too large or too small.
|
|
.It Bq Er ENOMEM
|
|
The length pointed to by
|
|
.Fa oldlenp
|
|
is too short to hold the requested value.
|
|
.It Bq Er ENOTDIR
|
|
The
|
|
.Fa name
|
|
array specifies an intermediate rather than terminal name.
|
|
.It Bq Er EISDIR
|
|
The
|
|
.Fa name
|
|
array specifies a terminal name, but the actual name is not terminal.
|
|
.It Bq Er EOPNOTSUPP
|
|
The
|
|
.Fa name
|
|
array specifies a value that is unknown.
|
|
.It Bq Er EPERM
|
|
An attempt is made to set a read-only value.
|
|
.It Bq Er EPERM
|
|
A process without appropriate privilege attempts to set a value.
|
|
.El
|
|
.Sh FILES
|
|
.Bl -tag -width <netinet/icmpXvar.h> -compact
|
|
.It Aq Pa sys/sysctl.h
|
|
definitions for top level identifiers, second level kernel and hardware
|
|
identifiers, and user level identifiers
|
|
.It Aq Pa sys/socket.h
|
|
definitions for second level network identifiers
|
|
.It Aq Pa sys/gmon.h
|
|
definitions for third level profiling identifiers
|
|
.It Aq Pa vm/vm_param.h
|
|
definitions for second level virtual memory identifiers
|
|
.It Aq Pa netinet/in.h
|
|
definitions for third level IPv4/IPv6 identifiers and
|
|
fourth level IPv4/v6 identifiers
|
|
.It Aq Pa netinet/icmp_var.h
|
|
definitions for fourth level ICMP identifiers
|
|
.It Aq Pa netinet/icmp6.h
|
|
definitions for fourth level ICMPv6 identifiers
|
|
.It Aq Pa netinet/udp_var.h
|
|
definitions for fourth level UDP identifiers
|
|
.El
|
|
.Sh SEE ALSO
|
|
.Xr sysconf 3 ,
|
|
.Xr sysctl 8
|
|
.Sh HISTORY
|
|
The
|
|
.Fn sysctl
|
|
function first appeared in
|
|
.Bx 4.4 .
|