sysctl_net_rose.c 3.1 KB

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