aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2008-07-14 21:22:20 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2008-07-26 20:53:08 -0400
commit734550921e9b7ab924a43aa3d0bd4239dac4fbf1 (patch)
tree7be4b0808ba9860f1d953b45120262a277866021 /include
parent7ac6cd653d7c31ad6b7bb5b88c549c4ebf628c34 (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.h15
-rw-r--r--include/net/net_namespace.h4
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;
947struct nsproxy; 947struct nsproxy;
948struct ctl_table_root; 948struct ctl_table_root;
949 949
950struct ctl_table_set {
951 struct list_head list;
952 struct ctl_table_set *parent;
953 int (*is_seen)(struct ctl_table_set *);
954};
955
956extern void setup_sysctl_set(struct ctl_table_set *p,
957 struct ctl_table_set *parent,
958 int (*is_seen)(struct ctl_table_set *));
959
950extern struct ctl_table_header *sysctl_head_next(struct ctl_table_header *prev); 960extern struct ctl_table_header *sysctl_head_next(struct ctl_table_header *prev);
951extern struct ctl_table_header *__sysctl_head_next(struct nsproxy *namespaces, 961extern 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
1050struct ctl_table_root { 1060struct 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