Commit 3151a9ab04714d0323efbe3c6c12bc5b2b1f058d
Committed by
David S. Miller
1 parent
90754f8ec0
Exists in
master
and in
7 other branches
[DECNET]: Switch to using ctl_paths.
The decnet includes two places to patch. The first one is the net/decnet table itself, and it is patched just like other subsystems in the first patch in this series. The second place is a bit more complex - it is the net/decnet/conf/xxx entries,. similar to those in ipv4/devinet.c and ipv6/addrconf.c. This code is made similar to those in ipv[46]. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 2 changed files with 20 additions and 55 deletions Side-by-side Diff
net/decnet/dn_dev.c
... | ... | @@ -173,10 +173,6 @@ |
173 | 173 | static struct dn_dev_sysctl_table { |
174 | 174 | struct ctl_table_header *sysctl_header; |
175 | 175 | ctl_table dn_dev_vars[5]; |
176 | - ctl_table dn_dev_dev[2]; | |
177 | - ctl_table dn_dev_conf_dir[2]; | |
178 | - ctl_table dn_dev_proto_dir[2]; | |
179 | - ctl_table dn_dev_root_dir[2]; | |
180 | 176 | } dn_dev_sysctl = { |
181 | 177 | NULL, |
182 | 178 | { |
... | ... | @@ -224,30 +220,6 @@ |
224 | 220 | }, |
225 | 221 | {0} |
226 | 222 | }, |
227 | - {{ | |
228 | - .ctl_name = 0, | |
229 | - .procname = "", | |
230 | - .mode = 0555, | |
231 | - .child = dn_dev_sysctl.dn_dev_vars | |
232 | - }, {0}}, | |
233 | - {{ | |
234 | - .ctl_name = NET_DECNET_CONF, | |
235 | - .procname = "conf", | |
236 | - .mode = 0555, | |
237 | - .child = dn_dev_sysctl.dn_dev_dev | |
238 | - }, {0}}, | |
239 | - {{ | |
240 | - .ctl_name = NET_DECNET, | |
241 | - .procname = "decnet", | |
242 | - .mode = 0555, | |
243 | - .child = dn_dev_sysctl.dn_dev_conf_dir | |
244 | - }, {0}}, | |
245 | - {{ | |
246 | - .ctl_name = CTL_NET, | |
247 | - .procname = "net", | |
248 | - .mode = 0555, | |
249 | - .child = dn_dev_sysctl.dn_dev_proto_dir | |
250 | - }, {0}} | |
251 | 223 | }; |
252 | 224 | |
253 | 225 | static void dn_dev_sysctl_register(struct net_device *dev, struct dn_dev_parms *parms) |
... | ... | @@ -255,6 +227,16 @@ |
255 | 227 | struct dn_dev_sysctl_table *t; |
256 | 228 | int i; |
257 | 229 | |
230 | +#define DN_CTL_PATH_DEV 3 | |
231 | + | |
232 | + struct ctl_path dn_ctl_path[] = { | |
233 | + { .procname = "net", .ctl_name = CTL_NET, }, | |
234 | + { .procname = "decnet", .ctl_name = NET_DECNET, }, | |
235 | + { .procname = "conf", .ctl_name = NET_DECNET_CONF, }, | |
236 | + { /* to be set */ }, | |
237 | + { }, | |
238 | + }; | |
239 | + | |
258 | 240 | t = kmemdup(&dn_dev_sysctl, sizeof(*t), GFP_KERNEL); |
259 | 241 | if (t == NULL) |
260 | 242 | return; |
261 | 243 | |
262 | 244 | |
263 | 245 | |
... | ... | @@ -265,20 +247,16 @@ |
265 | 247 | } |
266 | 248 | |
267 | 249 | if (dev) { |
268 | - t->dn_dev_dev[0].procname = dev->name; | |
269 | - t->dn_dev_dev[0].ctl_name = dev->ifindex; | |
250 | + dn_ctl_path[DN_CTL_PATH_DEV].procname = dev->name; | |
251 | + dn_ctl_path[DN_CTL_PATH_DEV].ctl_name = dev->ifindex; | |
270 | 252 | } else { |
271 | - t->dn_dev_dev[0].procname = parms->name; | |
272 | - t->dn_dev_dev[0].ctl_name = parms->ctl_name; | |
253 | + dn_ctl_path[DN_CTL_PATH_DEV].procname = parms->name; | |
254 | + dn_ctl_path[DN_CTL_PATH_DEV].ctl_name = parms->ctl_name; | |
273 | 255 | } |
274 | 256 | |
275 | - t->dn_dev_dev[0].child = t->dn_dev_vars; | |
276 | - t->dn_dev_conf_dir[0].child = t->dn_dev_dev; | |
277 | - t->dn_dev_proto_dir[0].child = t->dn_dev_conf_dir; | |
278 | - t->dn_dev_root_dir[0].child = t->dn_dev_proto_dir; | |
279 | 257 | t->dn_dev_vars[0].extra1 = (void *)dev; |
280 | 258 | |
281 | - t->sysctl_header = register_sysctl_table(t->dn_dev_root_dir); | |
259 | + t->sysctl_header = register_sysctl_paths(dn_ctl_path, t->dn_dev_vars); | |
282 | 260 | if (t->sysctl_header == NULL) |
283 | 261 | kfree(t); |
284 | 262 | else |
net/decnet/sysctl_net_decnet.c
... | ... | @@ -470,28 +470,15 @@ |
470 | 470 | {0} |
471 | 471 | }; |
472 | 472 | |
473 | -static ctl_table dn_dir_table[] = { | |
474 | - { | |
475 | - .ctl_name = NET_DECNET, | |
476 | - .procname = "decnet", | |
477 | - .mode = 0555, | |
478 | - .child = dn_table}, | |
479 | - {0} | |
473 | +static struct ctl_path dn_path[] = { | |
474 | + { .procname = "net", .ctl_name = CTL_NET, }, | |
475 | + { .procname = "decnet", .ctl_name = NET_DECNET, }, | |
476 | + { } | |
480 | 477 | }; |
481 | 478 | |
482 | -static ctl_table dn_root_table[] = { | |
483 | - { | |
484 | - .ctl_name = CTL_NET, | |
485 | - .procname = "net", | |
486 | - .mode = 0555, | |
487 | - .child = dn_dir_table | |
488 | - }, | |
489 | - {0} | |
490 | -}; | |
491 | - | |
492 | 479 | void dn_register_sysctl(void) |
493 | 480 | { |
494 | - dn_table_header = register_sysctl_table(dn_root_table); | |
481 | + dn_table_header = register_sysctl_paths(dn_path, dn_table); | |
495 | 482 | } |
496 | 483 | |
497 | 484 | void dn_unregister_sysctl(void) |