You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6: (43 commits) security/tomoyo: Remove now unnecessary handling of security_sysctl. security/tomoyo: Add a special case to handle accesses through the internal proc mount. sysctl: Drop & in front of every proc_handler. sysctl: Remove CTL_NONE and CTL_UNNUMBERED sysctl: kill dead ctl_handler definitions. sysctl: Remove the last of the generic binary sysctl support sysctl net: Remove unused binary sysctl code sysctl security/tomoyo: Don't look at ctl_name sysctl arm: Remove binary sysctl support sysctl x86: Remove dead binary sysctl support sysctl sh: Remove dead binary sysctl support sysctl powerpc: Remove dead binary sysctl support sysctl ia64: Remove dead binary sysctl support sysctl s390: Remove dead sysctl binary support sysctl frv: Remove dead binary sysctl support sysctl mips/lasat: Remove dead binary sysctl support sysctl drivers: Remove dead binary sysctl support sysctl crypto: Remove dead binary sysctl support sysctl security/keys: Remove dead binary sysctl support sysctl kernel: Remove binary sysctl logic ...
This commit is contained in:
+3
-4
@@ -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
|
||||
|
||||
+6
-41
@@ -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);
|
||||
|
||||
@@ -19,7 +19,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),
|
||||
@@ -27,7 +26,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),
|
||||
@@ -35,7 +33,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),
|
||||
@@ -43,7 +40,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),
|
||||
@@ -51,7 +47,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),
|
||||
@@ -59,7 +54,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),
|
||||
@@ -67,16 +61,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),
|
||||
@@ -84,7 +75,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),
|
||||
@@ -93,7 +83,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),
|
||||
@@ -101,31 +90,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", },
|
||||
{ },
|
||||
};
|
||||
|
||||
|
||||
+4
-4
@@ -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", },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
+3
-61
@@ -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,64 +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)
|
||||
@@ -338,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", },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
|
||||
+17
-94
@@ -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 */
|
||||
|
||||
+9
-64
@@ -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", },
|
||||
{ },
|
||||
};
|
||||
|
||||
|
||||
+3
-161
File diff suppressed because it is too large
Load Diff
@@ -267,7 +267,6 @@ static struct xfrm_policy_afinfo xfrm4_policy_afinfo = {
|
||||
#ifdef CONFIG_SYSCTL
|
||||
static struct ctl_table xfrm4_policy_table[] = {
|
||||
{
|
||||
.ctl_name = CTL_UNNUMBERED,
|
||||
.procname = "xfrm4_gc_thresh",
|
||||
.data = &xfrm4_dst_ops.gc_thresh,
|
||||
.maxlen = sizeof(int),
|
||||
|
||||
+9
-81
@@ -4000,41 +4000,6 @@ int addrconf_sysctl_forward(ctl_table *ctl, int write,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int addrconf_sysctl_forward_strategy(ctl_table *table,
|
||||
void __user *oldval,
|
||||
size_t __user *oldlenp,
|
||||
void __user *newval, size_t newlen)
|
||||
{
|
||||
int *valp = table->data;
|
||||
int val = *valp;
|
||||
int new;
|
||||
|
||||
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;
|
||||
return addrconf_fixup_forwarding(table, valp, val);
|
||||
}
|
||||
|
||||
static void dev_disable_change(struct inet6_dev *idev)
|
||||
{
|
||||
if (!idev || !idev->dev)
|
||||
@@ -4113,16 +4078,13 @@ static struct addrconf_sysctl_table
|
||||
.sysctl_header = NULL,
|
||||
.addrconf_vars = {
|
||||
{
|
||||
.ctl_name = NET_IPV6_FORWARDING,
|
||||
.procname = "forwarding",
|
||||
.data = &ipv6_devconf.forwarding,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = addrconf_sysctl_forward,
|
||||
.strategy = addrconf_sysctl_forward_strategy,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_HOP_LIMIT,
|
||||
.procname = "hop_limit",
|
||||
.data = &ipv6_devconf.hop_limit,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4130,7 +4092,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_MTU,
|
||||
.procname = "mtu",
|
||||
.data = &ipv6_devconf.mtu6,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4138,7 +4099,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_ACCEPT_RA,
|
||||
.procname = "accept_ra",
|
||||
.data = &ipv6_devconf.accept_ra,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4146,7 +4106,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_ACCEPT_REDIRECTS,
|
||||
.procname = "accept_redirects",
|
||||
.data = &ipv6_devconf.accept_redirects,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4154,7 +4113,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_AUTOCONF,
|
||||
.procname = "autoconf",
|
||||
.data = &ipv6_devconf.autoconf,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4162,7 +4120,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_DAD_TRANSMITS,
|
||||
.procname = "dad_transmits",
|
||||
.data = &ipv6_devconf.dad_transmits,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4170,7 +4127,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_RTR_SOLICITS,
|
||||
.procname = "router_solicitations",
|
||||
.data = &ipv6_devconf.rtr_solicits,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4178,25 +4134,20 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_RTR_SOLICIT_INTERVAL,
|
||||
.procname = "router_solicitation_interval",
|
||||
.data = &ipv6_devconf.rtr_solicit_interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_RTR_SOLICIT_DELAY,
|
||||
.procname = "router_solicitation_delay",
|
||||
.data = &ipv6_devconf.rtr_solicit_delay,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_FORCE_MLD_VERSION,
|
||||
.procname = "force_mld_version",
|
||||
.data = &ipv6_devconf.force_mld_version,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4205,7 +4156,6 @@ static struct addrconf_sysctl_table
|
||||
},
|
||||
#ifdef CONFIG_IPV6_PRIVACY
|
||||
{
|
||||
.ctl_name = NET_IPV6_USE_TEMPADDR,
|
||||
.procname = "use_tempaddr",
|
||||
.data = &ipv6_devconf.use_tempaddr,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4213,7 +4163,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_TEMP_VALID_LFT,
|
||||
.procname = "temp_valid_lft",
|
||||
.data = &ipv6_devconf.temp_valid_lft,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4221,7 +4170,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_TEMP_PREFERED_LFT,
|
||||
.procname = "temp_prefered_lft",
|
||||
.data = &ipv6_devconf.temp_prefered_lft,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4229,7 +4177,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_REGEN_MAX_RETRY,
|
||||
.procname = "regen_max_retry",
|
||||
.data = &ipv6_devconf.regen_max_retry,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4237,7 +4184,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_MAX_DESYNC_FACTOR,
|
||||
.procname = "max_desync_factor",
|
||||
.data = &ipv6_devconf.max_desync_factor,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4246,7 +4192,6 @@ static struct addrconf_sysctl_table
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.ctl_name = NET_IPV6_MAX_ADDRESSES,
|
||||
.procname = "max_addresses",
|
||||
.data = &ipv6_devconf.max_addresses,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4254,7 +4199,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_ACCEPT_RA_DEFRTR,
|
||||
.procname = "accept_ra_defrtr",
|
||||
.data = &ipv6_devconf.accept_ra_defrtr,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4262,7 +4206,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_ACCEPT_RA_PINFO,
|
||||
.procname = "accept_ra_pinfo",
|
||||
.data = &ipv6_devconf.accept_ra_pinfo,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4271,7 +4214,6 @@ static struct addrconf_sysctl_table
|
||||
},
|
||||
#ifdef CONFIG_IPV6_ROUTER_PREF
|
||||
{
|
||||
.ctl_name = NET_IPV6_ACCEPT_RA_RTR_PREF,
|
||||
.procname = "accept_ra_rtr_pref",
|
||||
.data = &ipv6_devconf.accept_ra_rtr_pref,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4279,17 +4221,14 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_RTR_PROBE_INTERVAL,
|
||||
.procname = "router_probe_interval",
|
||||
.data = &ipv6_devconf.rtr_probe_interval,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.strategy = sysctl_jiffies,
|
||||
},
|
||||
#ifdef CONFIG_IPV6_ROUTE_INFO
|
||||
{
|
||||
.ctl_name = NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN,
|
||||
.procname = "accept_ra_rt_info_max_plen",
|
||||
.data = &ipv6_devconf.accept_ra_rt_info_max_plen,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4299,7 +4238,6 @@ static struct addrconf_sysctl_table
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
.ctl_name = NET_IPV6_PROXY_NDP,
|
||||
.procname = "proxy_ndp",
|
||||
.data = &ipv6_devconf.proxy_ndp,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4307,7 +4245,6 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = NET_IPV6_ACCEPT_SOURCE_ROUTE,
|
||||
.procname = "accept_source_route",
|
||||
.data = &ipv6_devconf.accept_source_route,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4316,7 +4253,6 @@ static struct addrconf_sysctl_table
|
||||
},
|
||||
#ifdef CONFIG_IPV6_OPTIMISTIC_DAD
|
||||
{
|
||||
.ctl_name = CTL_UNNUMBERED,
|
||||
.procname = "optimistic_dad",
|
||||
.data = &ipv6_devconf.optimistic_dad,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4327,7 +4263,6 @@ static struct addrconf_sysctl_table
|
||||
#endif
|
||||
#ifdef CONFIG_IPV6_MROUTE
|
||||
{
|
||||
.ctl_name = CTL_UNNUMBERED,
|
||||
.procname = "mc_forwarding",
|
||||
.data = &ipv6_devconf.mc_forwarding,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4336,16 +4271,13 @@ static struct addrconf_sysctl_table
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.ctl_name = CTL_UNNUMBERED,
|
||||
.procname = "disable_ipv6",
|
||||
.data = &ipv6_devconf.disable_ipv6,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = addrconf_sysctl_disable,
|
||||
.strategy = sysctl_intvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = CTL_UNNUMBERED,
|
||||
.procname = "accept_dad",
|
||||
.data = &ipv6_devconf.accept_dad,
|
||||
.maxlen = sizeof(int),
|
||||
@@ -4353,13 +4285,13 @@ static struct addrconf_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.ctl_name = 0, /* sentinel */
|
||||
/* sentinel */
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
static int __addrconf_sysctl_register(struct net *net, char *dev_name,
|
||||
int ctl_name, struct inet6_dev *idev, struct ipv6_devconf *p)
|
||||
struct inet6_dev *idev, struct ipv6_devconf *p)
|
||||
{
|
||||
int i;
|
||||
struct addrconf_sysctl_table *t;
|
||||
@@ -4367,9 +4299,9 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
|
||||
#define ADDRCONF_CTL_PATH_DEV 3
|
||||
|
||||
struct ctl_path addrconf_ctl_path[] = {
|
||||
{ .procname = "net", .ctl_name = CTL_NET, },
|
||||
{ .procname = "ipv6", .ctl_name = NET_IPV6, },
|
||||
{ .procname = "conf", .ctl_name = NET_IPV6_CONF, },
|
||||
{ .procname = "net", },
|
||||
{ .procname = "ipv6", },
|
||||
{ .procname = "conf", },
|
||||
{ /* to be set */ },
|
||||
{ },
|
||||
};
|
||||
@@ -4395,7 +4327,6 @@ static int __addrconf_sysctl_register(struct net *net, char *dev_name,
|
||||
goto free;
|
||||
|
||||
addrconf_ctl_path[ADDRCONF_CTL_PATH_DEV].procname = t->dev_name;
|
||||
addrconf_ctl_path[ADDRCONF_CTL_PATH_DEV].ctl_name = ctl_name;
|
||||
|
||||
t->sysctl_header = register_net_sysctl_table(net, addrconf_ctl_path,
|
||||
t->addrconf_vars);
|
||||
@@ -4431,10 +4362,9 @@ static void addrconf_sysctl_register(struct inet6_dev *idev)
|
||||
{
|
||||
neigh_sysctl_register(idev->dev, idev->nd_parms, NET_IPV6,
|
||||
NET_IPV6_NEIGH, "ipv6",
|
||||
&ndisc_ifinfo_sysctl_change,
|
||||
ndisc_ifinfo_sysctl_strategy);
|
||||
&ndisc_ifinfo_sysctl_change);
|
||||
__addrconf_sysctl_register(dev_net(idev->dev), idev->dev->name,
|
||||
idev->dev->ifindex, idev, &idev->cnf);
|
||||
idev, &idev->cnf);
|
||||
}
|
||||
|
||||
static void addrconf_sysctl_unregister(struct inet6_dev *idev)
|
||||
@@ -4473,13 +4403,11 @@ static int addrconf_init_net(struct net *net)
|
||||
net->ipv6.devconf_dflt = dflt;
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
err = __addrconf_sysctl_register(net, "all", NET_PROTO_CONF_ALL,
|
||||
NULL, all);
|
||||
err = __addrconf_sysctl_register(net, "all", NULL, all);
|
||||
if (err < 0)
|
||||
goto err_reg_all;
|
||||
|
||||
err = __addrconf_sysctl_register(net, "default", NET_PROTO_CONF_DEFAULT,
|
||||
NULL, dflt);
|
||||
err = __addrconf_sysctl_register(net, "default", NULL, dflt);
|
||||
if (err < 0)
|
||||
goto err_reg_dflt;
|
||||
#endif
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user