^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /* -*- linux-c -*-
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * sysctl_net_x25.c: sysctl interface to net X.25 subsystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Begun April 1, 1996, Mike Shaver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Added /proc/sys/net/x25 directory entry (empty =) ). [MS]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/sysctl.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/skbuff.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/socket.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/netdevice.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/init.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <net/x25.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) static int min_timer[] = { 1 * HZ };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) static int max_timer[] = { 300 * HZ };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) static struct ctl_table_header *x25_table_header;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) static struct ctl_table x25_table[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) .procname = "restart_request_timeout",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) .data = &sysctl_x25_restart_request_timeout,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) .maxlen = sizeof(int),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) .mode = 0644,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) .proc_handler = proc_dointvec_minmax,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) .extra1 = &min_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) .extra2 = &max_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) .procname = "call_request_timeout",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) .data = &sysctl_x25_call_request_timeout,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) .maxlen = sizeof(int),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) .mode = 0644,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) .proc_handler = proc_dointvec_minmax,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) .extra1 = &min_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) .extra2 = &max_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) .procname = "reset_request_timeout",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) .data = &sysctl_x25_reset_request_timeout,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) .maxlen = sizeof(int),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) .mode = 0644,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) .proc_handler = proc_dointvec_minmax,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) .extra1 = &min_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) .extra2 = &max_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) .procname = "clear_request_timeout",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) .data = &sysctl_x25_clear_request_timeout,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) .maxlen = sizeof(int),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) .mode = 0644,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) .proc_handler = proc_dointvec_minmax,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) .extra1 = &min_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) .extra2 = &max_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) .procname = "acknowledgement_hold_back_timeout",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) .data = &sysctl_x25_ack_holdback_timeout,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) .maxlen = sizeof(int),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) .mode = 0644,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) .proc_handler = proc_dointvec_minmax,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) .extra1 = &min_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) .extra2 = &max_timer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) .procname = "x25_forward",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) .data = &sysctl_x25_forward,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) .maxlen = sizeof(int),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) .mode = 0644,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) .proc_handler = proc_dointvec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) { },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) int __init x25_register_sysctl(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) x25_table_header = register_net_sysctl(&init_net, "net/x25", x25_table);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) if (!x25_table_header)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) return -ENOMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) void x25_unregister_sysctl(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) unregister_net_sysctl_table(x25_table_header);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) }