Line data Source code
1 : /*
2 : * NET4: Sysctl interface to net af_unix subsystem.
3 : *
4 : * Authors: Mike Shaver.
5 : *
6 : * This program is free software; you can redistribute it and/or
7 : * modify it under the terms of the GNU General Public License
8 : * as published by the Free Software Foundation; either version
9 : * 2 of the License, or (at your option) any later version.
10 : */
11 :
12 : #include <linux/mm.h>
13 : #include <linux/sysctl.h>
14 :
15 : #include <net/af_unix.h>
16 :
17 1 : static ctl_table unix_table[] = {
18 : {
19 : .procname = "max_dgram_qlen",
20 : .data = &init_net.unx.sysctl_max_dgram_qlen,
21 : .maxlen = sizeof(int),
22 : .mode = 0644,
23 : .proc_handler = proc_dointvec
24 : },
25 : { }
26 : };
27 :
28 1 : static struct ctl_path unix_path[] = {
29 : { .procname = "net", },
30 : { .procname = "unix", },
31 : { },
32 : };
33 :
34 : int unix_sysctl_register(struct net *net)
35 : {
36 1 : struct ctl_table *table;
37 1 :
38 2 : table = kmemdup(unix_table, sizeof(unix_table), GFP_KERNEL);
39 2 : if (table == NULL)
40 1 : goto err_alloc;
41 :
42 1 : table[0].data = &net->unx.sysctl_max_dgram_qlen;
43 2 : net->unx.ctl = register_net_sysctl_table(net, unix_path, table);
44 2 : if (net->unx.ctl == NULL)
45 1 : goto err_reg;
46 :
47 1 : return 0;
48 1 :
49 : err_reg:
50 1 : kfree(table);
51 : err_alloc:
52 3 : return -ENOMEM;
53 : }
54 :
55 : void unix_sysctl_unregister(struct net *net)
56 : {
57 2 : struct ctl_table *table;
58 :
59 2 : table = net->unx.ctl->ctl_table_arg;
60 2 : unregister_sysctl_table(net->unx.ctl);
61 2 : kfree(table);
62 2 : }
|