Przeglądaj źródła

net: Implement register_net_sysctl.

Right now all of the networking sysctl registrations are running in a
compatibiity mode.  The natvie sysctl registration api takes a cstring
for a path and a simple ctl_table.  Implement register_net_sysctl so
that we can register network sysctls without needing to use
compatiblity code in the sysctl core.

Switching from a ctl_path to a cstring results in less boiler plate
and denser code that is a little easier to read.

I would simply have changed the arguments to register_net_sysctl_table
instead of keeping two functions in parallel but gcc will allow a
ctl_path pointer to be passed to a char * pointer with only issuing a
warning resulting in completely incorrect code can be built.  Since I
have to change the function name I am taking advantage of the situation
to let both register_net_sysctl and register_net_sysctl_table live for a
short time in parallel which makes clean conversion patches a bit easier
to read and write.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Eric W. Biederman 13 lat temu
rodzic
commit
ab41a2ca50
2 zmienionych plików z 9 dodań i 0 usunięć
  1. 2 0
      include/net/net_namespace.h
  2. 7 0
      net/sysctl_net.c

+ 2 - 0
include/net/net_namespace.h

@@ -287,6 +287,8 @@ extern struct ctl_table_header *register_net_sysctl_table(struct net *net,
 	const struct ctl_path *path, struct ctl_table *table);
 	const struct ctl_path *path, struct ctl_table *table);
 extern struct ctl_table_header *register_net_sysctl_rotable(
 extern struct ctl_table_header *register_net_sysctl_rotable(
 	const struct ctl_path *path, struct ctl_table *table);
 	const struct ctl_path *path, struct ctl_table *table);
+extern struct ctl_table_header *register_net_sysctl(struct net *net,
+	const char *path, struct ctl_table *table);
 extern void unregister_net_sysctl_table(struct ctl_table_header *header);
 extern void unregister_net_sysctl_table(struct ctl_table_header *header);
 
 
 #endif /* __NET_NET_NAMESPACE_H */
 #endif /* __NET_NET_NAMESPACE_H */

+ 7 - 0
net/sysctl_net.c

@@ -117,6 +117,13 @@ struct ctl_table_header *register_net_sysctl_rotable(const
 }
 }
 EXPORT_SYMBOL_GPL(register_net_sysctl_rotable);
 EXPORT_SYMBOL_GPL(register_net_sysctl_rotable);
 
 
+struct ctl_table_header *register_net_sysctl(struct net *net,
+	const char *path, struct ctl_table *table)
+{
+	return __register_sysctl_table(&net->sysctls, path, table);
+}
+EXPORT_SYMBOL_GPL(register_net_sysctl);
+
 void unregister_net_sysctl_table(struct ctl_table_header *header)
 void unregister_net_sysctl_table(struct ctl_table_header *header)
 {
 {
 	unregister_sysctl_table(header);
 	unregister_sysctl_table(header);