1.\" Copyright (c) 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. All advertising materials mentioning features or use of this software 13.\" must display the following acknowledgement: 14.\" This product includes software developed by the University of 15.\" California, Berkeley and its contributors. 16.\" 4. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" @(#)sysctl.3 8.1 (Berkeley) 6/4/93 33.\" 34.Dd "June 4, 1993" 35.Dt SYSCTL 3 36.Os 37.Sh NAME 38.Nm sysctl 39.Nd get or set system information 40.Sh SYNOPSIS 41.Fd #include <sys/types.h> 42.Fd #include <sys/sysctl.h> 43.Ft int 44.Fn sysctl "int *name" "u_int namelen" "void *oldp" "size_t *oldlenp" "void *newp" "size_t newlen" 45.Sh DESCRIPTION 46The 47.Fn sysctl 48function retrieves system information and allows processes with 49appropriate privileges to set system information. 50The information available from 51.Fn sysctl 52consists of integers, strings, and tables. 53Information may be retrieved and set from the command interface 54using the 55.Xr sysctl 8 56utility. 57.Pp 58Unless explicitly noted below, 59.Fn sysctl 60returns a consistent snapshot of the data requested. 61Consistency is obtained by locking the destination 62buffer into memory so that the data may be copied out without blocking. 63Calls to 64.Fn sysctl 65are serialized to avoid deadlock. 66.Pp 67The state is described using a ``Management Information Base'' (MIB) 68style name, listed in 69.Fa name , 70which is a 71.Fa namelen 72length array of integers. 73.Pp 74The information is copied into the buffer specified by 75.Fa oldp . 76The size of the buffer is given by the location specified by 77.Fa oldlenp 78before the call, 79and that location gives the amount of data copied after a successful call 80and after a call that returns with the error code ENOMEM. 81If the amount of data available is greater 82than the size of the buffer supplied, 83the call supplies as much data as fits in the buffer provided 84and returns with the error code ENOMEM. 85If the old value is not desired, 86.Fa oldp 87and 88.Fa oldlenp 89should be set to NULL. 90.Pp 91The size of the available data can be determined by calling 92.Fn sysctl 93with a NULL parameter for 94.Fa oldp . 95The size of the available data will be returned in the location pointed to by 96.Fa oldlenp . 97For some operations, the amount of space may change often. 98For these operations, 99the system attempts to round up so that the returned size is 100large enough for a call to return the data shortly thereafter. 101.Pp 102To set a new value, 103.Fa newp 104is set to point to a buffer of length 105.Fa newlen 106from which the requested value is to be taken. 107If a new value is not to be set, 108.Fa newp 109should be set to NULL and 110.Fa newlen 111set to 0. 112.Pp 113The top level names are defined with a CTL_ prefix in 114.Pa <sys/sysctl.h> , 115and are as follows. 116The next and subsequent levels down are found in the include files 117listed here, and described in separate sections below. 118.Pp 119.Bl -column CTLXMACHDEPXXX "Next level namesXXXXXX" -offset indent 120.It Sy Pa Name Next level names Description 121.It CTL\_DEBUG sys/sysctl.h Debugging 122.It CTL\_VFS sys/sysctl.h File system 123.It CTL\_HW sys/sysctl.h Generic CPU, I/O 124.It CTL\_KERN sys/sysctl.h High kernel limits 125.It CTL\_MACHDEP sys/sysctl.h Machine dependent 126.It CTL\_NET sys/socket.h Networking 127.It CTL\_USER sys/sysctl.h User-level 128.It CTL\_VM vm/vm_param.h Virtual memory 129.El 130.Pp 131For example, the following retrieves the maximum number of processes allowed 132in the system: 133.Bd -literal -offset indent -compact 134int mib[2], maxproc; 135size_t len; 136.sp 137mib[0] = CTL_KERN; 138mib[1] = KERN_MAXPROC; 139len = sizeof(maxproc); 140sysctl(mib, 2, &maxproc, &len, NULL, 0); 141.Ed 142.sp 143To retrieve the standard search path for the system utilities: 144.Bd -literal -offset indent -compact 145int mib[2]; 146size_t len; 147char *p; 148.sp 149mib[0] = CTL_USER; 150mib[1] = USER_CS_PATH; 151sysctl(mib, 2, NULL, &len, NULL, 0); 152p = malloc(len); 153sysctl(mib, 2, p, &len, NULL, 0); 154.Ed 155.Sh CTL_DEBUG 156The debugging variables vary from system to system. 157A debugging variable may be added or deleted without need to recompile 158.Fn sysctl 159to know about it. 160Each time it runs, 161.Fn sysctl 162gets the list of debugging variables from the kernel and 163displays their current values. 164The system defines twenty 165.Ns ( Va struct ctldebug ) 166variables named 167.Nm debug0 168through 169.Nm debug19 . 170They are declared as separate variables so that they can be 171individually initialized at the location of their associated variable. 172The loader prevents multiple use of the same variable by issuing errors 173if a variable is initialized in more than one place. 174For example, to export the variable 175.Nm dospecialcheck 176as a debugging variable, the following declaration would be used: 177.Bd -literal -offset indent -compact 178int dospecialcheck = 1; 179struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck }; 180.Ed 181.Sh CTL_VFS 182There are currently no second level names for the file system. 183.Sh CTL_HW 184The string and integer information available for the CTL_HW level 185is detailed below. 186The changeable column shows whether a process with appropriate 187privilege may change the value. 188.Bl -column "Second level nameXXXXXX" integerXXX -offset indent 189.It Sy Pa Second level name Type Changeable 190.It HW\_MACHINE string no 191.It HW\_MODEL string no 192.It HW\_NCPU integer no 193.It HW\_BYTEORDER integer no 194.It HW\_PHYSMEM integer no 195.It HW\_USERMEM integer no 196.It HW\_PAGESIZE integer no 197.It HW\_FLOATINGPOINT integer no 198.\".It HW\_DISKNAMES integer no 199.\".It HW\_DISKSTATS integer no 200.El 201.Pp 202.Bl -tag -width "123456" 203.It Li HW_MACHINE 204The machine class. 205.It Li HW_MODEL 206The machine model 207.It Li HW_NCPU 208The number of cpus. 209.It Li HW_BYTEORDER 210The byteorder (4,321, or 1,234). 211.It Li HW_PHYSMEM 212The bytes of physical memory. 213.It Li HW_USERMEM 214The bytes of non-kernel memory. 215.It Li HW_PAGESIZE 216The software page size. 217.It Li HW_FLOATINGPOINT 218Nonzero if the floating point support is in hardware. 219.\".It Fa HW_DISKNAMES 220.\".It Fa HW_DISKSTATS 221.El 222.Sh CTL_KERN 223The string and integer information available for the CTL_KERN level 224is detailed below. 225The changeable column shows whether a process with appropriate 226privilege may change the value. 227The types of data currently available are process information, 228system vnodes, the open file entries, routing table entries, 229virtual memory statistics, load average history, and clock rate 230information. 231.Bl -column "KERNXMAXFILESPERPROCXXX" "struct clockrateXXX" -offset indent 232.It Sy Pa Second level name Type Changeable 233.It KERN\_ARGMAX integer no 234.It KERN\_BOOTFILE string yes 235.It KERN\_BOOTTIME struct timeval no 236.It KERN\_CLOCKRATE struct clockinfo no 237.It KERN\_FILE struct file no 238.It KERN\_HOSTID integer yes 239.It KERN\_HOSTNAME string yes 240.It KERN\_JOB\_CONTROL integer no 241.It KERN\_MAXFILES integer yes 242.It KERN\_MAXFILESPERPROC integer yes 243.It KERN\_MAXPROC integer yes 244.It KERN\_MAXPROCPERUID integer yes 245.It KERN\_MAXVNODES integer yes 246.It KERN\_NGROUPS integer no 247.It KERN\_NISDOMAINNAME string yes 248.It KERN\_OSRELDATE integer no 249.It KERN\_OSRELEASE string no 250.It KERN\_OSREV integer no 251.It KERN\_OSTYPE string no 252.It KERN\_POSIX1 integer no 253.It KERN\_PROC struct proc no 254.It KERN\_PROF node not applicable 255.It KERN\_SAVED\_IDS integer no 256.It KERN\_SECURELVL integer raise only 257.It KERN\_UPDATEINTERVAL integer no 258.It KERN\_VERSION string no 259.It KERN\_VNODE struct vnode no 260.El 261.Pp 262.Bl -tag -width "123456" 263.It Li KERN_ARGMAX 264The maximum bytes of argument to 265.Xr execve 2 . 266.It Li KERN_BOOTFILE 267The full pathname of the file from which the kernel was loaded. 268.It Li KERN_BOOTTIME 269A 270.Va struct timeval 271structure is returned. 272This structure contains the time that the system was booted. 273.It Li KERN_CLOCKRATE 274A 275.Va struct clockinfo 276structure is returned. 277This structure contains the clock, statistics clock and profiling clock 278frequencies, and the number of micro-seconds per hz tick. 279.It Li KERN_FILE 280Return the entire file table. 281The returned data consists of a single 282.Va struct filehead 283followed by an array of 284.Va struct file , 285whose size depends on the current number of such objects in the system. 286.It Li KERN_HOSTID 287Get or set the host id. 288.It Li KERN_HOSTNAME 289Get or set the hostname. 290.It Li KERN_JOB_CONTROL 291Return 1 if job control is available on this system, otherwise 0. 292.It Li KERN_MAXFILES 293The maximum number of files that may be open in the system. 294.It Li KERN_MAXFILESPERPROC 295The maximum number of files that may be open for a single process. 296This limit only applies to processes with an effective uid of nonzero 297at the time of the open request. 298Files that have already been opened are not affected if the limit 299or the effective uid is changed. 300.It Li KERN_MAXPROC 301The maximum number of concurrent processes the system will allow. 302.It Li KERN_MAXPROCPERUID 303The maximum number of concurrent processes the system will allow 304for a single effective uid. 305This limit only applies to processes with an effective uid of nonzero 306at the time of a fork request. 307Processes that have already been started are not affected if the limit 308is changed. 309.It Li KERN_MAXVNODES 310The maximum number of vnodes available on the system. 311.It Li KERN_NGROUPS 312The maximum number of supplemental groups. 313.It Li KERN_NISDOMAINNAME 314The name of the current YP/NIS domain. 315.It Li KERN_OSRELDATE 316The system release date in YYYYMM format 317(January 1996 is encoded as 199601). 318.It Li KERN_OSRELEASE 319The system release string. 320.It Li KERN_OSREV 321The system revision string. 322.It Li KERN_OSTYPE 323The system type string. 324.It Li KERN_POSIX1 325The version of ISO/IEC 9945 (POSIX 1003.1) with which the system 326attempts to comply. 327.It Li KERN_PROC 328Return the entire process table, or a subset of it. 329An array of 330.Va struct kinfo_proc 331structures is returned, 332whose size depends on the current number of such objects in the system. 333The third and fourth level names are as follows: 334.Bl -column "Third level nameXXXXXX" "Fourth level is:XXXXXX" -offset indent 335.It Pa Third level name Fourth level is: 336.It KERN\_PROC\_ALL None 337.It KERN\_PROC\_PID A process ID 338.It KERN\_PROC\_PGRP A process group 339.It KERN\_PROC\_TTY A tty device 340.It KERN\_PROC\_UID A user ID 341.It KERN\_PROC\_RUID A real user ID 342.El 343.It Li KERN_PROF 344Return profiling information about the kernel. 345If the kernel is not compiled for profiling, 346attempts to retrieve any of the KERN_PROF values will 347fail with EOPNOTSUPP. 348The third level names for the string and integer profiling information 349is detailed below. 350The changeable column shows whether a process with appropriate 351privilege may change the value. 352.Bl -column "GPROFXGMONPARAMXXX" "struct gmonparamXXX" -offset indent 353.It Sy Pa Third level name Type Changeable 354.It GPROF\_STATE integer yes 355.It GPROF\_COUNT u_short[\|] yes 356.It GPROF\_FROMS u_short[\|] yes 357.It GPROF\_TOS struct tostruct yes 358.It GPROF\_GMONPARAM struct gmonparam no 359.El 360.Pp 361The variables are as follows: 362.Bl -tag -width "123456" 363.It Li GPROF_STATE 364Returns GMON_PROF_ON or GMON_PROF_OFF to show that profiling 365is running or stopped. 366.It Li GPROF_COUNT 367Array of statistical program counter counts. 368.It Li GPROF_FROMS 369Array indexed by program counter of call-from points. 370.It Li GPROF_TOS 371Array of 372.Va struct tostruct 373describing destination of calls and their counts. 374.It Li GPROF_GMONPARAM 375Structure giving the sizes of the above arrays. 376.El 377.It Li KERN_SAVED_IDS 378Returns 1 if saved set-group and saved set-user ID is available. 379.It Li KERN_SECURELVL 380The system security level. 381This level may be raised by processes with appropriate privilege. 382It may only be lowered by process 1. 383.It Li KERN_VERSION 384The system version string. 385.It Li KERN_VNODE 386Return the entire vnode table. 387Note, the vnode table is not necessarily a consistent snapshot of 388the system. 389The returned data consists of an array whose size depends on the 390current number of such objects in the system. 391Each element of the array contains the kernel address of a vnode 392.Va struct vnode * 393followed by the vnode itself 394.Va struct vnode . 395.It Li KERN_UPDATEINTERVAL 396The interval between 397.Xr sync 2 398calls in the 399.Xr update 4 400process. 401.El 402.Sh CTL_MACHDEP 403The set of variables defined is architecture dependent. 404The following variables are defined for the i386 architecture. 405.Bl -column "CONSOLE_DEVICEXXX" "struct bootinfoXXX" -offset indent 406.It Sy Pa Second level name Type Changeable 407.It Li CPU_CONSDEV dev_t no 408.It Li CPU_ADJKERNTZ int yes 409.It Li CPU_DISRTCSET int yes 410.It Li CPU_BOOTINFO struct bootinfo no 411.It Li CPU_WALLCLOCK int yes 412.El 413.Sh CTL_NET 414The string and integer information available for the CTL_NET level 415is detailed below. 416The changeable column shows whether a process with appropriate 417privilege may change the value. 418.Bl -column "Second level nameXXXXXX" "routing messagesXXX" -offset indent 419.It Sy Pa Second level name Type Changeable 420.It PF\_ROUTE routing messages no 421.It PF\_INET internet values yes 422.El 423.Pp 424.Bl -tag -width "123456" 425.It Li PF_ROUTE 426Return the entire routing table or a subset of it. 427The data is returned as a sequence of routing messages (see 428.Xr route 4 429for the header file, format and meaning). 430The length of each message is contained in the message header. 431.Pp 432The third level name is a protocol number, which is currently always 0. 433The fourth level name is an address family, which may be set to 0 to 434select all address families. 435The fifth and sixth level names are as follows: 436.Bl -column "Fifth level nameXXXXXX" "Sixth level is:XXX" -offset indent 437.It Pa Fifth level name Sixth level is: 438.It NET\_RT\_FLAGS rtflags 439.It NET\_RT\_DUMP None 440.It NET\_RT\_IFLIST None 441.El 442.It Li PF_INET 443Get or set various global information about the internet protocols. 444The third level name is the protocol. 445The fourth level name is the variable name. 446The currently defined protocols and names are: 447.Bl -column "Protocol nameXXXXXX" "Variable nameXXX" "integerXXX" -offset indent 448.It Pa Protocol name Variable name Type Changeable 449.It ip forwarding integer yes 450.It ip redirect integer yes 451.It ip ttl integer yes 452.It icmp maskrepl integer yes 453.It udp checksum integer yes 454.El 455.Pp 456The variables are as follows: 457.Bl -tag -width "123456" 458.It Li ip.forwarding 459Returns 1 when IP forwarding is enabled for the host, 460meaning that the host is acting as a router. 461.It Li ip.redirect 462Returns 1 when ICMP redirects may be sent by the host. 463This option is ignored unless the host is routing IP packets, 464and should normally be enabled on all systems. 465.It Li ip.ttl 466The maximum time-to-live (hop count) value for an IP packet sourced by 467the system. 468This value applies to normal transport protocols, not to ICMP. 469.It Li icmp.maskrepl 470Returns 1 if ICMP network mask requests are to be answered. 471.It Li udp.checksum 472Returns 1 when UDP checksums are being computed and checked. 473Disabling UDP checksums is strongly discouraged. 474.El 475.Sh CTL_USER 476The string and integer information available for the CTL_USER level 477is detailed below. 478The changeable column shows whether a process with appropriate 479privilege may change the value. 480.Bl -column "USER_COLL_WEIGHTS_MAXXXX" "integerXXX" -offset indent 481.It Sy Pa Second level name Type Changeable 482.It USER\_BC\_BASE\_MAX integer no 483.It USER\_BC\_DIM\_MAX integer no 484.It USER\_BC\_SCALE\_MAX integer no 485.It USER\_BC\_STRING\_MAX integer no 486.It USER\_COLL\_WEIGHTS\_MAX integer no 487.It USER\_CS\_PATH string no 488.It USER\_EXPR\_NEST\_MAX integer no 489.It USER\_LINE\_MAX integer no 490.It USER\_POSIX2\_CHAR\_TERM integer no 491.It USER\_POSIX2\_C\_BIND integer no 492.It USER\_POSIX2\_C\_DEV integer no 493.It USER\_POSIX2\_FORT\_DEV integer no 494.It USER\_POSIX2\_FORT\_RUN integer no 495.It USER\_POSIX2\_LOCALEDEF integer no 496.It USER\_POSIX2\_SW\_DEV integer no 497.It USER\_POSIX2\_UPE integer no 498.It USER\_POSIX2\_VERSION integer no 499.It USER\_RE\_DUP\_MAX integer no 500.It USER\_STREAM\_MAX integer no 501.It USER\_TZNAME\_MAX integer no 502.El 503.Bl -tag -width "123456" 504.Pp 505.It Li USER_BC_BASE_MAX 506The maximum ibase/obase values in the 507.Xr bc 1 508utility. 509.It Li USER_BC_DIM_MAX 510The maximum array size in the 511.Xr bc 1 512utility. 513.It Li USER_BC_SCALE_MAX 514The maximum scale value in the 515.Xr bc 1 516utility. 517.It Li USER_BC_STRING_MAX 518The maximum string length in the 519.Xr bc 1 520utility. 521.It Li USER_COLL_WEIGHTS_MAX 522The maximum number of weights that can be assigned to any entry of 523the LC_COLLATE order keyword in the locale definition file. 524.It Li USER_CS_PATH 525Return a value for the 526.Ev PATH 527environment variable that finds all the standard utilities. 528.It Li USER_EXPR_NEST_MAX 529The maximum number of expressions that can be nested within 530parenthesis by the 531.Xr expr 1 532utility. 533.It Li USER_LINE_MAX 534The maximum length in bytes of a text-processing utility's input 535line. 536.It Li USER_POSIX2_CHAR_TERM 537Return 1 if the system supports at least one terminal type capable of 538all operations described in POSIX 1003.2, otherwise 0. 539.It Li USER_POSIX2_C_BIND 540Return 1 if the system's C-language development facilities support the 541C-Language Bindings Option, otherwise 0. 542.It Li USER_POSIX2_C_DEV 543Return 1 if the system supports the C-Language Development Utilities Option, 544otherwise 0. 545.It Li USER_POSIX2_FORT_DEV 546Return 1 if the system supports the FORTRAN Development Utilities Option, 547otherwise 0. 548.It Li USER_POSIX2_FORT_RUN 549Return 1 if the system supports the FORTRAN Runtime Utilities Option, 550otherwise 0. 551.It Li USER_POSIX2_LOCALEDEF 552Return 1 if the system supports the creation of locales, otherwise 0. 553.It Li USER_POSIX2_SW_DEV 554Return 1 if the system supports the Software Development Utilities Option, 555otherwise 0. 556.It Li USER_POSIX2_UPE 557Return 1 if the system supports the User Portability Utilities Option, 558otherwise 0. 559.It Li USER_POSIX2_VERSION 560The version of POSIX 1003.2 with which the system attempts to comply. 561.It Li USER_RE_DUP_MAX 562The maximum number of repeated occurrences of a regular expression 563permitted when using interval notation. 564.It Li USER_STREAM_MAX 565The minimum maximum number of streams that a process may have open 566at any one time. 567.It Li USER_TZNAME_MAX 568The minimum maximum number of types supported for the name of a 569timezone. 570.El 571.Sh CTL_VM 572The string and integer information available for the CTL_VM level 573is detailed below. 574The changeable column shows whether a process with appropriate 575privilege may change the value. 576.Bl -column "Second level nameXXXXXX" "struct loadavgXXX" -offset indent 577.It Sy Pa Second level name Type Changeable 578.It VM\_LOADAVG struct loadavg no 579.It VM\_METER struct vmtotal no 580.El 581.Pp 582.Bl -tag -width "123456" 583.It Li VM_LOADAVG 584Return the load average history. 585The returned data consists of a 586.Va struct loadavg . 587.It Li VM_METER 588Return the system wide virtual memory statistics. 589The returned data consists of a 590.Va struct vmtotal . 591.El 592.Sh RETURN VALUES 593If the call to 594.Fn sysctl 595is successful, 0 is returned. 596Otherwise \-1 is returned and 597.Va errno 598is set appropriately. 599.Sh ERRORS 600The following errors may be reported: 601.Bl -tag -width Er 602.It Bq Er EFAULT 603The buffer 604.Fa name , 605.Fa oldp , 606.Fa newp , 607or length pointer 608.Fa oldlenp 609contains an invalid address. 610.It Bq Er EINVAL 611The 612.Fa name 613array is less than two or greater than CTL_MAXNAME. 614.It Bq Er EINVAL 615A non-null 616.Fa newp 617is given and its specified length in 618.Fa newlen 619is too large or too small. 620.It Bq Er ENOMEM 621The length pointed to by 622.Fa oldlenp 623is too short to hold the requested value. 624.It Bq Er ENOTDIR 625The 626.Fa name 627array specifies an intermediate rather than terminal name. 628.It Bq Er EOPNOTSUPP 629The 630.Fa name 631array specifies a value that is unknown. 632.It Bq Er EPERM 633An attempt is made to set a read-only value. 634.It Bq Er EPERM 635A process without appropriate privilege attempts to set a value. 636.El 637.Sh FILES 638.Bl -tag -width <netinet/icmpXvar.h> -compact 639.It Pa <sys/sysctl.h> 640definitions for top level identifiers, second level kernel and hardware 641identifiers, and user level identifiers 642.It Pa <sys/socket.h> 643definitions for second level network identifiers 644.It Pa <sys/gmon.h> 645definitions for third level profiling identifiers 646.It Pa <vm/vm_param.h> 647definitions for second level virtual memory identifiers 648.It Pa <netinet/in.h> 649definitions for third level Internet identifiers and 650fourth level IP identifiers 651.It Pa <netinet/icmp_var.h> 652definitions for fourth level ICMP identifiers 653.It Pa <netinet/udp_var.h> 654definitions for fourth level UDP identifiers 655.El 656.Sh SEE ALSO 657.Xr sysctl 8 658.Sh HISTORY 659The 660.Fn sysctl 661function first appeared in 662.Bx 4.4 . 663