diff options
Diffstat (limited to 'include/linux/sysctl.h')
-rw-r--r-- | include/linux/sysctl.h | 898 |
1 files changed, 898 insertions, 0 deletions
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h new file mode 100644 index 000000000000..358d52b0c445 --- /dev/null +++ b/include/linux/sysctl.h | |||
@@ -0,0 +1,898 @@ | |||
1 | /* | ||
2 | * sysctl.h: General linux system control interface | ||
3 | * | ||
4 | * Begun 24 March 1995, Stephen Tweedie | ||
5 | * | ||
6 | **************************************************************** | ||
7 | **************************************************************** | ||
8 | ** | ||
9 | ** The values in this file are exported to user space via | ||
10 | ** the sysctl() binary interface. However this interface | ||
11 | ** is unstable and deprecated and will be removed in the future. | ||
12 | ** For a stable interface use /proc/sys. | ||
13 | ** | ||
14 | **************************************************************** | ||
15 | **************************************************************** | ||
16 | */ | ||
17 | |||
18 | #ifndef _LINUX_SYSCTL_H | ||
19 | #define _LINUX_SYSCTL_H | ||
20 | |||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/types.h> | ||
23 | #include <linux/list.h> | ||
24 | #include <linux/compiler.h> | ||
25 | |||
26 | struct file; | ||
27 | |||
28 | #define CTL_MAXNAME 10 /* how many path components do we allow in a | ||
29 | call to sysctl? In other words, what is | ||
30 | the largest acceptable value for the nlen | ||
31 | member of a struct __sysctl_args to have? */ | ||
32 | |||
33 | struct __sysctl_args { | ||
34 | int __user *name; | ||
35 | int nlen; | ||
36 | void __user *oldval; | ||
37 | size_t __user *oldlenp; | ||
38 | void __user *newval; | ||
39 | size_t newlen; | ||
40 | unsigned long __unused[4]; | ||
41 | }; | ||
42 | |||
43 | /* Define sysctl names first */ | ||
44 | |||
45 | /* Top-level names: */ | ||
46 | |||
47 | /* For internal pattern-matching use only: */ | ||
48 | #ifdef __KERNEL__ | ||
49 | #define CTL_ANY -1 /* Matches any name */ | ||
50 | #define CTL_NONE 0 | ||
51 | #endif | ||
52 | |||
53 | enum | ||
54 | { | ||
55 | CTL_KERN=1, /* General kernel info and control */ | ||
56 | CTL_VM=2, /* VM management */ | ||
57 | CTL_NET=3, /* Networking */ | ||
58 | CTL_PROC=4, /* Process info */ | ||
59 | CTL_FS=5, /* Filesystems */ | ||
60 | CTL_DEBUG=6, /* Debugging */ | ||
61 | CTL_DEV=7, /* Devices */ | ||
62 | CTL_BUS=8, /* Busses */ | ||
63 | CTL_ABI=9, /* Binary emulation */ | ||
64 | CTL_CPU=10 /* CPU stuff (speed scaling, etc) */ | ||
65 | }; | ||
66 | |||
67 | /* CTL_BUS names: */ | ||
68 | enum | ||
69 | { | ||
70 | CTL_BUS_ISA=1 /* ISA */ | ||
71 | }; | ||
72 | |||
73 | /* CTL_KERN names: */ | ||
74 | enum | ||
75 | { | ||
76 | KERN_OSTYPE=1, /* string: system version */ | ||
77 | KERN_OSRELEASE=2, /* string: system release */ | ||
78 | KERN_OSREV=3, /* int: system revision */ | ||
79 | KERN_VERSION=4, /* string: compile time info */ | ||
80 | KERN_SECUREMASK=5, /* struct: maximum rights mask */ | ||
81 | KERN_PROF=6, /* table: profiling information */ | ||
82 | KERN_NODENAME=7, | ||
83 | KERN_DOMAINNAME=8, | ||
84 | |||
85 | KERN_CAP_BSET=14, /* int: capability bounding set */ | ||
86 | KERN_PANIC=15, /* int: panic timeout */ | ||
87 | KERN_REALROOTDEV=16, /* real root device to mount after initrd */ | ||
88 | |||
89 | KERN_SPARC_REBOOT=21, /* reboot command on Sparc */ | ||
90 | KERN_CTLALTDEL=22, /* int: allow ctl-alt-del to reboot */ | ||
91 | KERN_PRINTK=23, /* struct: control printk logging parameters */ | ||
92 | KERN_NAMETRANS=24, /* Name translation */ | ||
93 | KERN_PPC_HTABRECLAIM=25, /* turn htab reclaimation on/off on PPC */ | ||
94 | KERN_PPC_ZEROPAGED=26, /* turn idle page zeroing on/off on PPC */ | ||
95 | KERN_PPC_POWERSAVE_NAP=27, /* use nap mode for power saving */ | ||
96 | KERN_MODPROBE=28, | ||
97 | KERN_SG_BIG_BUFF=29, | ||
98 | KERN_ACCT=30, /* BSD process accounting parameters */ | ||
99 | KERN_PPC_L2CR=31, /* l2cr register on PPC */ | ||
100 | |||
101 | KERN_RTSIGNR=32, /* Number of rt sigs queued */ | ||
102 | KERN_RTSIGMAX=33, /* Max queuable */ | ||
103 | |||
104 | KERN_SHMMAX=34, /* long: Maximum shared memory segment */ | ||
105 | KERN_MSGMAX=35, /* int: Maximum size of a messege */ | ||
106 | KERN_MSGMNB=36, /* int: Maximum message queue size */ | ||
107 | KERN_MSGPOOL=37, /* int: Maximum system message pool size */ | ||
108 | KERN_SYSRQ=38, /* int: Sysreq enable */ | ||
109 | KERN_MAX_THREADS=39, /* int: Maximum nr of threads in the system */ | ||
110 | KERN_RANDOM=40, /* Random driver */ | ||
111 | KERN_SHMALL=41, /* int: Maximum size of shared memory */ | ||
112 | KERN_MSGMNI=42, /* int: msg queue identifiers */ | ||
113 | KERN_SEM=43, /* struct: sysv semaphore limits */ | ||
114 | KERN_SPARC_STOP_A=44, /* int: Sparc Stop-A enable */ | ||
115 | KERN_SHMMNI=45, /* int: shm array identifiers */ | ||
116 | KERN_OVERFLOWUID=46, /* int: overflow UID */ | ||
117 | KERN_OVERFLOWGID=47, /* int: overflow GID */ | ||
118 | KERN_SHMPATH=48, /* string: path to shm fs */ | ||
119 | KERN_HOTPLUG=49, /* string: path to hotplug policy agent */ | ||
120 | KERN_IEEE_EMULATION_WARNINGS=50, /* int: unimplemented ieee instructions */ | ||
121 | KERN_S390_USER_DEBUG_LOGGING=51, /* int: dumps of user faults */ | ||
122 | KERN_CORE_USES_PID=52, /* int: use core or core.%pid */ | ||
123 | KERN_TAINTED=53, /* int: various kernel tainted flags */ | ||
124 | KERN_CADPID=54, /* int: PID of the process to notify on CAD */ | ||
125 | KERN_PIDMAX=55, /* int: PID # limit */ | ||
126 | KERN_CORE_PATTERN=56, /* string: pattern for core-file names */ | ||
127 | KERN_PANIC_ON_OOPS=57, /* int: whether we will panic on an oops */ | ||
128 | KERN_HPPA_PWRSW=58, /* int: hppa soft-power enable */ | ||
129 | KERN_HPPA_UNALIGNED=59, /* int: hppa unaligned-trap enable */ | ||
130 | KERN_PRINTK_RATELIMIT=60, /* int: tune printk ratelimiting */ | ||
131 | KERN_PRINTK_RATELIMIT_BURST=61, /* int: tune printk ratelimiting */ | ||
132 | KERN_PTY=62, /* dir: pty driver */ | ||
133 | KERN_NGROUPS_MAX=63, /* int: NGROUPS_MAX */ | ||
134 | KERN_SPARC_SCONS_PWROFF=64, /* int: serial console power-off halt */ | ||
135 | KERN_HZ_TIMER=65, /* int: hz timer on or off */ | ||
136 | KERN_UNKNOWN_NMI_PANIC=66, /* int: unknown nmi panic flag */ | ||
137 | KERN_BOOTLOADER_TYPE=67, /* int: boot loader type */ | ||
138 | KERN_RANDOMIZE=68, /* int: randomize virtual address space */ | ||
139 | }; | ||
140 | |||
141 | |||
142 | /* CTL_VM names: */ | ||
143 | enum | ||
144 | { | ||
145 | VM_UNUSED1=1, /* was: struct: Set vm swapping control */ | ||
146 | VM_UNUSED2=2, /* was; int: Linear or sqrt() swapout for hogs */ | ||
147 | VM_UNUSED3=3, /* was: struct: Set free page thresholds */ | ||
148 | VM_UNUSED4=4, /* Spare */ | ||
149 | VM_OVERCOMMIT_MEMORY=5, /* Turn off the virtual memory safety limit */ | ||
150 | VM_UNUSED5=6, /* was: struct: Set buffer memory thresholds */ | ||
151 | VM_UNUSED7=7, /* was: struct: Set cache memory thresholds */ | ||
152 | VM_UNUSED8=8, /* was: struct: Control kswapd behaviour */ | ||
153 | VM_UNUSED9=9, /* was: struct: Set page table cache parameters */ | ||
154 | VM_PAGE_CLUSTER=10, /* int: set number of pages to swap together */ | ||
155 | VM_DIRTY_BACKGROUND=11, /* dirty_background_ratio */ | ||
156 | VM_DIRTY_RATIO=12, /* dirty_ratio */ | ||
157 | VM_DIRTY_WB_CS=13, /* dirty_writeback_centisecs */ | ||
158 | VM_DIRTY_EXPIRE_CS=14, /* dirty_expire_centisecs */ | ||
159 | VM_NR_PDFLUSH_THREADS=15, /* nr_pdflush_threads */ | ||
160 | VM_OVERCOMMIT_RATIO=16, /* percent of RAM to allow overcommit in */ | ||
161 | VM_PAGEBUF=17, /* struct: Control pagebuf parameters */ | ||
162 | VM_HUGETLB_PAGES=18, /* int: Number of available Huge Pages */ | ||
163 | VM_SWAPPINESS=19, /* Tendency to steal mapped memory */ | ||
164 | VM_LOWMEM_RESERVE_RATIO=20,/* reservation ratio for lower memory zones */ | ||
165 | VM_MIN_FREE_KBYTES=21, /* Minimum free kilobytes to maintain */ | ||
166 | VM_MAX_MAP_COUNT=22, /* int: Maximum number of mmaps/address-space */ | ||
167 | VM_LAPTOP_MODE=23, /* vm laptop mode */ | ||
168 | VM_BLOCK_DUMP=24, /* block dump mode */ | ||
169 | VM_HUGETLB_GROUP=25, /* permitted hugetlb group */ | ||
170 | VM_VFS_CACHE_PRESSURE=26, /* dcache/icache reclaim pressure */ | ||
171 | VM_LEGACY_VA_LAYOUT=27, /* legacy/compatibility virtual address space layout */ | ||
172 | VM_SWAP_TOKEN_TIMEOUT=28, /* default time for token time out */ | ||
173 | }; | ||
174 | |||
175 | |||
176 | /* CTL_NET names: */ | ||
177 | enum | ||
178 | { | ||
179 | NET_CORE=1, | ||
180 | NET_ETHER=2, | ||
181 | NET_802=3, | ||
182 | NET_UNIX=4, | ||
183 | NET_IPV4=5, | ||
184 | NET_IPX=6, | ||
185 | NET_ATALK=7, | ||
186 | NET_NETROM=8, | ||
187 | NET_AX25=9, | ||
188 | NET_BRIDGE=10, | ||
189 | NET_ROSE=11, | ||
190 | NET_IPV6=12, | ||
191 | NET_X25=13, | ||
192 | NET_TR=14, | ||
193 | NET_DECNET=15, | ||
194 | NET_ECONET=16, | ||
195 | NET_SCTP=17, | ||
196 | }; | ||
197 | |||
198 | /* /proc/sys/kernel/random */ | ||
199 | enum | ||
200 | { | ||
201 | RANDOM_POOLSIZE=1, | ||
202 | RANDOM_ENTROPY_COUNT=2, | ||
203 | RANDOM_READ_THRESH=3, | ||
204 | RANDOM_WRITE_THRESH=4, | ||
205 | RANDOM_BOOT_ID=5, | ||
206 | RANDOM_UUID=6 | ||
207 | }; | ||
208 | |||
209 | /* /proc/sys/kernel/pty */ | ||
210 | enum | ||
211 | { | ||
212 | PTY_MAX=1, | ||
213 | PTY_NR=2 | ||
214 | }; | ||
215 | |||
216 | /* /proc/sys/bus/isa */ | ||
217 | enum | ||
218 | { | ||
219 | BUS_ISA_MEM_BASE=1, | ||
220 | BUS_ISA_PORT_BASE=2, | ||
221 | BUS_ISA_PORT_SHIFT=3 | ||
222 | }; | ||
223 | |||
224 | /* /proc/sys/net/core */ | ||
225 | enum | ||
226 | { | ||
227 | NET_CORE_WMEM_MAX=1, | ||
228 | NET_CORE_RMEM_MAX=2, | ||
229 | NET_CORE_WMEM_DEFAULT=3, | ||
230 | NET_CORE_RMEM_DEFAULT=4, | ||
231 | /* was NET_CORE_DESTROY_DELAY */ | ||
232 | NET_CORE_MAX_BACKLOG=6, | ||
233 | NET_CORE_FASTROUTE=7, | ||
234 | NET_CORE_MSG_COST=8, | ||
235 | NET_CORE_MSG_BURST=9, | ||
236 | NET_CORE_OPTMEM_MAX=10, | ||
237 | NET_CORE_HOT_LIST_LENGTH=11, | ||
238 | NET_CORE_DIVERT_VERSION=12, | ||
239 | NET_CORE_NO_CONG_THRESH=13, | ||
240 | NET_CORE_NO_CONG=14, | ||
241 | NET_CORE_LO_CONG=15, | ||
242 | NET_CORE_MOD_CONG=16, | ||
243 | NET_CORE_DEV_WEIGHT=17, | ||
244 | NET_CORE_SOMAXCONN=18, | ||
245 | }; | ||
246 | |||
247 | /* /proc/sys/net/ethernet */ | ||
248 | |||
249 | /* /proc/sys/net/802 */ | ||
250 | |||
251 | /* /proc/sys/net/unix */ | ||
252 | |||
253 | enum | ||
254 | { | ||
255 | NET_UNIX_DESTROY_DELAY=1, | ||
256 | NET_UNIX_DELETE_DELAY=2, | ||
257 | NET_UNIX_MAX_DGRAM_QLEN=3, | ||
258 | }; | ||
259 | |||
260 | /* /proc/sys/net/ipv4 */ | ||
261 | enum | ||
262 | { | ||
263 | /* v2.0 compatibile variables */ | ||
264 | NET_IPV4_FORWARD=8, | ||
265 | NET_IPV4_DYNADDR=9, | ||
266 | |||
267 | NET_IPV4_CONF=16, | ||
268 | NET_IPV4_NEIGH=17, | ||
269 | NET_IPV4_ROUTE=18, | ||
270 | NET_IPV4_FIB_HASH=19, | ||
271 | NET_IPV4_NETFILTER=20, | ||
272 | |||
273 | NET_IPV4_TCP_TIMESTAMPS=33, | ||
274 | NET_IPV4_TCP_WINDOW_SCALING=34, | ||
275 | NET_IPV4_TCP_SACK=35, | ||
276 | NET_IPV4_TCP_RETRANS_COLLAPSE=36, | ||
277 | NET_IPV4_DEFAULT_TTL=37, | ||
278 | NET_IPV4_AUTOCONFIG=38, | ||
279 | NET_IPV4_NO_PMTU_DISC=39, | ||
280 | NET_IPV4_TCP_SYN_RETRIES=40, | ||
281 | NET_IPV4_IPFRAG_HIGH_THRESH=41, | ||
282 | NET_IPV4_IPFRAG_LOW_THRESH=42, | ||
283 | NET_IPV4_IPFRAG_TIME=43, | ||
284 | NET_IPV4_TCP_MAX_KA_PROBES=44, | ||
285 | NET_IPV4_TCP_KEEPALIVE_TIME=45, | ||
286 | NET_IPV4_TCP_KEEPALIVE_PROBES=46, | ||
287 | NET_IPV4_TCP_RETRIES1=47, | ||
288 | NET_IPV4_TCP_RETRIES2=48, | ||
289 | NET_IPV4_TCP_FIN_TIMEOUT=49, | ||
290 | NET_IPV4_IP_MASQ_DEBUG=50, | ||
291 | NET_TCP_SYNCOOKIES=51, | ||
292 | NET_TCP_STDURG=52, | ||
293 | NET_TCP_RFC1337=53, | ||
294 | NET_TCP_SYN_TAILDROP=54, | ||
295 | NET_TCP_MAX_SYN_BACKLOG=55, | ||
296 | NET_IPV4_LOCAL_PORT_RANGE=56, | ||
297 | NET_IPV4_ICMP_ECHO_IGNORE_ALL=57, | ||
298 | NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58, | ||
299 | NET_IPV4_ICMP_SOURCEQUENCH_RATE=59, | ||
300 | NET_IPV4_ICMP_DESTUNREACH_RATE=60, | ||
301 | NET_IPV4_ICMP_TIMEEXCEED_RATE=61, | ||
302 | NET_IPV4_ICMP_PARAMPROB_RATE=62, | ||
303 | NET_IPV4_ICMP_ECHOREPLY_RATE=63, | ||
304 | NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=64, | ||
305 | NET_IPV4_IGMP_MAX_MEMBERSHIPS=65, | ||
306 | NET_TCP_TW_RECYCLE=66, | ||
307 | NET_IPV4_ALWAYS_DEFRAG=67, | ||
308 | NET_IPV4_TCP_KEEPALIVE_INTVL=68, | ||
309 | NET_IPV4_INET_PEER_THRESHOLD=69, | ||
310 | NET_IPV4_INET_PEER_MINTTL=70, | ||
311 | NET_IPV4_INET_PEER_MAXTTL=71, | ||
312 | NET_IPV4_INET_PEER_GC_MINTIME=72, | ||
313 | NET_IPV4_INET_PEER_GC_MAXTIME=73, | ||
314 | NET_TCP_ORPHAN_RETRIES=74, | ||
315 | NET_TCP_ABORT_ON_OVERFLOW=75, | ||
316 | NET_TCP_SYNACK_RETRIES=76, | ||
317 | NET_TCP_MAX_ORPHANS=77, | ||
318 | NET_TCP_MAX_TW_BUCKETS=78, | ||
319 | NET_TCP_FACK=79, | ||
320 | NET_TCP_REORDERING=80, | ||
321 | NET_TCP_ECN=81, | ||
322 | NET_TCP_DSACK=82, | ||
323 | NET_TCP_MEM=83, | ||
324 | NET_TCP_WMEM=84, | ||
325 | NET_TCP_RMEM=85, | ||
326 | NET_TCP_APP_WIN=86, | ||
327 | NET_TCP_ADV_WIN_SCALE=87, | ||
328 | NET_IPV4_NONLOCAL_BIND=88, | ||
329 | NET_IPV4_ICMP_RATELIMIT=89, | ||
330 | NET_IPV4_ICMP_RATEMASK=90, | ||
331 | NET_TCP_TW_REUSE=91, | ||
332 | NET_TCP_FRTO=92, | ||
333 | NET_TCP_LOW_LATENCY=93, | ||
334 | NET_IPV4_IPFRAG_SECRET_INTERVAL=94, | ||
335 | NET_TCP_WESTWOOD=95, | ||
336 | NET_IPV4_IGMP_MAX_MSF=96, | ||
337 | NET_TCP_NO_METRICS_SAVE=97, | ||
338 | NET_TCP_VEGAS=98, | ||
339 | NET_TCP_VEGAS_ALPHA=99, | ||
340 | NET_TCP_VEGAS_BETA=100, | ||
341 | NET_TCP_VEGAS_GAMMA=101, | ||
342 | NET_TCP_BIC=102, | ||
343 | NET_TCP_BIC_FAST_CONVERGENCE=103, | ||
344 | NET_TCP_BIC_LOW_WINDOW=104, | ||
345 | NET_TCP_DEFAULT_WIN_SCALE=105, | ||
346 | NET_TCP_MODERATE_RCVBUF=106, | ||
347 | NET_TCP_TSO_WIN_DIVISOR=107, | ||
348 | NET_TCP_BIC_BETA=108, | ||
349 | }; | ||
350 | |||
351 | enum { | ||
352 | NET_IPV4_ROUTE_FLUSH=1, | ||
353 | NET_IPV4_ROUTE_MIN_DELAY=2, | ||
354 | NET_IPV4_ROUTE_MAX_DELAY=3, | ||
355 | NET_IPV4_ROUTE_GC_THRESH=4, | ||
356 | NET_IPV4_ROUTE_MAX_SIZE=5, | ||
357 | NET_IPV4_ROUTE_GC_MIN_INTERVAL=6, | ||
358 | NET_IPV4_ROUTE_GC_TIMEOUT=7, | ||
359 | NET_IPV4_ROUTE_GC_INTERVAL=8, | ||
360 | NET_IPV4_ROUTE_REDIRECT_LOAD=9, | ||
361 | NET_IPV4_ROUTE_REDIRECT_NUMBER=10, | ||
362 | NET_IPV4_ROUTE_REDIRECT_SILENCE=11, | ||
363 | NET_IPV4_ROUTE_ERROR_COST=12, | ||
364 | NET_IPV4_ROUTE_ERROR_BURST=13, | ||
365 | NET_IPV4_ROUTE_GC_ELASTICITY=14, | ||
366 | NET_IPV4_ROUTE_MTU_EXPIRES=15, | ||
367 | NET_IPV4_ROUTE_MIN_PMTU=16, | ||
368 | NET_IPV4_ROUTE_MIN_ADVMSS=17, | ||
369 | NET_IPV4_ROUTE_SECRET_INTERVAL=18, | ||
370 | NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS=19, | ||
371 | }; | ||
372 | |||
373 | enum | ||
374 | { | ||
375 | NET_PROTO_CONF_ALL=-2, | ||
376 | NET_PROTO_CONF_DEFAULT=-3 | ||
377 | |||
378 | /* And device ifindices ... */ | ||
379 | }; | ||
380 | |||
381 | enum | ||
382 | { | ||
383 | NET_IPV4_CONF_FORWARDING=1, | ||
384 | NET_IPV4_CONF_MC_FORWARDING=2, | ||
385 | NET_IPV4_CONF_PROXY_ARP=3, | ||
386 | NET_IPV4_CONF_ACCEPT_REDIRECTS=4, | ||
387 | NET_IPV4_CONF_SECURE_REDIRECTS=5, | ||
388 | NET_IPV4_CONF_SEND_REDIRECTS=6, | ||
389 | NET_IPV4_CONF_SHARED_MEDIA=7, | ||
390 | NET_IPV4_CONF_RP_FILTER=8, | ||
391 | NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9, | ||
392 | NET_IPV4_CONF_BOOTP_RELAY=10, | ||
393 | NET_IPV4_CONF_LOG_MARTIANS=11, | ||
394 | NET_IPV4_CONF_TAG=12, | ||
395 | NET_IPV4_CONF_ARPFILTER=13, | ||
396 | NET_IPV4_CONF_MEDIUM_ID=14, | ||
397 | NET_IPV4_CONF_NOXFRM=15, | ||
398 | NET_IPV4_CONF_NOPOLICY=16, | ||
399 | NET_IPV4_CONF_FORCE_IGMP_VERSION=17, | ||
400 | NET_IPV4_CONF_ARP_ANNOUNCE=18, | ||
401 | NET_IPV4_CONF_ARP_IGNORE=19, | ||
402 | __NET_IPV4_CONF_MAX | ||
403 | }; | ||
404 | |||
405 | /* /proc/sys/net/ipv4/netfilter */ | ||
406 | enum | ||
407 | { | ||
408 | NET_IPV4_NF_CONNTRACK_MAX=1, | ||
409 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2, | ||
410 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3, | ||
411 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4, | ||
412 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5, | ||
413 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6, | ||
414 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7, | ||
415 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8, | ||
416 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9, | ||
417 | NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT=10, | ||
418 | NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11, | ||
419 | NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=12, | ||
420 | NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=13, | ||
421 | NET_IPV4_NF_CONNTRACK_BUCKETS=14, | ||
422 | NET_IPV4_NF_CONNTRACK_LOG_INVALID=15, | ||
423 | NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16, | ||
424 | NET_IPV4_NF_CONNTRACK_TCP_LOOSE=17, | ||
425 | NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL=18, | ||
426 | NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS=19, | ||
427 | NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20, | ||
428 | NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21, | ||
429 | NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22, | ||
430 | NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23, | ||
431 | NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24, | ||
432 | NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25, | ||
433 | NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26, | ||
434 | NET_IPV4_NF_CONNTRACK_COUNT=27, | ||
435 | }; | ||
436 | |||
437 | /* /proc/sys/net/ipv6 */ | ||
438 | enum { | ||
439 | NET_IPV6_CONF=16, | ||
440 | NET_IPV6_NEIGH=17, | ||
441 | NET_IPV6_ROUTE=18, | ||
442 | NET_IPV6_ICMP=19, | ||
443 | NET_IPV6_BINDV6ONLY=20, | ||
444 | NET_IPV6_IP6FRAG_HIGH_THRESH=21, | ||
445 | NET_IPV6_IP6FRAG_LOW_THRESH=22, | ||
446 | NET_IPV6_IP6FRAG_TIME=23, | ||
447 | NET_IPV6_IP6FRAG_SECRET_INTERVAL=24, | ||
448 | NET_IPV6_MLD_MAX_MSF=25, | ||
449 | }; | ||
450 | |||
451 | enum { | ||
452 | NET_IPV6_ROUTE_FLUSH=1, | ||
453 | NET_IPV6_ROUTE_GC_THRESH=2, | ||
454 | NET_IPV6_ROUTE_MAX_SIZE=3, | ||
455 | NET_IPV6_ROUTE_GC_MIN_INTERVAL=4, | ||
456 | NET_IPV6_ROUTE_GC_TIMEOUT=5, | ||
457 | NET_IPV6_ROUTE_GC_INTERVAL=6, | ||
458 | NET_IPV6_ROUTE_GC_ELASTICITY=7, | ||
459 | NET_IPV6_ROUTE_MTU_EXPIRES=8, | ||
460 | NET_IPV6_ROUTE_MIN_ADVMSS=9, | ||
461 | NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS=10 | ||
462 | }; | ||
463 | |||
464 | enum { | ||
465 | NET_IPV6_FORWARDING=1, | ||
466 | NET_IPV6_HOP_LIMIT=2, | ||
467 | NET_IPV6_MTU=3, | ||
468 | NET_IPV6_ACCEPT_RA=4, | ||
469 | NET_IPV6_ACCEPT_REDIRECTS=5, | ||
470 | NET_IPV6_AUTOCONF=6, | ||
471 | NET_IPV6_DAD_TRANSMITS=7, | ||
472 | NET_IPV6_RTR_SOLICITS=8, | ||
473 | NET_IPV6_RTR_SOLICIT_INTERVAL=9, | ||
474 | NET_IPV6_RTR_SOLICIT_DELAY=10, | ||
475 | NET_IPV6_USE_TEMPADDR=11, | ||
476 | NET_IPV6_TEMP_VALID_LFT=12, | ||
477 | NET_IPV6_TEMP_PREFERED_LFT=13, | ||
478 | NET_IPV6_REGEN_MAX_RETRY=14, | ||
479 | NET_IPV6_MAX_DESYNC_FACTOR=15, | ||
480 | NET_IPV6_MAX_ADDRESSES=16, | ||
481 | NET_IPV6_FORCE_MLD_VERSION=17, | ||
482 | __NET_IPV6_MAX | ||
483 | }; | ||
484 | |||
485 | /* /proc/sys/net/ipv6/icmp */ | ||
486 | enum { | ||
487 | NET_IPV6_ICMP_RATELIMIT=1 | ||
488 | }; | ||
489 | |||
490 | /* /proc/sys/net/<protocol>/neigh/<dev> */ | ||
491 | enum { | ||
492 | NET_NEIGH_MCAST_SOLICIT=1, | ||
493 | NET_NEIGH_UCAST_SOLICIT=2, | ||
494 | NET_NEIGH_APP_SOLICIT=3, | ||
495 | NET_NEIGH_RETRANS_TIME=4, | ||
496 | NET_NEIGH_REACHABLE_TIME=5, | ||
497 | NET_NEIGH_DELAY_PROBE_TIME=6, | ||
498 | NET_NEIGH_GC_STALE_TIME=7, | ||
499 | NET_NEIGH_UNRES_QLEN=8, | ||
500 | NET_NEIGH_PROXY_QLEN=9, | ||
501 | NET_NEIGH_ANYCAST_DELAY=10, | ||
502 | NET_NEIGH_PROXY_DELAY=11, | ||
503 | NET_NEIGH_LOCKTIME=12, | ||
504 | NET_NEIGH_GC_INTERVAL=13, | ||
505 | NET_NEIGH_GC_THRESH1=14, | ||
506 | NET_NEIGH_GC_THRESH2=15, | ||
507 | NET_NEIGH_GC_THRESH3=16, | ||
508 | NET_NEIGH_RETRANS_TIME_MS=17, | ||
509 | NET_NEIGH_REACHABLE_TIME_MS=18, | ||
510 | __NET_NEIGH_MAX | ||
511 | }; | ||
512 | |||
513 | /* /proc/sys/net/ipx */ | ||
514 | enum { | ||
515 | NET_IPX_PPROP_BROADCASTING=1, | ||
516 | NET_IPX_FORWARDING=2 | ||
517 | }; | ||
518 | |||
519 | |||
520 | /* /proc/sys/net/appletalk */ | ||
521 | enum { | ||
522 | NET_ATALK_AARP_EXPIRY_TIME=1, | ||
523 | NET_ATALK_AARP_TICK_TIME=2, | ||
524 | NET_ATALK_AARP_RETRANSMIT_LIMIT=3, | ||
525 | NET_ATALK_AARP_RESOLVE_TIME=4 | ||
526 | }; | ||
527 | |||
528 | |||
529 | /* /proc/sys/net/netrom */ | ||
530 | enum { | ||
531 | NET_NETROM_DEFAULT_PATH_QUALITY=1, | ||
532 | NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2, | ||
533 | NET_NETROM_NETWORK_TTL_INITIALISER=3, | ||
534 | NET_NETROM_TRANSPORT_TIMEOUT=4, | ||
535 | NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5, | ||
536 | NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6, | ||
537 | NET_NETROM_TRANSPORT_BUSY_DELAY=7, | ||
538 | NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8, | ||
539 | NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9, | ||
540 | NET_NETROM_ROUTING_CONTROL=10, | ||
541 | NET_NETROM_LINK_FAILS_COUNT=11 | ||
542 | }; | ||
543 | |||
544 | /* /proc/sys/net/ax25 */ | ||
545 | enum { | ||
546 | NET_AX25_IP_DEFAULT_MODE=1, | ||
547 | NET_AX25_DEFAULT_MODE=2, | ||
548 | NET_AX25_BACKOFF_TYPE=3, | ||
549 | NET_AX25_CONNECT_MODE=4, | ||
550 | NET_AX25_STANDARD_WINDOW=5, | ||
551 | NET_AX25_EXTENDED_WINDOW=6, | ||
552 | NET_AX25_T1_TIMEOUT=7, | ||
553 | NET_AX25_T2_TIMEOUT=8, | ||
554 | NET_AX25_T3_TIMEOUT=9, | ||
555 | NET_AX25_IDLE_TIMEOUT=10, | ||
556 | NET_AX25_N2=11, | ||
557 | NET_AX25_PACLEN=12, | ||
558 | NET_AX25_PROTOCOL=13, | ||
559 | NET_AX25_DAMA_SLAVE_TIMEOUT=14 | ||
560 | }; | ||
561 | |||
562 | /* /proc/sys/net/rose */ | ||
563 | enum { | ||
564 | NET_ROSE_RESTART_REQUEST_TIMEOUT=1, | ||
565 | NET_ROSE_CALL_REQUEST_TIMEOUT=2, | ||
566 | NET_ROSE_RESET_REQUEST_TIMEOUT=3, | ||
567 | NET_ROSE_CLEAR_REQUEST_TIMEOUT=4, | ||
568 | NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5, | ||
569 | NET_ROSE_ROUTING_CONTROL=6, | ||
570 | NET_ROSE_LINK_FAIL_TIMEOUT=7, | ||
571 | NET_ROSE_MAX_VCS=8, | ||
572 | NET_ROSE_WINDOW_SIZE=9, | ||
573 | NET_ROSE_NO_ACTIVITY_TIMEOUT=10 | ||
574 | }; | ||
575 | |||
576 | /* /proc/sys/net/x25 */ | ||
577 | enum { | ||
578 | NET_X25_RESTART_REQUEST_TIMEOUT=1, | ||
579 | NET_X25_CALL_REQUEST_TIMEOUT=2, | ||
580 | NET_X25_RESET_REQUEST_TIMEOUT=3, | ||
581 | NET_X25_CLEAR_REQUEST_TIMEOUT=4, | ||
582 | NET_X25_ACK_HOLD_BACK_TIMEOUT=5 | ||
583 | }; | ||
584 | |||
585 | /* /proc/sys/net/token-ring */ | ||
586 | enum | ||
587 | { | ||
588 | NET_TR_RIF_TIMEOUT=1 | ||
589 | }; | ||
590 | |||
591 | /* /proc/sys/net/decnet/ */ | ||
592 | enum { | ||
593 | NET_DECNET_NODE_TYPE = 1, | ||
594 | NET_DECNET_NODE_ADDRESS = 2, | ||
595 | NET_DECNET_NODE_NAME = 3, | ||
596 | NET_DECNET_DEFAULT_DEVICE = 4, | ||
597 | NET_DECNET_TIME_WAIT = 5, | ||
598 | NET_DECNET_DN_COUNT = 6, | ||
599 | NET_DECNET_DI_COUNT = 7, | ||
600 | NET_DECNET_DR_COUNT = 8, | ||
601 | NET_DECNET_DST_GC_INTERVAL = 9, | ||
602 | NET_DECNET_CONF = 10, | ||
603 | NET_DECNET_NO_FC_MAX_CWND = 11, | ||
604 | NET_DECNET_DEBUG_LEVEL = 255 | ||
605 | }; | ||
606 | |||
607 | /* /proc/sys/net/decnet/conf/<dev> */ | ||
608 | enum { | ||
609 | NET_DECNET_CONF_LOOPBACK = -2, | ||
610 | NET_DECNET_CONF_DDCMP = -3, | ||
611 | NET_DECNET_CONF_PPP = -4, | ||
612 | NET_DECNET_CONF_X25 = -5, | ||
613 | NET_DECNET_CONF_GRE = -6, | ||
614 | NET_DECNET_CONF_ETHER = -7 | ||
615 | |||
616 | /* ... and ifindex of devices */ | ||
617 | }; | ||
618 | |||
619 | /* /proc/sys/net/decnet/conf/<dev>/ */ | ||
620 | enum { | ||
621 | NET_DECNET_CONF_DEV_PRIORITY = 1, | ||
622 | NET_DECNET_CONF_DEV_T1 = 2, | ||
623 | NET_DECNET_CONF_DEV_T2 = 3, | ||
624 | NET_DECNET_CONF_DEV_T3 = 4, | ||
625 | NET_DECNET_CONF_DEV_FORWARDING = 5, | ||
626 | NET_DECNET_CONF_DEV_BLKSIZE = 6, | ||
627 | NET_DECNET_CONF_DEV_STATE = 7 | ||
628 | }; | ||
629 | |||
630 | /* /proc/sys/net/sctp */ | ||
631 | enum { | ||
632 | NET_SCTP_RTO_INITIAL = 1, | ||
633 | NET_SCTP_RTO_MIN = 2, | ||
634 | NET_SCTP_RTO_MAX = 3, | ||
635 | NET_SCTP_RTO_ALPHA = 4, | ||
636 | NET_SCTP_RTO_BETA = 5, | ||
637 | NET_SCTP_VALID_COOKIE_LIFE = 6, | ||
638 | NET_SCTP_ASSOCIATION_MAX_RETRANS = 7, | ||
639 | NET_SCTP_PATH_MAX_RETRANS = 8, | ||
640 | NET_SCTP_MAX_INIT_RETRANSMITS = 9, | ||
641 | NET_SCTP_HB_INTERVAL = 10, | ||
642 | NET_SCTP_PRESERVE_ENABLE = 11, | ||
643 | NET_SCTP_MAX_BURST = 12, | ||
644 | NET_SCTP_ADDIP_ENABLE = 13, | ||
645 | NET_SCTP_PRSCTP_ENABLE = 14, | ||
646 | }; | ||
647 | |||
648 | /* /proc/sys/net/bridge */ | ||
649 | enum { | ||
650 | NET_BRIDGE_NF_CALL_ARPTABLES = 1, | ||
651 | NET_BRIDGE_NF_CALL_IPTABLES = 2, | ||
652 | NET_BRIDGE_NF_CALL_IP6TABLES = 3, | ||
653 | NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4, | ||
654 | }; | ||
655 | |||
656 | /* CTL_PROC names: */ | ||
657 | |||
658 | /* CTL_FS names: */ | ||
659 | enum | ||
660 | { | ||
661 | FS_NRINODE=1, /* int:current number of allocated inodes */ | ||
662 | FS_STATINODE=2, | ||
663 | FS_MAXINODE=3, /* int:maximum number of inodes that can be allocated */ | ||
664 | FS_NRDQUOT=4, /* int:current number of allocated dquots */ | ||
665 | FS_MAXDQUOT=5, /* int:maximum number of dquots that can be allocated */ | ||
666 | FS_NRFILE=6, /* int:current number of allocated filedescriptors */ | ||
667 | FS_MAXFILE=7, /* int:maximum number of filedescriptors that can be allocated */ | ||
668 | FS_DENTRY=8, | ||
669 | FS_NRSUPER=9, /* int:current number of allocated super_blocks */ | ||
670 | FS_MAXSUPER=10, /* int:maximum number of super_blocks that can be allocated */ | ||
671 | FS_OVERFLOWUID=11, /* int: overflow UID */ | ||
672 | FS_OVERFLOWGID=12, /* int: overflow GID */ | ||
673 | FS_LEASES=13, /* int: leases enabled */ | ||
674 | FS_DIR_NOTIFY=14, /* int: directory notification enabled */ | ||
675 | FS_LEASE_TIME=15, /* int: maximum time to wait for a lease break */ | ||
676 | FS_DQSTATS=16, /* disc quota usage statistics and control */ | ||
677 | FS_XFS=17, /* struct: control xfs parameters */ | ||
678 | FS_AIO_NR=18, /* current system-wide number of aio requests */ | ||
679 | FS_AIO_MAX_NR=19, /* system-wide maximum number of aio requests */ | ||
680 | }; | ||
681 | |||
682 | /* /proc/sys/fs/quota/ */ | ||
683 | enum { | ||
684 | FS_DQ_LOOKUPS = 1, | ||
685 | FS_DQ_DROPS = 2, | ||
686 | FS_DQ_READS = 3, | ||
687 | FS_DQ_WRITES = 4, | ||
688 | FS_DQ_CACHE_HITS = 5, | ||
689 | FS_DQ_ALLOCATED = 6, | ||
690 | FS_DQ_FREE = 7, | ||
691 | FS_DQ_SYNCS = 8, | ||
692 | FS_DQ_WARNINGS = 9, | ||
693 | }; | ||
694 | |||
695 | /* CTL_DEBUG names: */ | ||
696 | |||
697 | /* CTL_DEV names: */ | ||
698 | enum { | ||
699 | DEV_CDROM=1, | ||
700 | DEV_HWMON=2, | ||
701 | DEV_PARPORT=3, | ||
702 | DEV_RAID=4, | ||
703 | DEV_MAC_HID=5, | ||
704 | DEV_SCSI=6, | ||
705 | }; | ||
706 | |||
707 | /* /proc/sys/dev/cdrom */ | ||
708 | enum { | ||
709 | DEV_CDROM_INFO=1, | ||
710 | DEV_CDROM_AUTOCLOSE=2, | ||
711 | DEV_CDROM_AUTOEJECT=3, | ||
712 | DEV_CDROM_DEBUG=4, | ||
713 | DEV_CDROM_LOCK=5, | ||
714 | DEV_CDROM_CHECK_MEDIA=6 | ||
715 | }; | ||
716 | |||
717 | /* /proc/sys/dev/parport */ | ||
718 | enum { | ||
719 | DEV_PARPORT_DEFAULT=-3 | ||
720 | }; | ||
721 | |||
722 | /* /proc/sys/dev/raid */ | ||
723 | enum { | ||
724 | DEV_RAID_SPEED_LIMIT_MIN=1, | ||
725 | DEV_RAID_SPEED_LIMIT_MAX=2 | ||
726 | }; | ||
727 | |||
728 | /* /proc/sys/dev/parport/default */ | ||
729 | enum { | ||
730 | DEV_PARPORT_DEFAULT_TIMESLICE=1, | ||
731 | DEV_PARPORT_DEFAULT_SPINTIME=2 | ||
732 | }; | ||
733 | |||
734 | /* /proc/sys/dev/parport/parport n */ | ||
735 | enum { | ||
736 | DEV_PARPORT_SPINTIME=1, | ||
737 | DEV_PARPORT_BASE_ADDR=2, | ||
738 | DEV_PARPORT_IRQ=3, | ||
739 | DEV_PARPORT_DMA=4, | ||
740 | DEV_PARPORT_MODES=5, | ||
741 | DEV_PARPORT_DEVICES=6, | ||
742 | DEV_PARPORT_AUTOPROBE=16 | ||
743 | }; | ||
744 | |||
745 | /* /proc/sys/dev/parport/parport n/devices/ */ | ||
746 | enum { | ||
747 | DEV_PARPORT_DEVICES_ACTIVE=-3, | ||
748 | }; | ||
749 | |||
750 | /* /proc/sys/dev/parport/parport n/devices/device n */ | ||
751 | enum { | ||
752 | DEV_PARPORT_DEVICE_TIMESLICE=1, | ||
753 | }; | ||
754 | |||
755 | /* /proc/sys/dev/mac_hid */ | ||
756 | enum { | ||
757 | DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=1, | ||
758 | DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=2, | ||
759 | DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3, | ||
760 | DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4, | ||
761 | DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5, | ||
762 | DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6 | ||
763 | }; | ||
764 | |||
765 | /* /proc/sys/dev/scsi */ | ||
766 | enum { | ||
767 | DEV_SCSI_LOGGING_LEVEL=1, | ||
768 | }; | ||
769 | |||
770 | /* /proc/sys/abi */ | ||
771 | enum | ||
772 | { | ||
773 | ABI_DEFHANDLER_COFF=1, /* default handler for coff binaries */ | ||
774 | ABI_DEFHANDLER_ELF=2, /* default handler for ELF binaries */ | ||
775 | ABI_DEFHANDLER_LCALL7=3,/* default handler for procs using lcall7 */ | ||
776 | ABI_DEFHANDLER_LIBCSO=4,/* default handler for an libc.so ELF interp */ | ||
777 | ABI_TRACE=5, /* tracing flags */ | ||
778 | ABI_FAKE_UTSNAME=6, /* fake target utsname information */ | ||
779 | }; | ||
780 | |||
781 | #ifdef __KERNEL__ | ||
782 | |||
783 | extern void sysctl_init(void); | ||
784 | |||
785 | typedef struct ctl_table ctl_table; | ||
786 | |||
787 | typedef int ctl_handler (ctl_table *table, int __user *name, int nlen, | ||
788 | void __user *oldval, size_t __user *oldlenp, | ||
789 | void __user *newval, size_t newlen, | ||
790 | void **context); | ||
791 | |||
792 | typedef int proc_handler (ctl_table *ctl, int write, struct file * filp, | ||
793 | void __user *buffer, size_t *lenp, loff_t *ppos); | ||
794 | |||
795 | extern int proc_dostring(ctl_table *, int, struct file *, | ||
796 | void __user *, size_t *, loff_t *); | ||
797 | extern int proc_dointvec(ctl_table *, int, struct file *, | ||
798 | void __user *, size_t *, loff_t *); | ||
799 | extern int proc_dointvec_bset(ctl_table *, int, struct file *, | ||
800 | void __user *, size_t *, loff_t *); | ||
801 | extern int proc_dointvec_minmax(ctl_table *, int, struct file *, | ||
802 | void __user *, size_t *, loff_t *); | ||
803 | extern int proc_dointvec_jiffies(ctl_table *, int, struct file *, | ||
804 | void __user *, size_t *, loff_t *); | ||
805 | extern int proc_dointvec_userhz_jiffies(ctl_table *, int, struct file *, | ||
806 | void __user *, size_t *, loff_t *); | ||
807 | extern int proc_dointvec_ms_jiffies(ctl_table *, int, struct file *, | ||
808 | void __user *, size_t *, loff_t *); | ||
809 | extern int proc_doulongvec_minmax(ctl_table *, int, struct file *, | ||
810 | void __user *, size_t *, loff_t *); | ||
811 | extern int proc_doulongvec_ms_jiffies_minmax(ctl_table *table, int, | ||
812 | struct file *, void __user *, size_t *, loff_t *); | ||
813 | |||
814 | extern int do_sysctl (int __user *name, int nlen, | ||
815 | void __user *oldval, size_t __user *oldlenp, | ||
816 | void __user *newval, size_t newlen); | ||
817 | |||
818 | extern int do_sysctl_strategy (ctl_table *table, | ||
819 | int __user *name, int nlen, | ||
820 | void __user *oldval, size_t __user *oldlenp, | ||
821 | void __user *newval, size_t newlen, void ** context); | ||
822 | |||
823 | extern ctl_handler sysctl_string; | ||
824 | extern ctl_handler sysctl_intvec; | ||
825 | extern ctl_handler sysctl_jiffies; | ||
826 | extern ctl_handler sysctl_ms_jiffies; | ||
827 | |||
828 | |||
829 | /* | ||
830 | * Register a set of sysctl names by calling register_sysctl_table | ||
831 | * with an initialised array of ctl_table's. An entry with zero | ||
832 | * ctl_name terminates the table. table->de will be set up by the | ||
833 | * registration and need not be initialised in advance. | ||
834 | * | ||
835 | * sysctl names can be mirrored automatically under /proc/sys. The | ||
836 | * procname supplied controls /proc naming. | ||
837 | * | ||
838 | * The table's mode will be honoured both for sys_sysctl(2) and | ||
839 | * proc-fs access. | ||
840 | * | ||
841 | * Leaf nodes in the sysctl tree will be represented by a single file | ||
842 | * under /proc; non-leaf nodes will be represented by directories. A | ||
843 | * null procname disables /proc mirroring at this node. | ||
844 | * | ||
845 | * sysctl(2) can automatically manage read and write requests through | ||
846 | * the sysctl table. The data and maxlen fields of the ctl_table | ||
847 | * struct enable minimal validation of the values being written to be | ||
848 | * performed, and the mode field allows minimal authentication. | ||
849 | * | ||
850 | * More sophisticated management can be enabled by the provision of a | ||
851 | * strategy routine with the table entry. This will be called before | ||
852 | * any automatic read or write of the data is performed. | ||
853 | * | ||
854 | * The strategy routine may return: | ||
855 | * <0: Error occurred (error is passed to user process) | ||
856 | * 0: OK - proceed with automatic read or write. | ||
857 | * >0: OK - read or write has been done by the strategy routine, so | ||
858 | * return immediately. | ||
859 | * | ||
860 | * There must be a proc_handler routine for any terminal nodes | ||
861 | * mirrored under /proc/sys (non-terminals are handled by a built-in | ||
862 | * directory handler). Several default handlers are available to | ||
863 | * cover common cases. | ||
864 | */ | ||
865 | |||
866 | /* A sysctl table is an array of struct ctl_table: */ | ||
867 | struct ctl_table | ||
868 | { | ||
869 | int ctl_name; /* Binary ID */ | ||
870 | const char *procname; /* Text ID for /proc/sys, or zero */ | ||
871 | void *data; | ||
872 | int maxlen; | ||
873 | mode_t mode; | ||
874 | ctl_table *child; | ||
875 | proc_handler *proc_handler; /* Callback for text formatting */ | ||
876 | ctl_handler *strategy; /* Callback function for all r/w */ | ||
877 | struct proc_dir_entry *de; /* /proc control block */ | ||
878 | void *extra1; | ||
879 | void *extra2; | ||
880 | }; | ||
881 | |||
882 | /* struct ctl_table_header is used to maintain dynamic lists of | ||
883 | ctl_table trees. */ | ||
884 | struct ctl_table_header | ||
885 | { | ||
886 | ctl_table *ctl_table; | ||
887 | struct list_head ctl_entry; | ||
888 | }; | ||
889 | |||
890 | struct ctl_table_header * register_sysctl_table(ctl_table * table, | ||
891 | int insert_at_head); | ||
892 | void unregister_sysctl_table(struct ctl_table_header * table); | ||
893 | |||
894 | #else /* __KERNEL__ */ | ||
895 | |||
896 | #endif /* __KERNEL__ */ | ||
897 | |||
898 | #endif /* _LINUX_SYSCTL_H */ | ||