Commit 3151a9ab04714d0323efbe3c6c12bc5b2b1f058d

Authored by Pavel Emelyanov
Committed by David S. Miller
1 parent 90754f8ec0

[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

... ... @@ -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)