diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2008-07-14 21:22:20 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2008-07-26 20:53:08 -0400 |
commit | 734550921e9b7ab924a43aa3d0bd4239dac4fbf1 (patch) | |
tree | 7be4b0808ba9860f1d953b45120262a277866021 /include | |
parent | 7ac6cd653d7c31ad6b7bb5b88c549c4ebf628c34 (diff) |
[PATCH] beginning of sysctl cleanup - ctl_table_set
New object: set of sysctls [currently - root and per-net-ns].
Contains: pointer to parent set, list of tables and "should I see this set?"
method (->is_seen(set)).
Current lists of tables are subsumed by that; net-ns contains such a beast.
->lookup() for ctl_table_root returns pointer to ctl_table_set instead of
that to ->list of that ctl_table_set.
[folded compile fixes by rdd for configs without sysctl]
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/sysctl.h | 15 | ||||
-rw-r--r-- | include/net/net_namespace.h | 4 |
2 files changed, 16 insertions, 3 deletions
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 24141b4d1a11..c1e0cf408af9 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
@@ -947,6 +947,16 @@ struct ctl_table; | |||
947 | struct nsproxy; | 947 | struct nsproxy; |
948 | struct ctl_table_root; | 948 | struct ctl_table_root; |
949 | 949 | ||
950 | struct ctl_table_set { | ||
951 | struct list_head list; | ||
952 | struct ctl_table_set *parent; | ||
953 | int (*is_seen)(struct ctl_table_set *); | ||
954 | }; | ||
955 | |||
956 | extern void setup_sysctl_set(struct ctl_table_set *p, | ||
957 | struct ctl_table_set *parent, | ||
958 | int (*is_seen)(struct ctl_table_set *)); | ||
959 | |||
950 | extern struct ctl_table_header *sysctl_head_next(struct ctl_table_header *prev); | 960 | extern struct ctl_table_header *sysctl_head_next(struct ctl_table_header *prev); |
951 | extern struct ctl_table_header *__sysctl_head_next(struct nsproxy *namespaces, | 961 | extern struct ctl_table_header *__sysctl_head_next(struct nsproxy *namespaces, |
952 | struct ctl_table_header *prev); | 962 | struct ctl_table_header *prev); |
@@ -1049,8 +1059,8 @@ struct ctl_table | |||
1049 | 1059 | ||
1050 | struct ctl_table_root { | 1060 | struct ctl_table_root { |
1051 | struct list_head root_list; | 1061 | struct list_head root_list; |
1052 | struct list_head header_list; | 1062 | struct ctl_table_set default_set; |
1053 | struct list_head *(*lookup)(struct ctl_table_root *root, | 1063 | struct ctl_table_set *(*lookup)(struct ctl_table_root *root, |
1054 | struct nsproxy *namespaces); | 1064 | struct nsproxy *namespaces); |
1055 | int (*permissions)(struct ctl_table_root *root, | 1065 | int (*permissions)(struct ctl_table_root *root, |
1056 | struct nsproxy *namespaces, struct ctl_table *table); | 1066 | struct nsproxy *namespaces, struct ctl_table *table); |
@@ -1066,6 +1076,7 @@ struct ctl_table_header | |||
1066 | struct completion *unregistering; | 1076 | struct completion *unregistering; |
1067 | struct ctl_table *ctl_table_arg; | 1077 | struct ctl_table *ctl_table_arg; |
1068 | struct ctl_table_root *root; | 1078 | struct ctl_table_root *root; |
1079 | struct ctl_table_set *set; | ||
1069 | }; | 1080 | }; |
1070 | 1081 | ||
1071 | /* struct ctl_path describes where in the hierarchy a table is added */ | 1082 | /* struct ctl_path describes where in the hierarchy a table is added */ |
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 3855620b78a9..a8eb43cf0c7e 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
@@ -38,7 +38,9 @@ struct net { | |||
38 | struct proc_dir_entry *proc_net; | 38 | struct proc_dir_entry *proc_net; |
39 | struct proc_dir_entry *proc_net_stat; | 39 | struct proc_dir_entry *proc_net_stat; |
40 | 40 | ||
41 | struct list_head sysctl_table_headers; | 41 | #ifdef CONFIG_SYSCTL |
42 | struct ctl_table_set sysctls; | ||
43 | #endif | ||
42 | 44 | ||
43 | struct net_device *loopback_dev; /* The loopback */ | 45 | struct net_device *loopback_dev; /* The loopback */ |
44 | 46 | ||