1f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#ifndef _SELINUX_ANDROID_H_
2f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#define _SELINUX_ANDROID_H_
3f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
45b5183f9b7c1a09429cfb113b4d144882c03530fRobert Craig#include <stdbool.h>
5f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <sys/types.h>
6f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#include <unistd.h>
7f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
8047228a2a446603b21daf5116b830390d0642274Stephen Smalley#include <selinux/label.h>
9047228a2a446603b21daf5116b830390d0642274Stephen Smalley
10f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#ifdef __cplusplus
11f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyextern "C" {
12f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#endif
13f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
149b10083ab40e78cce8cc2b940ce22db6d1095fc5rpcraigextern struct selabel_handle* selinux_android_file_context_handle(void);
159b10083ab40e78cce8cc2b940ce22db6d1095fc5rpcraig
16965141a4e5dc3c00720ce4359d8b8b4db5b623b3dcashmanextern struct selabel_handle* selinux_android_prop_context_handle(void);
17965141a4e5dc3c00720ce4359d8b8b4db5b623b3dcashman
18bad0ebb47417d17ca807e5f97fcbe649bc4cc05eRiley Spahnextern struct selabel_handle* selinux_android_service_context_handle(void);
19bad0ebb47417d17ca807e5f97fcbe649bc4cc05eRiley Spahn
207fc97fb4d3fcf4b1385171820e4e0cd7a2b513c8Stephen Smalleyextern void selinux_android_set_sehandle(const struct selabel_handle *hndl);
217fc97fb4d3fcf4b1385171820e4e0cd7a2b513c8Stephen Smalley
22f1724a371be1678ebf79474ab9a390dd6a5c96c7rpcraigextern int selinux_android_load_policy(void);
23f1724a371be1678ebf79474ab9a390dd6a5c96c7rpcraig
24f1724a371be1678ebf79474ab9a390dd6a5c96c7rpcraigextern int selinux_android_reload_policy(void);
25f1724a371be1678ebf79474ab9a390dd6a5c96c7rpcraig
268b78078de454d54e5eb9544aa1e5a170f079fbccTom Cherryextern int selinux_android_setcon(const char *con);
278b78078de454d54e5eb9544aa1e5a170f079fbccTom Cherry
28f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyextern int selinux_android_setcontext(uid_t uid,
29ab5e5faae18970d4fd47ff81c731918267e7d99adcashman				      bool isSystemServer,
30f074036424618c130dacb3464465a8b40bffef5Stephen Smalley				      const char *seinfo,
31f074036424618c130dacb3464465a8b40bffef5Stephen Smalley				      const char *name);
32f074036424618c130dacb3464465a8b40bffef5Stephen Smalley
33f074036424618c130dacb3464465a8b40bffef5Stephen Smalleyextern int selinux_android_setfilecon(const char *pkgdir,
34edfaad87e34e7a5bb691d45fd6df3e0b5ad0bb1aStephen Smalley				       const char *pkgname,
35edfaad87e34e7a5bb691d45fd6df3e0b5ad0bb1aStephen Smalley				       const char *seinfo,
36edfaad87e34e7a5bb691d45fd6df3e0b5ad0bb1aStephen Smalley				       uid_t uid);
37edfaad87e34e7a5bb691d45fd6df3e0b5ad0bb1aStephen Smalley
38bad0ebb47417d17ca807e5f97fcbe649bc4cc05eRiley Spahnextern int selinux_log_callback(int type, const char *fmt, ...)
39bad0ebb47417d17ca807e5f97fcbe649bc4cc05eRiley Spahn    __attribute__ ((format(printf, 2, 3)));
40bad0ebb47417d17ca807e5f97fcbe649bc4cc05eRiley Spahn
4108587cfbf9de7d89a3d2d4e87aecd82a478e3289Stephen Smalley#define SELINUX_ANDROID_RESTORECON_NOCHANGE 1
4208587cfbf9de7d89a3d2d4e87aecd82a478e3289Stephen Smalley#define SELINUX_ANDROID_RESTORECON_VERBOSE  2
4308587cfbf9de7d89a3d2d4e87aecd82a478e3289Stephen Smalley#define SELINUX_ANDROID_RESTORECON_RECURSE  4
4408587cfbf9de7d89a3d2d4e87aecd82a478e3289Stephen Smalley#define SELINUX_ANDROID_RESTORECON_FORCE    8
45027670de87acd33f9de65c8b5a2bcb8c3e1d967fStephen Smalley#define SELINUX_ANDROID_RESTORECON_DATADATA 16
461b478eadff95edfe79bdc1211bdb8bb9cdd394d2Stephen Smalleyextern int selinux_android_restorecon(const char *file, unsigned int flags);
477fc97fb4d3fcf4b1385171820e4e0cd7a2b513c8Stephen Smalley
481d66afb585be447fe1d360448f74b5ecde879602Stephen Smalleyextern int selinux_android_restorecon_pkgdir(const char *pkgdir,
491d66afb585be447fe1d360448f74b5ecde879602Stephen Smalley                                             const char *seinfo,
501d66afb585be447fe1d360448f74b5ecde879602Stephen Smalley                                             uid_t uid,
511d66afb585be447fe1d360448f74b5ecde879602Stephen Smalley                                             unsigned int flags);
521d66afb585be447fe1d360448f74b5ecde879602Stephen Smalley
537446c917148c778315e511ad5c990492d3c8cdb8Stephen Smalleyextern int selinux_android_seapp_context_reload(void);
547446c917148c778315e511ad5c990492d3c8cdb8Stephen Smalley
55f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#ifdef __cplusplus
56f074036424618c130dacb3464465a8b40bffef5Stephen Smalley}
57f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#endif
58f074036424618c130dacb3464465a8b40bffef5Stephen Smalley#endif
59