2 * sysctl.h: General linux system control interface 4 * Begun 24 March 1995, Stephen Tweedie 6 **************************************************************** 7 **************************************************************** 10 ** The values in this file are exported to user space via 11 ** the sysctl() binary interface. Do *NOT* change the 12 ** numbering of any existing values here, and do not change 13 ** any numbers within any one set of values. If you have 14 ** to redefine an existing interface, use a new number for it. 15 ** The kernel will then return ENOTDIR to any application using 16 ** the old binary interface. 20 **************************************************************** 21 **************************************************************** 24 #include <linux/lists.h> 26 #ifndef _LINUX_SYSCTL_H 27 #define _LINUX_SYSCTL_H 29 #define CTL_MAXNAME 10 31 struct __sysctl_args
{ 38 unsigned long __unused
[4]; 41 /* Define sysctl names first */ 43 /* Top-level names: */ 45 /* For internal pattern-matching use only: */ 47 #define CTL_ANY -1/* Matches any name */ 53 CTL_KERN
=1,/* General kernel info and control */ 54 CTL_VM
=2,/* VM management */ 55 CTL_NET
=3,/* Networking */ 56 CTL_PROC
=4,/* Process info */ 57 CTL_FS
=5,/* Filesystems */ 58 CTL_DEBUG
=6,/* Debugging */ 59 CTL_DEV
=7,/* Devices */ 72 KERN_OSTYPE
=1,/* string: system version */ 73 KERN_OSRELEASE
=2,/* string: system release */ 74 KERN_OSREV
=3,/* int: system revision */ 75 KERN_VERSION
=4,/* string: compile time info */ 76 KERN_SECUREMASK
=5,/* struct: maximum rights mask */ 77 KERN_PROF
=6,/* table: profiling information */ 81 KERN_CAP_BSET
=14,/* int: capability bounding set */ 82 KERN_PANIC
=15,/* int: panic timeout */ 83 KERN_REALROOTDEV
=16,/* real root device to mount after initrd */ 85 KERN_SPARC_REBOOT
=21,/* reboot command on Sparc */ 86 KERN_CTLALTDEL
=22,/* int: allow ctl-alt-del to reboot */ 87 KERN_PRINTK
=23,/* struct: control printk logging parameters */ 88 KERN_NAMETRANS
=24,/* Name translation */ 89 KERN_PPC_HTABRECLAIM
=25,/* turn htab reclaimation on/off on PPC */ 90 KERN_PPC_ZEROPAGED
=26,/* turn idle page zeroing on/off on PPC */ 91 KERN_PPC_POWERSAVE_NAP
=27,/* use nap mode for power saving */ 94 KERN_ACCT
=30,/* BSD process accounting parameters */ 95 KERN_PPC_L2CR
=31,/* l2cr register on PPC */ 97 KERN_RTSIGNR
=32,/* Number of rt sigs queued */ 98 KERN_RTSIGMAX
=33,/* Max queuable */ 100 KERN_SHMMAX
=34,/* int: Maximum shared memory segment */ 101 KERN_MSGMAX
=35,/* int: Maximum size of a messege */ 102 KERN_MSGMNB
=36,/* int: Maximum message queue size */ 103 KERN_MSGPOOL
=37,/* int: Maximum system message pool size */ 104 KERN_SYSRQ
=38,/* int: Sysreq enable */ 105 KERN_MAX_THREADS
=39,/* int: Maximum nr of threads in the system */ 106 KERN_RANDOM
=40/* Random driver */ 113 VM_SWAPCTL
=1,/* struct: Set vm swapping control */ 114 VM_SWAPOUT
=2,/* int: Background pageout interval */ 115 VM_FREEPG
=3,/* struct: Set free page thresholds */ 116 VM_BDFLUSH
=4,/* struct: Control buffer cache flushing */ 117 VM_OVERCOMMIT_MEMORY
=5,/* Turn off the virtual memory safety limit */ 118 VM_BUFFERMEM
=6,/* struct: Set buffer memory thresholds */ 119 VM_PAGECACHE
=7,/* struct: Set cache memory thresholds */ 120 VM_PAGERDAEMON
=8,/* struct: Control kswapd behaviour */ 121 VM_PGT_CACHE
=9,/* struct: Set page table cache parameters */ 122 VM_PAGE_CLUSTER
=10/* int: set number of pages to swap together */ 148 /* /proc/sys/kernel/random */ 152 RANDOM_ENTROPY_COUNT
=2, 153 RANDOM_READ_THRESH
=3, 154 RANDOM_WRITE_THRESH
=4, 159 /* /proc/sys/bus/isa */ 167 /* /proc/sys/net/core */ 172 NET_CORE_WMEM_DEFAULT
=3, 173 NET_CORE_RMEM_DEFAULT
=4, 174 /* was NET_CORE_DESTROY_DELAY */ 175 NET_CORE_MAX_BACKLOG
=6, 176 NET_CORE_FASTROUTE
=7, 178 NET_CORE_MSG_BURST
=9, 179 NET_CORE_OPTMEM_MAX
=10 182 /* /proc/sys/net/ethernet */ 184 /* /proc/sys/net/802 */ 186 /* /proc/sys/net/unix */ 190 NET_UNIX_DESTROY_DELAY
=1, 191 NET_UNIX_DELETE_DELAY
=2, 192 NET_UNIX_MAX_DGRAM_QLEN
=3, 195 /* /proc/sys/net/ipv4 */ 198 /* v2.0 compatibile variables */ 205 NET_IPV4_FIB_HASH
=19, 207 NET_IPV4_TCP_TIMESTAMPS
=33, 208 NET_IPV4_TCP_WINDOW_SCALING
=34, 209 NET_IPV4_TCP_SACK
=35, 210 NET_IPV4_TCP_RETRANS_COLLAPSE
=36, 211 NET_IPV4_DEFAULT_TTL
=37, 212 NET_IPV4_AUTOCONFIG
=38, 213 NET_IPV4_NO_PMTU_DISC
=39, 214 NET_IPV4_TCP_SYN_RETRIES
=40, 215 NET_IPV4_IPFRAG_HIGH_THRESH
=41, 216 NET_IPV4_IPFRAG_LOW_THRESH
=42, 217 NET_IPV4_IPFRAG_TIME
=43, 218 NET_IPV4_TCP_MAX_KA_PROBES
=44, 219 NET_IPV4_TCP_KEEPALIVE_TIME
=45, 220 NET_IPV4_TCP_KEEPALIVE_PROBES
=46, 221 NET_IPV4_TCP_RETRIES1
=47, 222 NET_IPV4_TCP_RETRIES2
=48, 223 NET_IPV4_TCP_FIN_TIMEOUT
=49, 224 NET_IPV4_IP_MASQ_DEBUG
=50, 225 NET_TCP_SYNCOOKIES
=51, 228 NET_TCP_SYN_TAILDROP
=54, 229 NET_TCP_MAX_SYN_BACKLOG
=55, 230 NET_IPV4_LOCAL_PORT_RANGE
=56, 231 NET_IPV4_ICMP_ECHO_IGNORE_ALL
=57, 232 NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS
=58, 233 NET_IPV4_ICMP_SOURCEQUENCH_RATE
=59, 234 NET_IPV4_ICMP_DESTUNREACH_RATE
=60, 235 NET_IPV4_ICMP_TIMEEXCEED_RATE
=61, 236 NET_IPV4_ICMP_PARAMPROB_RATE
=62, 237 NET_IPV4_ICMP_ECHOREPLY_RATE
=63, 238 NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES
=64, 239 NET_IPV4_IGMP_MAX_MEMBERSHIPS
=65, 240 NET_TCP_TW_RECYCLE
=66, 241 NET_IPV4_TCP_KEEPALIVE_INTVL
=67, 245 NET_IPV4_ROUTE_FLUSH
=1, 246 NET_IPV4_ROUTE_MIN_DELAY
=2, 247 NET_IPV4_ROUTE_MAX_DELAY
=3, 248 NET_IPV4_ROUTE_GC_THRESH
=4, 249 NET_IPV4_ROUTE_MAX_SIZE
=5, 250 NET_IPV4_ROUTE_GC_MIN_INTERVAL
=6, 251 NET_IPV4_ROUTE_GC_TIMEOUT
=7, 252 NET_IPV4_ROUTE_GC_INTERVAL
=8, 253 NET_IPV4_ROUTE_REDIRECT_LOAD
=9, 254 NET_IPV4_ROUTE_REDIRECT_NUMBER
=10, 255 NET_IPV4_ROUTE_REDIRECT_SILENCE
=11, 256 NET_IPV4_ROUTE_ERROR_COST
=12, 257 NET_IPV4_ROUTE_ERROR_BURST
=13, 258 NET_IPV4_ROUTE_GC_ELASTICITY
=14, 259 NET_IPV4_ROUTE_MTU_EXPIRES
=15, 260 NET_IPV4_ROUTE_MIN_PMTU
=16, 261 NET_IPV4_ROUTE_MIN_ADVMSS
=17 266 NET_PROTO_CONF_ALL
=-2, 267 NET_PROTO_CONF_DEFAULT
=-3 269 /* And device ifindices ... */ 274 NET_IPV4_CONF_FORWARDING
=1, 275 NET_IPV4_CONF_MC_FORWARDING
=2, 276 NET_IPV4_CONF_PROXY_ARP
=3, 277 NET_IPV4_CONF_ACCEPT_REDIRECTS
=4, 278 NET_IPV4_CONF_SECURE_REDIRECTS
=5, 279 NET_IPV4_CONF_SEND_REDIRECTS
=6, 280 NET_IPV4_CONF_SHARED_MEDIA
=7, 281 NET_IPV4_CONF_RP_FILTER
=8, 282 NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE
=9, 283 NET_IPV4_CONF_BOOTP_RELAY
=10, 284 NET_IPV4_CONF_LOG_MARTIANS
=11, 288 /* /proc/sys/net/ipv6 */ 296 NET_IPV6_ROUTE_FLUSH
=1, 297 NET_IPV6_ROUTE_GC_THRESH
=2, 298 NET_IPV6_ROUTE_MAX_SIZE
=3, 299 NET_IPV6_ROUTE_GC_MIN_INTERVAL
=4, 300 NET_IPV6_ROUTE_GC_TIMEOUT
=5, 301 NET_IPV6_ROUTE_GC_INTERVAL
=6, 302 NET_IPV6_ROUTE_GC_ELASTICITY
=7, 303 NET_IPV6_ROUTE_MTU_EXPIRES
=8, 304 NET_IPV6_ROUTE_MIN_ADVMSS
=9 308 NET_IPV6_FORWARDING
=1, 309 NET_IPV6_HOP_LIMIT
=2, 311 NET_IPV6_ACCEPT_RA
=4, 312 NET_IPV6_ACCEPT_REDIRECTS
=5, 314 NET_IPV6_DAD_TRANSMITS
=7, 315 NET_IPV6_RTR_SOLICITS
=8, 316 NET_IPV6_RTR_SOLICIT_INTERVAL
=9, 317 NET_IPV6_RTR_SOLICIT_DELAY
=10 320 /* /proc/sys/net/<protocol>/neigh/<dev> */ 322 NET_NEIGH_MCAST_SOLICIT
=1, 323 NET_NEIGH_UCAST_SOLICIT
=2, 324 NET_NEIGH_APP_SOLICIT
=3, 325 NET_NEIGH_RETRANS_TIME
=4, 326 NET_NEIGH_REACHABLE_TIME
=5, 327 NET_NEIGH_DELAY_PROBE_TIME
=6, 328 NET_NEIGH_GC_STALE_TIME
=7, 329 NET_NEIGH_UNRES_QLEN
=8, 330 NET_NEIGH_PROXY_QLEN
=9, 331 NET_NEIGH_ANYCAST_DELAY
=10, 332 NET_NEIGH_PROXY_DELAY
=11, 333 NET_NEIGH_LOCKTIME
=12, 334 NET_NEIGH_GC_INTERVAL
=13, 335 NET_NEIGH_GC_THRESH1
=14, 336 NET_NEIGH_GC_THRESH2
=15, 337 NET_NEIGH_GC_THRESH3
=16 340 /* /proc/sys/net/ipx */ 343 /* /proc/sys/net/appletalk */ 345 NET_ATALK_AARP_EXPIRY_TIME
=1, 346 NET_ATALK_AARP_TICK_TIME
=2, 347 NET_ATALK_AARP_RETRANSMIT_LIMIT
=3, 348 NET_ATALK_AARP_RESOLVE_TIME
=4 352 /* /proc/sys/net/netrom */ 354 NET_NETROM_DEFAULT_PATH_QUALITY
=1, 355 NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER
=2, 356 NET_NETROM_NETWORK_TTL_INITIALISER
=3, 357 NET_NETROM_TRANSPORT_TIMEOUT
=4, 358 NET_NETROM_TRANSPORT_MAXIMUM_TRIES
=5, 359 NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY
=6, 360 NET_NETROM_TRANSPORT_BUSY_DELAY
=7, 361 NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE
=8, 362 NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT
=9, 363 NET_NETROM_ROUTING_CONTROL
=10, 364 NET_NETROM_LINK_FAILS_COUNT
=11 367 /* /proc/sys/net/ax25 */ 369 NET_AX25_IP_DEFAULT_MODE
=1, 370 NET_AX25_DEFAULT_MODE
=2, 371 NET_AX25_BACKOFF_TYPE
=3, 372 NET_AX25_CONNECT_MODE
=4, 373 NET_AX25_STANDARD_WINDOW
=5, 374 NET_AX25_EXTENDED_WINDOW
=6, 375 NET_AX25_T1_TIMEOUT
=7, 376 NET_AX25_T2_TIMEOUT
=8, 377 NET_AX25_T3_TIMEOUT
=9, 378 NET_AX25_IDLE_TIMEOUT
=10, 381 NET_AX25_PROTOCOL
=13, 382 NET_AX25_DAMA_SLAVE_TIMEOUT
=14 385 /* /proc/sys/net/rose */ 387 NET_ROSE_RESTART_REQUEST_TIMEOUT
=1, 388 NET_ROSE_CALL_REQUEST_TIMEOUT
=2, 389 NET_ROSE_RESET_REQUEST_TIMEOUT
=3, 390 NET_ROSE_CLEAR_REQUEST_TIMEOUT
=4, 391 NET_ROSE_ACK_HOLD_BACK_TIMEOUT
=5, 392 NET_ROSE_ROUTING_CONTROL
=6, 393 NET_ROSE_LINK_FAIL_TIMEOUT
=7, 395 NET_ROSE_WINDOW_SIZE
=9, 396 NET_ROSE_NO_ACTIVITY_TIMEOUT
=10 399 /* /proc/sys/net/x25 */ 401 NET_X25_RESTART_REQUEST_TIMEOUT
=1, 402 NET_X25_CALL_REQUEST_TIMEOUT
=2, 403 NET_X25_RESET_REQUEST_TIMEOUT
=3, 404 NET_X25_CLEAR_REQUEST_TIMEOUT
=4, 405 NET_X25_ACK_HOLD_BACK_TIMEOUT
=5 408 /* /proc/sys/net/token-ring */ 414 /* /proc/sys/net/decnet/ */ 416 NET_DECNET_NODE_TYPE
=1, 417 NET_DECNET_NODE_ADDRESS
=2, 418 NET_DECNET_NODE_NAME
=3, 419 NET_DECNET_DEFAULT_DEVICE
=4, 420 NET_DECNET_TIME_WAIT
=5, 421 NET_DECNET_DN_COUNT
=6, 422 NET_DECNET_DI_COUNT
=7, 423 NET_DECNET_DR_COUNT
=8, 424 NET_DECNET_DST_GC_INTERVAL
=9, 426 NET_DECNET_DEBUG_LEVEL
=255 429 /* /proc/sys/net/khttpd/ */ 431 NET_KHTTPD_DOCROOT
=1, 434 NET_KHTTPD_UNLOAD
=4, 435 NET_KHTTPD_CLIENTPORT
=5, 436 NET_KHTTPD_PERMREQ
=6, 437 NET_KHTTPD_PERMFORBID
=7, 438 NET_KHTTPD_LOGGING
=8, 439 NET_KHTTPD_SERVERPORT
=9, 440 NET_KHTTPD_DYNAMICSTRING
=10, 441 NET_KHTTPD_SLOPPYMIME
=11, 442 NET_KHTTPD_THREADS
=12, 443 NET_KHTTPD_MAXCONNECT
=13 446 /* /proc/sys/net/decnet/conf/<dev> */ 448 NET_DECNET_CONF_LOOPBACK
= -2, 449 NET_DECNET_CONF_DDCMP
= -3, 450 NET_DECNET_CONF_PPP
= -4, 451 NET_DECNET_CONF_X25
= -5, 452 NET_DECNET_CONF_GRE
= -6, 453 NET_DECNET_CONF_ETHER
= -7 455 /* ... and ifindex of devices */ 458 /* /proc/sys/net/decnet/conf/<dev>/ */ 460 NET_DECNET_CONF_DEV_PRIORITY
=1, 461 NET_DECNET_CONF_DEV_T1
=2, 462 NET_DECNET_CONF_DEV_T2
=3, 463 NET_DECNET_CONF_DEV_T3
=4, 464 NET_DECNET_CONF_DEV_COST
=5, 465 NET_DECNET_CONF_DEV_BLKSIZE
=6, 466 NET_DECNET_CONF_DEV_STATE
=7 469 /* CTL_PROC names: */ 474 FS_NRINODE
=1,/* int:current number of allocated inodes */ 476 FS_MAXINODE
=3,/* int:maximum number of inodes that can be allocated */ 477 FS_NRDQUOT
=4,/* int:current number of allocated dquots */ 478 FS_MAXDQUOT
=5,/* int:maximum number of dquots that can be allocated */ 479 FS_NRFILE
=6,/* int:current number of allocated filedescriptors */ 480 FS_MAXFILE
=7,/* int:maximum number of filedescriptors that can be allocated */ 482 FS_NRSUPER
=9,/* int:current number of allocated super_blocks */ 483 FS_MAXSUPER
=10/* int:maximum number of super_blocks that can be allocated */ 486 /* CTL_DEBUG names: */ 495 /* /proc/sys/dev/cdrom */ 498 DEV_CDROM_AUTOCLOSE
=2, 499 DEV_CDROM_AUTOEJECT
=3, 502 DEV_CDROM_CHECK_MEDIA
=6 505 /* /proc/sys/dev/parport */ 507 DEV_PARPORT_DEFAULT
=-3 510 /* /proc/sys/dev/parport/default */ 512 DEV_PARPORT_DEFAULT_TIMESLICE
=1, 513 DEV_PARPORT_DEFAULT_SPINTIME
=2 516 /* /proc/sys/dev/parport/parport n */ 518 DEV_PARPORT_SPINTIME
=1, 519 DEV_PARPORT_HARDWARE
=2, 520 DEV_PARPORT_DEVICES
=3, 521 DEV_PARPORT_AUTOPROBE
=16 524 /* /proc/sys/dev/parport/parport n/devices/ */ 526 DEV_PARPORT_DEVICES_ACTIVE
=-3, 529 /* /proc/sys/dev/parport/parport n/devices/device n */ 531 DEV_PARPORT_DEVICE_TIMESLICE
=1, 536 extern asmlinkage
longsys_sysctl(struct __sysctl_args
*); 537 externvoidsysctl_init(void); 539 typedefstruct ctl_table ctl_table
; 541 typedefintctl_handler(ctl_table
*table
,int*name
,int nlen
, 542 void*oldval
,size_t*oldlenp
, 543 void*newval
,size_t newlen
, 546 typedefintproc_handler(ctl_table
*ctl
,int write
,struct file
* filp
, 547 void*buffer
,size_t*lenp
); 549 externintproc_dostring(ctl_table
*,int,struct file
*, 551 externintproc_dointvec(ctl_table
*,int,struct file
*, 553 externintproc_dointvec_bset(ctl_table
*,int,struct file
*, 555 externintproc_dointvec_minmax(ctl_table
*,int,struct file
*, 557 externintproc_dointvec_jiffies(ctl_table
*,int,struct file
*, 559 externintproc_doulongvec_minmax(ctl_table
*,int,struct file
*, 561 externintproc_doulongvec_ms_jiffies_minmax(ctl_table
*table
,int, 562 struct file
*,void*,size_t*); 564 externintdo_sysctl(int*name
,int nlen
, 565 void*oldval
,size_t*oldlenp
, 566 void*newval
,size_t newlen
); 568 externintdo_sysctl_strategy(ctl_table
*table
, 570 void*oldval
,size_t*oldlenp
, 571 void*newval
,size_t newlen
,void** context
); 573 extern ctl_handler sysctl_string
; 574 extern ctl_handler sysctl_intvec
; 575 extern ctl_handler sysctl_jiffies
; 578 void*oldval
,size_t*oldlenp
,void*newval
,size_t newlen
, 579 int rdwr
,char*data
,size_t max
); 581 void*oldval
,size_t*oldlenp
,void*newval
,size_t newlen
, 584 void*oldval
,size_t*oldlenp
,void*newval
,size_t newlen
, 585 int rdwr
,void*data
,size_t len
); 589 * Register a set of sysctl names by calling register_sysctl_table 590 * with an initialised array of ctl_table's. An entry with zero 591 * ctl_name terminates the table. table->de will be set up by the 592 * registration and need not be initialised in advance. 594 * sysctl names can be mirrored automatically under /proc/sys. The 595 * procname supplied controls /proc naming. 597 * The table's mode will be honoured both for sys_sysctl(2) and 600 * Leaf nodes in the sysctl tree will be represented by a single file 601 * under /proc; non-leaf nodes will be represented by directories. A 602 * null procname disables /proc mirroring at this node. 604 * sysctl(2) can automatically manage read and write requests through 605 * the sysctl table. The data and maxlen fields of the ctl_table 606 * struct enable minimal validation of the values being written to be 607 * performed, and the mode field allows minimal authentication. 609 * More sophisticated management can be enabled by the provision of a 610 * strategy routine with the table entry. This will be called before 611 * any automatic read or write of the data is performed. 613 * The strategy routine may return: 614 * <0: Error occurred (error is passed to user process) 615 * 0: OK - proceed with automatic read or write. 616 * >0: OK - read or write has been done by the strategy routine, so 617 * return immediately. 619 * There must be a proc_handler routine for any terminal nodes 620 * mirrored under /proc/sys (non-terminals are handled by a built-in 621 * directory handler). Several default handlers are available to 622 * cover common cases. 625 /* A sysctl table is an array of struct ctl_table: */ 628 int ctl_name
;/* Binary ID */ 629 const char*procname
;/* Text ID for /proc/sys, or zero */ 634 proc_handler
*proc_handler
;/* Callback for text formatting */ 635 ctl_handler
*strategy
;/* Callback function for all r/w */ 636 struct proc_dir_entry
*de
;/* /proc control block */ 641 /* struct ctl_table_header is used to maintain dynamic lists of 643 struct ctl_table_header
645 ctl_table
*ctl_table
; 646 DLNODE(struct ctl_table_header
) ctl_entry
; 649 struct ctl_table_header
*register_sysctl_table(ctl_table
* table
, 651 voidunregister_sysctl_table(struct ctl_table_header
* table
); 653 #else/* __KERNEL__ */ 655 #endif/* __KERNEL__ */ 657 #endif/* _LINUX_SYSCTL_H */