Dump stack during sysctl registration failure
[linux-2.6.git] / kernel / sysctl_check.c
1 #include <linux/stat.h>
2 #include <linux/sysctl.h>
3 #include "../arch/s390/appldata/appldata.h"
4 #include "../fs/xfs/linux-2.6/xfs_sysctl.h"
5 #include <linux/sunrpc/debug.h>
6 #include <linux/string.h>
7 #include <net/ip_vs.h>
8
9 struct trans_ctl_table {
10         int                     ctl_name;
11         const char              *procname;
12         struct trans_ctl_table  *child;
13 };
14
15 static struct trans_ctl_table trans_random_table[] = {
16         { RANDOM_POOLSIZE,      "poolsize" },
17         { RANDOM_ENTROPY_COUNT, "entropy_avail" },
18         { RANDOM_READ_THRESH,   "read_wakeup_threshold" },
19         { RANDOM_WRITE_THRESH,  "write_wakeup_threshold" },
20         { RANDOM_BOOT_ID,       "boot_id" },
21         { RANDOM_UUID,          "uuid" },
22         {}
23 };
24
25 static struct trans_ctl_table trans_pty_table[] = {
26         { PTY_MAX,              "max" },
27         { PTY_NR,               "nr" },
28         {}
29 };
30
31 static struct trans_ctl_table trans_kern_table[] = {
32         { KERN_OSTYPE,                  "ostype" },
33         { KERN_OSRELEASE,               "osrelease" },
34         /* KERN_OSREV not used */
35         { KERN_VERSION,                 "version" },
36         /* KERN_SECUREMASK not used */
37         /* KERN_PROF not used */
38         { KERN_NODENAME,                "hostname" },
39         { KERN_DOMAINNAME,              "domainname" },
40
41 #ifdef CONFIG_SECURITY_CAPABILITIES
42         { KERN_CAP_BSET,                "cap-bound" },
43 #endif /* def CONFIG_SECURITY_CAPABILITIES */
44
45         { KERN_PANIC,                   "panic" },
46         { KERN_REALROOTDEV,             "real-root-dev" },
47
48         { KERN_SPARC_REBOOT,            "reboot-cmd" },
49         { KERN_CTLALTDEL,               "ctrl-alt-del" },
50         { KERN_PRINTK,                  "printk" },
51
52         /* KERN_NAMETRANS not used */
53         /* KERN_PPC_HTABRECLAIM not used */
54         /* KERN_PPC_ZEROPAGED not used */
55         { KERN_PPC_POWERSAVE_NAP,       "powersave-nap" },
56
57         { KERN_MODPROBE,                "modprobe" },
58         { KERN_SG_BIG_BUFF,             "sg-big-buff" },
59         { KERN_ACCT,                    "acct" },
60         { KERN_PPC_L2CR,                "l2cr" },
61
62         /* KERN_RTSIGNR not used */
63         /* KERN_RTSIGMAX not used */
64
65         { KERN_SHMMAX,                  "shmmax" },
66         { KERN_MSGMAX,                  "msgmax" },
67         { KERN_MSGMNB,                  "msgmnb" },
68         /* KERN_MSGPOOL not used*/
69         { KERN_SYSRQ,                   "sysrq" },
70         { KERN_MAX_THREADS,             "threads-max" },
71         { KERN_RANDOM,                  "random",       trans_random_table },
72         { KERN_SHMALL,                  "shmall" },
73         { KERN_MSGMNI,                  "msgmni" },
74         { KERN_SEM,                     "sem" },
75         { KERN_SPARC_STOP_A,            "stop-a" },
76         { KERN_SHMMNI,                  "shmmni" },
77
78         { KERN_OVERFLOWUID,             "overflowuid" },
79         { KERN_OVERFLOWGID,             "overflowgid" },
80
81         { KERN_HOTPLUG,                 "hotplug", },
82         { KERN_IEEE_EMULATION_WARNINGS, "ieee_emulation_warnings" },
83
84         { KERN_S390_USER_DEBUG_LOGGING, "userprocess_debug" },
85         { KERN_CORE_USES_PID,           "core_uses_pid" },
86         { KERN_TAINTED,                 "tainted" },
87         { KERN_CADPID,                  "cad_pid" },
88         { KERN_PIDMAX,                  "pid_max" },
89         { KERN_CORE_PATTERN,            "core_pattern" },
90         { KERN_PANIC_ON_OOPS,           "panic_on_oops" },
91         { KERN_HPPA_PWRSW,              "soft-power" },
92         { KERN_HPPA_UNALIGNED,          "unaligned-trap" },
93
94         { KERN_PRINTK_RATELIMIT,        "printk_ratelimit" },
95         { KERN_PRINTK_RATELIMIT_BURST,  "printk_ratelimit_burst" },
96
97         { KERN_PTY,                     "pty",          trans_pty_table },
98         { KERN_NGROUPS_MAX,             "ngroups_max" },
99         { KERN_SPARC_SCONS_PWROFF,      "scons_poweroff" },
100         { KERN_HZ_TIMER,                "hz_timer" },
101         { KERN_UNKNOWN_NMI_PANIC,       "unknown_nmi_panic" },
102         { KERN_BOOTLOADER_TYPE,         "bootloader_type" },
103         { KERN_RANDOMIZE,               "randomize_va_space" },
104
105         { KERN_SPIN_RETRY,              "spin_retry" },
106         { KERN_ACPI_VIDEO_FLAGS,        "acpi_video_flags" },
107         { KERN_IA64_UNALIGNED,          "ignore-unaligned-usertrap" },
108         { KERN_COMPAT_LOG,              "compat-log" },
109         { KERN_MAX_LOCK_DEPTH,          "max_lock_depth" },
110         { KERN_NMI_WATCHDOG,            "nmi_watchdog" },
111         { KERN_PANIC_ON_NMI,            "panic_on_unrecovered_nmi" },
112         {}
113 };
114
115 static struct trans_ctl_table trans_vm_table[] = {
116         { VM_OVERCOMMIT_MEMORY,         "overcommit_memory" },
117         { VM_PAGE_CLUSTER,              "page-cluster" },
118         { VM_DIRTY_BACKGROUND,          "dirty_background_ratio" },
119         { VM_DIRTY_RATIO,               "dirty_ratio" },
120         { VM_DIRTY_WB_CS,               "dirty_writeback_centisecs" },
121         { VM_DIRTY_EXPIRE_CS,           "dirty_expire_centisecs" },
122         { VM_NR_PDFLUSH_THREADS,        "nr_pdflush_threads" },
123         { VM_OVERCOMMIT_RATIO,          "overcommit_ratio" },
124         /* VM_PAGEBUF unused */
125         { VM_HUGETLB_PAGES,             "nr_hugepages" },
126         { VM_SWAPPINESS,                "swappiness" },
127         { VM_LOWMEM_RESERVE_RATIO,      "lowmem_reserve_ratio" },
128         { VM_MIN_FREE_KBYTES,           "min_free_kbytes" },
129         { VM_MAX_MAP_COUNT,             "max_map_count" },
130         { VM_LAPTOP_MODE,               "laptop_mode" },
131         { VM_BLOCK_DUMP,                "block_dump" },
132         { VM_HUGETLB_GROUP,             "hugetlb_shm_group" },
133         { VM_VFS_CACHE_PRESSURE,        "vfs_cache_pressure" },
134         { VM_LEGACY_VA_LAYOUT,          "legacy_va_layout" },
135         /* VM_SWAP_TOKEN_TIMEOUT unused */
136         { VM_DROP_PAGECACHE,            "drop_caches" },
137         { VM_PERCPU_PAGELIST_FRACTION,  "percpu_pagelist_fraction" },
138         { VM_ZONE_RECLAIM_MODE,         "zone_reclaim_mode" },
139         { VM_MIN_UNMAPPED,              "min_unmapped_ratio" },
140         { VM_PANIC_ON_OOM,              "panic_on_oom" },
141         { VM_VDSO_ENABLED,              "vdso_enabled" },
142         { VM_MIN_SLAB,                  "min_slab_ratio" },
143         { VM_CMM_PAGES,                 "cmm_pages" },
144         { VM_CMM_TIMED_PAGES,           "cmm_timed_pages" },
145         { VM_CMM_TIMEOUT,               "cmm_timeout" },
146
147         {}
148 };
149
150 static struct trans_ctl_table trans_net_core_table[] = {
151         { NET_CORE_WMEM_MAX,            "wmem_max" },
152         { NET_CORE_RMEM_MAX,            "rmem_max" },
153         { NET_CORE_WMEM_DEFAULT,        "wmem_default" },
154         { NET_CORE_RMEM_DEFAULT,        "rmem_default" },
155         /* NET_CORE_DESTROY_DELAY unused */
156         { NET_CORE_MAX_BACKLOG,         "netdev_max_backlog" },
157         /* NET_CORE_FASTROUTE unused */
158         { NET_CORE_MSG_COST,            "message_cost" },
159         { NET_CORE_MSG_BURST,           "message_burst" },
160         { NET_CORE_OPTMEM_MAX,          "optmem_max" },
161         /* NET_CORE_HOT_LIST_LENGTH unused */
162         /* NET_CORE_DIVERT_VERSION unused */
163         /* NET_CORE_NO_CONG_THRESH unused */
164         /* NET_CORE_NO_CONG unused */
165         /* NET_CORE_LO_CONG unused */
166         /* NET_CORE_MOD_CONG unused */
167         { NET_CORE_DEV_WEIGHT,          "dev_weight" },
168         { NET_CORE_SOMAXCONN,           "somaxconn" },
169         { NET_CORE_BUDGET,              "netdev_budget" },
170         { NET_CORE_AEVENT_ETIME,        "xfrm_aevent_etime" },
171         { NET_CORE_AEVENT_RSEQTH,       "xfrm_aevent_rseqth" },
172         { NET_CORE_WARNINGS,            "warnings" },
173         {},
174 };
175
176 static struct trans_ctl_table trans_net_unix_table[] = {
177         /* NET_UNIX_DESTROY_DELAY unused */
178         /* NET_UNIX_DELETE_DELAY unused */
179         { NET_UNIX_MAX_DGRAM_QLEN,      "max_dgram_qlen" },
180         {}
181 };
182
183 static struct trans_ctl_table trans_net_ipv4_route_table[] = {
184         { NET_IPV4_ROUTE_FLUSH,                 "flush" },
185         { NET_IPV4_ROUTE_MIN_DELAY,             "min_delay" },
186         { NET_IPV4_ROUTE_MAX_DELAY,             "max_delay" },
187         { NET_IPV4_ROUTE_GC_THRESH,             "gc_thresh" },
188         { NET_IPV4_ROUTE_MAX_SIZE,              "max_size" },
189         { NET_IPV4_ROUTE_GC_MIN_INTERVAL,       "gc_min_interval" },
190         { NET_IPV4_ROUTE_GC_TIMEOUT,            "gc_timeout" },
191         { NET_IPV4_ROUTE_GC_INTERVAL,           "gc_interval" },
192         { NET_IPV4_ROUTE_REDIRECT_LOAD,         "redirect_load" },
193         { NET_IPV4_ROUTE_REDIRECT_NUMBER,       "redirect_number" },
194         { NET_IPV4_ROUTE_REDIRECT_SILENCE,      "redirect_silence" },
195         { NET_IPV4_ROUTE_ERROR_COST,            "error_cost" },
196         { NET_IPV4_ROUTE_ERROR_BURST,           "error_burst" },
197         { NET_IPV4_ROUTE_GC_ELASTICITY,         "gc_elasticity" },
198         { NET_IPV4_ROUTE_MTU_EXPIRES,           "mtu_expires" },
199         { NET_IPV4_ROUTE_MIN_PMTU,              "min_pmtu" },
200         { NET_IPV4_ROUTE_MIN_ADVMSS,            "min_adv_mss" },
201         { NET_IPV4_ROUTE_SECRET_INTERVAL,       "secret_interval" },
202         { NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS,    "gc_min_interval_ms" },
203         {}
204 };
205
206 static struct trans_ctl_table trans_net_ipv4_conf_vars_table[] = {
207         { NET_IPV4_CONF_FORWARDING,             "forwarding" },
208         { NET_IPV4_CONF_MC_FORWARDING,          "mc_forwarding" },
209
210         { NET_IPV4_CONF_PROXY_ARP,              "proxy_arp" },
211         { NET_IPV4_CONF_ACCEPT_REDIRECTS,       "accept_redirects" },
212         { NET_IPV4_CONF_SECURE_REDIRECTS,       "secure_redirects" },
213         { NET_IPV4_CONF_SEND_REDIRECTS,         "send_redirects" },
214         { NET_IPV4_CONF_SHARED_MEDIA,           "shared_media" },
215         { NET_IPV4_CONF_RP_FILTER,              "rp_filter" },
216         { NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE,    "accept_source_route" },
217         { NET_IPV4_CONF_BOOTP_RELAY,            "bootp_relay" },
218         { NET_IPV4_CONF_LOG_MARTIANS,           "log_martians" },
219         { NET_IPV4_CONF_TAG,                    "tag" },
220         { NET_IPV4_CONF_ARPFILTER,              "arp_filter" },
221         { NET_IPV4_CONF_MEDIUM_ID,              "medium_id" },
222         { NET_IPV4_CONF_NOXFRM,                 "disable_xfrm" },
223         { NET_IPV4_CONF_NOPOLICY,               "disable_policy" },
224         { NET_IPV4_CONF_FORCE_IGMP_VERSION,     "force_igmp_version" },
225
226         { NET_IPV4_CONF_ARP_ANNOUNCE,           "arp_announce" },
227         { NET_IPV4_CONF_ARP_IGNORE,             "arp_ignore" },
228         { NET_IPV4_CONF_PROMOTE_SECONDARIES,    "promote_secondaries" },
229         { NET_IPV4_CONF_ARP_ACCEPT,             "arp_accept" },
230         {}
231 };
232
233 static struct trans_ctl_table trans_net_ipv4_conf_table[] = {
234         { NET_PROTO_CONF_ALL,           "all",          trans_net_ipv4_conf_vars_table },
235         { NET_PROTO_CONF_DEFAULT,       "default",      trans_net_ipv4_conf_vars_table },
236         { 0, NULL, trans_net_ipv4_conf_vars_table },
237         {}
238 };
239
240
241 static struct trans_ctl_table trans_net_ipv4_vs_table[] = {
242         { NET_IPV4_VS_AMEMTHRESH,       "amemthresh" },
243         { NET_IPV4_VS_DEBUG_LEVEL,      "debug_level" },
244         { NET_IPV4_VS_AMDROPRATE,       "am_droprate" },
245         { NET_IPV4_VS_DROP_ENTRY,       "drop_entry" },
246         { NET_IPV4_VS_DROP_PACKET,      "drop_packet" },
247         { NET_IPV4_VS_SECURE_TCP,       "secure_tcp" },
248         { NET_IPV4_VS_TO_ES,            "timeout_established" },
249         { NET_IPV4_VS_TO_SS,            "timeout_synsent" },
250         { NET_IPV4_VS_TO_SR,            "timeout_synrecv" },
251         { NET_IPV4_VS_TO_FW,            "timeout_finwait" },
252         { NET_IPV4_VS_TO_TW,            "timeout_timewait" },
253         { NET_IPV4_VS_TO_CL,            "timeout_close" },
254         { NET_IPV4_VS_TO_CW,            "timeout_closewait" },
255         { NET_IPV4_VS_TO_LA,            "timeout_lastack" },
256         { NET_IPV4_VS_TO_LI,            "timeout_listen" },
257         { NET_IPV4_VS_TO_SA,            "timeout_synack" },
258         { NET_IPV4_VS_TO_UDP,           "timeout_udp" },
259         { NET_IPV4_VS_TO_ICMP,          "timeout_icmp" },
260         { NET_IPV4_VS_CACHE_BYPASS,     "cache_bypass" },
261         { NET_IPV4_VS_EXPIRE_NODEST_CONN,       "expire_nodest_conn" },
262         { NET_IPV4_VS_EXPIRE_QUIESCENT_TEMPLATE,        "expire_quiescent_template" },
263         { NET_IPV4_VS_SYNC_THRESHOLD,           "sync_threshold" },
264         { NET_IPV4_VS_NAT_ICMP_SEND,    "nat_icmp_send" },
265         { NET_IPV4_VS_LBLC_EXPIRE,              "lblc_expiration" },
266         { NET_IPV4_VS_LBLCR_EXPIRE,             "lblcr_expiration" },
267         {}
268 };
269
270 static struct trans_ctl_table trans_net_neigh_vars_table[] = {
271         { NET_NEIGH_MCAST_SOLICIT,      "mcast_solicit" },
272         { NET_NEIGH_UCAST_SOLICIT,      "ucast_solicit" },
273         { NET_NEIGH_APP_SOLICIT,        "app_solicit" },
274         { NET_NEIGH_RETRANS_TIME,       "retrans_time" },
275         { NET_NEIGH_REACHABLE_TIME,     "base_reachable_time" },
276         { NET_NEIGH_DELAY_PROBE_TIME,   "delay_first_probe_time" },
277         { NET_NEIGH_GC_STALE_TIME,      "gc_stale_time" },
278         { NET_NEIGH_UNRES_QLEN,         "unres_qlen" },
279         { NET_NEIGH_PROXY_QLEN,         "proxy_qlen" },
280         { NET_NEIGH_ANYCAST_DELAY,      "anycast_delay" },
281         { NET_NEIGH_PROXY_DELAY,        "proxy_delay" },
282         { NET_NEIGH_LOCKTIME,           "locktime" },
283         { NET_NEIGH_GC_INTERVAL,        "gc_interval" },
284         { NET_NEIGH_GC_THRESH1,         "gc_thresh1" },
285         { NET_NEIGH_GC_THRESH2,         "gc_thresh2" },
286         { NET_NEIGH_GC_THRESH3,         "gc_thresh3" },
287         { NET_NEIGH_RETRANS_TIME_MS,    "retrans_time_ms" },
288         { NET_NEIGH_REACHABLE_TIME_MS,  "base_reachable_time_ms" },
289         {}
290 };
291
292 static struct trans_ctl_table trans_net_neigh_table[] = {
293         { NET_PROTO_CONF_DEFAULT, "default", trans_net_neigh_vars_table },
294         { 0, NULL, trans_net_neigh_vars_table },
295         {}
296 };
297
298 static struct trans_ctl_table trans_net_ipv4_netfilter_table[] = {
299         { NET_IPV4_NF_CONNTRACK_MAX,                            "ip_conntrack_max" },
300
301         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT,           "ip_conntrack_tcp_timeout_syn_sent" },
302         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV,           "ip_conntrack_tcp_timeout_syn_recv" },
303         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED,        "ip_conntrack_tcp_timeout_established" },
304         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT,           "ip_conntrack_tcp_timeout_fin_wait" },
305         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT,         "ip_conntrack_tcp_timeout_close_wait" },
306         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK,           "ip_conntrack_tcp_timeout_last_ack" },
307         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT,          "ip_conntrack_tcp_timeout_time_wait" },
308         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE,              "ip_conntrack_tcp_timeout_close" },
309
310         { NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT,                    "ip_conntrack_udp_timeout" },
311         { NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM,             "ip_conntrack_udp_timeout_stream" },
312         { NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT,                   "ip_conntrack_icmp_timeout" },
313         { NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT,                "ip_conntrack_generic_timeout" },
314
315         { NET_IPV4_NF_CONNTRACK_BUCKETS,                        "ip_conntrack_buckets" },
316         { NET_IPV4_NF_CONNTRACK_LOG_INVALID,                    "ip_conntrack_log_invalid" },
317         { NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS,        "ip_conntrack_tcp_timeout_max_retrans" },
318         { NET_IPV4_NF_CONNTRACK_TCP_LOOSE,                      "ip_conntrack_tcp_loose" },
319         { NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL,                 "ip_conntrack_tcp_be_liberal" },
320         { NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS,                "ip_conntrack_tcp_max_retrans" },
321
322         { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED,            "ip_conntrack_sctp_timeout_closed" },
323         { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT,       "ip_conntrack_sctp_timeout_cookie_wait" },
324         { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED,     "ip_conntrack_sctp_timeout_cookie_echoed" },
325         { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED,       "ip_conntrack_sctp_timeout_established" },
326         { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT,     "ip_conntrack_sctp_timeout_shutdown_sent" },
327         { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD,     "ip_conntrack_sctp_timeout_shutdown_recd" },
328         { NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT, "ip_conntrack_sctp_timeout_shutdown_ack_sent" },
329
330         { NET_IPV4_NF_CONNTRACK_COUNT,          "ip_conntrack_count" },
331         { NET_IPV4_NF_CONNTRACK_CHECKSUM,       "ip_conntrack_checksum" },
332         {}
333 };
334
335 static struct trans_ctl_table trans_net_ipv4_table[] = {
336         { NET_IPV4_FORWARD,                     "ip_forward" },
337         { NET_IPV4_DYNADDR,                     "ip_dynaddr" },
338
339         { NET_IPV4_CONF,                "conf",         trans_net_ipv4_conf_table },
340         { NET_IPV4_NEIGH,               "neigh",        trans_net_neigh_table },
341         { NET_IPV4_ROUTE,               "route",        trans_net_ipv4_route_table },
342         /* NET_IPV4_FIB_HASH unused */
343         { NET_IPV4_NETFILTER,           "netfilter",    trans_net_ipv4_netfilter_table },
344         { NET_IPV4_VS,                  "vs",           trans_net_ipv4_vs_table },
345
346         { NET_IPV4_TCP_TIMESTAMPS,              "tcp_timestamps" },
347         { NET_IPV4_TCP_WINDOW_SCALING,          "tcp_window_scaling" },
348         { NET_IPV4_TCP_SACK,                    "tcp_sack" },
349         { NET_IPV4_TCP_RETRANS_COLLAPSE,        "tcp_retrans_collapse" },
350         { NET_IPV4_DEFAULT_TTL,                 "ip_default_ttl" },
351         /* NET_IPV4_AUTOCONFIG unused */
352         { NET_IPV4_NO_PMTU_DISC,                "ip_no_pmtu_disc" },
353         { NET_IPV4_TCP_SYN_RETRIES,             "tcp_syn_retries" },
354         { NET_IPV4_IPFRAG_HIGH_THRESH,          "ipfrag_high_thresh" },
355         { NET_IPV4_IPFRAG_LOW_THRESH,           "ipfrag_low_thresh" },
356         { NET_IPV4_IPFRAG_TIME,                 "ipfrag_time" },
357         /* NET_IPV4_TCP_MAX_KA_PROBES unused */
358         { NET_IPV4_TCP_KEEPALIVE_TIME,          "tcp_keepalive_time" },
359         { NET_IPV4_TCP_KEEPALIVE_PROBES,        "tcp_keepalive_probes" },
360         { NET_IPV4_TCP_RETRIES1,                "tcp_retries1" },
361         { NET_IPV4_TCP_RETRIES2,                "tcp_retries2" },
362         { NET_IPV4_TCP_FIN_TIMEOUT,             "tcp_fin_timeout" },
363         /* NET_IPV4_IP_MASQ_DEBUG unused */
364         { NET_TCP_SYNCOOKIES,                   "tcp_syncookies" },
365         { NET_TCP_STDURG,                       "tcp_stdurg" },
366         { NET_TCP_RFC1337,                      "tcp_rfc1337" },
367         /* NET_TCP_SYN_TAILDROP unused */
368         { NET_TCP_MAX_SYN_BACKLOG,              "tcp_max_syn_backlog" },
369         { NET_IPV4_LOCAL_PORT_RANGE,            "ip_local_port_range" },
370         { NET_IPV4_ICMP_ECHO_IGNORE_ALL,        "icmp_echo_ignore_all" },
371         { NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS, "icmp_echo_ignore_broadcasts" },
372         /* NET_IPV4_ICMP_SOURCEQUENCH_RATE unused */
373         /* NET_IPV4_ICMP_DESTUNREACH_RATE unused */
374         /* NET_IPV4_ICMP_TIMEEXCEED_RATE unused */
375         /* NET_IPV4_ICMP_PARAMPROB_RATE unused */
376         /* NET_IPV4_ICMP_ECHOREPLY_RATE unused */
377         { NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES,   "icmp_ignore_bogus_error_responses" },
378         { NET_IPV4_IGMP_MAX_MEMBERSHIPS,        "igmp_max_memberships" },
379         { NET_TCP_TW_RECYCLE,                   "tcp_tw_recycle" },
380         /* NET_IPV4_ALWAYS_DEFRAG unused */
381         { NET_IPV4_TCP_KEEPALIVE_INTVL,         "tcp_keepalive_intvl" },
382         { NET_IPV4_INET_PEER_THRESHOLD,         "inet_peer_threshold" },
383         { NET_IPV4_INET_PEER_MINTTL,            "inet_peer_minttl" },
384         { NET_IPV4_INET_PEER_MAXTTL,            "inet_peer_maxttl" },
385         { NET_IPV4_INET_PEER_GC_MINTIME,        "inet_peer_gc_mintime" },
386         { NET_IPV4_INET_PEER_GC_MAXTIME,        "inet_peer_gc_maxtime" },
387         { NET_TCP_ORPHAN_RETRIES,               "tcp_orphan_retries" },
388         { NET_TCP_ABORT_ON_OVERFLOW,            "tcp_abort_on_overflow" },
389         { NET_TCP_SYNACK_RETRIES,               "tcp_synack_retries" },
390         { NET_TCP_MAX_ORPHANS,                  "tcp_max_orphans" },
391         { NET_TCP_MAX_TW_BUCKETS,               "tcp_max_tw_buckets" },
392         { NET_TCP_FACK,                         "tcp_fack" },
393         { NET_TCP_REORDERING,                   "tcp_reordering" },
394         { NET_TCP_ECN,                          "tcp_ecn" },
395         { NET_TCP_DSACK,                        "tcp_dsack" },
396         { NET_TCP_MEM,                          "tcp_mem" },
397         { NET_TCP_WMEM,                         "tcp_wmem" },
398         { NET_TCP_RMEM,                         "tcp_rmem" },
399         { NET_TCP_APP_WIN,                      "tcp_app_win" },
400         { NET_TCP_ADV_WIN_SCALE,                "tcp_adv_win_scale" },
401         { NET_IPV4_NONLOCAL_BIND,               "ip_nonlocal_bind" },
402         { NET_IPV4_ICMP_RATELIMIT,              "icmp_ratelimit" },
403         { NET_IPV4_ICMP_RATEMASK,               "icmp_ratemask" },
404         { NET_TCP_TW_REUSE,                     "tcp_tw_reuse" },
405         { NET_TCP_FRTO,                         "tcp_frto" },
406         { NET_TCP_LOW_LATENCY,                  "tcp_low_latency" },
407         { NET_IPV4_IPFRAG_SECRET_INTERVAL,      "ipfrag_secret_interval" },
408         { NET_IPV4_IGMP_MAX_MSF,                "igmp_max_msf" },
409         { NET_TCP_NO_METRICS_SAVE,              "tcp_no_metrics_save" },
410         /* NET_TCP_DEFAULT_WIN_SCALE unused */
411         { NET_TCP_MODERATE_RCVBUF,              "tcp_moderate_rcvbuf" },
412         { NET_TCP_TSO_WIN_DIVISOR,              "tcp_tso_win_divisor" },
413         /* NET_TCP_BIC_BETA unused */
414         { NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR,      "icmp_errors_use_inbound_ifaddr" },
415         { NET_TCP_CONG_CONTROL,                 "tcp_congestion_control" },
416         { NET_TCP_ABC,                          "tcp_abc" },
417         { NET_IPV4_IPFRAG_MAX_DIST,             "ipfrag_max_dist" },
418         { NET_TCP_MTU_PROBING,                  "tcp_mtu_probing" },
419         { NET_TCP_BASE_MSS,                     "tcp_base_mss" },
420         { NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS,       "tcp_workaround_signed_windows" },
421         { NET_TCP_DMA_COPYBREAK,                "tcp_dma_copybreak" },
422         { NET_TCP_SLOW_START_AFTER_IDLE,        "tcp_slow_start_after_idle" },
423         { NET_CIPSOV4_CACHE_ENABLE,             "cipso_cache_enable" },
424         { NET_CIPSOV4_CACHE_BUCKET_SIZE,        "cipso_cache_bucket_size" },
425         { NET_CIPSOV4_RBM_OPTFMT,               "cipso_rbm_optfmt" },
426         { NET_CIPSOV4_RBM_STRICTVALID,          "cipso_rbm_strictvalid" },
427         { NET_TCP_AVAIL_CONG_CONTROL,           "tcp_available_congestion_control" },
428         { NET_TCP_ALLOWED_CONG_CONTROL,         "tcp_allowed_congestion_control" },
429         { NET_TCP_MAX_SSTHRESH,                 "tcp_max_ssthresh" },
430         { NET_TCP_FRTO_RESPONSE,                "tcp_frto_response" },
431         { 2088 /* NET_IPQ_QMAX */,              "ip_queue_maxlen" },
432         {}
433 };
434
435 static struct trans_ctl_table trans_net_ipx_table[] = {
436         { NET_IPX_PPROP_BROADCASTING,   "ipx_pprop_broadcasting" },
437         /* NET_IPX_FORWARDING unused */
438         {}
439 };
440
441 static struct trans_ctl_table trans_net_atalk_table[] = {
442         { NET_ATALK_AARP_EXPIRY_TIME,           "aarp-expiry-time" },
443         { NET_ATALK_AARP_TICK_TIME,             "aarp-tick-time" },
444         { NET_ATALK_AARP_RETRANSMIT_LIMIT,      "aarp-retransmit-limit" },
445         { NET_ATALK_AARP_RESOLVE_TIME,          "aarp-resolve-time" },
446         {},
447 };
448
449 static struct trans_ctl_table trans_net_netrom_table[] = {
450         { NET_NETROM_DEFAULT_PATH_QUALITY,              "default_path_quality" },
451         { NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER,    "obsolescence_count_initialiser" },
452         { NET_NETROM_NETWORK_TTL_INITIALISER,           "network_ttl_initialiser" },
453         { NET_NETROM_TRANSPORT_TIMEOUT,                 "transport_timeout" },
454         { NET_NETROM_TRANSPORT_MAXIMUM_TRIES,           "transport_maximum_tries" },
455         { NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY,       "transport_acknowledge_delay" },
456         { NET_NETROM_TRANSPORT_BUSY_DELAY,              "transport_busy_delay" },
457         { NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE,   "transport_requested_window_size" },
458         { NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT,     "transport_no_activity_timeout" },
459         { NET_NETROM_ROUTING_CONTROL,                   "routing_control" },
460         { NET_NETROM_LINK_FAILS_COUNT,                  "link_fails_count" },
461         { NET_NETROM_RESET,                             "reset" },
462         {}
463 };
464
465 static struct trans_ctl_table trans_net_ax25_table[] = {
466         { NET_AX25_IP_DEFAULT_MODE,     "ip_default_mode" },
467         { NET_AX25_DEFAULT_MODE,        "ax25_default_mode" },
468         { NET_AX25_BACKOFF_TYPE,        "backoff_type" },
469         { NET_AX25_CONNECT_MODE,        "connect_mode" },
470         { NET_AX25_STANDARD_WINDOW,     "standard_window_size" },
471         { NET_AX25_EXTENDED_WINDOW,     "extended_window_size" },
472         { NET_AX25_T1_TIMEOUT,          "t1_timeout" },
473         { NET_AX25_T2_TIMEOUT,          "t2_timeout" },
474         { NET_AX25_T3_TIMEOUT,          "t3_timeout" },
475         { NET_AX25_IDLE_TIMEOUT,        "idle_timeout" },
476         { NET_AX25_N2,                  "maximum_retry_count" },
477         { NET_AX25_PACLEN,              "maximum_packet_length" },
478         { NET_AX25_PROTOCOL,            "protocol" },
479         { NET_AX25_DAMA_SLAVE_TIMEOUT,  "dama_slave_timeout" },
480         {}
481 };
482
483 static struct trans_ctl_table trans_net_bridge_table[] = {
484         { NET_BRIDGE_NF_CALL_ARPTABLES,         "bridge-nf-call-arptables" },
485         { NET_BRIDGE_NF_CALL_IPTABLES,          "bridge-nf-call-iptables" },
486         { NET_BRIDGE_NF_CALL_IP6TABLES,         "bridge-nf-call-ip6tables" },
487         { NET_BRIDGE_NF_FILTER_VLAN_TAGGED,     "bridge-nf-filter-vlan-tagged" },
488         { NET_BRIDGE_NF_FILTER_PPPOE_TAGGED,    "bridge-nf-filter-pppoe-tagged" },
489         {}
490 };
491
492 static struct trans_ctl_table trans_net_rose_table[] = {
493         { NET_ROSE_RESTART_REQUEST_TIMEOUT,     "restart_request_timeout" },
494         { NET_ROSE_CALL_REQUEST_TIMEOUT,        "call_request_timeout" },
495         { NET_ROSE_RESET_REQUEST_TIMEOUT,       "reset_request_timeout" },
496         { NET_ROSE_CLEAR_REQUEST_TIMEOUT,       "clear_request_timeout" },
497         { NET_ROSE_ACK_HOLD_BACK_TIMEOUT,       "acknowledge_hold_back_timeout" },
498         { NET_ROSE_ROUTING_CONTROL,             "routing_control" },
499         { NET_ROSE_LINK_FAIL_TIMEOUT,           "link_fail_timeout" },
500         { NET_ROSE_MAX_VCS,                     "maximum_virtual_circuits" },
501         { NET_ROSE_WINDOW_SIZE,                 "window_size" },
502         { NET_ROSE_NO_ACTIVITY_TIMEOUT,         "no_activity_timeout" },
503         {}
504 };
505
506 static struct trans_ctl_table trans_net_ipv6_conf_var_table[] = {
507         { NET_IPV6_FORWARDING,                  "forwarding" },
508         { NET_IPV6_HOP_LIMIT,                   "hop_limit" },
509         { NET_IPV6_MTU,                         "mtu" },
510         { NET_IPV6_ACCEPT_RA,                   "accept_ra" },
511         { NET_IPV6_ACCEPT_REDIRECTS,            "accept_redirects" },
512         { NET_IPV6_AUTOCONF,                    "autoconf" },
513         { NET_IPV6_DAD_TRANSMITS,               "dad_transmits" },
514         { NET_IPV6_RTR_SOLICITS,                "router_solicitations" },
515         { NET_IPV6_RTR_SOLICIT_INTERVAL,        "router_solicitation_interval" },
516         { NET_IPV6_RTR_SOLICIT_DELAY,           "router_solicitation_delay" },
517         { NET_IPV6_USE_TEMPADDR,                "use_tempaddr" },
518         { NET_IPV6_TEMP_VALID_LFT,              "temp_valid_lft" },
519         { NET_IPV6_TEMP_PREFERED_LFT,           "temp_prefered_lft" },
520         { NET_IPV6_REGEN_MAX_RETRY,             "regen_max_retry" },
521         { NET_IPV6_MAX_DESYNC_FACTOR,           "max_desync_factor" },
522         { NET_IPV6_MAX_ADDRESSES,               "max_addresses" },
523         { NET_IPV6_FORCE_MLD_VERSION,           "force_mld_version" },
524         { NET_IPV6_ACCEPT_RA_DEFRTR,            "accept_ra_defrtr" },
525         { NET_IPV6_ACCEPT_RA_PINFO,             "accept_ra_pinfo" },
526         { NET_IPV6_ACCEPT_RA_RTR_PREF,          "accept_ra_rtr_pref" },
527         { NET_IPV6_RTR_PROBE_INTERVAL,          "router_probe_interval" },
528         { NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN,  "accept_ra_rt_info_max_plen" },
529         { NET_IPV6_PROXY_NDP,                   "proxy_ndp" },
530         { NET_IPV6_ACCEPT_SOURCE_ROUTE,         "accept_source_route" },
531         {}
532 };
533
534 static struct trans_ctl_table trans_net_ipv6_conf_table[] = {
535         { NET_PROTO_CONF_ALL,           "all",  trans_net_ipv6_conf_var_table },
536         { NET_PROTO_CONF_DEFAULT,       "default", trans_net_ipv6_conf_var_table },
537         { 0, NULL, trans_net_ipv6_conf_var_table },
538         {}
539 };
540
541 static struct trans_ctl_table trans_net_ipv6_route_table[] = {
542         { NET_IPV6_ROUTE_FLUSH,                 "flush" },
543         { NET_IPV6_ROUTE_GC_THRESH,             "gc_thresh" },
544         { NET_IPV6_ROUTE_MAX_SIZE,              "max_size" },
545         { NET_IPV6_ROUTE_GC_MIN_INTERVAL,       "gc_min_interval" },
546         { NET_IPV6_ROUTE_GC_TIMEOUT,            "gc_timeout" },
547         { NET_IPV6_ROUTE_GC_INTERVAL,           "gc_interval" },
548         { NET_IPV6_ROUTE_GC_ELASTICITY,         "gc_elasticity" },
549         { NET_IPV6_ROUTE_MTU_EXPIRES,           "mtu_expires" },
550         { NET_IPV6_ROUTE_MIN_ADVMSS,            "min_adv_mss" },
551         { NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS,    "gc_min_interval_ms" },
552         {}
553 };
554
555 static struct trans_ctl_table trans_net_ipv6_icmp_table[] = {
556         { NET_IPV6_ICMP_RATELIMIT,      "ratelimit" },
557         {}
558 };
559
560 static struct trans_ctl_table trans_net_ipv6_table[] = {
561         { NET_IPV6_CONF,                "conf",         trans_net_ipv6_conf_table },
562         { NET_IPV6_NEIGH,               "neigh",        trans_net_neigh_table },
563         { NET_IPV6_ROUTE,               "route",        trans_net_ipv6_route_table },
564         { NET_IPV6_ICMP,                "icmp",         trans_net_ipv6_icmp_table },
565         { NET_IPV6_BINDV6ONLY,          "bindv6only" },
566         { NET_IPV6_IP6FRAG_HIGH_THRESH, "ip6frag_high_thresh" },
567         { NET_IPV6_IP6FRAG_LOW_THRESH,  "ip6frag_low_thresh" },
568         { NET_IPV6_IP6FRAG_TIME,        "ip6frag_time" },
569         { NET_IPV6_IP6FRAG_SECRET_INTERVAL,     "ip6frag_secret_interval" },
570         { NET_IPV6_MLD_MAX_MSF,         "mld_max_msf" },
571         { 2088 /* IPQ_QMAX */,          "ip6_queue_maxlen" },
572         {}
573 };
574
575 static struct trans_ctl_table trans_net_x25_table[] = {
576         { NET_X25_RESTART_REQUEST_TIMEOUT,      "restart_request_timeout" },
577         { NET_X25_CALL_REQUEST_TIMEOUT,         "call_request_timeout" },
578         { NET_X25_RESET_REQUEST_TIMEOUT,        "reset_request_timeout" },
579         { NET_X25_CLEAR_REQUEST_TIMEOUT,        "clear_request_timeout" },
580         { NET_X25_ACK_HOLD_BACK_TIMEOUT,        "acknowledgement_hold_back_timeout" },
581         { NET_X25_FORWARD,                      "x25_forward" },
582         {}
583 };
584
585 static struct trans_ctl_table trans_net_tr_table[] = {
586         { NET_TR_RIF_TIMEOUT,   "rif_timeout" },
587         {}
588 };
589
590
591 static struct trans_ctl_table trans_net_decnet_conf_vars[] = {
592         { NET_DECNET_CONF_DEV_FORWARDING,       "forwarding" },
593         { NET_DECNET_CONF_DEV_PRIORITY,         "priority" },
594         { NET_DECNET_CONF_DEV_T2,               "t2" },
595         { NET_DECNET_CONF_DEV_T3,               "t3" },
596         {}
597 };
598
599 static struct trans_ctl_table trans_net_decnet_conf[] = {
600         { 0, NULL, trans_net_decnet_conf_vars },
601         {}
602 };
603
604 static struct trans_ctl_table trans_net_decnet_table[] = {
605         { NET_DECNET_CONF,              "conf", trans_net_decnet_conf },
606         { NET_DECNET_NODE_ADDRESS,      "node_address" },
607         { NET_DECNET_NODE_NAME,         "node_name" },
608         { NET_DECNET_DEFAULT_DEVICE,    "default_device" },
609         { NET_DECNET_TIME_WAIT,         "time_wait" },
610         { NET_DECNET_DN_COUNT,          "dn_count" },
611         { NET_DECNET_DI_COUNT,          "di_count" },
612         { NET_DECNET_DR_COUNT,          "dr_count" },
613         { NET_DECNET_DST_GC_INTERVAL,   "dst_gc_interval" },
614         { NET_DECNET_NO_FC_MAX_CWND,    "no_fc_max_cwnd" },
615         { NET_DECNET_MEM,               "decnet_mem" },
616         { NET_DECNET_RMEM,              "decnet_rmem" },
617         { NET_DECNET_WMEM,              "decnet_wmem" },
618         { NET_DECNET_DEBUG_LEVEL,       "debug" },
619         {}
620 };
621
622 static struct trans_ctl_table trans_net_sctp_table[] = {
623         { NET_SCTP_RTO_INITIAL,         "rto_initial" },
624         { NET_SCTP_RTO_MIN,             "rto_min" },
625         { NET_SCTP_RTO_MAX,             "rto_max" },
626         { NET_SCTP_RTO_ALPHA,           "rto_alpha_exp_divisor" },
627         { NET_SCTP_RTO_BETA,            "rto_beta_exp_divisor" },
628         { NET_SCTP_VALID_COOKIE_LIFE,   "valid_cookie_life" },
629         { NET_SCTP_ASSOCIATION_MAX_RETRANS,     "association_max_retrans" },
630         { NET_SCTP_PATH_MAX_RETRANS,    "path_max_retrans" },
631         { NET_SCTP_MAX_INIT_RETRANSMITS,        "max_init_retransmits" },
632         { NET_SCTP_HB_INTERVAL,         "hb_interval" },
633         { NET_SCTP_PRESERVE_ENABLE,     "cookie_preserve_enable" },
634         { NET_SCTP_MAX_BURST,           "max_burst" },
635         { NET_SCTP_ADDIP_ENABLE,        "addip_enable" },
636         { NET_SCTP_PRSCTP_ENABLE,       "prsctp_enable" },
637         { NET_SCTP_SNDBUF_POLICY,       "sndbuf_policy" },
638         { NET_SCTP_SACK_TIMEOUT,        "sack_timeout" },
639         { NET_SCTP_RCVBUF_POLICY,       "rcvbuf_policy" },
640         {}
641 };
642
643 static struct trans_ctl_table trans_net_llc_llc2_timeout_table[] = {
644         { NET_LLC2_ACK_TIMEOUT,         "ack" },
645         { NET_LLC2_P_TIMEOUT,           "p" },
646         { NET_LLC2_REJ_TIMEOUT,         "rej" },
647         { NET_LLC2_BUSY_TIMEOUT,        "busy" },
648         {}
649 };
650
651 static struct trans_ctl_table trans_net_llc_station_table[] = {
652         { NET_LLC_STATION_ACK_TIMEOUT,  "ack_timeout" },
653         {}
654 };
655
656 static struct trans_ctl_table trans_net_llc_llc2_table[] = {
657         { NET_LLC2,             "timeout",      trans_net_llc_llc2_timeout_table },
658         {}
659 };
660
661 static struct trans_ctl_table trans_net_llc_table[] = {
662         { NET_LLC2,             "llc2",         trans_net_llc_llc2_table },
663         { NET_LLC_STATION,      "station",      trans_net_llc_station_table },
664         {}
665 };
666
667 static struct trans_ctl_table trans_net_netfilter_table[] = {
668         { NET_NF_CONNTRACK_MAX,                         "nf_conntrack_max" },
669         { NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT,        "nf_conntrack_tcp_timeout_syn_sent" },
670         { NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV,        "nf_conntrack_tcp_timeout_syn_recv" },
671         { NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED,     "nf_conntrack_tcp_timeout_established" },
672         { NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT,        "nf_conntrack_tcp_timeout_fin_wait" },
673         { NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT,      "nf_conntrack_tcp_timeout_close_wait" },
674         { NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK,        "nf_conntrack_tcp_timeout_last_ack" },
675         { NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT,       "nf_conntrack_tcp_timeout_time_wait" },
676         { NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE,           "nf_conntrack_tcp_timeout_close" },
677         { NET_NF_CONNTRACK_UDP_TIMEOUT,                 "nf_conntrack_udp_timeout" },
678         { NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM,          "nf_conntrack_udp_timeout_stream" },
679         { NET_NF_CONNTRACK_ICMP_TIMEOUT,        "nf_conntrack_icmp_timeout" },
680         { NET_NF_CONNTRACK_GENERIC_TIMEOUT,             "nf_conntrack_generic_timeout" },
681         { NET_NF_CONNTRACK_BUCKETS,                     "nf_conntrack_buckets" },
682         { NET_NF_CONNTRACK_LOG_INVALID,                 "nf_conntrack_log_invalid" },
683         { NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS,     "nf_conntrack_tcp_timeout_max_retrans" },
684         { NET_NF_CONNTRACK_TCP_LOOSE,                   "nf_conntrack_tcp_loose" },
685         { NET_NF_CONNTRACK_TCP_BE_LIBERAL,              "nf_conntrack_tcp_be_liberal" },
686         { NET_NF_CONNTRACK_TCP_MAX_RETRANS,             "nf_conntrack_tcp_max_retrans" },
687         { NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED,         "nf_conntrack_sctp_timeout_closed" },
688         { NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT,    "nf_conntrack_sctp_timeout_cookie_wait" },
689         { NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED,  "nf_conntrack_sctp_timeout_cookie_echoed" },
690         { NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED,    "nf_conntrack_sctp_timeout_established" },
691         { NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT,  "nf_conntrack_sctp_timeout_shutdown_sent" },
692         { NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD,  "nf_conntrack_sctp_timeout_shutdown_recd" },
693         { NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT,      "nf_conntrack_sctp_timeout_shutdown_ack_sent" },
694         { NET_NF_CONNTRACK_COUNT,                       "nf_conntrack_count" },
695         { NET_NF_CONNTRACK_ICMPV6_TIMEOUT,      "nf_conntrack_icmpv6_timeout" },
696         { NET_NF_CONNTRACK_FRAG6_TIMEOUT,               "nf_conntrack_frag6_timeout" },
697         { NET_NF_CONNTRACK_FRAG6_LOW_THRESH,            "nf_conntrack_frag6_low_thresh" },
698         { NET_NF_CONNTRACK_FRAG6_HIGH_THRESH,           "nf_conntrack_frag6_high_thresh" },
699         { NET_NF_CONNTRACK_CHECKSUM,                    "nf_conntrack_checksum" },
700
701         {}
702 };
703
704 static struct trans_ctl_table trans_net_dccp_table[] = {
705         { NET_DCCP_DEFAULT,     "default" },
706         {}
707 };
708
709 static struct trans_ctl_table trans_net_irda_table[] = {
710         { NET_IRDA_DISCOVERY,           "discovery" },
711         { NET_IRDA_DEVNAME,             "devname" },
712         { NET_IRDA_DEBUG,               "debug" },
713         { NET_IRDA_FAST_POLL,           "fast_poll_increase" },
714         { NET_IRDA_DISCOVERY_SLOTS,     "discovery_slots" },
715         { NET_IRDA_DISCOVERY_TIMEOUT,   "discovery_timeout" },
716         { NET_IRDA_SLOT_TIMEOUT,        "slot_timeout" },
717         { NET_IRDA_MAX_BAUD_RATE,       "max_baud_rate" },
718         { NET_IRDA_MIN_TX_TURN_TIME,    "min_tx_turn_time" },
719         { NET_IRDA_MAX_TX_DATA_SIZE,    "max_tx_data_size" },
720         { NET_IRDA_MAX_TX_WINDOW,       "max_tx_window" },
721         { NET_IRDA_MAX_NOREPLY_TIME,    "max_noreply_time" },
722         { NET_IRDA_WARN_NOREPLY_TIME,   "warn_noreply_time" },
723         { NET_IRDA_LAP_KEEPALIVE_TIME,  "lap_keepalive_time" },
724         {}
725 };
726
727 static struct trans_ctl_table trans_net_table[] = {
728         { NET_CORE,             "core",         trans_net_core_table },
729         /* NET_ETHER not used */
730         /* NET_802 not used */
731         { NET_UNIX,             "unix",         trans_net_unix_table },
732         { NET_IPV4,             "ipv4",         trans_net_ipv4_table },
733         { NET_IPX,              "ipx",          trans_net_ipx_table },
734         { NET_ATALK,            "appletalk",    trans_net_atalk_table },
735         { NET_NETROM,           "netrom",       trans_net_netrom_table },
736         { NET_AX25,             "ax25",         trans_net_ax25_table },
737         { NET_BRIDGE,           "bridge",       trans_net_bridge_table },
738         { NET_ROSE,             "rose",         trans_net_rose_table },
739         { NET_IPV6,             "ipv6",         trans_net_ipv6_table },
740         { NET_X25,              "x25",          trans_net_x25_table },
741         { NET_TR,               "tr",           trans_net_tr_table },
742         { NET_DECNET,           "decnet",       trans_net_decnet_table },
743         /*  NET_ECONET not used */
744         { NET_SCTP,             "sctp",         trans_net_sctp_table },
745         { NET_LLC,              "llc",          trans_net_llc_table },
746         { NET_NETFILTER,        "netfilter",    trans_net_netfilter_table },
747         { NET_DCCP,             "dccp",         trans_net_dccp_table },
748         { NET_IRDA,             "irda",         trans_net_irda_table },
749         { 2089,                 "nf_conntrack_max" },
750         {}
751 };
752
753 static struct trans_ctl_table trans_fs_quota_table[] = {
754         { FS_DQ_LOOKUPS,        "lookups" },
755         { FS_DQ_DROPS,          "drops" },
756         { FS_DQ_READS,          "reads" },
757         { FS_DQ_WRITES,         "writes" },
758         { FS_DQ_CACHE_HITS,     "cache_hits" },
759         { FS_DQ_ALLOCATED,      "allocated_dquots" },
760         { FS_DQ_FREE,           "free_dquots" },
761         { FS_DQ_SYNCS,          "syncs" },
762         { FS_DQ_WARNINGS,       "warnings" },
763         {}
764 };
765
766 static struct trans_ctl_table trans_fs_xfs_table[] = {
767         { XFS_RESTRICT_CHOWN,   "restrict_chown" },
768         { XFS_SGID_INHERIT,     "irix_sgid_inherit" },
769         { XFS_SYMLINK_MODE,     "irix_symlink_mode" },
770         { XFS_PANIC_MASK,       "panic_mask" },
771
772         { XFS_ERRLEVEL,         "error_level" },
773         { XFS_SYNCD_TIMER,      "xfssyncd_centisecs" },
774         { XFS_INHERIT_SYNC,     "inherit_sync" },
775         { XFS_INHERIT_NODUMP,   "inherit_nodump" },
776         { XFS_INHERIT_NOATIME,  "inherit_noatime" },
777         { XFS_BUF_TIMER,        "xfsbufd_centisecs" },
778         { XFS_BUF_AGE,          "age_buffer_centisecs" },
779         { XFS_INHERIT_NOSYM,    "inherit_nosymlinks" },
780         { XFS_ROTORSTEP,        "rotorstep" },
781         { XFS_INHERIT_NODFRG,   "inherit_nodefrag" },
782         { XFS_FILESTREAM_TIMER, "filestream_centisecs" },
783         { XFS_STATS_CLEAR,      "stats_clear" },
784         {}
785 };
786
787 static struct trans_ctl_table trans_fs_ocfs2_nm_table[] = {
788         { 1, "hb_ctl_path" },
789         {}
790 };
791
792 static struct trans_ctl_table trans_fs_ocfs2_table[] = {
793         { 1,    "nm",   trans_fs_ocfs2_nm_table },
794         {}
795 };
796
797 static struct trans_ctl_table trans_inotify_table[] = {
798         { INOTIFY_MAX_USER_INSTANCES,   "max_user_instances" },
799         { INOTIFY_MAX_USER_WATCHES,     "max_user_watches" },
800         { INOTIFY_MAX_QUEUED_EVENTS,    "max_queued_events" },
801         {}
802 };
803
804 static struct trans_ctl_table trans_fs_table[] = {
805         { FS_NRINODE,           "inode-nr" },
806         { FS_STATINODE,         "inode-state" },
807         /* FS_MAXINODE unused */
808         /* FS_NRDQUOT unused */
809         /* FS_MAXDQUOT unused */
810         { FS_NRFILE,            "file-nr" },
811         { FS_MAXFILE,           "file-max" },
812         { FS_DENTRY,            "dentry-state" },
813         /* FS_NRSUPER unused */
814         /* FS_MAXUPSER unused */
815         { FS_OVERFLOWUID,       "overflowuid" },
816         { FS_OVERFLOWGID,       "overflowgid" },
817         { FS_LEASES,            "leases-enable" },
818         { FS_DIR_NOTIFY,        "dir-notify-enable" },
819         { FS_LEASE_TIME,        "lease-break-time" },
820         { FS_DQSTATS,           "quota",                trans_fs_quota_table },
821         { FS_XFS,               "xfs",                  trans_fs_xfs_table },
822         { FS_AIO_NR,            "aio-nr" },
823         { FS_AIO_MAX_NR,        "aio-max-nr" },
824         { FS_INOTIFY,           "inotify",              trans_inotify_table },
825         { FS_OCFS2,             "ocfs2",                trans_fs_ocfs2_table },
826         { KERN_SETUID_DUMPABLE, "suid_dumpable" },
827         {}
828 };
829
830 static struct trans_ctl_table trans_debug_table[] = {
831         {}
832 };
833
834 static struct trans_ctl_table trans_cdrom_table[] = {
835         { DEV_CDROM_INFO,               "info" },
836         { DEV_CDROM_AUTOCLOSE,          "autoclose" },
837         { DEV_CDROM_AUTOEJECT,          "autoeject" },
838         { DEV_CDROM_DEBUG,              "debug" },
839         { DEV_CDROM_LOCK,               "lock" },
840         { DEV_CDROM_CHECK_MEDIA,        "check_media" },
841         {}
842 };
843
844 static struct trans_ctl_table trans_ipmi_table[] = {
845         { DEV_IPMI_POWEROFF_POWERCYCLE, "poweroff_powercycle" },
846         {}
847 };
848
849 static struct trans_ctl_table trans_mac_hid_files[] = {
850         /* DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES unused */
851         /* DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES unused */
852         { DEV_MAC_HID_MOUSE_BUTTON_EMULATION,   "mouse_button_emulation" },
853         { DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE,    "mouse_button2_keycode" },
854         { DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE,    "mouse_button3_keycode" },
855         /* DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES unused */
856         {}
857 };
858
859 static struct trans_ctl_table trans_raid_table[] = {
860         { DEV_RAID_SPEED_LIMIT_MIN,     "speed_limit_min" },
861         { DEV_RAID_SPEED_LIMIT_MAX,     "speed_limit_max" },
862         {}
863 };
864
865 static struct trans_ctl_table trans_scsi_table[] = {
866         { DEV_SCSI_LOGGING_LEVEL, "logging_level" },
867         {}
868 };
869
870 static struct trans_ctl_table trans_parport_default_table[] = {
871         { DEV_PARPORT_DEFAULT_TIMESLICE,        "timeslice" },
872         { DEV_PARPORT_DEFAULT_SPINTIME,         "spintime" },
873         {}
874 };
875
876 static struct trans_ctl_table trans_parport_device_table[] = {
877         { DEV_PARPORT_DEVICE_TIMESLICE,         "timeslice" },
878         {}
879 };
880
881 static struct trans_ctl_table trans_parport_devices_table[] = {
882         { DEV_PARPORT_DEVICES_ACTIVE,           "active" },
883         { 0, NULL, trans_parport_device_table },
884         {}
885 };
886
887 static struct trans_ctl_table trans_parport_parport_table[] = {
888         { DEV_PARPORT_SPINTIME,         "spintime" },
889         { DEV_PARPORT_BASE_ADDR,        "base-addr" },
890         { DEV_PARPORT_IRQ,              "irq" },
891         { DEV_PARPORT_DMA,              "dma" },
892         { DEV_PARPORT_MODES,            "modes" },
893         { DEV_PARPORT_DEVICES,          "devices",      trans_parport_devices_table },
894         { DEV_PARPORT_AUTOPROBE,        "autoprobe" },
895         { DEV_PARPORT_AUTOPROBE + 1,    "autoprobe0" },
896         { DEV_PARPORT_AUTOPROBE + 2,    "autoprobe1" },
897         { DEV_PARPORT_AUTOPROBE + 3,    "autoprobe2" },
898         { DEV_PARPORT_AUTOPROBE + 4,    "autoprobe3" },
899         {}
900 };
901 static struct trans_ctl_table trans_parport_table[] = {
902         { DEV_PARPORT_DEFAULT,  "default",      trans_parport_default_table },
903         { 0, NULL, trans_parport_parport_table },
904         {}
905 };
906
907 static struct trans_ctl_table trans_dev_table[] = {
908         { DEV_CDROM,    "cdrom",        trans_cdrom_table },
909         /* DEV_HWMON unused */
910         { DEV_PARPORT,  "parport",      trans_parport_table },
911         { DEV_RAID,     "raid",         trans_raid_table },
912         { DEV_MAC_HID,  "mac_hid",      trans_mac_hid_files },
913         { DEV_SCSI,     "scsi",         trans_scsi_table },
914         { DEV_IPMI,     "ipmi",         trans_ipmi_table },
915         {}
916 };
917
918 static struct trans_ctl_table trans_bus_isa_table[] = {
919         { BUS_ISA_MEM_BASE,     "membase" },
920         { BUS_ISA_PORT_BASE,    "portbase" },
921         { BUS_ISA_PORT_SHIFT,   "portshift" },
922         {}
923 };
924
925 static struct trans_ctl_table trans_bus_table[] = {
926         { CTL_BUS_ISA,  "isa",  trans_bus_isa_table },
927         {}
928 };
929
930 static struct trans_ctl_table trans_arlan_conf_table0[] = {
931         { 1,    "spreadingCode" },
932         { 2,    "channelNumber" },
933         { 3,    "scramblingDisable" },
934         { 4,    "txAttenuation" },
935         { 5,    "systemId" },
936         { 6,    "maxDatagramSize" },
937         { 7,    "maxFrameSize" },
938         { 8,    "maxRetries" },
939         { 9,    "receiveMode" },
940         { 10,   "priority" },
941         { 11,   "rootOrRepeater" },
942         { 12,   "SID" },
943         { 13,   "registrationMode" },
944         { 14,   "registrationFill" },
945         { 15,   "localTalkAddress" },
946         { 16,   "codeFormat" },
947         { 17,   "numChannels" },
948         { 18,   "channel1" },
949         { 19,   "channel2" },
950         { 20,   "channel3" },
951         { 21,   "channel4" },
952         { 22,   "txClear" },
953         { 23,   "txRetries" },
954         { 24,   "txRouting" },
955         { 25,   "txScrambled" },
956         { 26,   "rxParameter" },
957         { 27,   "txTimeoutMs" },
958         { 28,   "waitCardTimeout" },
959         { 29,   "channelSet" },
960         { 30,   "name" },
961         { 31,   "waitTime" },
962         { 32,   "lParameter" },
963         { 33,   "_15" },
964         { 34,   "headerSize" },
965         { 36,   "tx_delay_ms" },
966         { 37,   "retries" },
967         { 38,   "ReTransmitPacketMaxSize" },
968         { 39,   "waitReTransmitPacketMaxSize" },
969         { 40,   "fastReTransCount" },
970         { 41,   "driverRetransmissions" },
971         { 42,   "txAckTimeoutMs" },
972         { 43,   "registrationInterrupts" },
973         { 44,   "hardwareType" },
974         { 45,   "radioType" },
975         { 46,   "writeEEPROM" },
976         { 47,   "writeRadioType" },
977         { 48,   "entry_exit_debug" },
978         { 49,   "debug" },
979         { 50,   "in_speed" },
980         { 51,   "out_speed" },
981         { 52,   "in_speed10" },
982         { 53,   "out_speed10" },
983         { 54,   "in_speed_max" },
984         { 55,   "out_speed_max" },
985         { 56,   "measure_rate" },
986         { 57,   "pre_Command_Wait" },
987         { 58,   "rx_tweak1" },
988         { 59,   "rx_tweak2" },
989         { 60,   "tx_queue_len" },
990
991         { 150,  "arlan0-txRing" },
992         { 151,  "arlan0-rxRing" },
993         { 152,  "arlan0-18" },
994         { 153,  "arlan0-ring" },
995         { 154,  "arlan0-shm-cpy" },
996         { 155,  "config0" },
997         { 156,  "reset0" },
998         {}
999 };
1000
1001 static struct trans_ctl_table trans_arlan_conf_table1[] = {
1002         { 1,    "spreadingCode" },
1003         { 2,    "channelNumber" },
1004         { 3,    "scramblingDisable" },
1005         { 4,    "txAttenuation" },
1006         { 5,    "systemId" },
1007         { 6,    "maxDatagramSize" },
1008         { 7,    "maxFrameSize" },
1009         { 8,    "maxRetries" },
1010         { 9,    "receiveMode" },
1011         { 10,   "priority" },
1012         { 11,   "rootOrRepeater" },
1013         { 12,   "SID" },
1014         { 13,   "registrationMode" },
1015         { 14,   "registrationFill" },
1016         { 15,   "localTalkAddress" },
1017         { 16,   "codeFormat" },
1018         { 17,   "numChannels" },
1019         { 18,   "channel1" },
1020         { 19,   "channel2" },
1021         { 20,   "channel3" },
1022         { 21,   "channel4" },
1023         { 22,   "txClear" },
1024         { 23,   "txRetries" },
1025         { 24,   "txRouting" },
1026         { 25,   "txScrambled" },
1027         { 26,   "rxParameter" },
1028         { 27,   "txTimeoutMs" },
1029         { 28,   "waitCardTimeout" },
1030         { 29,   "channelSet" },
1031         { 30,   "name" },
1032         { 31,   "waitTime" },
1033         { 32,   "lParameter" },
1034         { 33,   "_15" },
1035         { 34,   "headerSize" },
1036         { 36,   "tx_delay_ms" },
1037         { 37,   "retries" },
1038         { 38,   "ReTransmitPacketMaxSize" },
1039         { 39,   "waitReTransmitPacketMaxSize" },
1040         { 40,   "fastReTransCount" },
1041         { 41,   "driverRetransmissions" },
1042         { 42,   "txAckTimeoutMs" },
1043         { 43,   "registrationInterrupts" },
1044         { 44,   "hardwareType" },
1045         { 45,   "radioType" },
1046         { 46,   "writeEEPROM" },
1047         { 47,   "writeRadioType" },
1048         { 48,   "entry_exit_debug" },
1049         { 49,   "debug" },
1050         { 50,   "in_speed" },
1051         { 51,   "out_speed" },
1052         { 52,   "in_speed10" },
1053         { 53,   "out_speed10" },
1054         { 54,   "in_speed_max" },
1055         { 55,   "out_speed_max" },
1056         { 56,   "measure_rate" },
1057         { 57,   "pre_Command_Wait" },
1058         { 58,   "rx_tweak1" },
1059         { 59,   "rx_tweak2" },
1060         { 60,   "tx_queue_len" },
1061
1062         { 150,  "arlan1-txRing" },
1063         { 151,  "arlan1-rxRing" },
1064         { 152,  "arlan1-18" },
1065         { 153,  "arlan1-ring" },
1066         { 154,  "arlan1-shm-cpy" },
1067         { 155,  "config1" },
1068         { 156,  "reset1" },
1069         {}
1070 };
1071
1072 static struct trans_ctl_table trans_arlan_conf_table2[] = {
1073         { 1,    "spreadingCode" },
1074         { 2,    "channelNumber" },
1075         { 3,    "scramblingDisable" },
1076         { 4,    "txAttenuation" },
1077         { 5,    "systemId" },
1078         { 6,    "maxDatagramSize" },
1079         { 7,    "maxFrameSize" },
1080         { 8,    "maxRetries" },
1081         { 9,    "receiveMode" },
1082         { 10,   "priority" },
1083         { 11,   "rootOrRepeater" },
1084         { 12,   "SID" },
1085         { 13,   "registrationMode" },
1086         { 14,   "registrationFill" },
1087         { 15,   "localTalkAddress" },
1088         { 16,   "codeFormat" },
1089         { 17,   "numChannels" },
1090         { 18,   "channel1" },
1091         { 19,   "channel2" },
1092         { 20,   "channel3" },
1093         { 21,   "channel4" },
1094         { 22,   "txClear" },
1095         { 23,   "txRetries" },
1096         { 24,   "txRouting" },
1097         { 25,   "txScrambled" },
1098         { 26,   "rxParameter" },
1099         { 27,   "txTimeoutMs" },
1100         { 28,   "waitCardTimeout" },
1101         { 29,   "channelSet" },
1102         { 30,   "name" },
1103         { 31,   "waitTime" },
1104         { 32,   "lParameter" },
1105         { 33,   "_15" },
1106         { 34,   "headerSize" },
1107         { 36,   "tx_delay_ms" },
1108         { 37,   "retries" },
1109         { 38,   "ReTransmitPacketMaxSize" },
1110         { 39,   "waitReTransmitPacketMaxSize" },
1111         { 40,   "fastReTransCount" },
1112         { 41,   "driverRetransmissions" },
1113         { 42,   "txAckTimeoutMs" },
1114         { 43,   "registrationInterrupts" },
1115         { 44,   "hardwareType" },
1116         { 45,   "radioType" },
1117         { 46,   "writeEEPROM" },
1118         { 47,   "writeRadioType" },
1119         { 48,   "entry_exit_debug" },
1120         { 49,   "debug" },
1121         { 50,   "in_speed" },
1122         { 51,   "out_speed" },
1123         { 52,   "in_speed10" },
1124         { 53,   "out_speed10" },
1125         { 54,   "in_speed_max" },
1126         { 55,   "out_speed_max" },
1127         { 56,   "measure_rate" },
1128         { 57,   "pre_Command_Wait" },
1129         { 58,   "rx_tweak1" },
1130         { 59,   "rx_tweak2" },
1131         { 60,   "tx_queue_len" },
1132
1133         { 150,  "arlan2-txRing" },
1134         { 151,  "arlan2-rxRing" },
1135         { 152,  "arlan2-18" },
1136         { 153,  "arlan2-ring" },
1137         { 154,  "arlan2-shm-cpy" },
1138         { 155,  "config2" },
1139         { 156,  "reset2" },
1140         {}
1141 };
1142
1143 static struct trans_ctl_table trans_arlan_conf_table3[] = {
1144         { 1,    "spreadingCode" },
1145         { 2,    "channelNumber" },
1146         { 3,    "scramblingDisable" },
1147         { 4,    "txAttenuation" },
1148         { 5,    "systemId" },
1149         { 6,    "maxDatagramSize" },
1150         { 7,    "maxFrameSize" },
1151         { 8,    "maxRetries" },
1152         { 9,    "receiveMode" },
1153         { 10,   "priority" },
1154         { 11,   "rootOrRepeater" },
1155         { 12,   "SID" },
1156         { 13,   "registrationMode" },
1157         { 14,   "registrationFill" },
1158         { 15,   "localTalkAddress" },
1159         { 16,   "codeFormat" },
1160         { 17,   "numChannels" },
1161         { 18,   "channel1" },
1162         { 19,   "channel2" },
1163         { 20,   "channel3" },
1164         { 21,   "channel4" },
1165         { 22,   "txClear" },
1166         { 23,   "txRetries" },
1167         { 24,   "txRouting" },
1168         { 25,   "txScrambled" },
1169         { 26,   "rxParameter" },
1170         { 27,   "txTimeoutMs" },
1171         { 28,   "waitCardTimeout" },
1172         { 29,   "channelSet" },
1173         { 30,   "name" },
1174         { 31,   "waitTime" },
1175         { 32,   "lParameter" },
1176         { 33,   "_15" },
1177         { 34,   "headerSize" },
1178         { 36,   "tx_delay_ms" },
1179         { 37,   "retries" },
1180         { 38,   "ReTransmitPacketMaxSize" },
1181         { 39,   "waitReTransmitPacketMaxSize" },
1182         { 40,   "fastReTransCount" },
1183         { 41,   "driverRetransmissions" },
1184         { 42,   "txAckTimeoutMs" },
1185         { 43,   "registrationInterrupts" },
1186         { 44,   "hardwareType" },
1187         { 45,   "radioType" },
1188         { 46,   "writeEEPROM" },
1189         { 47,   "writeRadioType" },
1190         { 48,   "entry_exit_debug" },
1191         { 49,   "debug" },
1192         { 50,   "in_speed" },
1193         { 51,   "out_speed" },
1194         { 52,   "in_speed10" },
1195         { 53,   "out_speed10" },
1196         { 54,   "in_speed_max" },
1197         { 55,   "out_speed_max" },
1198         { 56,   "measure_rate" },
1199         { 57,   "pre_Command_Wait" },
1200         { 58,   "rx_tweak1" },
1201         { 59,   "rx_tweak2" },
1202         { 60,   "tx_queue_len" },
1203
1204         { 150,  "arlan3-txRing" },
1205         { 151,  "arlan3-rxRing" },
1206         { 152,  "arlan3-18" },
1207         { 153,  "arlan3-ring" },
1208         { 154,  "arlan3-shm-cpy" },
1209         { 155,  "config3" },
1210         { 156,  "reset3" },
1211         {}
1212 };
1213
1214 static struct trans_ctl_table trans_arlan_table[] = {
1215         { 1,            "arlan0",       trans_arlan_conf_table0 },
1216         { 2,            "arlan1",       trans_arlan_conf_table1 },
1217         { 3,            "arlan2",       trans_arlan_conf_table2 },
1218         { 4,            "arlan3",       trans_arlan_conf_table3 },
1219         {}
1220 };
1221
1222 static struct trans_ctl_table trans_appldata_table[] = {
1223         { CTL_APPLDATA_TIMER,           "timer" },
1224         { CTL_APPLDATA_INTERVAL,        "interval" },
1225         { CTL_APPLDATA_OS,              "os" },
1226         { CTL_APPLDATA_NET_SUM,         "net_sum" },
1227         { CTL_APPLDATA_MEM,             "mem" },
1228         {}
1229
1230 };
1231
1232 static struct trans_ctl_table trans_s390dbf_table[] = {
1233         { 5678 /* CTL_S390DBF_STOPPABLE */,     "debug_stoppable" },
1234         { 5679 /* CTL_S390DBF_ACTIVE */,        "debug_active" },
1235         {}
1236 };
1237
1238 static struct trans_ctl_table trans_sunrpc_table[] = {
1239         { CTL_RPCDEBUG,         "rpc_debug" },
1240         { CTL_NFSDEBUG,         "nfs_debug" },
1241         { CTL_NFSDDEBUG,        "nfsd_debug" },
1242         { CTL_NLMDEBUG,         "nlm_debug" },
1243         { CTL_SLOTTABLE_UDP,    "udp_slot_table_entries" },
1244         { CTL_SLOTTABLE_TCP,    "tcp_slot_table_entries" },
1245         { CTL_MIN_RESVPORT,     "min_resvport" },
1246         { CTL_MAX_RESVPORT,     "max_resvport" },
1247         {}
1248 };
1249
1250 static struct trans_ctl_table trans_pm_table[] = {
1251         { 1 /* CTL_PM_SUSPEND */,       "suspend" },
1252         { 2 /* CTL_PM_CMODE */,         "cmode" },
1253         { 3 /* CTL_PM_P0 */,            "p0" },
1254         { 4 /* CTL_PM_CM */,            "cm" },
1255         {}
1256 };
1257
1258 static struct trans_ctl_table trans_frv_table[] = {
1259         { 1,    "cache-mode" },
1260         { 2,    "pin-cxnr" },
1261         {}
1262 };
1263
1264 static struct trans_ctl_table trans_root_table[] = {
1265         { CTL_KERN,     "kernel",       trans_kern_table },
1266         { CTL_VM,       "vm",           trans_vm_table },
1267         { CTL_NET,      "net",          trans_net_table },
1268         /* CTL_PROC not used */
1269         { CTL_FS,       "fs",           trans_fs_table },
1270         { CTL_DEBUG,    "debug",        trans_debug_table },
1271         { CTL_DEV,      "dev",          trans_dev_table },
1272         { CTL_BUS,      "bus",          trans_bus_table },
1273         { CTL_ABI,      "abi" },
1274         /* CTL_CPU not used */
1275         { CTL_ARLAN,    "arlan",        trans_arlan_table },
1276         { CTL_APPLDATA, "appldata",     trans_appldata_table },
1277         { CTL_S390DBF,  "s390dbf",      trans_s390dbf_table },
1278         { CTL_SUNRPC,   "sunrpc",       trans_sunrpc_table },
1279         { CTL_PM,       "pm",           trans_pm_table },
1280         { CTL_FRV,      "frv",          trans_frv_table },
1281         {}
1282 };
1283
1284
1285
1286
1287 static int sysctl_depth(struct ctl_table *table)
1288 {
1289         struct ctl_table *tmp;
1290         int depth;
1291
1292         depth = 0;
1293         for (tmp = table; tmp->parent; tmp = tmp->parent)
1294                 depth++;
1295
1296         return depth;
1297 }
1298
1299 static struct ctl_table *sysctl_parent(struct ctl_table *table, int n)
1300 {
1301         int i;
1302
1303         for (i = 0; table && i < n; i++)
1304                 table = table->parent;
1305
1306         return table;
1307 }
1308
1309 static struct trans_ctl_table *sysctl_binary_lookup(struct ctl_table *table)
1310 {
1311         struct ctl_table *test;
1312         struct trans_ctl_table *ref;
1313         int depth, cur_depth;
1314
1315         depth = sysctl_depth(table);
1316
1317         cur_depth = depth;
1318         ref = trans_root_table;
1319 repeat:
1320         test = sysctl_parent(table, cur_depth);
1321         for (; ref->ctl_name || ref->procname || ref->child; ref++) {
1322                 int match = 0;
1323
1324                 if (cur_depth && !ref->child)
1325                         continue;
1326
1327                 if (test->procname && ref->procname &&
1328                         (strcmp(test->procname, ref->procname) == 0))
1329                         match++;
1330
1331                 if (test->ctl_name && ref->ctl_name &&
1332                         (test->ctl_name == ref->ctl_name))
1333                         match++;
1334
1335                 if (!ref->ctl_name && !ref->procname)
1336                         match++;
1337
1338                 if (match) {
1339                         if (cur_depth != 0) {
1340                                 cur_depth--;
1341                                 ref = ref->child;
1342                                 goto repeat;
1343                         }
1344                         goto out;
1345                 }
1346         }
1347         ref = NULL;
1348 out:
1349         return ref;
1350 }
1351
1352 static void sysctl_print_path(struct ctl_table *table)
1353 {
1354         struct ctl_table *tmp;
1355         int depth, i;
1356         depth = sysctl_depth(table);
1357         if (table->procname) {
1358                 for (i = depth; i >= 0; i--) {
1359                         tmp = sysctl_parent(table, i);
1360                         printk("/%s", tmp->procname?tmp->procname:"");
1361                 }
1362         }
1363         printk(" ");
1364         if (table->ctl_name) {
1365                 for (i = depth; i >= 0; i--) {
1366                         tmp = sysctl_parent(table, i);
1367                         printk(".%d", tmp->ctl_name);
1368                 }
1369         }
1370 }
1371
1372 static void sysctl_repair_table(struct ctl_table *table)
1373 {
1374         /* Don't complain about the classic default
1375          * sysctl strategy routine.  Maybe later we
1376          * can get the tables fixed and complain about
1377          * this.
1378          */
1379         if (table->ctl_name && table->procname &&
1380                 (table->proc_handler == proc_dointvec) &&
1381                 (!table->strategy)) {
1382                 table->strategy = sysctl_data;
1383         }
1384 }
1385
1386 static struct ctl_table *sysctl_check_lookup(struct ctl_table *table)
1387 {
1388         struct ctl_table_header *head;
1389         struct ctl_table *ref, *test;
1390         int depth, cur_depth;
1391
1392         depth = sysctl_depth(table);
1393
1394         for (head = sysctl_head_next(NULL); head;
1395              head = sysctl_head_next(head)) {
1396                 cur_depth = depth;
1397                 ref = head->ctl_table;
1398 repeat:
1399                 test = sysctl_parent(table, cur_depth);
1400                 for (; ref->ctl_name || ref->procname; ref++) {
1401                         int match = 0;
1402                         if (cur_depth && !ref->child)
1403                                 continue;
1404
1405                         if (test->procname && ref->procname &&
1406                             (strcmp(test->procname, ref->procname) == 0))
1407                                         match++;
1408
1409                         if (test->ctl_name && ref->ctl_name &&
1410                             (test->ctl_name == ref->ctl_name))
1411                                 match++;
1412
1413                         if (match) {
1414                                 if (cur_depth != 0) {
1415                                         cur_depth--;
1416                                         ref = ref->child;
1417                                         goto repeat;
1418                                 }
1419                                 goto out;
1420                         }
1421                 }
1422         }
1423         ref = NULL;
1424 out:
1425         sysctl_head_finish(head);
1426         return ref;
1427 }
1428
1429 static void set_fail(const char **fail, struct ctl_table *table, const char *str)
1430 {
1431         if (*fail) {
1432                 printk(KERN_ERR "sysctl table check failed: ");
1433                 sysctl_print_path(table);
1434                 printk(" %s\n", *fail);
1435                 dump_stack();
1436         }
1437         *fail = str;
1438 }
1439
1440 static int sysctl_check_dir(struct ctl_table *table)
1441 {
1442         struct ctl_table *ref;
1443         int error;
1444
1445         error = 0;
1446         ref = sysctl_check_lookup(table);
1447         if (ref) {
1448                 int match = 0;
1449                 if ((!table->procname && !ref->procname) ||
1450                     (table->procname && ref->procname &&
1451                      (strcmp(table->procname, ref->procname) == 0)))
1452                         match++;
1453
1454                 if ((!table->ctl_name && !ref->ctl_name) ||
1455                     (table->ctl_name && ref->ctl_name &&
1456                      (table->ctl_name == ref->ctl_name)))
1457                         match++;
1458
1459                 if (match != 2) {
1460                         printk(KERN_ERR "%s: failed: ", __func__);
1461                         sysctl_print_path(table);
1462                         printk(" ref: ");
1463                         sysctl_print_path(ref);
1464                         printk("\n");
1465                         error = -EINVAL;
1466                 }
1467         }
1468         return error;
1469 }
1470
1471 static void sysctl_check_leaf(struct ctl_table *table, const char **fail)
1472 {
1473         struct ctl_table *ref;
1474
1475         ref = sysctl_check_lookup(table);
1476         if (ref && (ref != table))
1477                 set_fail(fail, table, "Sysctl already exists");
1478 }
1479
1480 static void sysctl_check_bin_path(struct ctl_table *table, const char **fail)
1481 {
1482         struct trans_ctl_table *ref;
1483
1484         ref = sysctl_binary_lookup(table);
1485         if (table->ctl_name && !ref)
1486                 set_fail(fail, table, "Unknown sysctl binary path");
1487         if (ref) {
1488                 if (ref->procname &&
1489                     (!table->procname ||
1490                      (strcmp(table->procname, ref->procname) != 0)))
1491                         set_fail(fail, table, "procname does not match binary path procname");
1492
1493                 if (ref->ctl_name && table->ctl_name &&
1494                     (table->ctl_name != ref->ctl_name))
1495                         set_fail(fail, table, "ctl_name does not match binary path ctl_name");
1496         }
1497 }
1498
1499 int sysctl_check_table(struct ctl_table *table)
1500 {
1501         int error = 0;
1502         for (; table->ctl_name || table->procname; table++) {
1503                 const char *fail = NULL;
1504
1505                 sysctl_repair_table(table);
1506                 if (table->parent) {
1507                         if (table->procname && !table->parent->procname)
1508                                 set_fail(&fail, table, "Parent without procname");
1509                         if (table->ctl_name && !table->parent->ctl_name)
1510                                 set_fail(&fail, table, "Parent without ctl_name");
1511                 }
1512                 if (!table->procname)
1513                         set_fail(&fail, table, "No procname");
1514                 if (table->child) {
1515                         if (table->data)
1516                                 set_fail(&fail, table, "Directory with data?");
1517                         if (table->maxlen)
1518                                 set_fail(&fail, table, "Directory with maxlen?");
1519                         if ((table->mode & (S_IRUGO|S_IXUGO)) != table->mode)
1520                                 set_fail(&fail, table, "Writable sysctl directory");
1521                         if (table->proc_handler)
1522                                 set_fail(&fail, table, "Directory with proc_handler");
1523                         if (table->strategy)
1524                                 set_fail(&fail, table, "Directory with strategy");
1525                         if (table->extra1)
1526                                 set_fail(&fail, table, "Directory with extra1");
1527                         if (table->extra2)
1528                                 set_fail(&fail, table, "Directory with extra2");
1529                         if (sysctl_check_dir(table))
1530                                 set_fail(&fail, table, "Inconsistent directory names");
1531                 } else {
1532                         if ((table->strategy == sysctl_data) ||
1533                             (table->strategy == sysctl_string) ||
1534                             (table->strategy == sysctl_intvec) ||
1535                             (table->strategy == sysctl_jiffies) ||
1536                             (table->strategy == sysctl_ms_jiffies) ||
1537                             (table->proc_handler == proc_dostring) ||
1538                             (table->proc_handler == proc_dointvec) ||
1539 #ifdef CONFIG_SECURITY_CAPABILITIES
1540                             (table->proc_handler == proc_dointvec_bset) ||
1541 #endif /* def CONFIG_SECURITY_CAPABILITIES */
1542                             (table->proc_handler == proc_dointvec_minmax) ||
1543                             (table->proc_handler == proc_dointvec_jiffies) ||
1544                             (table->proc_handler == proc_dointvec_userhz_jiffies) ||
1545                             (table->proc_handler == proc_dointvec_ms_jiffies) ||
1546                             (table->proc_handler == proc_doulongvec_minmax) ||
1547                             (table->proc_handler == proc_doulongvec_ms_jiffies_minmax)) {
1548                                 if (!table->data)
1549                                         set_fail(&fail, table, "No data");
1550                                 if (!table->maxlen)
1551                                         set_fail(&fail, table, "No maxlen");
1552                         }
1553                         if ((table->proc_handler == proc_doulongvec_minmax) ||
1554                             (table->proc_handler == proc_doulongvec_ms_jiffies_minmax)) {
1555                                 if (table->maxlen > sizeof (unsigned long)) {
1556                                         if (!table->extra1)
1557                                                 set_fail(&fail, table, "No min");
1558                                         if (!table->extra2)
1559                                                 set_fail(&fail, table, "No max");
1560                                 }
1561                         }
1562 #ifdef CONFIG_SYSCTL_SYSCALL
1563                         if (table->ctl_name && !table->strategy)
1564                                 set_fail(&fail, table, "Missing strategy");
1565 #endif
1566 #if 0
1567                         if (!table->ctl_name && table->strategy)
1568                                 set_fail(&fail, table, "Strategy without ctl_name");
1569 #endif
1570 #ifdef CONFIG_PROC_FS
1571                         if (table->procname && !table->proc_handler)
1572                                 set_fail(&fail, table, "No proc_handler");
1573 #endif
1574 #if 0
1575                         if (!table->procname && table->proc_handler)
1576                                 set_fail(&fail, table, "proc_handler without procname");
1577 #endif
1578                         sysctl_check_leaf(table, &fail);
1579                 }
1580                 sysctl_check_bin_path(table, &fail);
1581                 if (fail) {
1582                         set_fail(&fail, table, NULL);
1583                         error = -EINVAL;
1584                 }
1585                 if (table->child)
1586                         error |= sysctl_check_table(table->child);
1587         }
1588         return error;
1589 }