Root/
1 | #include <linux/sysctl.h> |
2 | #include <linux/slab.h> |
3 | #include <net/net_namespace.h> |
4 | #include <net/xfrm.h> |
5 | |
6 | static void __net_init __xfrm_sysctl_init(struct net *net) |
7 | { |
8 | net->xfrm.sysctl_aevent_etime = XFRM_AE_ETIME; |
9 | net->xfrm.sysctl_aevent_rseqth = XFRM_AE_SEQT_SIZE; |
10 | net->xfrm.sysctl_larval_drop = 1; |
11 | net->xfrm.sysctl_acq_expires = 30; |
12 | } |
13 | |
14 | #ifdef CONFIG_SYSCTL |
15 | static struct ctl_table xfrm_table[] = { |
16 | { |
17 | .procname = "xfrm_aevent_etime", |
18 | .maxlen = sizeof(u32), |
19 | .mode = 0644, |
20 | .proc_handler = proc_dointvec |
21 | }, |
22 | { |
23 | .procname = "xfrm_aevent_rseqth", |
24 | .maxlen = sizeof(u32), |
25 | .mode = 0644, |
26 | .proc_handler = proc_dointvec |
27 | }, |
28 | { |
29 | .procname = "xfrm_larval_drop", |
30 | .maxlen = sizeof(int), |
31 | .mode = 0644, |
32 | .proc_handler = proc_dointvec |
33 | }, |
34 | { |
35 | .procname = "xfrm_acq_expires", |
36 | .maxlen = sizeof(int), |
37 | .mode = 0644, |
38 | .proc_handler = proc_dointvec |
39 | }, |
40 | {} |
41 | }; |
42 | |
43 | int __net_init xfrm_sysctl_init(struct net *net) |
44 | { |
45 | struct ctl_table *table; |
46 | |
47 | __xfrm_sysctl_init(net); |
48 | |
49 | table = kmemdup(xfrm_table, sizeof(xfrm_table), GFP_KERNEL); |
50 | if (!table) |
51 | goto out_kmemdup; |
52 | table[0].data = &net->xfrm.sysctl_aevent_etime; |
53 | table[1].data = &net->xfrm.sysctl_aevent_rseqth; |
54 | table[2].data = &net->xfrm.sysctl_larval_drop; |
55 | table[3].data = &net->xfrm.sysctl_acq_expires; |
56 | |
57 | /* Don't export sysctls to unprivileged users */ |
58 | if (net->user_ns != &init_user_ns) |
59 | table[0].procname = NULL; |
60 | |
61 | net->xfrm.sysctl_hdr = register_net_sysctl(net, "net/core", table); |
62 | if (!net->xfrm.sysctl_hdr) |
63 | goto out_register; |
64 | return 0; |
65 | |
66 | out_register: |
67 | kfree(table); |
68 | out_kmemdup: |
69 | return -ENOMEM; |
70 | } |
71 | |
72 | void __net_exit xfrm_sysctl_fini(struct net *net) |
73 | { |
74 | struct ctl_table *table; |
75 | |
76 | table = net->xfrm.sysctl_hdr->ctl_table_arg; |
77 | unregister_net_sysctl_table(net->xfrm.sysctl_hdr); |
78 | kfree(table); |
79 | } |
80 | #else |
81 | int __net_init xfrm_sysctl_init(struct net *net) |
82 | { |
83 | __xfrm_sysctl_init(net); |
84 | return 0; |
85 | } |
86 | #endif |
87 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9