]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | // SPDX-License-Identifier: GPL-2.0 |
590232a7 ACM |
2 | /* |
3 | * sysctl_net_llc.c: sysctl interface to LLC net subsystem. | |
d57b1869 | 4 | * |
590232a7 ACM |
5 | * Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
6 | */ | |
7 | ||
590232a7 ACM |
8 | #include <linux/mm.h> |
9 | #include <linux/init.h> | |
10 | #include <linux/sysctl.h> | |
5dd3df10 | 11 | #include <net/net_namespace.h> |
2928c19e | 12 | #include <net/llc.h> |
590232a7 ACM |
13 | |
14 | #ifndef CONFIG_SYSCTL | |
15 | #error This file should not be compiled without CONFIG_SYSCTL defined | |
16 | #endif | |
17 | ||
590232a7 ACM |
18 | static struct ctl_table llc2_timeout_table[] = { |
19 | { | |
590232a7 ACM |
20 | .procname = "ack", |
21 | .data = &sysctl_llc2_ack_timeout, | |
6b8d9117 | 22 | .maxlen = sizeof(sysctl_llc2_ack_timeout), |
590232a7 | 23 | .mode = 0644, |
6d9f239a | 24 | .proc_handler = proc_dointvec_jiffies, |
590232a7 ACM |
25 | }, |
26 | { | |
590232a7 ACM |
27 | .procname = "busy", |
28 | .data = &sysctl_llc2_busy_timeout, | |
6b8d9117 | 29 | .maxlen = sizeof(sysctl_llc2_busy_timeout), |
590232a7 | 30 | .mode = 0644, |
6d9f239a | 31 | .proc_handler = proc_dointvec_jiffies, |
590232a7 ACM |
32 | }, |
33 | { | |
590232a7 ACM |
34 | .procname = "p", |
35 | .data = &sysctl_llc2_p_timeout, | |
6b8d9117 | 36 | .maxlen = sizeof(sysctl_llc2_p_timeout), |
590232a7 | 37 | .mode = 0644, |
6d9f239a | 38 | .proc_handler = proc_dointvec_jiffies, |
590232a7 ACM |
39 | }, |
40 | { | |
590232a7 ACM |
41 | .procname = "rej", |
42 | .data = &sysctl_llc2_rej_timeout, | |
6b8d9117 | 43 | .maxlen = sizeof(sysctl_llc2_rej_timeout), |
590232a7 | 44 | .mode = 0644, |
6d9f239a | 45 | .proc_handler = proc_dointvec_jiffies, |
590232a7 | 46 | }, |
f8572d8f | 47 | { }, |
590232a7 ACM |
48 | }; |
49 | ||
50 | static struct ctl_table llc_station_table[] = { | |
f8572d8f | 51 | { }, |
590232a7 ACM |
52 | }; |
53 | ||
64fb3010 EB |
54 | static struct ctl_table_header *llc2_timeout_header; |
55 | static struct ctl_table_header *llc_station_header; | |
590232a7 ACM |
56 | |
57 | int __init llc_sysctl_init(void) | |
58 | { | |
64fb3010 EB |
59 | llc2_timeout_header = register_net_sysctl(&init_net, "net/llc/llc2/timeout", llc2_timeout_table); |
60 | llc_station_header = register_net_sysctl(&init_net, "net/llc/station", llc_station_table); | |
590232a7 | 61 | |
64fb3010 EB |
62 | if (!llc2_timeout_header || !llc_station_header) { |
63 | llc_sysctl_exit(); | |
64 | return -ENOMEM; | |
65 | } | |
66 | return 0; | |
590232a7 ACM |
67 | } |
68 | ||
69 | void llc_sysctl_exit(void) | |
70 | { | |
64fb3010 EB |
71 | if (llc2_timeout_header) { |
72 | unregister_net_sysctl_table(llc2_timeout_header); | |
73 | llc2_timeout_header = NULL; | |
74 | } | |
75 | if (llc_station_header) { | |
76 | unregister_net_sysctl_table(llc_station_header); | |
77 | llc_station_header = NULL; | |
590232a7 ACM |
78 | } |
79 | } |