1590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo/* 2590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo * sysctl_net_llc.c: sysctl interface to LLC net subsystem. 3d57b1869b231c56de441db35c647879d51c5d29eYOSHIFUJI Hideaki * 4590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo * Arnaldo Carvalho de Melo <acme@conectiva.com.br> 5590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo */ 6590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo 7590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo#include <linux/mm.h> 8590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo#include <linux/init.h> 9590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo#include <linux/sysctl.h> 105dd3df105b9f6cb7dd2472b59e028d0d1c878ecbEric W. Biederman#include <net/net_namespace.h> 112928c19e1086e2f1e90d05931437ab6f1e4cfdc8Arnaldo Carvalho de Melo#include <net/llc.h> 12590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo 13590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo#ifndef CONFIG_SYSCTL 14590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo#error This file should not be compiled without CONFIG_SYSCTL defined 15590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo#endif 16590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo 17590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melostatic struct ctl_table llc2_timeout_table[] = { 18590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo { 19590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .procname = "ack", 20590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .data = &sysctl_llc2_ack_timeout, 21590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .maxlen = sizeof(long), 22590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .mode = 0644, 236d9f239a1edb31d6133230f478fd1dc2da338ec5Alexey Dobriyan .proc_handler = proc_dointvec_jiffies, 24590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo }, 25590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo { 26590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .procname = "busy", 27590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .data = &sysctl_llc2_busy_timeout, 28590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .maxlen = sizeof(long), 29590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .mode = 0644, 306d9f239a1edb31d6133230f478fd1dc2da338ec5Alexey Dobriyan .proc_handler = proc_dointvec_jiffies, 31590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo }, 32590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo { 33590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .procname = "p", 34590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .data = &sysctl_llc2_p_timeout, 35590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .maxlen = sizeof(long), 36590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .mode = 0644, 376d9f239a1edb31d6133230f478fd1dc2da338ec5Alexey Dobriyan .proc_handler = proc_dointvec_jiffies, 38590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo }, 39590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo { 40590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .procname = "rej", 41590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .data = &sysctl_llc2_rej_timeout, 42590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .maxlen = sizeof(long), 43590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo .mode = 0644, 446d9f239a1edb31d6133230f478fd1dc2da338ec5Alexey Dobriyan .proc_handler = proc_dointvec_jiffies, 45590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo }, 46f8572d8f2a2ba75408b97dc24ef47c83671795d7Eric W. Biederman { }, 47590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo}; 48590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo 49590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melostatic struct ctl_table llc_station_table[] = { 50f8572d8f2a2ba75408b97dc24ef47c83671795d7Eric W. Biederman { }, 51590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo}; 52590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo 5364fb3010400f6051261be9c5c74f29de416dad8fEric W. Biedermanstatic struct ctl_table_header *llc2_timeout_header; 5464fb3010400f6051261be9c5c74f29de416dad8fEric W. Biedermanstatic struct ctl_table_header *llc_station_header; 55590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo 56590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Meloint __init llc_sysctl_init(void) 57590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo{ 5864fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman llc2_timeout_header = register_net_sysctl(&init_net, "net/llc/llc2/timeout", llc2_timeout_table); 5964fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman llc_station_header = register_net_sysctl(&init_net, "net/llc/station", llc_station_table); 60590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo 6164fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman if (!llc2_timeout_header || !llc_station_header) { 6264fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman llc_sysctl_exit(); 6364fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman return -ENOMEM; 6464fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman } 6564fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman return 0; 66590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo} 67590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo 68590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melovoid llc_sysctl_exit(void) 69590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo{ 7064fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman if (llc2_timeout_header) { 7164fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman unregister_net_sysctl_table(llc2_timeout_header); 7264fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman llc2_timeout_header = NULL; 7364fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman } 7464fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman if (llc_station_header) { 7564fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman unregister_net_sysctl_table(llc_station_header); 7664fb3010400f6051261be9c5c74f29de416dad8fEric W. Biederman llc_station_header = NULL; 77590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo } 78590232a7150674b2036291eaefce085f3f9659c8Arnaldo Carvalho de Melo} 79