| /* Authors: Karl MacMillan <kmacmillan@tresys.com> |
| * Joshua Brindle <jbrindle@tresys.com> |
| * Jason Tang <jtang@tresys.com> |
| * Christopher Ashworth <cashworth@tresys.com> |
| * |
| * Copyright (C) 2004-2006 Tresys Technology, LLC |
| * Copyright (C) 2005 Red Hat, Inc. |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| #ifndef SEMANAGE_MODULE_STORE_H |
| #define SEMANAGE_MODULE_STORE_H |
| |
| #include <sys/time.h> |
| #include <sepol/module.h> |
| #include <sepol/cil/cil.h> |
| #include "handle.h" |
| |
| enum semanage_store_defs { |
| SEMANAGE_ACTIVE, |
| SEMANAGE_PREVIOUS, |
| SEMANAGE_TMP, |
| SEMANAGE_NUM_STORES |
| }; |
| |
| /* sandbox filenames and paths */ |
| enum semanage_sandbox_defs { |
| SEMANAGE_TOPLEVEL, |
| SEMANAGE_MODULES, |
| SEMANAGE_LINKED, |
| SEMANAGE_HOMEDIR_TMPL, |
| SEMANAGE_FC_TMPL, |
| SEMANAGE_COMMIT_NUM_FILE, |
| SEMANAGE_PORTS_LOCAL, |
| SEMANAGE_INTERFACES_LOCAL, |
| SEMANAGE_NODES_LOCAL, |
| SEMANAGE_BOOLEANS_LOCAL, |
| SEMANAGE_SEUSERS_LOCAL, |
| SEMANAGE_USERS_BASE_LOCAL, |
| SEMANAGE_USERS_EXTRA_LOCAL, |
| SEMANAGE_USERS_EXTRA, |
| SEMANAGE_DISABLE_DONTAUDIT, |
| SEMANAGE_PRESERVE_TUNABLES, |
| SEMANAGE_MODULES_DISABLED, |
| SEMANAGE_STORE_KERNEL, |
| SEMANAGE_STORE_FC_LOCAL, |
| SEMANAGE_STORE_FC, |
| SEMANAGE_STORE_SEUSERS, |
| SEMANAGE_STORE_NUM_PATHS |
| }; |
| |
| enum semanage_final_defs { |
| SEMANAGE_FINAL_TMP, |
| SEMANAGE_FINAL_SELINUX, |
| SEMANAGE_FINAL_NUM |
| }; |
| |
| enum semanage_final_path_defs { |
| SEMANAGE_FINAL_TOPLEVEL, |
| SEMANAGE_FC, |
| SEMANAGE_FC_HOMEDIRS, |
| SEMANAGE_FC_LOCAL, |
| SEMANAGE_KERNEL, |
| SEMANAGE_NC, |
| SEMANAGE_SEUSERS, |
| SEMANAGE_FINAL_PATH_NUM |
| }; |
| |
| /* FIXME: this needs to be made a module store specific init and the |
| * global configuration moved to another file. |
| */ |
| char *semanage_conf_path(void); |
| |
| int semanage_check_init(semanage_handle_t *sh, const char *prefix); |
| |
| extern const char *semanage_fname(enum semanage_sandbox_defs file_enum); |
| |
| extern const char *semanage_path(enum semanage_store_defs store, |
| enum semanage_sandbox_defs file); |
| |
| extern const char *semanage_final_path(enum semanage_final_defs root, |
| enum semanage_final_path_defs suffix); |
| |
| int semanage_create_store(semanage_handle_t * sh, int create); |
| |
| int semanage_store_access_check(void); |
| |
| int semanage_remove_directory(const char *path); |
| |
| int semanage_mkdir(semanage_handle_t *sh, const char *path); |
| |
| int semanage_mkpath(semanage_handle_t *sh, const char *path); |
| |
| int semanage_make_sandbox(semanage_handle_t * sh); |
| |
| int semanage_make_final(semanage_handle_t * sh); |
| |
| int semanage_get_cil_paths(semanage_handle_t * sh, semanage_module_info_t *modinfos, |
| int len, char ***filenames); |
| |
| int semanage_get_active_modules(semanage_handle_t *sh, |
| semanage_module_info_t **modinfo, int *num_modules); |
| |
| |
| /* lock file routines */ |
| int semanage_get_trans_lock(semanage_handle_t * sh); |
| int semanage_get_active_lock(semanage_handle_t * sh); |
| void semanage_release_trans_lock(semanage_handle_t * sh); |
| void semanage_release_active_lock(semanage_handle_t * sh); |
| int semanage_direct_get_serial(semanage_handle_t * sh); |
| |
| int semanage_load_files(semanage_handle_t * sh, |
| cil_db_t *cildb, char **filenames, int num_modules); |
| |
| int semanage_read_policydb(semanage_handle_t * sh, |
| sepol_policydb_t * policydb); |
| |
| int semanage_write_policydb(semanage_handle_t * sh, |
| sepol_policydb_t * policydb); |
| |
| int semanage_install_sandbox(semanage_handle_t * sh); |
| |
| int semanage_verify_modules(semanage_handle_t * sh, |
| char **module_filenames, int num_modules); |
| |
| int semanage_verify_linked(semanage_handle_t * sh); |
| int semanage_verify_kernel(semanage_handle_t * sh); |
| int semanage_split_fc(semanage_handle_t * sh); |
| |
| /* sort file context routines */ |
| int semanage_fc_sort(semanage_handle_t * sh, |
| const char *buf, |
| size_t buf_len, |
| char **sorted_buf, size_t * sorted_buf_len); |
| |
| /* sort netfilter context routines */ |
| int semanage_nc_sort(semanage_handle_t * sh, |
| const char *buf, |
| size_t buf_len, |
| char **sorted_buf, size_t * sorted_buf_len); |
| |
| int semanage_copy_file(const char *src, const char *dst, mode_t mode); |
| |
| #endif |