sysctl_net_netrom.c 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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/netrom.h>
  14. /*
  15. * Values taken from NET/ROM documentation.
  16. */
  17. static int min_quality[] = {0}, max_quality[] = {255};
  18. static int min_obs[] = {0}, max_obs[] = {255};
  19. static int min_ttl[] = {0}, max_ttl[] = {255};
  20. static int min_t1[] = {5 * HZ};
  21. static int max_t1[] = {600 * HZ};
  22. static int min_n2[] = {2}, max_n2[] = {127};
  23. static int min_t2[] = {1 * HZ};
  24. static int max_t2[] = {60 * HZ};
  25. static int min_t4[] = {1 * HZ};
  26. static int max_t4[] = {1000 * HZ};
  27. static int min_window[] = {1}, max_window[] = {127};
  28. static int min_idle[] = {0 * HZ};
  29. static int max_idle[] = {65535 * HZ};
  30. static int min_route[] = {0}, max_route[] = {1};
  31. static int min_fails[] = {1}, max_fails[] = {10};
  32. static struct ctl_table_header *nr_table_header;
  33. static ctl_table nr_table[] = {
  34. {
  35. .ctl_name = NET_NETROM_DEFAULT_PATH_QUALITY,
  36. .procname = "default_path_quality",
  37. .data = &sysctl_netrom_default_path_quality,
  38. .maxlen = sizeof(int),
  39. .mode = 0644,
  40. .proc_handler = &proc_dointvec_minmax,
  41. .strategy = &sysctl_intvec,
  42. .extra1 = &min_quality,
  43. .extra2 = &max_quality
  44. },
  45. {
  46. .ctl_name = NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER,
  47. .procname = "obsolescence_count_initialiser",
  48. .data = &sysctl_netrom_obsolescence_count_initialiser,
  49. .maxlen = sizeof(int),
  50. .mode = 0644,
  51. .proc_handler = &proc_dointvec_minmax,
  52. .strategy = &sysctl_intvec,
  53. .extra1 = &min_obs,
  54. .extra2 = &max_obs
  55. },
  56. {
  57. .ctl_name = NET_NETROM_NETWORK_TTL_INITIALISER,
  58. .procname = "network_ttl_initialiser",
  59. .data = &sysctl_netrom_network_ttl_initialiser,
  60. .maxlen = sizeof(int),
  61. .mode = 0644,
  62. .proc_handler = &proc_dointvec_minmax,
  63. .strategy = &sysctl_intvec,
  64. .extra1 = &min_ttl,
  65. .extra2 = &max_ttl
  66. },
  67. {
  68. .ctl_name = NET_NETROM_TRANSPORT_TIMEOUT,
  69. .procname = "transport_timeout",
  70. .data = &sysctl_netrom_transport_timeout,
  71. .maxlen = sizeof(int),
  72. .mode = 0644,
  73. .proc_handler = &proc_dointvec_minmax,
  74. .strategy = &sysctl_intvec,
  75. .extra1 = &min_t1,
  76. .extra2 = &max_t1
  77. },
  78. {
  79. .ctl_name = NET_NETROM_TRANSPORT_MAXIMUM_TRIES,
  80. .procname = "transport_maximum_tries",
  81. .data = &sysctl_netrom_transport_maximum_tries,
  82. .maxlen = sizeof(int),
  83. .mode = 0644,
  84. .proc_handler = &proc_dointvec_minmax,
  85. .strategy = &sysctl_intvec,
  86. .extra1 = &min_n2,
  87. .extra2 = &max_n2
  88. },
  89. {
  90. .ctl_name = NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY,
  91. .procname = "transport_acknowledge_delay",
  92. .data = &sysctl_netrom_transport_acknowledge_delay,
  93. .maxlen = sizeof(int),
  94. .mode = 0644,
  95. .proc_handler = &proc_dointvec_minmax,
  96. .strategy = &sysctl_intvec,
  97. .extra1 = &min_t2,
  98. .extra2 = &max_t2
  99. },
  100. {
  101. .ctl_name = NET_NETROM_TRANSPORT_BUSY_DELAY,
  102. .procname = "transport_busy_delay",
  103. .data = &sysctl_netrom_transport_busy_delay,
  104. .maxlen = sizeof(int),
  105. .mode = 0644,
  106. .proc_handler = &proc_dointvec_minmax,
  107. .strategy = &sysctl_intvec,
  108. .extra1 = &min_t4,
  109. .extra2 = &max_t4
  110. },
  111. {
  112. .ctl_name = NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE,
  113. .procname = "transport_requested_window_size",
  114. .data = &sysctl_netrom_transport_requested_window_size,
  115. .maxlen = sizeof(int),
  116. .mode = 0644,
  117. .proc_handler = &proc_dointvec_minmax,
  118. .strategy = &sysctl_intvec,
  119. .extra1 = &min_window,
  120. .extra2 = &max_window
  121. },
  122. {
  123. .ctl_name = NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT,
  124. .procname = "transport_no_activity_timeout",
  125. .data = &sysctl_netrom_transport_no_activity_timeout,
  126. .maxlen = sizeof(int),
  127. .mode = 0644,
  128. .proc_handler = &proc_dointvec_minmax,
  129. .strategy = &sysctl_intvec,
  130. .extra1 = &min_idle,
  131. .extra2 = &max_idle
  132. },
  133. {
  134. .ctl_name = NET_NETROM_ROUTING_CONTROL,
  135. .procname = "routing_control",
  136. .data = &sysctl_netrom_routing_control,
  137. .maxlen = sizeof(int),
  138. .mode = 0644,
  139. .proc_handler = &proc_dointvec_minmax,
  140. .strategy = &sysctl_intvec,
  141. .extra1 = &min_route,
  142. .extra2 = &max_route
  143. },
  144. {
  145. .ctl_name = NET_NETROM_LINK_FAILS_COUNT,
  146. .procname = "link_fails_count",
  147. .data = &sysctl_netrom_link_fails_count,
  148. .maxlen = sizeof(int),
  149. .mode = 0644,
  150. .proc_handler = &proc_dointvec_minmax,
  151. .strategy = &sysctl_intvec,
  152. .extra1 = &min_fails,
  153. .extra2 = &max_fails
  154. },
  155. { .ctl_name = 0 }
  156. };
  157. static ctl_table nr_dir_table[] = {
  158. {
  159. .ctl_name = NET_NETROM,
  160. .procname = "netrom",
  161. .mode = 0555,
  162. .child = nr_table
  163. },
  164. { .ctl_name = 0 }
  165. };
  166. static ctl_table nr_root_table[] = {
  167. {
  168. .ctl_name = CTL_NET,
  169. .procname = "net",
  170. .mode = 0555,
  171. .child = nr_dir_table
  172. },
  173. { .ctl_name = 0 }
  174. };
  175. void __init nr_register_sysctl(void)
  176. {
  177. nr_table_header = register_sysctl_table(nr_root_table, 1);
  178. }
  179. void nr_unregister_sysctl(void)
  180. {
  181. unregister_sysctl_table(nr_table_header);
  182. }