#ifndef _SEMANAGE_USER_INTERNAL_H_ #define _SEMANAGE_USER_INTERNAL_H_ #include #include #include #include #include "database.h" #include "handle.h" #include "dso.h" hidden_proto(semanage_user_add_role) hidden_proto(semanage_user_clone) hidden_proto(semanage_user_compare) hidden_proto(semanage_user_compare2) hidden_proto(semanage_user_create) hidden_proto(semanage_user_free) hidden_proto(semanage_user_get_mlslevel) hidden_proto(semanage_user_get_mlsrange) hidden_proto(semanage_user_get_name) hidden_proto(semanage_user_get_roles) hidden_proto(semanage_user_key_create) hidden_proto(semanage_user_key_extract) hidden_proto(semanage_user_key_free) hidden_proto(semanage_user_set_mlslevel) hidden_proto(semanage_user_set_mlsrange) hidden_proto(semanage_user_set_name) hidden_proto(semanage_user_exists) hidden_proto(semanage_user_query) /* USER record: metod table */ extern record_table_t SEMANAGE_USER_RTABLE; /* USER BASE record: method table */ extern record_table_t SEMANAGE_USER_BASE_RTABLE; /* USER EXTRA record: method table */ extern record_table_t SEMANAGE_USER_EXTRA_RTABLE; /* ============ Init/Release functions ========== */ /* USER BASE record, FILE backend */ extern int user_base_file_dbase_init(semanage_handle_t * handle, const char *path_ro, const char *path_rw, dbase_config_t * dconfig); extern void user_base_file_dbase_release(dbase_config_t * dconfig); /* USER EXTRA record, FILE backend */ extern int user_extra_file_dbase_init(semanage_handle_t * handle, const char *path_ro, const char *path_rw, dbase_config_t * dconfig); extern void user_extra_file_dbase_release(dbase_config_t * dconfig); /* USER BASE record, POLICYDB backend */ extern int user_base_policydb_dbase_init(semanage_handle_t * handle, dbase_config_t * dconfig); extern void user_base_policydb_dbase_release(dbase_config_t * dconfig); /* USER record, JOIN backend */ extern int user_join_dbase_init(semanage_handle_t * handle, dbase_config_t * join1, dbase_config_t * join2, dbase_config_t * dconfig); extern void user_join_dbase_release(dbase_config_t * dconfig); /*======= Internal API: Base (Policy) User record ====== */ #ifndef _SEMANAGE_USER_BASE_DEFINED_ struct semanage_user_base; typedef struct semanage_user_base semanage_user_base_t; #define _SEMANAGE_USER_BASE_DEFINED_ #endif hidden int semanage_user_base_create(semanage_handle_t * handle, semanage_user_base_t ** user_ptr); hidden int semanage_user_base_clone(semanage_handle_t * handle, const semanage_user_base_t * user, semanage_user_base_t ** user_ptr); hidden int semanage_user_base_key_extract(semanage_handle_t * handle, const semanage_user_base_t * user, semanage_user_key_t ** key); hidden const char *semanage_user_base_get_name(const semanage_user_base_t * user); hidden int semanage_user_base_set_name(semanage_handle_t * handle, semanage_user_base_t * user, const char *name); hidden const char *semanage_user_base_get_mlslevel(const semanage_user_base_t * user); hidden int semanage_user_base_set_mlslevel(semanage_handle_t * handle, semanage_user_base_t * user, const char *mls_level); hidden const char *semanage_user_base_get_mlsrange(const semanage_user_base_t * user); hidden int semanage_user_base_set_mlsrange(semanage_handle_t * handle, semanage_user_base_t * user, const char *mls_range); hidden int semanage_user_base_get_num_roles(const semanage_user_base_t * user); hidden int semanage_user_base_add_role(semanage_handle_t * handle, semanage_user_base_t * user, const char *role); hidden void semanage_user_base_del_role(semanage_user_base_t * user, const char *role); hidden int semanage_user_base_has_role(const semanage_user_base_t * user, const char *role); hidden int semanage_user_base_get_roles(semanage_handle_t * handle, const semanage_user_base_t * user, const char ***roles_arr, unsigned int *num_roles); hidden int semanage_user_base_set_roles(semanage_handle_t * handle, semanage_user_base_t * user, const char **roles_arr, unsigned int num_roles); hidden void semanage_user_base_free(semanage_user_base_t * user); /*=========== Internal API: Extra User record ==========*/ struct semanage_user_extra; typedef struct semanage_user_extra semanage_user_extra_t; hidden int semanage_user_extra_create(semanage_handle_t * handle, semanage_user_extra_t ** user_extra_ptr); hidden int semanage_user_extra_clone(semanage_handle_t * handle, const semanage_user_extra_t * user_extra, semanage_user_extra_t ** user_extra_ptr); hidden const char *semanage_user_extra_get_name(const semanage_user_extra_t * user_extra); hidden int semanage_user_extra_set_name(semanage_handle_t * handle, semanage_user_extra_t * user_extra, const char *name); hidden const char *semanage_user_extra_get_prefix(const semanage_user_extra_t * user_extra); hidden int semanage_user_extra_set_prefix(semanage_handle_t * handle, semanage_user_extra_t * user_extra, const char *prefix); hidden void semanage_user_extra_free(semanage_user_extra_t * user_extra); /*======== Internal API: Join record ========== */ hidden void semanage_user_key_unpack(const semanage_user_key_t * key, const char **name); hidden int semanage_user_join(semanage_handle_t * handle, const semanage_user_base_t * record1, const semanage_user_extra_t * record2, semanage_user_t ** result); hidden int semanage_user_split(semanage_handle_t * handle, const semanage_user_t * record, semanage_user_base_t ** split1, semanage_user_extra_t ** split2); #endif