mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
sysctl net: Remove unused binary sysctl code
Now that sys_sysctl is a compatiblity wrapper around /proc/sys all sysctl strategy routines, and all ctl_name and strategy entries in the sysctl tables are unused, and can be revmoed. In addition neigh_sysctl_register has been modified to no longer take a strategy argument and it's callers have been modified not to pass one. Cc: "David Miller" <davem@davemloft.net> Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org> Cc: netdev@vger.kernel.org Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
@@ -75,7 +75,6 @@ struct dn_dev_parms {
|
||||
unsigned long t3; /* Default value of t3 */
|
||||
int priority; /* Priority to be a router */
|
||||
char *name; /* Name for sysctl */
|
||||
int ctl_name; /* Index for sysctl */
|
||||
int (*up)(struct net_device *);
|
||||
void (*down)(struct net_device *);
|
||||
void (*timer3)(struct net_device *, struct dn_ifaddr *ifa);
|
||||
|
||||
@@ -264,8 +264,7 @@ extern int neigh_sysctl_register(struct net_device *dev,
|
||||
struct neigh_parms *p,
|
||||
int p_id, int pdev_id,
|
||||
char *p_name,
|
||||
proc_handler *proc_handler,
|
||||
ctl_handler *strategy);
|
||||
proc_handler *proc_handler);
|
||||
extern void neigh_sysctl_unregister(struct neigh_parms *p);
|
||||
|
||||
static inline void __neigh_parms_put(struct neigh_parms *parms)
|
||||
|
||||
@@ -635,19 +635,18 @@ struct net_device *alloc_trdev(int sizeof_priv)
|
||||
#ifdef CONFIG_SYSCTL
|
||||
static struct ctl_table tr_table[] = {
|
||||
{
|
||||
.ctl_name = NET_TR_RIF_TIMEOUT,
|
||||
.procname = "rif_timeout",
|
||||
.data = &sysctl_tr_rif_timeout,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{ 0 },
|
||||
{ },
|
||||
};
|
||||
|
||||
static __initdata struct ctl_path tr_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "token-ring", .ctl_name = NET_TR, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "token-ring", },
|
||||
{ }
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -12,25 +12,20 @@
|
||||
|
||||
static struct ctl_table atalk_table[] = {
|
||||
{
|
||||
.ctl_name = NET_ATALK_AARP_EXPIRY_TIME,
|
||||
.procname = "aarp-expiry-time",
|
||||
.data = &sysctl_aarp_expiry_time,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_ATALK_AARP_TICK_TIME,
|
||||
.procname = "aarp-tick-time",
|
||||
.data = &sysctl_aarp_tick_time,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_ATALK_AARP_RETRANSMIT_LIMIT,
|
||||
.procname = "aarp-retransmit-limit",
|
||||
.data = &sysctl_aarp_retransmit_limit,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -38,20 +33,18 @@ static struct ctl_table atalk_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_ATALK_AARP_RESOLVE_TIME,
|
||||
.procname = "aarp-resolve-time",
|
||||
.data = &sysctl_aarp_resolve_time,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{ 0 },
|
||||
{ },
|
||||
};
|
||||
|
||||
static struct ctl_path atalk_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "appletalk", .ctl_name = NET_ATALK, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "appletalk", },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
@@ -34,156 +34,128 @@ static ctl_table *ax25_table;
|
||||
static int ax25_table_size;
|
||||
|
||||
static struct ctl_path ax25_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "ax25", .ctl_name = NET_AX25, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "ax25", },
|
||||
{ }
|
||||
};
|
||||
|
||||
static const ctl_table ax25_param_table[] = {
|
||||
{
|
||||
.ctl_name = NET_AX25_IP_DEFAULT_MODE,
|
||||
.procname = "ip_default_mode",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_ipdefmode,
|
||||
.extra2 = &max_ipdefmode
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_DEFAULT_MODE,
|
||||
.procname = "ax25_default_mode",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_axdefmode,
|
||||
.extra2 = &max_axdefmode
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_BACKOFF_TYPE,
|
||||
.procname = "backoff_type",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_backoff,
|
||||
.extra2 = &max_backoff
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_CONNECT_MODE,
|
||||
.procname = "connect_mode",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_conmode,
|
||||
.extra2 = &max_conmode
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_STANDARD_WINDOW,
|
||||
.procname = "standard_window_size",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_window,
|
||||
.extra2 = &max_window
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_EXTENDED_WINDOW,
|
||||
.procname = "extended_window_size",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_ewindow,
|
||||
.extra2 = &max_ewindow
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_T1_TIMEOUT,
|
||||
.procname = "t1_timeout",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_t1,
|
||||
.extra2 = &max_t1
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_T2_TIMEOUT,
|
||||
.procname = "t2_timeout",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_t2,
|
||||
.extra2 = &max_t2
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_T3_TIMEOUT,
|
||||
.procname = "t3_timeout",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_t3,
|
||||
.extra2 = &max_t3
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_IDLE_TIMEOUT,
|
||||
.procname = "idle_timeout",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_idle,
|
||||
.extra2 = &max_idle
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_N2,
|
||||
.procname = "maximum_retry_count",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_n2,
|
||||
.extra2 = &max_n2
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_PACLEN,
|
||||
.procname = "maximum_packet_length",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_paclen,
|
||||
.extra2 = &max_paclen
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_AX25_PROTOCOL,
|
||||
.procname = "protocol",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_proto,
|
||||
.extra2 = &max_proto
|
||||
},
|
||||
#ifdef CONFIG_AX25_DAMA_SLAVE
|
||||
{
|
||||
.ctl_name = NET_AX25_DAMA_SLAVE_TIMEOUT,
|
||||
.procname = "dama_slave_timeout",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_ds_timeout,
|
||||
.extra2 = &max_ds_timeout
|
||||
},
|
||||
#endif
|
||||
|
||||
{ .ctl_name = 0 } /* that's all, folks! */
|
||||
{ } /* that's all, folks! */
|
||||
};
|
||||
|
||||
void ax25_register_sysctl(void)
|
||||
@@ -212,11 +184,9 @@ void ax25_register_sysctl(void)
|
||||
return;
|
||||
}
|
||||
ax25_table[n].child = ax25_dev->systable = child;
|
||||
ax25_table[n].ctl_name = n + 1;
|
||||
ax25_table[n].procname = ax25_dev->dev->name;
|
||||
ax25_table[n].mode = 0555;
|
||||
|
||||
child[AX25_MAX_VALUES].ctl_name = 0; /* just in case... */
|
||||
|
||||
for (k = 0; k < AX25_MAX_VALUES; k++)
|
||||
child[k].data = &ax25_dev->values[k];
|
||||
@@ -233,7 +203,7 @@ void ax25_unregister_sysctl(void)
|
||||
ctl_table *p;
|
||||
unregister_sysctl_table(ax25_table_header);
|
||||
|
||||
for (p = ax25_table; p->ctl_name; p++)
|
||||
for (p = ax25_table; p->procname; p++)
|
||||
kfree(p->child);
|
||||
kfree(ax25_table);
|
||||
}
|
||||
|
||||
@@ -1013,12 +1013,12 @@ static ctl_table brnf_table[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = brnf_sysctl_call_tables,
|
||||
},
|
||||
{ .ctl_name = 0 }
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct ctl_path brnf_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "bridge", .ctl_name = NET_BRIDGE, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "bridge", },
|
||||
{ }
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -2566,21 +2566,18 @@ static struct neigh_sysctl_table {
|
||||
} neigh_sysctl_template __read_mostly = {
|
||||
.neigh_vars = {
|
||||
{
|
||||
.ctl_name = NET_NEIGH_MCAST_SOLICIT,
|
||||
.procname = "mcast_solicit",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_UCAST_SOLICIT,
|
||||
.procname = "ucast_solicit",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_APP_SOLICIT,
|
||||
.procname = "app_solicit",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
@@ -2593,38 +2590,30 @@ static struct neigh_sysctl_table {
|
||||
.proc_handler = proc_dointvec_userhz_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_REACHABLE_TIME,
|
||||
.procname = "base_reachable_time",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_DELAY_PROBE_TIME,
|
||||
.procname = "delay_first_probe_time",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_GC_STALE_TIME,
|
||||
.procname = "gc_stale_time",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_UNRES_QLEN,
|
||||
.procname = "unres_qlen",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_PROXY_QLEN,
|
||||
.procname = "proxy_qlen",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
@@ -2649,45 +2638,36 @@ static struct neigh_sysctl_table {
|
||||
.proc_handler = proc_dointvec_userhz_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_RETRANS_TIME_MS,
|
||||
.procname = "retrans_time_ms",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_ms_jiffies,
|
||||
.strategy = sysctl_ms_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_REACHABLE_TIME_MS,
|
||||
.procname = "base_reachable_time_ms",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_ms_jiffies,
|
||||
.strategy = sysctl_ms_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_GC_INTERVAL,
|
||||
.procname = "gc_interval",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_GC_THRESH1,
|
||||
.procname = "gc_thresh1",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_GC_THRESH2,
|
||||
.procname = "gc_thresh2",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_NEIGH_GC_THRESH3,
|
||||
.procname = "gc_thresh3",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
@@ -2699,7 +2679,7 @@ static struct neigh_sysctl_table {
|
||||
|
||||
int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
|
||||
int p_id, int pdev_id, char *p_name,
|
||||
proc_handler *handler, ctl_handler *strategy)
|
||||
proc_handler *handler)
|
||||
{
|
||||
struct neigh_sysctl_table *t;
|
||||
const char *dev_name_source = NULL;
|
||||
@@ -2710,10 +2690,10 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
|
||||
#define NEIGH_CTL_PATH_DEV 3
|
||||
|
||||
struct ctl_path neigh_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "proto", .ctl_name = 0, },
|
||||
{ .procname = "neigh", .ctl_name = 0, },
|
||||
{ .procname = "default", .ctl_name = NET_PROTO_CONF_DEFAULT, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "proto", },
|
||||
{ .procname = "neigh", },
|
||||
{ .procname = "default", },
|
||||
{ },
|
||||
};
|
||||
|
||||
@@ -2738,7 +2718,6 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
|
||||
|
||||
if (dev) {
|
||||
dev_name_source = dev->name;
|
||||
neigh_path[NEIGH_CTL_PATH_DEV].ctl_name = dev->ifindex;
|
||||
/* Terminate the table early */
|
||||
memset(&t->neigh_vars[14], 0, sizeof(t->neigh_vars[14]));
|
||||
} else {
|
||||
@@ -2750,31 +2729,19 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
|
||||
}
|
||||
|
||||
|
||||
if (handler || strategy) {
|
||||
if (handler) {
|
||||
/* RetransTime */
|
||||
t->neigh_vars[3].proc_handler = handler;
|
||||
t->neigh_vars[3].strategy = strategy;
|
||||
t->neigh_vars[3].extra1 = dev;
|
||||
if (!strategy)
|
||||
t->neigh_vars[3].ctl_name = CTL_UNNUMBERED;
|
||||
/* ReachableTime */
|
||||
t->neigh_vars[4].proc_handler = handler;
|
||||
t->neigh_vars[4].strategy = strategy;
|
||||
t->neigh_vars[4].extra1 = dev;
|
||||
if (!strategy)
|
||||
t->neigh_vars[4].ctl_name = CTL_UNNUMBERED;
|
||||
/* RetransTime (in milliseconds)*/
|
||||
t->neigh_vars[12].proc_handler = handler;
|
||||
t->neigh_vars[12].strategy = strategy;
|
||||
t->neigh_vars[12].extra1 = dev;
|
||||
if (!strategy)
|
||||
t->neigh_vars[12].ctl_name = CTL_UNNUMBERED;
|
||||
/* ReachableTime (in milliseconds) */
|
||||
t->neigh_vars[13].proc_handler = handler;
|
||||
t->neigh_vars[13].strategy = strategy;
|
||||
t->neigh_vars[13].extra1 = dev;
|
||||
if (!strategy)
|
||||
t->neigh_vars[13].ctl_name = CTL_UNNUMBERED;
|
||||
}
|
||||
|
||||
t->dev_name = kstrdup(dev_name_source, GFP_KERNEL);
|
||||
@@ -2782,9 +2749,7 @@ int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,
|
||||
goto free;
|
||||
|
||||
neigh_path[NEIGH_CTL_PATH_DEV].procname = t->dev_name;
|
||||
neigh_path[NEIGH_CTL_PATH_NEIGH].ctl_name = pdev_id;
|
||||
neigh_path[NEIGH_CTL_PATH_PROTO].procname = p_name;
|
||||
neigh_path[NEIGH_CTL_PATH_PROTO].ctl_name = p_id;
|
||||
|
||||
t->sysctl_header =
|
||||
register_net_sysctl_table(neigh_parms_net(p), neigh_path, t->neigh_vars);
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
static struct ctl_table net_core_table[] = {
|
||||
#ifdef CONFIG_NET
|
||||
{
|
||||
.ctl_name = NET_CORE_WMEM_MAX,
|
||||
.procname = "wmem_max",
|
||||
.data = &sysctl_wmem_max,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -25,7 +24,6 @@ static struct ctl_table net_core_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_RMEM_MAX,
|
||||
.procname = "rmem_max",
|
||||
.data = &sysctl_rmem_max,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -33,7 +31,6 @@ static struct ctl_table net_core_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_WMEM_DEFAULT,
|
||||
.procname = "wmem_default",
|
||||
.data = &sysctl_wmem_default,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -41,7 +38,6 @@ static struct ctl_table net_core_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_RMEM_DEFAULT,
|
||||
.procname = "rmem_default",
|
||||
.data = &sysctl_rmem_default,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -49,7 +45,6 @@ static struct ctl_table net_core_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_DEV_WEIGHT,
|
||||
.procname = "dev_weight",
|
||||
.data = &weight_p,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -57,7 +52,6 @@ static struct ctl_table net_core_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_MAX_BACKLOG,
|
||||
.procname = "netdev_max_backlog",
|
||||
.data = &netdev_max_backlog,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -65,16 +59,13 @@ static struct ctl_table net_core_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_MSG_COST,
|
||||
.procname = "message_cost",
|
||||
.data = &net_ratelimit_state.interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_MSG_BURST,
|
||||
.procname = "message_burst",
|
||||
.data = &net_ratelimit_state.burst,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -82,7 +73,6 @@ static struct ctl_table net_core_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_OPTMEM_MAX,
|
||||
.procname = "optmem_max",
|
||||
.data = &sysctl_optmem_max,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -91,7 +81,6 @@ static struct ctl_table net_core_table[] = {
|
||||
},
|
||||
#endif /* CONFIG_NET */
|
||||
{
|
||||
.ctl_name = NET_CORE_BUDGET,
|
||||
.procname = "netdev_budget",
|
||||
.data = &netdev_budget,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -99,31 +88,29 @@ static struct ctl_table net_core_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_CORE_WARNINGS,
|
||||
.procname = "warnings",
|
||||
.data = &net_msg_warn,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{ .ctl_name = 0 }
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct ctl_table netns_core_table[] = {
|
||||
{
|
||||
.ctl_name = NET_CORE_SOMAXCONN,
|
||||
.procname = "somaxconn",
|
||||
.data = &init_net.core.sysctl_somaxconn,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{ .ctl_name = 0 }
|
||||
{ }
|
||||
};
|
||||
|
||||
__net_initdata struct ctl_path net_core_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "core", .ctl_name = NET_CORE, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "core", },
|
||||
{ },
|
||||
};
|
||||
|
||||
|
||||
@@ -93,13 +93,13 @@ static struct ctl_table dccp_default_table[] = {
|
||||
.proc_handler = proc_dointvec_ms_jiffies,
|
||||
},
|
||||
|
||||
{ .ctl_name = 0, }
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct ctl_path dccp_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "dccp", .ctl_name = NET_DCCP, },
|
||||
{ .procname = "default", .ctl_name = NET_DCCP_DEFAULT, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "dccp", },
|
||||
{ .procname = "default", },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
@@ -89,7 +89,6 @@ static struct dn_dev_parms dn_dev_list[] = {
|
||||
.t2 = 1,
|
||||
.t3 = 10,
|
||||
.name = "ethernet",
|
||||
.ctl_name = NET_DECNET_CONF_ETHER,
|
||||
.up = dn_eth_up,
|
||||
.down = dn_eth_down,
|
||||
.timer3 = dn_send_brd_hello,
|
||||
@@ -101,7 +100,6 @@ static struct dn_dev_parms dn_dev_list[] = {
|
||||
.t2 = 1,
|
||||
.t3 = 10,
|
||||
.name = "ipgre",
|
||||
.ctl_name = NET_DECNET_CONF_GRE,
|
||||
.timer3 = dn_send_brd_hello,
|
||||
},
|
||||
#if 0
|
||||
@@ -112,7 +110,6 @@ static struct dn_dev_parms dn_dev_list[] = {
|
||||
.t2 = 1,
|
||||
.t3 = 120,
|
||||
.name = "x25",
|
||||
.ctl_name = NET_DECNET_CONF_X25,
|
||||
.timer3 = dn_send_ptp_hello,
|
||||
},
|
||||
#endif
|
||||
@@ -124,7 +121,6 @@ static struct dn_dev_parms dn_dev_list[] = {
|
||||
.t2 = 1,
|
||||
.t3 = 10,
|
||||
.name = "ppp",
|
||||
.ctl_name = NET_DECNET_CONF_PPP,
|
||||
.timer3 = dn_send_brd_hello,
|
||||
},
|
||||
#endif
|
||||
@@ -135,7 +131,6 @@ static struct dn_dev_parms dn_dev_list[] = {
|
||||
.t2 = 1,
|
||||
.t3 = 120,
|
||||
.name = "ddcmp",
|
||||
.ctl_name = NET_DECNET_CONF_DDCMP,
|
||||
.timer3 = dn_send_ptp_hello,
|
||||
},
|
||||
{
|
||||
@@ -145,7 +140,6 @@ static struct dn_dev_parms dn_dev_list[] = {
|
||||
.t2 = 1,
|
||||
.t3 = 10,
|
||||
.name = "loopback",
|
||||
.ctl_name = NET_DECNET_CONF_LOOPBACK,
|
||||
.timer3 = dn_send_brd_hello,
|
||||
}
|
||||
};
|
||||
@@ -166,10 +160,6 @@ static int max_priority[] = { 127 }; /* From DECnet spec */
|
||||
|
||||
static int dn_forwarding_proc(ctl_table *, int,
|
||||
void __user *, size_t *, loff_t *);
|
||||
static int dn_forwarding_sysctl(ctl_table *table,
|
||||
void __user *oldval, size_t __user *oldlenp,
|
||||
void __user *newval, size_t newlen);
|
||||
|
||||
static struct dn_dev_sysctl_table {
|
||||
struct ctl_table_header *sysctl_header;
|
||||
ctl_table dn_dev_vars[5];
|
||||
@@ -177,44 +167,36 @@ static struct dn_dev_sysctl_table {
|
||||
NULL,
|
||||
{
|
||||
{
|
||||
.ctl_name = NET_DECNET_CONF_DEV_FORWARDING,
|
||||
.procname = "forwarding",
|
||||
.data = (void *)DN_DEV_PARMS_OFFSET(forwarding),
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = dn_forwarding_proc,
|
||||
.strategy = dn_forwarding_sysctl,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_CONF_DEV_PRIORITY,
|
||||
.procname = "priority",
|
||||
.data = (void *)DN_DEV_PARMS_OFFSET(priority),
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_priority,
|
||||
.extra2 = &max_priority
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_CONF_DEV_T2,
|
||||
.procname = "t2",
|
||||
.data = (void *)DN_DEV_PARMS_OFFSET(t2),
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_t2,
|
||||
.extra2 = &max_t2
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_CONF_DEV_T3,
|
||||
.procname = "t3",
|
||||
.data = (void *)DN_DEV_PARMS_OFFSET(t3),
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_t3,
|
||||
.extra2 = &max_t3
|
||||
},
|
||||
@@ -230,9 +212,9 @@ static void dn_dev_sysctl_register(struct net_device *dev, struct dn_dev_parms *
|
||||
#define DN_CTL_PATH_DEV 3
|
||||
|
||||
struct ctl_path dn_ctl_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "decnet", .ctl_name = NET_DECNET, },
|
||||
{ .procname = "conf", .ctl_name = NET_DECNET_CONF, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "decnet", },
|
||||
{ .procname = "conf", },
|
||||
{ /* to be set */ },
|
||||
{ },
|
||||
};
|
||||
@@ -248,10 +230,8 @@ static void dn_dev_sysctl_register(struct net_device *dev, struct dn_dev_parms *
|
||||
|
||||
if (dev) {
|
||||
dn_ctl_path[DN_CTL_PATH_DEV].procname = dev->name;
|
||||
dn_ctl_path[DN_CTL_PATH_DEV].ctl_name = dev->ifindex;
|
||||
} else {
|
||||
dn_ctl_path[DN_CTL_PATH_DEV].procname = parms->name;
|
||||
dn_ctl_path[DN_CTL_PATH_DEV].ctl_name = parms->ctl_name;
|
||||
}
|
||||
|
||||
t->dn_dev_vars[0].extra1 = (void *)dev;
|
||||
@@ -317,44 +297,6 @@ static int dn_forwarding_proc(ctl_table *table, int write,
|
||||
#endif
|
||||
}
|
||||
|
||||
static int dn_forwarding_sysctl(ctl_table *table,
|
||||
void __user *oldval, size_t __user *oldlenp,
|
||||
void __user *newval, size_t newlen)
|
||||
{
|
||||
#ifdef CONFIG_DECNET_ROUTER
|
||||
struct net_device *dev = table->extra1;
|
||||
struct dn_dev *dn_db;
|
||||
int value;
|
||||
|
||||
if (table->extra1 == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
dn_db = dev->dn_ptr;
|
||||
|
||||
if (newval && newlen) {
|
||||
if (newlen != sizeof(int))
|
||||
return -EINVAL;
|
||||
|
||||
if (get_user(value, (int __user *)newval))
|
||||
return -EFAULT;
|
||||
if (value < 0)
|
||||
return -EINVAL;
|
||||
if (value > 2)
|
||||
return -EINVAL;
|
||||
|
||||
if (dn_db->parms.down)
|
||||
dn_db->parms.down(dev);
|
||||
dn_db->parms.forwarding = value;
|
||||
if (dn_db->parms.up)
|
||||
dn_db->parms.up(dev);
|
||||
}
|
||||
|
||||
return 0;
|
||||
#else
|
||||
return -EINVAL;
|
||||
#endif
|
||||
}
|
||||
|
||||
#else /* CONFIG_SYSCTL */
|
||||
static void dn_dev_sysctl_unregister(struct dn_dev_parms *parms)
|
||||
{
|
||||
|
||||
@@ -131,39 +131,6 @@ static int parse_addr(__le16 *addr, char *str)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int dn_node_address_strategy(ctl_table *table,
|
||||
void __user *oldval, size_t __user *oldlenp,
|
||||
void __user *newval, size_t newlen)
|
||||
{
|
||||
size_t len;
|
||||
__le16 addr;
|
||||
|
||||
if (oldval && oldlenp) {
|
||||
if (get_user(len, oldlenp))
|
||||
return -EFAULT;
|
||||
if (len) {
|
||||
if (len != sizeof(unsigned short))
|
||||
return -EINVAL;
|
||||
if (put_user(decnet_address, (__le16 __user *)oldval))
|
||||
return -EFAULT;
|
||||
}
|
||||
}
|
||||
if (newval && newlen) {
|
||||
if (newlen != sizeof(unsigned short))
|
||||
return -EINVAL;
|
||||
if (get_user(addr, (__le16 __user *)newval))
|
||||
return -EFAULT;
|
||||
|
||||
dn_dev_devices_off();
|
||||
|
||||
decnet_address = addr;
|
||||
|
||||
dn_dev_devices_on();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dn_node_address_handler(ctl_table *table, int write,
|
||||
void __user *buffer,
|
||||
size_t *lenp, loff_t *ppos)
|
||||
@@ -215,65 +182,6 @@ static int dn_node_address_handler(ctl_table *table, int write,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int dn_def_dev_strategy(ctl_table *table,
|
||||
void __user *oldval, size_t __user *oldlenp,
|
||||
void __user *newval, size_t newlen)
|
||||
{
|
||||
size_t len;
|
||||
struct net_device *dev;
|
||||
char devname[17];
|
||||
size_t namel;
|
||||
int rv = 0;
|
||||
|
||||
devname[0] = 0;
|
||||
|
||||
if (oldval && oldlenp) {
|
||||
if (get_user(len, oldlenp))
|
||||
return -EFAULT;
|
||||
if (len) {
|
||||
dev = dn_dev_get_default();
|
||||
if (dev) {
|
||||
strcpy(devname, dev->name);
|
||||
dev_put(dev);
|
||||
}
|
||||
|
||||
namel = strlen(devname) + 1;
|
||||
if (len > namel) len = namel;
|
||||
|
||||
if (copy_to_user(oldval, devname, len))
|
||||
return -EFAULT;
|
||||
|
||||
if (put_user(len, oldlenp))
|
||||
return -EFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
if (newval && newlen) {
|
||||
if (newlen > 16)
|
||||
return -E2BIG;
|
||||
|
||||
if (copy_from_user(devname, newval, newlen))
|
||||
return -EFAULT;
|
||||
|
||||
devname[newlen] = 0;
|
||||
|
||||
dev = dev_get_by_name(&init_net, devname);
|
||||
if (dev == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
rv = -ENODEV;
|
||||
if (dev->dn_ptr != NULL) {
|
||||
rv = dn_dev_set_default(dev, 1);
|
||||
if (rv)
|
||||
dev_put(dev);
|
||||
}
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
static int dn_def_dev_handler(ctl_table *table, int write,
|
||||
void __user *buffer,
|
||||
size_t *lenp, loff_t *ppos)
|
||||
@@ -339,138 +247,112 @@ static int dn_def_dev_handler(ctl_table *table, int write,
|
||||
|
||||
static ctl_table dn_table[] = {
|
||||
{
|
||||
.ctl_name = NET_DECNET_NODE_ADDRESS,
|
||||
.procname = "node_address",
|
||||
.maxlen = 7,
|
||||
.mode = 0644,
|
||||
.proc_handler = dn_node_address_handler,
|
||||
.strategy = dn_node_address_strategy,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_NODE_NAME,
|
||||
.procname = "node_name",
|
||||
.data = node_name,
|
||||
.maxlen = 7,
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dostring,
|
||||
.strategy = sysctl_string,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_DEFAULT_DEVICE,
|
||||
.procname = "default_device",
|
||||
.maxlen = 16,
|
||||
.mode = 0644,
|
||||
.proc_handler = dn_def_dev_handler,
|
||||
.strategy = dn_def_dev_strategy,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_TIME_WAIT,
|
||||
.procname = "time_wait",
|
||||
.data = &decnet_time_wait,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_decnet_time_wait,
|
||||
.extra2 = &max_decnet_time_wait
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_DN_COUNT,
|
||||
.procname = "dn_count",
|
||||
.data = &decnet_dn_count,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_state_count,
|
||||
.extra2 = &max_state_count
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_DI_COUNT,
|
||||
.procname = "di_count",
|
||||
.data = &decnet_di_count,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_state_count,
|
||||
.extra2 = &max_state_count
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_DR_COUNT,
|
||||
.procname = "dr_count",
|
||||
.data = &decnet_dr_count,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_state_count,
|
||||
.extra2 = &max_state_count
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_DST_GC_INTERVAL,
|
||||
.procname = "dst_gc_interval",
|
||||
.data = &decnet_dst_gc_interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_decnet_dst_gc_interval,
|
||||
.extra2 = &max_decnet_dst_gc_interval
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_NO_FC_MAX_CWND,
|
||||
.procname = "no_fc_max_cwnd",
|
||||
.data = &decnet_no_fc_max_cwnd,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &min_decnet_no_fc_max_cwnd,
|
||||
.extra2 = &max_decnet_no_fc_max_cwnd
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_MEM,
|
||||
.procname = "decnet_mem",
|
||||
.data = &sysctl_decnet_mem,
|
||||
.maxlen = sizeof(sysctl_decnet_mem),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
.strategy = sysctl_intvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_RMEM,
|
||||
.procname = "decnet_rmem",
|
||||
.data = &sysctl_decnet_rmem,
|
||||
.maxlen = sizeof(sysctl_decnet_rmem),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
.strategy = sysctl_intvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_WMEM,
|
||||
.procname = "decnet_wmem",
|
||||
.data = &sysctl_decnet_wmem,
|
||||
.maxlen = sizeof(sysctl_decnet_wmem),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
.strategy = sysctl_intvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_DECNET_DEBUG_LEVEL,
|
||||
.procname = "debug",
|
||||
.data = &decnet_debug_level,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec,
|
||||
.strategy = sysctl_intvec,
|
||||
},
|
||||
{0}
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct ctl_path dn_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "decnet", .ctl_name = NET_DECNET, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "decnet", },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
@@ -1240,7 +1240,7 @@ void __init arp_init(void)
|
||||
arp_proc_init();
|
||||
#ifdef CONFIG_SYSCTL
|
||||
neigh_sysctl_register(NULL, &arp_tbl.parms, NET_IPV4,
|
||||
NET_IPV4_NEIGH, "ipv4", NULL, NULL);
|
||||
NET_IPV4_NEIGH, "ipv4", NULL);
|
||||
#endif
|
||||
register_netdevice_notifier(&arp_netdev_notifier);
|
||||
}
|
||||
|
||||
@@ -1293,58 +1293,6 @@ static int devinet_conf_proc(ctl_table *ctl, int write,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int devinet_conf_sysctl(ctl_table *table,
|
||||
void __user *oldval, size_t __user *oldlenp,
|
||||
void __user *newval, size_t newlen)
|
||||
{
|
||||
struct ipv4_devconf *cnf;
|
||||
struct net *net;
|
||||
int *valp = table->data;
|
||||
int new;
|
||||
int i;
|
||||
|
||||
if (!newval || !newlen)
|
||||
return 0;
|
||||
|
||||
if (newlen != sizeof(int))
|
||||
return -EINVAL;
|
||||
|
||||
if (get_user(new, (int __user *)newval))
|
||||
return -EFAULT;
|
||||
|
||||
if (new == *valp)
|
||||
return 0;
|
||||
|
||||
if (oldval && oldlenp) {
|
||||
size_t len;
|
||||
|
||||
if (get_user(len, oldlenp))
|
||||
return -EFAULT;
|
||||
|
||||
if (len) {
|
||||
if (len > table->maxlen)
|
||||
len = table->maxlen;
|
||||
if (copy_to_user(oldval, valp, len))
|
||||
return -EFAULT;
|
||||
if (put_user(len, oldlenp))
|
||||
return -EFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
*valp = new;
|
||||
|
||||
cnf = table->extra1;
|
||||
net = table->extra2;
|
||||
i = (int *)table->data - cnf->data;
|
||||
|
||||
set_bit(i, cnf->state);
|
||||
|
||||
if (cnf == net->ipv4.devconf_dflt)
|
||||
devinet_copy_dflt_conf(net, i);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int devinet_sysctl_forward(ctl_table *ctl, int write,
|
||||
void __user *buffer,
|
||||
size_t *lenp, loff_t *ppos)
|
||||
@@ -1390,47 +1338,28 @@ int ipv4_doint_and_flush(ctl_table *ctl, int write,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ipv4_doint_and_flush_strategy(ctl_table *table,
|
||||
void __user *oldval, size_t __user *oldlenp,
|
||||
void __user *newval, size_t newlen)
|
||||
{
|
||||
int ret = devinet_conf_sysctl(table, oldval, oldlenp, newval, newlen);
|
||||
struct net *net = table->extra2;
|
||||
|
||||
if (ret == 1)
|
||||
rt_cache_flush(net, 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
#define DEVINET_SYSCTL_ENTRY(attr, name, mval, proc, sysctl) \
|
||||
#define DEVINET_SYSCTL_ENTRY(attr, name, mval, proc) \
|
||||
{ \
|
||||
.ctl_name = NET_IPV4_CONF_ ## attr, \
|
||||
.procname = name, \
|
||||
.data = ipv4_devconf.data + \
|
||||
NET_IPV4_CONF_ ## attr - 1, \
|
||||
.maxlen = sizeof(int), \
|
||||
.mode = mval, \
|
||||
.proc_handler = proc, \
|
||||
.strategy = sysctl, \
|
||||
.extra1 = &ipv4_devconf, \
|
||||
}
|
||||
|
||||
#define DEVINET_SYSCTL_RW_ENTRY(attr, name) \
|
||||
DEVINET_SYSCTL_ENTRY(attr, name, 0644, devinet_conf_proc, \
|
||||
devinet_conf_sysctl)
|
||||
DEVINET_SYSCTL_ENTRY(attr, name, 0644, devinet_conf_proc)
|
||||
|
||||
#define DEVINET_SYSCTL_RO_ENTRY(attr, name) \
|
||||
DEVINET_SYSCTL_ENTRY(attr, name, 0444, devinet_conf_proc, \
|
||||
devinet_conf_sysctl)
|
||||
DEVINET_SYSCTL_ENTRY(attr, name, 0444, devinet_conf_proc)
|
||||
|
||||
#define DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, proc, sysctl) \
|
||||
DEVINET_SYSCTL_ENTRY(attr, name, 0644, proc, sysctl)
|
||||
#define DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, proc) \
|
||||
DEVINET_SYSCTL_ENTRY(attr, name, 0644, proc)
|
||||
|
||||
#define DEVINET_SYSCTL_FLUSHING_ENTRY(attr, name) \
|
||||
DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush, \
|
||||
ipv4_doint_and_flush_strategy)
|
||||
DEVINET_SYSCTL_COMPLEX_ENTRY(attr, name, ipv4_doint_and_flush)
|
||||
|
||||
static struct devinet_sysctl_table {
|
||||
struct ctl_table_header *sysctl_header;
|
||||
@@ -1439,8 +1368,7 @@ static struct devinet_sysctl_table {
|
||||
} devinet_sysctl = {
|
||||
.devinet_vars = {
|
||||
DEVINET_SYSCTL_COMPLEX_ENTRY(FORWARDING, "forwarding",
|
||||
devinet_sysctl_forward,
|
||||
devinet_conf_sysctl),
|
||||
devinet_sysctl_forward),
|
||||
DEVINET_SYSCTL_RO_ENTRY(MC_FORWARDING, "mc_forwarding"),
|
||||
|
||||
DEVINET_SYSCTL_RW_ENTRY(ACCEPT_REDIRECTS, "accept_redirects"),
|
||||
@@ -1471,7 +1399,7 @@ static struct devinet_sysctl_table {
|
||||
};
|
||||
|
||||
static int __devinet_sysctl_register(struct net *net, char *dev_name,
|
||||
int ctl_name, struct ipv4_devconf *p)
|
||||
struct ipv4_devconf *p)
|
||||
{
|
||||
int i;
|
||||
struct devinet_sysctl_table *t;
|
||||
@@ -1479,9 +1407,9 @@ static int __devinet_sysctl_register(struct net *net, char *dev_name,
|
||||
#define DEVINET_CTL_PATH_DEV 3
|
||||
|
||||
struct ctl_path devinet_ctl_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "ipv4", .ctl_name = NET_IPV4, },
|
||||
{ .procname = "conf", .ctl_name = NET_IPV4_CONF, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "ipv4", },
|
||||
{ .procname = "conf", },
|
||||
{ /* to be set */ },
|
||||
{ },
|
||||
};
|
||||
@@ -1506,7 +1434,6 @@ static int __devinet_sysctl_register(struct net *net, char *dev_name,
|
||||
goto free;
|
||||
|
||||
devinet_ctl_path[DEVINET_CTL_PATH_DEV].procname = t->dev_name;
|
||||
devinet_ctl_path[DEVINET_CTL_PATH_DEV].ctl_name = ctl_name;
|
||||
|
||||
t->sysctl_header = register_net_sysctl_table(net, devinet_ctl_path,
|
||||
t->devinet_vars);
|
||||
@@ -1540,9 +1467,9 @@ static void __devinet_sysctl_unregister(struct ipv4_devconf *cnf)
|
||||
static void devinet_sysctl_register(struct in_device *idev)
|
||||
{
|
||||
neigh_sysctl_register(idev->dev, idev->arp_parms, NET_IPV4,
|
||||
NET_IPV4_NEIGH, "ipv4", NULL, NULL);
|
||||
NET_IPV4_NEIGH, "ipv4", NULL);
|
||||
__devinet_sysctl_register(dev_net(idev->dev), idev->dev->name,
|
||||
idev->dev->ifindex, &idev->cnf);
|
||||
&idev->cnf);
|
||||
}
|
||||
|
||||
static void devinet_sysctl_unregister(struct in_device *idev)
|
||||
@@ -1553,14 +1480,12 @@ static void devinet_sysctl_unregister(struct in_device *idev)
|
||||
|
||||
static struct ctl_table ctl_forward_entry[] = {
|
||||
{
|
||||
.ctl_name = NET_IPV4_FORWARD,
|
||||
.procname = "ip_forward",
|
||||
.data = &ipv4_devconf.data[
|
||||
NET_IPV4_CONF_FORWARDING - 1],
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = devinet_sysctl_forward,
|
||||
.strategy = devinet_conf_sysctl,
|
||||
.extra1 = &ipv4_devconf,
|
||||
.extra2 = &init_net,
|
||||
},
|
||||
@@ -1568,8 +1493,8 @@ static struct ctl_table ctl_forward_entry[] = {
|
||||
};
|
||||
|
||||
static __net_initdata struct ctl_path net_ipv4_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "ipv4", .ctl_name = NET_IPV4, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "ipv4", },
|
||||
{ },
|
||||
};
|
||||
#endif
|
||||
@@ -1608,13 +1533,11 @@ static __net_init int devinet_init_net(struct net *net)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
err = __devinet_sysctl_register(net, "all",
|
||||
NET_PROTO_CONF_ALL, all);
|
||||
err = __devinet_sysctl_register(net, "all", all);
|
||||
if (err < 0)
|
||||
goto err_reg_all;
|
||||
|
||||
err = __devinet_sysctl_register(net, "default",
|
||||
NET_PROTO_CONF_DEFAULT, dflt);
|
||||
err = __devinet_sysctl_register(net, "default", dflt);
|
||||
if (err < 0)
|
||||
goto err_reg_dflt;
|
||||
|
||||
|
||||
@@ -603,7 +603,6 @@ static int zero;
|
||||
|
||||
static struct ctl_table ip4_frags_ns_ctl_table[] = {
|
||||
{
|
||||
.ctl_name = NET_IPV4_IPFRAG_HIGH_THRESH,
|
||||
.procname = "ipfrag_high_thresh",
|
||||
.data = &init_net.ipv4.frags.high_thresh,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -611,7 +610,6 @@ static struct ctl_table ip4_frags_ns_ctl_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_IPFRAG_LOW_THRESH,
|
||||
.procname = "ipfrag_low_thresh",
|
||||
.data = &init_net.ipv4.frags.low_thresh,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -619,26 +617,22 @@ static struct ctl_table ip4_frags_ns_ctl_table[] = {
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_IPFRAG_TIME,
|
||||
.procname = "ipfrag_time",
|
||||
.data = &init_net.ipv4.frags.timeout,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct ctl_table ip4_frags_ctl_table[] = {
|
||||
{
|
||||
.ctl_name = NET_IPV4_IPFRAG_SECRET_INTERVAL,
|
||||
.procname = "ipfrag_secret_interval",
|
||||
.data = &ip4_frags.secret_interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies
|
||||
},
|
||||
{
|
||||
.procname = "ipfrag_max_dist",
|
||||
|
||||
@@ -248,9 +248,9 @@ module_exit(ipv4_netfilter_fini);
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
struct ctl_path nf_net_ipv4_netfilter_sysctl_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "ipv4", .ctl_name = NET_IPV4, },
|
||||
{ .procname = "netfilter", .ctl_name = NET_IPV4_NETFILTER, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "ipv4", },
|
||||
{ .procname = "netfilter", },
|
||||
{ }
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(nf_net_ipv4_netfilter_sysctl_path);
|
||||
|
||||
@@ -516,14 +516,13 @@ static struct ctl_table_header *ipq_sysctl_header;
|
||||
|
||||
static ctl_table ipq_table[] = {
|
||||
{
|
||||
.ctl_name = NET_IPQ_QMAX,
|
||||
.procname = NET_IPQ_QMAX_NAME,
|
||||
.data = &queue_maxlen,
|
||||
.maxlen = sizeof(queue_maxlen),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec
|
||||
},
|
||||
{ .ctl_name = 0 }
|
||||
{ }
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -195,7 +195,6 @@ static int log_invalid_proto_max = 255;
|
||||
|
||||
static ctl_table ip_ct_sysctl_table[] = {
|
||||
{
|
||||
.ctl_name = NET_IPV4_NF_CONNTRACK_MAX,
|
||||
.procname = "ip_conntrack_max",
|
||||
.data = &nf_conntrack_max,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -203,7 +202,6 @@ static ctl_table ip_ct_sysctl_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_NF_CONNTRACK_COUNT,
|
||||
.procname = "ip_conntrack_count",
|
||||
.data = &init_net.ct.count,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -211,7 +209,6 @@ static ctl_table ip_ct_sysctl_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_NF_CONNTRACK_BUCKETS,
|
||||
.procname = "ip_conntrack_buckets",
|
||||
.data = &nf_conntrack_htable_size,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
@@ -219,7 +216,6 @@ static ctl_table ip_ct_sysctl_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_NF_CONNTRACK_CHECKSUM,
|
||||
.procname = "ip_conntrack_checksum",
|
||||
.data = &init_net.ct.sysctl_checksum,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -227,19 +223,15 @@ static ctl_table ip_ct_sysctl_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_NF_CONNTRACK_LOG_INVALID,
|
||||
.procname = "ip_conntrack_log_invalid",
|
||||
.data = &init_net.ct.sysctl_log_invalid,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.strategy = sysctl_intvec,
|
||||
.extra1 = &log_invalid_proto_min,
|
||||
.extra2 = &log_invalid_proto_max,
|
||||
},
|
||||
{
|
||||
.ctl_name = 0
|
||||
}
|
||||
{ }
|
||||
};
|
||||
#endif /* CONFIG_SYSCTL && CONFIG_NF_CONNTRACK_PROC_COMPAT */
|
||||
|
||||
|
||||
@@ -270,9 +270,7 @@ static struct ctl_table icmp_sysctl_table[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = 0
|
||||
}
|
||||
{ }
|
||||
};
|
||||
#ifdef CONFIG_NF_CONNTRACK_PROC_COMPAT
|
||||
static struct ctl_table icmp_compat_sysctl_table[] = {
|
||||
@@ -283,9 +281,7 @@ static struct ctl_table icmp_compat_sysctl_table[] = {
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = 0
|
||||
}
|
||||
{ }
|
||||
};
|
||||
#endif /* CONFIG_NF_CONNTRACK_PROC_COMPAT */
|
||||
#endif /* CONFIG_SYSCTL */
|
||||
|
||||
@@ -3056,23 +3056,6 @@ static int ipv4_sysctl_rtcache_flush(ctl_table *__ctl, int write,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int ipv4_sysctl_rtcache_flush_strategy(ctl_table *table,
|
||||
void __user *oldval,
|
||||
size_t __user *oldlenp,
|
||||
void __user *newval,
|
||||
size_t newlen)
|
||||
{
|
||||
int delay;
|
||||
struct net *net;
|
||||
if (newlen != sizeof(int))
|
||||
return -EINVAL;
|
||||
if (get_user(delay, (int __user *)newval))
|
||||
return -EFAULT;
|
||||
net = (struct net *)table->extra1;
|
||||
rt_cache_flush(net, delay);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rt_secret_reschedule(int old)
|
||||
{
|
||||
struct net *net;
|
||||
@@ -3117,23 +3100,8 @@ static int ipv4_sysctl_rt_secret_interval(ctl_table *ctl, int write,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ipv4_sysctl_rt_secret_interval_strategy(ctl_table *table,
|
||||
void __user *oldval,
|
||||
size_t __user *oldlenp,
|
||||
void __user *newval,
|
||||
size_t newlen)
|
||||
{
|
||||
int old = ip_rt_secret_interval;
|
||||
int ret = sysctl_jiffies(table, oldval, oldlenp, newval, newlen);
|
||||
|
||||
rt_secret_reschedule(old);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ctl_table ipv4_route_table[] = {
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_GC_THRESH,
|
||||
.procname = "gc_thresh",
|
||||
.data = &ipv4_dst_ops.gc_thresh,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3141,7 +3109,6 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_MAX_SIZE,
|
||||
.procname = "max_size",
|
||||
.data = &ip_rt_max_size,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3151,43 +3118,34 @@ static ctl_table ipv4_route_table[] = {
|
||||
{
|
||||
/* Deprecated. Use gc_min_interval_ms */
|
||||
|
||||
.ctl_name = NET_IPV4_ROUTE_GC_MIN_INTERVAL,
|
||||
.procname = "gc_min_interval",
|
||||
.data = &ip_rt_gc_min_interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS,
|
||||
.procname = "gc_min_interval_ms",
|
||||
.data = &ip_rt_gc_min_interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_ms_jiffies,
|
||||
.strategy = sysctl_ms_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_GC_TIMEOUT,
|
||||
.procname = "gc_timeout",
|
||||
.data = &ip_rt_gc_timeout,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_GC_INTERVAL,
|
||||
.procname = "gc_interval",
|
||||
.data = &ip_rt_gc_interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_REDIRECT_LOAD,
|
||||
.procname = "redirect_load",
|
||||
.data = &ip_rt_redirect_load,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3195,7 +3153,6 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_REDIRECT_NUMBER,
|
||||
.procname = "redirect_number",
|
||||
.data = &ip_rt_redirect_number,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3203,7 +3160,6 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_REDIRECT_SILENCE,
|
||||
.procname = "redirect_silence",
|
||||
.data = &ip_rt_redirect_silence,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3211,7 +3167,6 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_ERROR_COST,
|
||||
.procname = "error_cost",
|
||||
.data = &ip_rt_error_cost,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3219,7 +3174,6 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_ERROR_BURST,
|
||||
.procname = "error_burst",
|
||||
.data = &ip_rt_error_burst,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3227,7 +3181,6 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_GC_ELASTICITY,
|
||||
.procname = "gc_elasticity",
|
||||
.data = &ip_rt_gc_elasticity,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3235,16 +3188,13 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_MTU_EXPIRES,
|
||||
.procname = "mtu_expires",
|
||||
.data = &ip_rt_mtu_expires,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_MIN_PMTU,
|
||||
.procname = "min_pmtu",
|
||||
.data = &ip_rt_min_pmtu,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3252,7 +3202,6 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_MIN_ADVMSS,
|
||||
.procname = "min_adv_mss",
|
||||
.data = &ip_rt_min_advmss,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -3260,50 +3209,46 @@ static ctl_table ipv4_route_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_SECRET_INTERVAL,
|
||||
.procname = "secret_interval",
|
||||
.data = &ip_rt_secret_interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = ipv4_sysctl_rt_secret_interval,
|
||||
.strategy = ipv4_sysctl_rt_secret_interval_strategy,
|
||||
},
|
||||
{ .ctl_name = 0 }
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct ctl_table empty[1];
|
||||
|
||||
static struct ctl_table ipv4_skeleton[] =
|
||||
{
|
||||
{ .procname = "route", .ctl_name = NET_IPV4_ROUTE,
|
||||
{ .procname = "route",
|
||||
.mode = 0555, .child = ipv4_route_table},
|
||||
{ .procname = "neigh", .ctl_name = NET_IPV4_NEIGH,
|
||||
{ .procname = "neigh",
|
||||
.mode = 0555, .child = empty},
|
||||
{ }
|
||||
};
|
||||
|
||||
static __net_initdata struct ctl_path ipv4_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "ipv4", .ctl_name = NET_IPV4, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "ipv4", },
|
||||
{ },
|
||||
};
|
||||
|
||||
static struct ctl_table ipv4_route_flush_table[] = {
|
||||
{
|
||||
.ctl_name = NET_IPV4_ROUTE_FLUSH,
|
||||
.procname = "flush",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0200,
|
||||
.proc_handler = ipv4_sysctl_rtcache_flush,
|
||||
.strategy = ipv4_sysctl_rtcache_flush_strategy,
|
||||
},
|
||||
{ .ctl_name = 0 },
|
||||
{ },
|
||||
};
|
||||
|
||||
static __net_initdata struct ctl_path ipv4_route_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "ipv4", .ctl_name = NET_IPV4, },
|
||||
{ .procname = "route", .ctl_name = NET_IPV4_ROUTE, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "ipv4", },
|
||||
{ .procname = "route", },
|
||||
{ },
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user