Commit | Line | Data |
---|---|---|
590232a7 ACM |
1 | /* |
2 | * sysctl_net_llc.c: sysctl interface to LLC net subsystem. | |
d57b1869 | 3 | * |
590232a7 ACM |
4 | * Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
5 | */ | |
6 | ||
590232a7 ACM |
7 | #include <linux/mm.h> |
8 | #include <linux/init.h> | |
9 | #include <linux/sysctl.h> | |
5dd3df10 | 10 | #include <net/net_namespace.h> |
2928c19e | 11 | #include <net/llc.h> |
590232a7 ACM |
12 | |
13 | #ifndef CONFIG_SYSCTL | |
14 | #error This file should not be compiled without CONFIG_SYSCTL defined | |
15 | #endif | |
16 | ||
590232a7 ACM |
17 | static struct ctl_table llc2_timeout_table[] = { |
18 | { | |
590232a7 ACM |
19 | .procname = "ack", |
20 | .data = &sysctl_llc2_ack_timeout, | |
21 | .maxlen = sizeof(long), | |
22 | .mode = 0644, | |
6d9f239a | 23 | .proc_handler = proc_dointvec_jiffies, |
590232a7 ACM |
24 | }, |
25 | { | |
590232a7 ACM |
26 | .procname = "busy", |
27 | .data = &sysctl_llc2_busy_timeout, | |
28 | .maxlen = sizeof(long), | |
29 | .mode = 0644, | |
6d9f239a | 30 | .proc_handler = proc_dointvec_jiffies, |
590232a7 ACM |
31 | }, |
32 | { | |
590232a7 ACM |
33 | .procname = "p", |
34 | .data = &sysctl_llc2_p_timeout, | |
35 | .maxlen = sizeof(long), | |
36 | .mode = 0644, | |
6d9f239a | 37 | .proc_handler = proc_dointvec_jiffies, |
590232a7 ACM |
38 | }, |
39 | { | |
590232a7 ACM |
40 | .procname = "rej", |
41 | .data = &sysctl_llc2_rej_timeout, | |
42 | .maxlen = sizeof(long), | |
43 | .mode = 0644, | |
6d9f239a | 44 | .proc_handler = proc_dointvec_jiffies, |
590232a7 | 45 | }, |
f8572d8f | 46 | { }, |
590232a7 ACM |
47 | }; |
48 | ||
49 | static struct ctl_table llc_station_table[] = { | |
50 | { | |
590232a7 ACM |
51 | .procname = "ack_timeout", |
52 | .data = &sysctl_llc_station_ack_timeout, | |
53 | .maxlen = sizeof(long), | |
54 | .mode = 0644, | |
6d9f239a | 55 | .proc_handler = proc_dointvec_jiffies, |
590232a7 | 56 | }, |
f8572d8f | 57 | { }, |
590232a7 ACM |
58 | }; |
59 | ||
60 | static struct ctl_table llc2_dir_timeout_table[] = { | |
61 | { | |
590232a7 ACM |
62 | .procname = "timeout", |
63 | .mode = 0555, | |
64 | .child = llc2_timeout_table, | |
d57b1869 | 65 | }, |
f8572d8f | 66 | { }, |
590232a7 ACM |
67 | }; |
68 | ||
69 | static struct ctl_table llc_table[] = { | |
70 | { | |
590232a7 ACM |
71 | .procname = "llc2", |
72 | .mode = 0555, | |
73 | .child = llc2_dir_timeout_table, | |
d57b1869 | 74 | }, |
590232a7 | 75 | { |
590232a7 ACM |
76 | .procname = "station", |
77 | .mode = 0555, | |
78 | .child = llc_station_table, | |
79 | }, | |
f8572d8f | 80 | { }, |
590232a7 ACM |
81 | }; |
82 | ||
b5ccd792 | 83 | static struct ctl_path llc_path[] = { |
f8572d8f EB |
84 | { .procname = "net", }, |
85 | { .procname = "llc", }, | |
b5ccd792 | 86 | { } |
590232a7 ACM |
87 | }; |
88 | ||
89 | static struct ctl_table_header *llc_table_header; | |
90 | ||
91 | int __init llc_sysctl_init(void) | |
92 | { | |
5dd3df10 | 93 | llc_table_header = register_net_sysctl_table(&init_net, llc_path, llc_table); |
590232a7 ACM |
94 | |
95 | return llc_table_header ? 0 : -ENOMEM; | |
96 | } | |
97 | ||
98 | void llc_sysctl_exit(void) | |
99 | { | |
100 | if (llc_table_header) { | |
5dd3df10 | 101 | unregister_net_sysctl_table(llc_table_header); |
590232a7 ACM |
102 | llc_table_header = NULL; |
103 | } | |
104 | } |