Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003  *
0004  * Copyright (C) 1996 Mike Shaver (shaver@zeroknowledge.com)
0005  */
0006 #include <linux/mm.h>
0007 #include <linux/sysctl.h>
0008 #include <linux/init.h>
0009 #include <net/ax25.h>
0010 #include <net/netrom.h>
0011 
0012 /*
0013  *  Values taken from NET/ROM documentation.
0014  */
0015 static int min_quality[] = {0}, max_quality[] = {255};
0016 static int min_obs[]     = {0}, max_obs[]     = {255};
0017 static int min_ttl[]     = {0}, max_ttl[]     = {255};
0018 static int min_t1[]      = {5 * HZ};
0019 static int max_t1[]      = {600 * HZ};
0020 static int min_n2[]      = {2}, max_n2[]      = {127};
0021 static int min_t2[]      = {1 * HZ};
0022 static int max_t2[]      = {60 * HZ};
0023 static int min_t4[]      = {1 * HZ};
0024 static int max_t4[]      = {1000 * HZ};
0025 static int min_window[]  = {1}, max_window[]  = {127};
0026 static int min_idle[]    = {0 * HZ};
0027 static int max_idle[]    = {65535 * HZ};
0028 static int min_route[]   = {0}, max_route[]   = {1};
0029 static int min_fails[]   = {1}, max_fails[]   = {10};
0030 static int min_reset[]   = {0}, max_reset[]   = {1};
0031 
0032 static struct ctl_table_header *nr_table_header;
0033 
0034 static struct ctl_table nr_table[] = {
0035     {
0036         .procname   = "default_path_quality",
0037         .data       = &sysctl_netrom_default_path_quality,
0038         .maxlen     = sizeof(int),
0039         .mode       = 0644,
0040         .proc_handler   = proc_dointvec_minmax,
0041         .extra1     = &min_quality,
0042         .extra2     = &max_quality
0043     },
0044     {
0045         .procname   = "obsolescence_count_initialiser",
0046         .data       = &sysctl_netrom_obsolescence_count_initialiser,
0047         .maxlen     = sizeof(int),
0048         .mode       = 0644,
0049         .proc_handler   = proc_dointvec_minmax,
0050         .extra1     = &min_obs,
0051         .extra2     = &max_obs
0052     },
0053     {
0054         .procname   = "network_ttl_initialiser",
0055         .data       = &sysctl_netrom_network_ttl_initialiser,
0056         .maxlen     = sizeof(int),
0057         .mode       = 0644,
0058         .proc_handler   = proc_dointvec_minmax,
0059         .extra1     = &min_ttl,
0060         .extra2     = &max_ttl
0061     },
0062     {
0063         .procname   = "transport_timeout",
0064         .data       = &sysctl_netrom_transport_timeout,
0065         .maxlen     = sizeof(int),
0066         .mode       = 0644,
0067         .proc_handler   = proc_dointvec_minmax,
0068         .extra1     = &min_t1,
0069         .extra2     = &max_t1
0070     },
0071     {
0072         .procname   = "transport_maximum_tries",
0073         .data       = &sysctl_netrom_transport_maximum_tries,
0074         .maxlen     = sizeof(int),
0075         .mode       = 0644,
0076         .proc_handler   = proc_dointvec_minmax,
0077         .extra1     = &min_n2,
0078         .extra2     = &max_n2
0079     },
0080     {
0081         .procname   = "transport_acknowledge_delay",
0082         .data       = &sysctl_netrom_transport_acknowledge_delay,
0083         .maxlen     = sizeof(int),
0084         .mode       = 0644,
0085         .proc_handler   = proc_dointvec_minmax,
0086         .extra1     = &min_t2,
0087         .extra2     = &max_t2
0088     },
0089     {
0090         .procname   = "transport_busy_delay",
0091         .data       = &sysctl_netrom_transport_busy_delay,
0092         .maxlen     = sizeof(int),
0093         .mode       = 0644,
0094         .proc_handler   = proc_dointvec_minmax,
0095         .extra1     = &min_t4,
0096         .extra2     = &max_t4
0097     },
0098     {
0099         .procname   = "transport_requested_window_size",
0100         .data       = &sysctl_netrom_transport_requested_window_size,
0101         .maxlen     = sizeof(int),
0102         .mode       = 0644,
0103         .proc_handler   = proc_dointvec_minmax,
0104         .extra1     = &min_window,
0105         .extra2     = &max_window
0106     },
0107     {
0108         .procname   = "transport_no_activity_timeout",
0109         .data       = &sysctl_netrom_transport_no_activity_timeout,
0110         .maxlen     = sizeof(int),
0111         .mode       = 0644,
0112         .proc_handler   = proc_dointvec_minmax,
0113         .extra1     = &min_idle,
0114         .extra2     = &max_idle
0115     },
0116     {
0117         .procname   = "routing_control",
0118         .data       = &sysctl_netrom_routing_control,
0119         .maxlen     = sizeof(int),
0120         .mode       = 0644,
0121         .proc_handler   = proc_dointvec_minmax,
0122         .extra1     = &min_route,
0123         .extra2     = &max_route
0124     },
0125     {
0126         .procname   = "link_fails_count",
0127         .data       = &sysctl_netrom_link_fails_count,
0128         .maxlen     = sizeof(int),
0129         .mode       = 0644,
0130         .proc_handler   = proc_dointvec_minmax,
0131         .extra1     = &min_fails,
0132         .extra2     = &max_fails
0133     },
0134     {
0135         .procname   = "reset",
0136         .data       = &sysctl_netrom_reset_circuit,
0137         .maxlen     = sizeof(int),
0138         .mode       = 0644,
0139         .proc_handler   = proc_dointvec_minmax,
0140         .extra1     = &min_reset,
0141         .extra2     = &max_reset
0142     },
0143     { }
0144 };
0145 
0146 int __init nr_register_sysctl(void)
0147 {
0148     nr_table_header = register_net_sysctl(&init_net, "net/netrom", nr_table);
0149     if (!nr_table_header)
0150         return -ENOMEM;
0151     return 0;
0152 }
0153 
0154 void nr_unregister_sysctl(void)
0155 {
0156     unregister_net_sysctl_table(nr_table_header);
0157 }