selinux_internal.h revision 8d7c2854c579a2bc85b49b62ccbf38a98fbdd475
1#include <selinux/selinux.h>
2#include <pthread.h>
3#include "dso.h"
4
5hidden_proto(selinux_mkload_policy)
6    hidden_proto(fini_selinuxmnt)
7    hidden_proto(set_selinuxmnt)
8    hidden_proto(selinuxfs_exists)
9    hidden_proto(security_disable)
10    hidden_proto(security_policyvers)
11    hidden_proto(security_load_policy)
12    hidden_proto(security_get_boolean_active)
13    hidden_proto(security_get_boolean_names)
14    hidden_proto(security_set_boolean)
15    hidden_proto(security_commit_booleans)
16    hidden_proto(security_check_context)
17    hidden_proto(security_check_context_raw)
18    hidden_proto(security_canonicalize_context)
19    hidden_proto(security_canonicalize_context_raw)
20    hidden_proto(security_compute_av)
21    hidden_proto(security_compute_av_raw)
22    hidden_proto(security_compute_av_flags)
23    hidden_proto(security_compute_av_flags_raw)
24    hidden_proto(security_compute_user)
25    hidden_proto(security_compute_user_raw)
26    hidden_proto(security_compute_create)
27    hidden_proto(security_compute_create_raw)
28    hidden_proto(security_compute_create_name)
29    hidden_proto(security_compute_create_name_raw)
30    hidden_proto(security_compute_member_raw)
31    hidden_proto(security_compute_relabel_raw)
32    hidden_proto(is_selinux_enabled)
33    hidden_proto(is_selinux_mls_enabled)
34    hidden_proto(freecon)
35    hidden_proto(freeconary)
36    hidden_proto(getprevcon)
37    hidden_proto(getprevcon_raw)
38    hidden_proto(getcon)
39    hidden_proto(getcon_raw)
40    hidden_proto(setcon_raw)
41    hidden_proto(getpeercon_raw)
42    hidden_proto(getpidcon_raw)
43    hidden_proto(getexeccon_raw)
44    hidden_proto(getfilecon)
45    hidden_proto(getfilecon_raw)
46    hidden_proto(lgetfilecon_raw)
47    hidden_proto(fgetfilecon_raw)
48    hidden_proto(setfilecon_raw)
49    hidden_proto(lsetfilecon_raw)
50    hidden_proto(fsetfilecon_raw)
51    hidden_proto(setexeccon)
52    hidden_proto(setexeccon_raw)
53    hidden_proto(getfscreatecon_raw)
54    hidden_proto(getkeycreatecon_raw)
55    hidden_proto(getsockcreatecon_raw)
56    hidden_proto(setfscreatecon_raw)
57    hidden_proto(setkeycreatecon_raw)
58    hidden_proto(setsockcreatecon_raw)
59    hidden_proto(security_getenforce)
60    hidden_proto(security_setenforce)
61    hidden_proto(security_deny_unknown)
62    hidden_proto(selinux_boolean_sub)
63    hidden_proto(selinux_current_policy_path)
64    hidden_proto(selinux_binary_policy_path)
65    hidden_proto(selinux_booleans_subs_path)
66    hidden_proto(selinux_default_context_path)
67    hidden_proto(selinux_securetty_types_path)
68    hidden_proto(selinux_failsafe_context_path)
69    hidden_proto(selinux_removable_context_path)
70    hidden_proto(selinux_virtual_domain_context_path)
71    hidden_proto(selinux_virtual_image_context_path)
72    hidden_proto(selinux_lxc_contexts_path)
73    hidden_proto(selinux_file_context_path)
74    hidden_proto(selinux_file_context_homedir_path)
75    hidden_proto(selinux_file_context_local_path)
76    hidden_proto(selinux_file_context_subs_dist_path)
77    hidden_proto(selinux_file_context_subs_path)
78    hidden_proto(selinux_netfilter_context_path)
79    hidden_proto(selinux_homedir_context_path)
80    hidden_proto(selinux_user_contexts_path)
81    hidden_proto(selinux_booleans_path)
82    hidden_proto(selinux_customizable_types_path)
83    hidden_proto(selinux_media_context_path)
84    hidden_proto(selinux_x_context_path)
85    hidden_proto(selinux_sepgsql_context_path)
86    hidden_proto(selinux_openssh_contexts_path)
87    hidden_proto(selinux_systemd_contexts_path)
88    hidden_proto(selinux_path)
89    hidden_proto(selinux_check_passwd_access)
90    hidden_proto(selinux_check_securetty_context)
91    hidden_proto(matchpathcon_init_prefix)
92    hidden_proto(selinux_users_path)
93    hidden_proto(selinux_usersconf_path);
94hidden_proto(selinux_translations_path);
95hidden_proto(selinux_colors_path);
96hidden_proto(selinux_getenforcemode);
97hidden_proto(selinux_getpolicytype);
98hidden_proto(selinux_raw_to_trans_context);
99hidden_proto(selinux_trans_to_raw_context);
100    hidden_proto(selinux_raw_context_to_color);
101hidden_proto(security_get_initial_context);
102hidden_proto(security_get_initial_context_raw);
103hidden_proto(selinux_reset_config);
104
105extern int load_setlocaldefs hidden;
106extern int require_seusers hidden;
107extern int selinux_page_size hidden;
108
109/* Make pthread_once optional */
110#pragma weak pthread_once
111#pragma weak pthread_key_create
112#pragma weak pthread_key_delete
113#pragma weak pthread_setspecific
114
115/* Call handler iff the first call.  */
116#define __selinux_once(ONCE_CONTROL, INIT_FUNCTION)	\
117	do {						\
118		if (pthread_once != NULL)		\
119			pthread_once (&(ONCE_CONTROL), (INIT_FUNCTION));  \
120		else if ((ONCE_CONTROL) == PTHREAD_ONCE_INIT) {		  \
121			INIT_FUNCTION ();		\
122			(ONCE_CONTROL) = 2;		\
123		}					\
124	} while (0)
125
126/* Pthread key macros */
127#define __selinux_key_create(KEY, DESTRUCTOR)			\
128	(pthread_key_create != NULL ? pthread_key_create(KEY, DESTRUCTOR) : -1)
129
130#define __selinux_key_delete(KEY)				\
131	do {							\
132		if (pthread_key_delete != NULL)			\
133			pthread_key_delete(KEY);		\
134	} while (0)
135
136#define __selinux_setspecific(KEY, VALUE)			\
137	do {							\
138		if (pthread_setspecific != NULL)		\
139			pthread_setspecific(KEY, VALUE);	\
140	} while (0)
141
142#define SELINUXDIR "/etc/selinux/"
143#define SELINUXCONFIG SELINUXDIR "config"
144
145extern int has_selinux_config hidden;
146