1 // SPDX-License-Identifier: GPL-2.0-or-later 1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 2 /* 3 * 3 * 4 * Copyright (C) 1996 Mike Shaver (shaver@zero 4 * Copyright (C) 1996 Mike Shaver (shaver@zeroknowledge.com) 5 */ 5 */ 6 #include <linux/mm.h> 6 #include <linux/mm.h> 7 #include <linux/sysctl.h> 7 #include <linux/sysctl.h> 8 #include <linux/init.h> 8 #include <linux/init.h> 9 #include <net/ax25.h> 9 #include <net/ax25.h> 10 #include <net/rose.h> 10 #include <net/rose.h> 11 11 12 static int min_timer[] = {1 * HZ}; 12 static int min_timer[] = {1 * HZ}; 13 static int max_timer[] = {300 * HZ}; 13 static int max_timer[] = {300 * HZ}; 14 static int min_idle[] = {0 * HZ}; 14 static int min_idle[] = {0 * HZ}; 15 static int max_idle[] = {65535 * HZ}; 15 static int max_idle[] = {65535 * HZ}; 16 static int min_route[1], max_route[] = { 16 static int min_route[1], max_route[] = {1}; 17 static int min_ftimer[] = {60 * HZ}; 17 static int min_ftimer[] = {60 * HZ}; 18 static int max_ftimer[] = {600 * HZ}; 18 static int max_ftimer[] = {600 * HZ}; 19 static int min_maxvcs[] = {1}, max_maxvcs[] = 19 static int min_maxvcs[] = {1}, max_maxvcs[] = {254}; 20 static int min_window[] = {1}, max_window[] = 20 static int min_window[] = {1}, max_window[] = {7}; 21 21 22 static struct ctl_table_header *rose_table_hea 22 static struct ctl_table_header *rose_table_header; 23 23 24 static struct ctl_table rose_table[] = { 24 static struct ctl_table rose_table[] = { 25 { 25 { 26 .procname = "restart_req 26 .procname = "restart_request_timeout", 27 .data = &sysctl_rose 27 .data = &sysctl_rose_restart_request_timeout, 28 .maxlen = sizeof(int), 28 .maxlen = sizeof(int), 29 .mode = 0644, 29 .mode = 0644, 30 .proc_handler = proc_dointve 30 .proc_handler = proc_dointvec_minmax, 31 .extra1 = &min_timer, 31 .extra1 = &min_timer, 32 .extra2 = &max_timer 32 .extra2 = &max_timer 33 }, 33 }, 34 { 34 { 35 .procname = "call_reques 35 .procname = "call_request_timeout", 36 .data = &sysctl_rose 36 .data = &sysctl_rose_call_request_timeout, 37 .maxlen = sizeof(int), 37 .maxlen = sizeof(int), 38 .mode = 0644, 38 .mode = 0644, 39 .proc_handler = proc_dointve 39 .proc_handler = proc_dointvec_minmax, 40 .extra1 = &min_timer, 40 .extra1 = &min_timer, 41 .extra2 = &max_timer 41 .extra2 = &max_timer 42 }, 42 }, 43 { 43 { 44 .procname = "reset_reque 44 .procname = "reset_request_timeout", 45 .data = &sysctl_rose 45 .data = &sysctl_rose_reset_request_timeout, 46 .maxlen = sizeof(int), 46 .maxlen = sizeof(int), 47 .mode = 0644, 47 .mode = 0644, 48 .proc_handler = proc_dointve 48 .proc_handler = proc_dointvec_minmax, 49 .extra1 = &min_timer, 49 .extra1 = &min_timer, 50 .extra2 = &max_timer 50 .extra2 = &max_timer 51 }, 51 }, 52 { 52 { 53 .procname = "clear_reque 53 .procname = "clear_request_timeout", 54 .data = &sysctl_rose 54 .data = &sysctl_rose_clear_request_timeout, 55 .maxlen = sizeof(int), 55 .maxlen = sizeof(int), 56 .mode = 0644, 56 .mode = 0644, 57 .proc_handler = proc_dointve 57 .proc_handler = proc_dointvec_minmax, 58 .extra1 = &min_timer, 58 .extra1 = &min_timer, 59 .extra2 = &max_timer 59 .extra2 = &max_timer 60 }, 60 }, 61 { 61 { 62 .procname = "no_activity 62 .procname = "no_activity_timeout", 63 .data = &sysctl_rose 63 .data = &sysctl_rose_no_activity_timeout, 64 .maxlen = sizeof(int), 64 .maxlen = sizeof(int), 65 .mode = 0644, 65 .mode = 0644, 66 .proc_handler = proc_dointve 66 .proc_handler = proc_dointvec_minmax, 67 .extra1 = &min_idle, 67 .extra1 = &min_idle, 68 .extra2 = &max_idle 68 .extra2 = &max_idle 69 }, 69 }, 70 { 70 { 71 .procname = "acknowledge 71 .procname = "acknowledge_hold_back_timeout", 72 .data = &sysctl_rose 72 .data = &sysctl_rose_ack_hold_back_timeout, 73 .maxlen = sizeof(int), 73 .maxlen = sizeof(int), 74 .mode = 0644, 74 .mode = 0644, 75 .proc_handler = proc_dointve 75 .proc_handler = proc_dointvec_minmax, 76 .extra1 = &min_timer, 76 .extra1 = &min_timer, 77 .extra2 = &max_timer 77 .extra2 = &max_timer 78 }, 78 }, 79 { 79 { 80 .procname = "routing_con 80 .procname = "routing_control", 81 .data = &sysctl_rose 81 .data = &sysctl_rose_routing_control, 82 .maxlen = sizeof(int), 82 .maxlen = sizeof(int), 83 .mode = 0644, 83 .mode = 0644, 84 .proc_handler = proc_dointve 84 .proc_handler = proc_dointvec_minmax, 85 .extra1 = &min_route, 85 .extra1 = &min_route, 86 .extra2 = &max_route 86 .extra2 = &max_route 87 }, 87 }, 88 { 88 { 89 .procname = "link_fail_t 89 .procname = "link_fail_timeout", 90 .data = &sysctl_rose 90 .data = &sysctl_rose_link_fail_timeout, 91 .maxlen = sizeof(int), 91 .maxlen = sizeof(int), 92 .mode = 0644, 92 .mode = 0644, 93 .proc_handler = proc_dointve 93 .proc_handler = proc_dointvec_minmax, 94 .extra1 = &min_ftimer, 94 .extra1 = &min_ftimer, 95 .extra2 = &max_ftimer 95 .extra2 = &max_ftimer 96 }, 96 }, 97 { 97 { 98 .procname = "maximum_vir 98 .procname = "maximum_virtual_circuits", 99 .data = &sysctl_rose 99 .data = &sysctl_rose_maximum_vcs, 100 .maxlen = sizeof(int), 100 .maxlen = sizeof(int), 101 .mode = 0644, 101 .mode = 0644, 102 .proc_handler = proc_dointve 102 .proc_handler = proc_dointvec_minmax, 103 .extra1 = &min_maxvcs, 103 .extra1 = &min_maxvcs, 104 .extra2 = &max_maxvcs 104 .extra2 = &max_maxvcs 105 }, 105 }, 106 { 106 { 107 .procname = "window_size 107 .procname = "window_size", 108 .data = &sysctl_rose 108 .data = &sysctl_rose_window_size, 109 .maxlen = sizeof(int), 109 .maxlen = sizeof(int), 110 .mode = 0644, 110 .mode = 0644, 111 .proc_handler = proc_dointve 111 .proc_handler = proc_dointvec_minmax, 112 .extra1 = &min_window, 112 .extra1 = &min_window, 113 .extra2 = &max_window 113 .extra2 = &max_window 114 }, 114 }, 115 }; 115 }; 116 116 117 void __init rose_register_sysctl(void) 117 void __init rose_register_sysctl(void) 118 { 118 { 119 rose_table_header = register_net_sysct 119 rose_table_header = register_net_sysctl(&init_net, "net/rose", rose_table); 120 } 120 } 121 121 122 void rose_unregister_sysctl(void) 122 void rose_unregister_sysctl(void) 123 { 123 { 124 unregister_net_sysctl_table(rose_table 124 unregister_net_sysctl_table(rose_table_header); 125 } 125 } 126 126
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.