xref: /freebsd/lib/libcasper/services/cap_sysctl/cap_sysctl.h (revision 5c2bc3db201a4fe8d7911cf816bea104d5dc2138)
1c501d73cSMariusz Zaborski /*-
2c501d73cSMariusz Zaborski  * Copyright (c) 2013 The FreeBSD Foundation
3c501d73cSMariusz Zaborski  *
4c501d73cSMariusz Zaborski  * This software was developed by Pawel Jakub Dawidek under sponsorship from
5c501d73cSMariusz Zaborski  * the FreeBSD Foundation.
6c501d73cSMariusz Zaborski  *
7c501d73cSMariusz Zaborski  * Redistribution and use in source and binary forms, with or without
8c501d73cSMariusz Zaborski  * modification, are permitted provided that the following conditions
9c501d73cSMariusz Zaborski  * are met:
10c501d73cSMariusz Zaborski  * 1. Redistributions of source code must retain the above copyright
11c501d73cSMariusz Zaborski  *    notice, this list of conditions and the following disclaimer.
12c501d73cSMariusz Zaborski  * 2. Redistributions in binary form must reproduce the above copyright
13c501d73cSMariusz Zaborski  *    notice, this list of conditions and the following disclaimer in the
14c501d73cSMariusz Zaborski  *    documentation and/or other materials provided with the distribution.
15c501d73cSMariusz Zaborski  *
16c501d73cSMariusz Zaborski  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
17c501d73cSMariusz Zaborski  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18c501d73cSMariusz Zaborski  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19c501d73cSMariusz Zaborski  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
20c501d73cSMariusz Zaborski  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21c501d73cSMariusz Zaborski  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22c501d73cSMariusz Zaborski  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23c501d73cSMariusz Zaborski  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24c501d73cSMariusz Zaborski  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25c501d73cSMariusz Zaborski  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26c501d73cSMariusz Zaborski  * SUCH DAMAGE.
27c501d73cSMariusz Zaborski  */
28c501d73cSMariusz Zaborski 
29c501d73cSMariusz Zaborski #ifndef _CAP_SYSCTL_H_
30c501d73cSMariusz Zaborski #define	_CAP_SYSCTL_H_
31c501d73cSMariusz Zaborski 
32ceb36bc9SMariusz Zaborski #ifdef HAVE_CASPER
33ceb36bc9SMariusz Zaborski #define	WITH_CASPER
34ceb36bc9SMariusz Zaborski #endif
35ceb36bc9SMariusz Zaborski 
36b30c6ac9SConrad Meyer #include <sys/cdefs.h>
37b30c6ac9SConrad Meyer 
38c501d73cSMariusz Zaborski #define	CAP_SYSCTL_READ		0x01
39c501d73cSMariusz Zaborski #define	CAP_SYSCTL_WRITE	0x02
40c501d73cSMariusz Zaborski #define	CAP_SYSCTL_RDWR		(CAP_SYSCTL_READ | CAP_SYSCTL_WRITE)
41c501d73cSMariusz Zaborski #define	CAP_SYSCTL_RECURSIVE	0x04
42c501d73cSMariusz Zaborski 
43*45951189SMariusz Zaborski struct cap_sysctl_limit;
44*45951189SMariusz Zaborski typedef struct cap_sysctl_limit cap_sysctl_limit_t;
45*45951189SMariusz Zaborski 
46*45951189SMariusz Zaborski #ifdef WITH_CASPER
47*45951189SMariusz Zaborski 
48b30c6ac9SConrad Meyer __BEGIN_DECLS
49b30c6ac9SConrad Meyer 
501608c46eSMark Johnston int cap_sysctl(cap_channel_t *chan, const int *name, u_int namelen, void *oldp,
511608c46eSMark Johnston     size_t *oldlenp, const void *newp, size_t newlen);
52c501d73cSMariusz Zaborski int cap_sysctlbyname(cap_channel_t *chan, const char *name, void *oldp,
53c501d73cSMariusz Zaborski     size_t *oldlenp, const void *newp, size_t newlen);
541608c46eSMark Johnston int cap_sysctlnametomib(cap_channel_t *chan, const char *name, int *mibp,
551608c46eSMark Johnston     size_t *sizep);
561608c46eSMark Johnston 
571608c46eSMark Johnston cap_sysctl_limit_t *cap_sysctl_limit_init(cap_channel_t *);
581608c46eSMark Johnston cap_sysctl_limit_t *cap_sysctl_limit_name(cap_sysctl_limit_t *limit,
591608c46eSMark Johnston     const char *name, int flags);
602750f1b9SConrad Meyer cap_sysctl_limit_t *cap_sysctl_limit_mib(cap_sysctl_limit_t *limit,
612750f1b9SConrad Meyer     const int *mibp, u_int miblen, int flags);
621608c46eSMark Johnston int cap_sysctl_limit(cap_sysctl_limit_t *limit);
63b30c6ac9SConrad Meyer 
64b30c6ac9SConrad Meyer __END_DECLS
65b30c6ac9SConrad Meyer 
661608c46eSMark Johnston #else /* !WITH_CASPER */
678c121177SMariusz Zaborski static inline int
688c121177SMariusz Zaborski cap_sysctl(cap_channel_t *chan __unused, const int *name, u_int namelen,
698c121177SMariusz Zaborski     void *oldp, size_t *oldlenp, const void *newp, size_t newlen)
708c121177SMariusz Zaborski {
711608c46eSMark Johnston 
728c121177SMariusz Zaborski 	return (sysctl(name, namelen, oldp, oldlenp, newp, newlen));
738c121177SMariusz Zaborski }
748c121177SMariusz Zaborski 
758c121177SMariusz Zaborski static inline int
768c121177SMariusz Zaborski cap_sysctlbyname(cap_channel_t *chan __unused, const char *name,
778c121177SMariusz Zaborski     void *oldp, size_t *oldlenp, const void *newp, size_t newlen)
788c121177SMariusz Zaborski {
798c121177SMariusz Zaborski 
808c121177SMariusz Zaborski 	return (sysctlbyname(name, oldp, oldlenp, newp, newlen));
818c121177SMariusz Zaborski }
828c121177SMariusz Zaborski 
838c121177SMariusz Zaborski static inline int
848c121177SMariusz Zaborski cap_sysctlnametomib(cap_channel_t *chan __unused, const char *name, int *mibp,
858c121177SMariusz Zaborski     size_t *sizep)
868c121177SMariusz Zaborski {
878c121177SMariusz Zaborski 
888c121177SMariusz Zaborski 	return (sysctlnametomib(name, mibp, sizep));
898c121177SMariusz Zaborski }
908c121177SMariusz Zaborski 
918c121177SMariusz Zaborski static inline cap_sysctl_limit_t *
928c121177SMariusz Zaborski cap_sysctl_limit_init(cap_channel_t *limit __unused)
938c121177SMariusz Zaborski {
948c121177SMariusz Zaborski 
958c121177SMariusz Zaborski 	return (NULL);
968c121177SMariusz Zaborski }
978c121177SMariusz Zaborski 
988c121177SMariusz Zaborski static inline cap_sysctl_limit_t *
998c121177SMariusz Zaborski cap_sysctl_limit_name(cap_sysctl_limit_t *limit __unused,
1008c121177SMariusz Zaborski     const char *name __unused, int flags __unused)
1018c121177SMariusz Zaborski {
1028c121177SMariusz Zaborski 
1038c121177SMariusz Zaborski 	return (NULL);
1048c121177SMariusz Zaborski }
1058c121177SMariusz Zaborski 
1068c121177SMariusz Zaborski static inline cap_sysctl_limit_t *
1078c121177SMariusz Zaborski cap_sysctl_limit_mib(cap_sysctl_limit_t *limit __unused,
1088c121177SMariusz Zaborski     const int *mibp __unused, u_int miblen __unused,
1098c121177SMariusz Zaborski     int flags __unused)
1108c121177SMariusz Zaborski {
1118c121177SMariusz Zaborski 
1128c121177SMariusz Zaborski 	return (NULL);
1138c121177SMariusz Zaborski }
1148c121177SMariusz Zaborski 
1158c121177SMariusz Zaborski static inline int
1168c121177SMariusz Zaborski cap_sysctl_limit(cap_sysctl_limit_t *limit __unused)
1178c121177SMariusz Zaborski {
1188c121177SMariusz Zaborski 
1198c121177SMariusz Zaborski 	return (0);
1208c121177SMariusz Zaborski }
1211608c46eSMark Johnston #endif /* WITH_CASPER */
122c501d73cSMariusz Zaborski 
123c501d73cSMariusz Zaborski #endif /* !_CAP_SYSCTL_H_ */
124