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