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