diff options
Diffstat (limited to 'src/avc_internal.h')
-rw-r--r-- | src/avc_internal.h | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/src/avc_internal.h b/src/avc_internal.h deleted file mode 100644 index 53610e8..0000000 --- a/src/avc_internal.h +++ /dev/null @@ -1,182 +0,0 @@ -/* - * This file describes the internal interface used by the AVC - * for calling the user-supplied memory allocation, supplemental - * auditing, and locking routine, as well as incrementing the - * statistics fields. - * - * Author : Eamon Walsh <ewalsh@epoch.ncsc.mil> - */ -#ifndef _SELINUX_AVC_INTERNAL_H_ -#define _SELINUX_AVC_INTERNAL_H_ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <selinux/avc.h> -#include "callbacks.h" -#include "dso.h" - -/* callback pointers */ -extern void *(*avc_func_malloc) (size_t) hidden; -extern void (*avc_func_free) (void *)hidden; - -extern void (*avc_func_log) (const char *, ...)hidden; -extern void (*avc_func_audit) (void *, security_class_t, char *, size_t)hidden; - -extern int avc_using_threads hidden; -extern int avc_app_main_loop hidden; -extern void *(*avc_func_create_thread) (void (*)(void))hidden; -extern void (*avc_func_stop_thread) (void *)hidden; - -extern void *(*avc_func_alloc_lock) (void)hidden; -extern void (*avc_func_get_lock) (void *)hidden; -extern void (*avc_func_release_lock) (void *)hidden; -extern void (*avc_func_free_lock) (void *)hidden; - -static inline void set_callbacks(const struct avc_memory_callback *mem_cb, - const struct avc_log_callback *log_cb, - const struct avc_thread_callback *thread_cb, - const struct avc_lock_callback *lock_cb) -{ - if (mem_cb) { - avc_func_malloc = mem_cb->func_malloc; - avc_func_free = mem_cb->func_free; - } - if (log_cb) { - avc_func_log = log_cb->func_log; - avc_func_audit = log_cb->func_audit; - } - if (thread_cb) { - avc_using_threads = 1; - avc_func_create_thread = thread_cb->func_create_thread; - avc_func_stop_thread = thread_cb->func_stop_thread; - } - if (lock_cb) { - avc_func_alloc_lock = lock_cb->func_alloc_lock; - avc_func_get_lock = lock_cb->func_get_lock; - avc_func_release_lock = lock_cb->func_release_lock; - avc_func_free_lock = lock_cb->func_free_lock; - } -} - -/* message prefix and enforcing mode*/ -#define AVC_PREFIX_SIZE 16 -extern char avc_prefix[AVC_PREFIX_SIZE] hidden; -extern int avc_running hidden; -extern int avc_enforcing hidden; -extern int avc_setenforce hidden; - -/* user-supplied callback interface for avc */ -static inline void *avc_malloc(size_t size) -{ - return avc_func_malloc ? avc_func_malloc(size) : malloc(size); -} - -static inline void avc_free(void *ptr) -{ - if (avc_func_free) - avc_func_free(ptr); - else - free(ptr); -} - -/* this is a macro in order to use the variadic capability. */ -#define avc_log(type, format...) \ - if (avc_func_log) \ - avc_func_log(format); \ - else \ - selinux_log(type, format); - -static inline void avc_suppl_audit(void *ptr, security_class_t class, - char *buf, size_t len) -{ - if (avc_func_audit) - avc_func_audit(ptr, class, buf, len); - else - selinux_audit(ptr, class, buf, len); -} - -static inline void *avc_create_thread(void (*run) (void)) -{ - return avc_func_create_thread ? avc_func_create_thread(run) : NULL; -} - -static inline void avc_stop_thread(void *thread) -{ - if (avc_func_stop_thread) - avc_func_stop_thread(thread); -} - -static inline void *avc_alloc_lock(void) -{ - return avc_func_alloc_lock ? avc_func_alloc_lock() : NULL; -} - -static inline void avc_get_lock(void *lock) -{ - if (avc_func_get_lock) - avc_func_get_lock(lock); -} - -static inline void avc_release_lock(void *lock) -{ - if (avc_func_release_lock) - avc_func_release_lock(lock); -} - -static inline void avc_free_lock(void *lock) -{ - if (avc_func_free_lock) - avc_func_free_lock(lock); -} - -/* statistics helper routines */ -#ifdef AVC_CACHE_STATS - -#define avc_cache_stats_incr(field) \ - cache_stats.field ++; -#define avc_cache_stats_add(field, num) \ - cache_stats.field += num; - -#else - -#define avc_cache_stats_incr(field) -#define avc_cache_stats_add(field, num) - -#endif - -/* logging helper routines */ -#define AVC_AUDIT_BUFSIZE 1024 - -/* again, we need the variadic capability here */ -#define log_append(buf,format...) \ - snprintf(buf+strlen(buf), AVC_AUDIT_BUFSIZE-strlen(buf), format) - -/* internal callbacks */ -int avc_ss_grant(security_id_t ssid, security_id_t tsid, - security_class_t tclass, access_vector_t perms, - uint32_t seqno) hidden; -int avc_ss_try_revoke(security_id_t ssid, security_id_t tsid, - security_class_t tclass, - access_vector_t perms, uint32_t seqno, - access_vector_t * out_retained) hidden; -int avc_ss_revoke(security_id_t ssid, security_id_t tsid, - security_class_t tclass, access_vector_t perms, - uint32_t seqno) hidden; -int avc_ss_reset(uint32_t seqno) hidden; -int avc_ss_set_auditallow(security_id_t ssid, security_id_t tsid, - security_class_t tclass, access_vector_t perms, - uint32_t seqno, uint32_t enable) hidden; -int avc_ss_set_auditdeny(security_id_t ssid, security_id_t tsid, - security_class_t tclass, access_vector_t perms, - uint32_t seqno, uint32_t enable) hidden; - -/* netlink kernel message code */ -extern int avc_netlink_trouble hidden; - -hidden_proto(avc_av_stats) - hidden_proto(avc_cleanup) - hidden_proto(avc_reset) - hidden_proto(avc_audit) - hidden_proto(avc_has_perm_noaudit) -#endif /* _SELINUX_AVC_INTERNAL_H_ */ |