sysctl_net_netrom.c 5.4 KB

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