sysctl_net_llc.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*
  2. * sysctl_net_llc.c: sysctl interface to LLC net subsystem.
  3. *
  4. * Arnaldo Carvalho de Melo <acme@conectiva.com.br>
  5. */
  6. #include <linux/mm.h>
  7. #include <linux/init.h>
  8. #include <linux/sysctl.h>
  9. #include <net/net_namespace.h>
  10. #include <net/llc.h>
  11. #ifndef CONFIG_SYSCTL
  12. #error This file should not be compiled without CONFIG_SYSCTL defined
  13. #endif
  14. static struct ctl_table llc2_timeout_table[] = {
  15. {
  16. .procname = "ack",
  17. .data = &sysctl_llc2_ack_timeout,
  18. .maxlen = sizeof(sysctl_llc2_ack_timeout),
  19. .mode = 0644,
  20. .proc_handler = proc_dointvec_jiffies,
  21. },
  22. {
  23. .procname = "busy",
  24. .data = &sysctl_llc2_busy_timeout,
  25. .maxlen = sizeof(sysctl_llc2_busy_timeout),
  26. .mode = 0644,
  27. .proc_handler = proc_dointvec_jiffies,
  28. },
  29. {
  30. .procname = "p",
  31. .data = &sysctl_llc2_p_timeout,
  32. .maxlen = sizeof(sysctl_llc2_p_timeout),
  33. .mode = 0644,
  34. .proc_handler = proc_dointvec_jiffies,
  35. },
  36. {
  37. .procname = "rej",
  38. .data = &sysctl_llc2_rej_timeout,
  39. .maxlen = sizeof(sysctl_llc2_rej_timeout),
  40. .mode = 0644,
  41. .proc_handler = proc_dointvec_jiffies,
  42. },
  43. { },
  44. };
  45. static struct ctl_table llc_station_table[] = {
  46. {
  47. .procname = "ack_timeout",
  48. .data = &sysctl_llc_station_ack_timeout,
  49. .maxlen = sizeof(long),
  50. .mode = 0644,
  51. .proc_handler = proc_dointvec_jiffies,
  52. },
  53. { },
  54. };
  55. static struct ctl_table llc2_dir_timeout_table[] = {
  56. {
  57. .procname = "timeout",
  58. .mode = 0555,
  59. .child = llc2_timeout_table,
  60. },
  61. { },
  62. };
  63. static struct ctl_table llc_table[] = {
  64. {
  65. .procname = "llc2",
  66. .mode = 0555,
  67. .child = llc2_dir_timeout_table,
  68. },
  69. {
  70. .procname = "station",
  71. .mode = 0555,
  72. .child = llc_station_table,
  73. },
  74. { },
  75. };
  76. static struct ctl_path llc_path[] = {
  77. { .procname = "net", },
  78. { .procname = "llc", },
  79. { }
  80. };
  81. static struct ctl_table_header *llc_table_header;
  82. int __init llc_sysctl_init(void)
  83. {
  84. llc_table_header = register_net_sysctl_table(&init_net, llc_path, llc_table);
  85. return llc_table_header ? 0 : -ENOMEM;
  86. }
  87. void llc_sysctl_exit(void)
  88. {
  89. if (llc_table_header) {
  90. unregister_net_sysctl_table(llc_table_header);
  91. llc_table_header = NULL;
  92. }
  93. }