1/* Key management controls
2 *
3 * Copyright (C) 2008 Red Hat, Inc. All Rights Reserved.
4 * Written by David Howells (dhowells@redhat.com)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public Licence
8 * as published by the Free Software Foundation; either version
9 * 2 of the Licence, or (at your option) any later version.
10 */
11
12#include <linux/key.h>
13#include <linux/sysctl.h>
14#include "internal.h"
15
16static const int zero, one = 1, max = INT_MAX;
17
18struct ctl_table key_sysctls[] = {
19	{
20		.procname = "maxkeys",
21		.data = &key_quota_maxkeys,
22		.maxlen = sizeof(unsigned),
23		.mode = 0644,
24		.proc_handler = proc_dointvec_minmax,
25		.extra1 = (void *) &one,
26		.extra2 = (void *) &max,
27	},
28	{
29		.procname = "maxbytes",
30		.data = &key_quota_maxbytes,
31		.maxlen = sizeof(unsigned),
32		.mode = 0644,
33		.proc_handler = proc_dointvec_minmax,
34		.extra1 = (void *) &one,
35		.extra2 = (void *) &max,
36	},
37	{
38		.procname = "root_maxkeys",
39		.data = &key_quota_root_maxkeys,
40		.maxlen = sizeof(unsigned),
41		.mode = 0644,
42		.proc_handler = proc_dointvec_minmax,
43		.extra1 = (void *) &one,
44		.extra2 = (void *) &max,
45	},
46	{
47		.procname = "root_maxbytes",
48		.data = &key_quota_root_maxbytes,
49		.maxlen = sizeof(unsigned),
50		.mode = 0644,
51		.proc_handler = proc_dointvec_minmax,
52		.extra1 = (void *) &one,
53		.extra2 = (void *) &max,
54	},
55	{
56		.procname = "gc_delay",
57		.data = &key_gc_delay,
58		.maxlen = sizeof(unsigned),
59		.mode = 0644,
60		.proc_handler = proc_dointvec_minmax,
61		.extra1 = (void *) &zero,
62		.extra2 = (void *) &max,
63	},
64#ifdef CONFIG_PERSISTENT_KEYRINGS
65	{
66		.procname = "persistent_keyring_expiry",
67		.data = &persistent_keyring_expiry,
68		.maxlen = sizeof(unsigned),
69		.mode = 0644,
70		.proc_handler = proc_dointvec_minmax,
71		.extra1 = (void *) &zero,
72		.extra2 = (void *) &max,
73	},
74#endif
75	{ }
76};
77