xref: /aosp_15_r20/external/selinux/libselinux/src/callbacks.h (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker /*
2*2d543d20SAndroid Build Coastguard Worker  * This file describes the callbacks passed to selinux_init() and available
3*2d543d20SAndroid Build Coastguard Worker  * for use from the library code.  They all have default implementations.
4*2d543d20SAndroid Build Coastguard Worker  */
5*2d543d20SAndroid Build Coastguard Worker #ifndef _SELINUX_CALLBACKS_H_
6*2d543d20SAndroid Build Coastguard Worker #define _SELINUX_CALLBACKS_H_
7*2d543d20SAndroid Build Coastguard Worker 
8*2d543d20SAndroid Build Coastguard Worker #include <errno.h>
9*2d543d20SAndroid Build Coastguard Worker #include <stdio.h>
10*2d543d20SAndroid Build Coastguard Worker #include <stdlib.h>
11*2d543d20SAndroid Build Coastguard Worker #include <string.h>
12*2d543d20SAndroid Build Coastguard Worker #include <selinux/selinux.h>
13*2d543d20SAndroid Build Coastguard Worker 
14*2d543d20SAndroid Build Coastguard Worker #include "selinux_internal.h"
15*2d543d20SAndroid Build Coastguard Worker 
16*2d543d20SAndroid Build Coastguard Worker /* callback pointers */
17*2d543d20SAndroid Build Coastguard Worker extern int __attribute__ ((format(printf, 2, 3)))
18*2d543d20SAndroid Build Coastguard Worker (*selinux_log_direct) (int type, const char *, ...) ;
19*2d543d20SAndroid Build Coastguard Worker 
20*2d543d20SAndroid Build Coastguard Worker extern int
21*2d543d20SAndroid Build Coastguard Worker (*selinux_audit) (void *, security_class_t, char *, size_t) ;
22*2d543d20SAndroid Build Coastguard Worker 
23*2d543d20SAndroid Build Coastguard Worker extern int
24*2d543d20SAndroid Build Coastguard Worker (*selinux_validate)(char **ctx) ;
25*2d543d20SAndroid Build Coastguard Worker 
26*2d543d20SAndroid Build Coastguard Worker extern int
27*2d543d20SAndroid Build Coastguard Worker (*selinux_netlink_setenforce) (int enforcing) ;
28*2d543d20SAndroid Build Coastguard Worker 
29*2d543d20SAndroid Build Coastguard Worker extern int
30*2d543d20SAndroid Build Coastguard Worker (*selinux_netlink_policyload) (int seqno) ;
31*2d543d20SAndroid Build Coastguard Worker 
32*2d543d20SAndroid Build Coastguard Worker /* Thread-safe selinux_log() function */
33*2d543d20SAndroid Build Coastguard Worker extern pthread_mutex_t log_mutex;
34*2d543d20SAndroid Build Coastguard Worker 
35*2d543d20SAndroid Build Coastguard Worker #define selinux_log(type, ...) do { \
36*2d543d20SAndroid Build Coastguard Worker 	int saved_errno__ = errno; \
37*2d543d20SAndroid Build Coastguard Worker 	__pthread_mutex_lock(&log_mutex); \
38*2d543d20SAndroid Build Coastguard Worker 	selinux_log_direct(type, __VA_ARGS__); \
39*2d543d20SAndroid Build Coastguard Worker 	__pthread_mutex_unlock(&log_mutex); \
40*2d543d20SAndroid Build Coastguard Worker 	errno = saved_errno__; \
41*2d543d20SAndroid Build Coastguard Worker } while(0)
42*2d543d20SAndroid Build Coastguard Worker 
43*2d543d20SAndroid Build Coastguard Worker #endif				/* _SELINUX_CALLBACKS_H_ */
44