[PATCH 0/5] net: sysctl: share ipv4/ipv6 sysctl tables

From: Lucian Adrian Grijincu
Date: Thu Feb 03 2011 - 23:37:44 EST



Each network device gets the same 25/24 sysctl entries for ipv4/ipv6
in /proc/sys/net/ipv4/conf/DEVNAME and /proc/sys/net/ipv6/conf/DEVNAME

Unfortunately, space is wasted holding very much similar data.
Fortunately, with some tricks these entries can be shared between all
network devices.


The single entry in 'struct ctl_table' that was modified at runtime
for leaf ctl_table nodes and prevented sharing was 'parent'. This
field was first introduces for selinux and then was used to implement
sysctl_check_table. Selinux recently removed the need for this field:
* http://thread.gmane.org/gmane.linux.kernel.lsm/12623
* LKML-Reference: 1296519474-15714-1-git-send-email-lucian.grijincu@xxxxxxxxx


Remove the need for 'parent' in sysctl_check_table and remove the
'parent' field:

[PATCH 1/5] sysctl: faster reimplementation of sysctl_check_table
[PATCH 2/5] sysctl: remove useless ctl_table->parent field


Pave the way for sharing of ipv4/6 tables: allow data to be stored in
the nodes above the leafs that will be shared:

[PATCH 3/5] sysctl: write ctl_table->extra2 to entries created from ctl_path


Finally share the leaf sysctl tables for ipv4/ipv6:

[PATCH 4/5] ipv4: share sysctl net/ipv4/conf/DEVNAME/ tables
[PATCH 5/5] ipv6: share sysctl net/ipv6/conf/DEVNAME/ tables


fs/proc/proc_sysctl.c | 16 +++-
include/linux/inetdevice.h | 12 +++-
include/linux/ipv6.h | 15 +++-
include/linux/sysctl.h | 3 +-
include/net/net_namespace.h | 2 +
kernel/sysctl.c | 18 +---
kernel/sysctl_check.c | 125 +++++++++++++--------------
net/ipv4/devinet.c | 203 ++++++++++++++++++++++++++++--------------
net/ipv6/addrconf.c | 192 +++++++++++++++++++++++++++-------------
net/sysctl_net.c | 20 +++--
10 files changed, 387 insertions(+), 219 deletions(-)

--
1.7.4.rc1.7.g2cf08.dirty

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/