Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 | ||
20380731 | 15 | #include <net/af_unix.h> |
1da177e4 LT |
16 | |
17 | static ctl_table unix_table[] = { | |
18 | { | |
19 | .ctl_name = NET_UNIX_MAX_DGRAM_QLEN, | |
20 | .procname = "max_dgram_qlen", | |
a0a53c8b | 21 | .data = &init_net.unx.sysctl_max_dgram_qlen, |
1da177e4 LT |
22 | .maxlen = sizeof(int), |
23 | .mode = 0644, | |
6d9f239a | 24 | .proc_handler = proc_dointvec |
1da177e4 LT |
25 | }, |
26 | { .ctl_name = 0 } | |
27 | }; | |
28 | ||
1d430b91 PE |
29 | static struct ctl_path unix_path[] = { |
30 | { .procname = "net", .ctl_name = CTL_NET, }, | |
31 | { .procname = "unix", .ctl_name = NET_UNIX, }, | |
32 | { }, | |
1da177e4 LT |
33 | }; |
34 | ||
97577e38 | 35 | int unix_sysctl_register(struct net *net) |
1da177e4 | 36 | { |
1597fbc0 PE |
37 | struct ctl_table *table; |
38 | ||
39 | table = kmemdup(unix_table, sizeof(unix_table), GFP_KERNEL); | |
40 | if (table == NULL) | |
41 | goto err_alloc; | |
42 | ||
a0a53c8b DL |
43 | table[0].data = &net->unx.sysctl_max_dgram_qlen; |
44 | net->unx.ctl = register_net_sysctl_table(net, unix_path, table); | |
45 | if (net->unx.ctl == NULL) | |
1597fbc0 PE |
46 | goto err_reg; |
47 | ||
48 | return 0; | |
49 | ||
50 | err_reg: | |
51 | kfree(table); | |
52 | err_alloc: | |
53 | return -ENOMEM; | |
1da177e4 LT |
54 | } |
55 | ||
97577e38 | 56 | void unix_sysctl_unregister(struct net *net) |
1da177e4 | 57 | { |
1597fbc0 PE |
58 | struct ctl_table *table; |
59 | ||
a0a53c8b DL |
60 | table = net->unx.ctl->ctl_table_arg; |
61 | unregister_sysctl_table(net->unx.ctl); | |
1597fbc0 | 62 | kfree(table); |
1da177e4 | 63 | } |