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