Blame src/semanage_store.h

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