1 #include <linux/sysctl.h>
2 #include <linux/slab.h>
3 #include <net/net_namespace.h>
6 static void __net_init
__xfrm_sysctl_init(struct net
*net
)
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;
15 static struct ctl_table xfrm_table
[] = {
17 .procname
= "xfrm_aevent_etime",
18 .maxlen
= sizeof(u32
),
20 .proc_handler
= proc_dointvec
23 .procname
= "xfrm_aevent_rseqth",
24 .maxlen
= sizeof(u32
),
26 .proc_handler
= proc_dointvec
29 .procname
= "xfrm_larval_drop",
30 .maxlen
= sizeof(int),
32 .proc_handler
= proc_dointvec
35 .procname
= "xfrm_acq_expires",
36 .maxlen
= sizeof(int),
38 .proc_handler
= proc_dointvec
43 int __net_init
xfrm_sysctl_init(struct net
*net
)
45 struct ctl_table
*table
;
47 __xfrm_sysctl_init(net
);
49 table
= kmemdup(xfrm_table
, sizeof(xfrm_table
), GFP_KERNEL
);
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
;
57 /* Don't export sysctls to unprivileged users */
58 if (net
->user_ns
!= &init_user_ns
)
59 table
[0].procname
= NULL
;
61 net
->xfrm
.sysctl_hdr
= register_net_sysctl(net
, "net/core", table
);
62 if (!net
->xfrm
.sysctl_hdr
)
72 void __net_exit
xfrm_sysctl_fini(struct net
*net
)
74 struct ctl_table
*table
;
76 table
= net
->xfrm
.sysctl_hdr
->ctl_table_arg
;
77 unregister_net_sysctl_table(net
->xfrm
.sysctl_hdr
);
81 int __net_init
xfrm_sysctl_init(struct net
*net
)
83 __xfrm_sysctl_init(net
);