net ipv4: Decouple ipv4 interface parameters from binary sysctl numbers
Stop using the binary sysctl enumeartion in sysctl.h as an index into a per interface array. This leads to unnecessary binary sysctl number allocation, and a fragility in data structure and implementation because of unnecessary coupling. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9e3f8063a7
commit
02291680ff
@@ -64,20 +64,20 @@
|
||||
|
||||
static struct ipv4_devconf ipv4_devconf = {
|
||||
.data = {
|
||||
[NET_IPV4_CONF_ACCEPT_REDIRECTS - 1] = 1,
|
||||
[NET_IPV4_CONF_SEND_REDIRECTS - 1] = 1,
|
||||
[NET_IPV4_CONF_SECURE_REDIRECTS - 1] = 1,
|
||||
[NET_IPV4_CONF_SHARED_MEDIA - 1] = 1,
|
||||
[IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 1,
|
||||
[IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1,
|
||||
[IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1,
|
||||
[IPV4_DEVCONF_SHARED_MEDIA - 1] = 1,
|
||||
},
|
||||
};
|
||||
|
||||
static struct ipv4_devconf ipv4_devconf_dflt = {
|
||||
.data = {
|
||||
[NET_IPV4_CONF_ACCEPT_REDIRECTS - 1] = 1,
|
||||
[NET_IPV4_CONF_SEND_REDIRECTS - 1] = 1,
|
||||
[NET_IPV4_CONF_SECURE_REDIRECTS - 1] = 1,
|
||||
[NET_IPV4_CONF_SHARED_MEDIA - 1] = 1,
|
||||
[NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE - 1] = 1,
|
||||
[IPV4_DEVCONF_ACCEPT_REDIRECTS - 1] = 1,
|
||||
[IPV4_DEVCONF_SEND_REDIRECTS - 1] = 1,
|
||||
[IPV4_DEVCONF_SECURE_REDIRECTS - 1] = 1,
|
||||
[IPV4_DEVCONF_SHARED_MEDIA - 1] = 1,
|
||||
[IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE - 1] = 1,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1360,7 +1360,7 @@ int ipv4_doint_and_flush(ctl_table *ctl, int write,
|
||||
{ \
|
||||
.procname = name, \
|
||||
.data = ipv4_devconf.data + \
|
||||
NET_IPV4_CONF_ ## attr - 1, \
|
||||
IPV4_DEVCONF_ ## attr - 1, \
|
||||
.maxlen = sizeof(int), \
|
||||
.mode = mval, \
|
||||
.proc_handler = proc, \
|
||||
@@ -1381,7 +1381,7 @@ int ipv4_doint_and_flush(ctl_table *ctl, int write,
|
||||
|
||||
static struct devinet_sysctl_table {
|
||||
struct ctl_table_header *sysctl_header;
|
||||
struct ctl_table devinet_vars[__NET_IPV4_CONF_MAX];
|
||||
struct ctl_table devinet_vars[__IPV4_DEVCONF_MAX];
|
||||
char *dev_name;
|
||||
} devinet_sysctl = {
|
||||
.devinet_vars = {
|
||||
@@ -1503,7 +1503,7 @@ static struct ctl_table ctl_forward_entry[] = {
|
||||
{
|
||||
.procname = "ip_forward",
|
||||
.data = &ipv4_devconf.data[
|
||||
NET_IPV4_CONF_FORWARDING - 1],
|
||||
IPV4_DEVCONF_FORWARDING - 1],
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = devinet_sysctl_forward,
|
||||
@@ -1547,7 +1547,7 @@ static __net_init int devinet_init_net(struct net *net)
|
||||
if (tbl == NULL)
|
||||
goto err_alloc_ctl;
|
||||
|
||||
tbl[0].data = &all->data[NET_IPV4_CONF_FORWARDING - 1];
|
||||
tbl[0].data = &all->data[IPV4_DEVCONF_FORWARDING - 1];
|
||||
tbl[0].extra1 = all;
|
||||
tbl[0].extra2 = net;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user