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