## <summary>Policy for SELinux policy and userland applications.</summary>

#######################################
## <summary>
##	Execute checkpolicy in the checkpolicy domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`seutil_domtrans_checkpolicy',`
	gen_require(`
		type checkpolicy_t, checkpolicy_exec_t;
	')

	files_search_usr($1)
	corecmd_search_bin($1)
	domtrans_pattern($1, checkpolicy_exec_t, checkpolicy_t)
')

########################################
## <summary>
##	Execute checkpolicy in the checkpolicy domain, and
##	allow the specified role the checkpolicy domain,
##	and use the caller's terminal.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_run_checkpolicy',`
	gen_require(`
		type checkpolicy_t;
	')

	seutil_domtrans_checkpolicy($1)
	role $2 types checkpolicy_t;
')

########################################
## <summary>
##	Execute checkpolicy in the caller domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_exec_checkpolicy',`
	gen_require(`
		type checkpolicy_exec_t;
	')

	files_search_usr($1)
	corecmd_search_bin($1)
	can_exec($1, checkpolicy_exec_t)
')

#######################################
## <summary>
##	Execute load_policy in the load_policy domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`seutil_domtrans_loadpolicy',`
	gen_require(`
		type load_policy_t, load_policy_exec_t;
	')

	corecmd_search_bin($1)
	domtrans_pattern($1, load_policy_exec_t, load_policy_t)
')

########################################
## <summary>
##	Execute load_policy in the load_policy domain, and
##	allow the specified role the load_policy domain,
##	and use the caller's terminal.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_run_loadpolicy',`
	gen_require(`
		type load_policy_t;
	')

	seutil_domtrans_loadpolicy($1)
	role $2 types load_policy_t;
')

########################################
## <summary>
##	Execute load_policy in the caller domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_exec_loadpolicy',`
	gen_require(`
		type load_policy_exec_t;
	')

	corecmd_search_bin($1)
	can_exec($1, load_policy_exec_t)
')

########################################
## <summary>
##	Read the load_policy program file.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_read_loadpolicy',`
	gen_require(`
		type load_policy_exec_t;
	')

	corecmd_search_bin($1)
	allow $1 load_policy_exec_t:file read_file_perms;
')

#######################################
## <summary>
##	Execute newrole in the newole domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`seutil_domtrans_newrole',`
	gen_require(`
		type newrole_t, newrole_exec_t;
	')

	files_search_usr($1)
	corecmd_search_bin($1)
	domtrans_pattern($1, newrole_exec_t, newrole_t)
')

########################################
## <summary>
##	Execute newrole in the newrole domain, and
##	allow the specified role the newrole domain,
##	and use the caller's terminal.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_run_newrole',`
	gen_require(`
		attribute_role newrole_roles;
	')

	seutil_domtrans_newrole($1)
	roleattribute $2 newrole_roles;
')

########################################
## <summary>
##	Execute newrole in the caller domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_exec_newrole',`
	gen_require(`
		type newrole_exec_t;
	')

	files_search_usr($1)
	corecmd_search_bin($1)
	can_exec($1, newrole_exec_t)
')

########################################
## <summary>
##	Do not audit the caller attempts to send
##	a signal to newrole.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to not audit.
##	</summary>
## </param>
#
interface(`seutil_dontaudit_signal_newrole',`
	gen_require(`
		type newrole_t;
	')

	dontaudit $1 newrole_t:process signal;
')

########################################
## <summary>
##	Send a SIGCHLD signal to newrole.
## </summary>
## <desc>
##	<p>
##	Allow the specified domain to send a SIGCHLD
##	signal to newrole.  This signal is automatically
##	sent from a process that is terminating to
##	its parent.  This may be needed by domains
##	that are executed from newrole.
##	</p>
## </desc>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <infoflow type="write" weight="1"/>
#
interface(`seutil_sigchld_newrole',`
	gen_require(`
		type newrole_t;
	')

	allow $1 newrole_t:process sigchld;
')

########################################
## <summary>
##	Inherit and use newrole file descriptors.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_use_newrole_fds',`
	gen_require(`
		type newrole_t;
	')

	allow $1 newrole_t:fd use;
')

########################################
## <summary>
##	Do not audit attempts to inherit and use
##	newrole file descriptors.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to not audit.
##	</summary>
## </param>
#
interface(`seutil_dontaudit_use_newrole_fds',`
	gen_require(`
		type newrole_t;
	')

	dontaudit $1 newrole_t:fd use;
')

########################################
## <summary>
##	Execute run_init in the run_init domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`seutil_domtrans_runinit',`
	gen_require(`
		type run_init_t, run_init_exec_t;
	')

	files_search_usr($1)
	corecmd_search_bin($1)
	domtrans_pattern($1, run_init_exec_t, run_init_t)
')

########################################
## <summary>
##	Execute file in the run_init domain.
## </summary>
## <desc>
##	<p>
##	Execute file in the run_init domain.
##	This is used for the Gentoo integrated run_init.
##	</p>
## </desc>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="domain">
##	<summary>
##	Type of entry file.
##	</summary>
## </param>
#
interface(`seutil_labeled_init_script_domtrans_runinit',`
	gen_require(`
		type run_init_t;
	')

	domain_entry_file(run_init_t, $2)
	domain_auto_transition_pattern($1, $2, run_init_t)

	allow run_init_t $1:fd use;
	allow run_init_t $1:fifo_file rw_inherited_fifo_file_perms;
	allow run_init_t $1:process sigchld;
')

########################################
## <summary>
##	Execute init scripts in the run_init domain.
## </summary>
## <desc>
##	<p>
##	Execute init scripts in the run_init domain.
##	This is used for the Gentoo integrated run_init.
##	</p>
## </desc>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`seutil_init_script_domtrans_runinit',`
	gen_require(`
		type run_init_t;
	')

	init_script_file_domtrans($1, run_init_t)

	allow run_init_t $1:fd use;
	allow run_init_t $1:fifo_file rw_inherited_fifo_file_perms;
	allow run_init_t $1:process sigchld;
')

########################################
## <summary>
##	Execute run_init in the run_init domain, and
##	allow the specified role the run_init domain,
##	and use the caller's terminal.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_run_runinit',`
	gen_require(`
		attribute_role run_init_roles;
	')

	seutil_domtrans_runinit($1)
	roleattribute $2 run_init_roles;
')

########################################
## <summary>
##	Execute init scripts in the run_init domain, and
##	allow the specified role the run_init domain,
##	and use the caller's terminal.
## </summary>
## <desc>
##	<p>
##	Execute init scripts in the run_init domain, and
##	allow the specified role the run_init domain,
##	and use the caller's terminal.
##	</p>
##	<p>
##	This is used for the Gentoo integrated run_init.
##	</p>
## </desc>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
#
interface(`seutil_init_script_run_runinit',`
	gen_require(`
		attribute_role run_init_roles;
	')

	seutil_init_script_domtrans_runinit($1)
	roleattribute $2 run_init_roles;
')

########################################
## <summary>
##	Execute specified file in the run_init domain, and
##	allow the specified role the run_init domain,
##	and use the caller's terminal.
## </summary>
## <desc>
##	<p>
##	Execute specified file in the run_init domain, and
##	allow the specified role the run_init domain,
##	and use the caller's terminal.
##	</p>
##	<p>
##	This is used for the Gentoo integrated run_init.
##	</p>
## </desc>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <param name="domain">
##	<summary>
##	Type of init script.
##	</summary>
## </param>
#
interface(`seutil_labeled_init_script_run_runinit',`
	gen_require(`
		attribute_role run_init_roles;
	')

	seutil_labeled_init_script_domtrans_runinit($1, $3)
	roleattribute $2 run_init_roles;
')

########################################
## <summary>
##	Inherit and use run_init file descriptors.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_use_runinit_fds',`
	gen_require(`
		type run_init_t;
	')

	allow $1 run_init_t:fd use;
')

########################################
## <summary>
##	Execute setfiles in the setfiles domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`seutil_domtrans_setfiles',`
	gen_require(`
		type setfiles_t, setfiles_exec_t;
	')

	files_search_usr($1)
	corecmd_search_bin($1)
	domtrans_pattern($1, setfiles_exec_t, setfiles_t)
')

########################################
## <summary>
##	Execute setfiles in the setfiles domain, and
##	allow the specified role the setfiles domain,
##	and use the caller's terminal.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_run_setfiles',`
	gen_require(`
		type setfiles_t;
	')

	seutil_domtrans_setfiles($1)
	role $2 types setfiles_t;
')

########################################
## <summary>
##	Execute setfiles in the caller domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_exec_setfiles',`
	gen_require(`
		type setfiles_exec_t;
	')

	files_search_usr($1)
	corecmd_search_bin($1)
	can_exec($1, setfiles_exec_t)
')

########################################
## <summary>
##	Do not audit attempts to search the SELinux
##	configuration directory (/etc/selinux).
## </summary>
## <param name="domain">
##	<summary>
##	Domain to not audit.
##	</summary>
## </param>
#
interface(`seutil_dontaudit_search_config',`
	gen_require(`
		type selinux_config_t;
	')

	dontaudit $1 selinux_config_t:dir search_dir_perms;
')

########################################
## <summary>
##	Do not audit attempts to read the SELinux
##	userland configuration (/etc/selinux).
## </summary>
## <param name="domain">
##	<summary>
##	Domain to not audit.
##	</summary>
## </param>
#
interface(`seutil_dontaudit_read_config',`
	gen_require(`
		type selinux_config_t;
	')

	dontaudit $1 selinux_config_t:dir search_dir_perms;
	dontaudit $1 selinux_config_t:file read_file_perms;
')

########################################
## <summary>
##	Read the general SELinux configuration files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_read_config',`
	gen_require(`
		type selinux_config_t;
	')

	files_search_etc($1)
	allow $1 selinux_config_t:dir list_dir_perms;
	read_files_pattern($1, selinux_config_t, selinux_config_t)
	read_lnk_files_pattern($1, selinux_config_t, selinux_config_t)
')

########################################
## <summary>
##	Read and write the general SELinux configuration files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_rw_config',`
	gen_require(`
		type selinux_config_t;
	')

	files_search_etc($1)
	allow $1 selinux_config_t:dir list_dir_perms;
	rw_files_pattern($1, selinux_config_t, selinux_config_t)
')

#######################################
## <summary>
##	Create, read, write, and delete
##	the general selinux configuration files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_manage_config',`
	gen_require(`
		type selinux_config_t;
	')

	files_search_etc($1)
	manage_files_pattern($1, selinux_config_t, selinux_config_t)
	read_lnk_files_pattern($1, selinux_config_t, selinux_config_t)
')

#######################################
## <summary>
##	Create, read, write, and delete
##	the general selinux configuration directories.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_manage_config_dirs',`
	gen_require(`
		type selinux_config_t;
	')

	files_search_etc($1)
	allow $1 selinux_config_t:dir manage_dir_perms;
')

########################################
## <summary>
##	Search the policy directory with default_context files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_search_default_contexts',`
	gen_require(`
		type selinux_config_t, default_context_t;
	')

	files_search_etc($1)
	search_dirs_pattern($1, selinux_config_t, default_context_t)
')

########################################
## <summary>
##	Read the default_contexts files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_read_default_contexts',`
	gen_require(`
		type selinux_config_t, default_context_t;
	')

	files_search_etc($1)
	list_dirs_pattern($1, selinux_config_t, default_context_t)
	read_files_pattern($1, default_context_t, default_context_t)
')

########################################
## <summary>
##	Create, read, write, and delete the default_contexts files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_manage_default_contexts',`
	gen_require(`
		type selinux_config_t, default_context_t;
	')

	files_search_etc($1)
	allow $1 selinux_config_t:dir search_dir_perms;
	manage_files_pattern($1, default_context_t, default_context_t)
')

########################################
## <summary>
##	Read the file_contexts files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_read_file_contexts',`
	gen_require(`
		type selinux_config_t, default_context_t, file_context_t;
	')

	files_search_etc($1)
	allow $1 { selinux_config_t default_context_t }:dir search_dir_perms;
	read_files_pattern($1, file_context_t, file_context_t)
	allow $1 file_context_t:file map;
')

########################################
## <summary>
##	Do not audit attempts to read the file_contexts files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to not audit.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_dontaudit_read_file_contexts',`
	gen_require(`
		type selinux_config_t, default_context_t, file_context_t;
	')

	dontaudit $1 { selinux_config_t default_context_t file_context_t }:dir search_dir_perms;
	dontaudit $1 file_context_t:file read_file_perms;
	dontaudit $1 file_context_t:file map;
')

########################################
## <summary>
##	Read and write the file_contexts files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_rw_file_contexts',`
	gen_require(`
		type selinux_config_t, file_context_t, default_context_t;
	')

	files_search_etc($1)
	allow $1 { selinux_config_t default_context_t }:dir search_dir_perms;
	rw_files_pattern($1, file_context_t, file_context_t)
	allow $1 file_context_t:file map;
')

########################################
## <summary>
##	Create, read, write, and delete the file_contexts files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_manage_file_contexts',`
	gen_require(`
		type selinux_config_t, file_context_t, default_context_t;
	')

	files_search_etc($1)
	allow $1 { selinux_config_t default_context_t }:dir search_dir_perms;
	manage_files_pattern($1, file_context_t, file_context_t)
	allow $1 file_context_t:file map;
')

########################################
## <summary>
##	Read the SELinux binary policy.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_read_bin_policy',`
	gen_require(`
		type selinux_config_t, policy_config_t;
	')

	files_search_etc($1)
	allow $1 selinux_config_t:dir search_dir_perms;
	read_files_pattern($1, policy_config_t, policy_config_t)
	allow $1 policy_config_t:file map;
')

########################################
## <summary>
##	Create the SELinux binary policy.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_create_bin_policy',`
	gen_require(`
#		attribute can_write_binary_policy;
		type selinux_config_t, policy_config_t;
	')

	files_search_etc($1)
	allow $1 selinux_config_t:dir search_dir_perms;
	create_files_pattern($1, policy_config_t, policy_config_t)
	write_files_pattern($1, policy_config_t, policy_config_t)
#	typeattribute $1 can_write_binary_policy;
')

########################################
## <summary>
##	Allow the caller to relabel a file to the binary policy type.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_relabelto_bin_policy',`
	gen_require(`
		attribute can_relabelto_binary_policy;
		type policy_config_t;
	')

	allow $1 policy_config_t:file relabelto;
	typeattribute $1 can_relabelto_binary_policy;
')

########################################
## <summary>
##	Create, read, write, and delete the SELinux
##	binary policy.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_manage_bin_policy',`
	gen_require(`
		attribute can_write_binary_policy;
		type selinux_config_t, policy_config_t;
	')

	files_search_etc($1)
	allow $1 selinux_config_t:dir search_dir_perms;
	manage_files_pattern($1, policy_config_t, policy_config_t)
	typeattribute $1 can_write_binary_policy;
')

########################################
## <summary>
##	Read SELinux policy source files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_read_src_policy',`
	gen_require(`
		type selinux_config_t, policy_src_t;
	')

	files_search_etc($1)
	list_dirs_pattern($1, selinux_config_t, policy_src_t)
	read_files_pattern($1, policy_src_t, policy_src_t)
')

########################################
## <summary>
##	Create, read, write, and delete SELinux
##	policy source files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_manage_src_policy',`
	gen_require(`
		type selinux_config_t, policy_src_t;
	')

	files_search_etc($1)
	allow $1 selinux_config_t:dir search_dir_perms;
	manage_dirs_pattern($1, policy_src_t, policy_src_t)
	manage_files_pattern($1, policy_src_t, policy_src_t)
')

########################################
## <summary>
##	Execute a domain transition to run semanage.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`seutil_domtrans_semanage',`
	gen_require(`
		type semanage_t, semanage_exec_t;
	')

	files_search_usr($1)
	corecmd_search_bin($1)
	domtrans_pattern($1, semanage_exec_t, semanage_t)
')

########################################
## <summary>
##	Execute semanage in the semanage domain, and
##	allow the specified role the semanage domain,
##	and use the caller's terminal.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
## <param name="role">
##	<summary>
##	Role allowed access.
##	</summary>
## </param>
## <rolecap/>
#
interface(`seutil_run_semanage',`
	gen_require(`
		attribute_role semanage_roles;
	')

	seutil_domtrans_semanage($1)
	roleattribute $2 semanage_roles;
')

########################################
## <summary>
##	Read the semanage module store.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_read_module_store',`
	gen_require(`
		type selinux_config_t, semanage_store_t;
	')

	files_search_etc($1)
	files_search_var($1)
	list_dirs_pattern($1, selinux_config_t, semanage_store_t)
	list_dirs_pattern($1, semanage_store_t, semanage_store_t)
	read_files_pattern($1, semanage_store_t, semanage_store_t)
	allow $1 semanage_store_t:file map;
	read_lnk_files_pattern($1, semanage_store_t, semanage_store_t)
')

########################################
## <summary>
##	Full management of the semanage
##	module store.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_manage_module_store',`
	gen_require(`
		type selinux_config_t, semanage_store_t;
	')

	files_search_etc($1)
	files_search_var($1)
	manage_dirs_pattern($1, selinux_config_t, semanage_store_t)
	manage_dirs_pattern($1, semanage_store_t, semanage_store_t)
	manage_files_pattern($1, semanage_store_t, semanage_store_t)
	allow $1 semanage_store_t:file map;
	manage_lnk_files_pattern($1, semanage_store_t, semanage_store_t)
')

#######################################
## <summary>
##	Get read lock on module store
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_get_semanage_read_lock',`
	gen_require(`
		type selinux_config_t, semanage_read_lock_t;
	')

	files_search_etc($1)
	rw_files_pattern($1, selinux_config_t, semanage_read_lock_t)
')

#######################################
## <summary>
##	Get trans lock on module store
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_get_semanage_trans_lock',`
	gen_require(`
		type selinux_config_t, semanage_trans_lock_t;
	')

	files_search_etc($1)
	rw_files_pattern($1, selinux_config_t, semanage_trans_lock_t)
')

########################################
## <summary>
##	SELinux-enabled program access for
##	libselinux-linked programs.
## </summary>
## <desc>
##	<p>
##	SELinux-enabled programs are typically
##	linked to the libselinux library.  This
##	interface will allow access required for
##	the libselinux constructor to function.
##	</p>
## </desc>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`seutil_libselinux_linked',`
	selinux_get_fs_mount($1)
	seutil_read_config($1)
')

########################################
## <summary>
##	Do not audit SELinux-enabled program access for
##	libselinux-linked programs.
## </summary>
## <desc>
##	<p>
##	SELinux-enabled programs are typically
##	linked to the libselinux library.  This
##	interface will dontaudit access required for
##	the libselinux constructor to function.
##	</p>
##	<p>
##	Generally this should not be used on anything
##	but simple SELinux-enabled programs that do not
##	rely on data initialized by the libselinux
##	constructor.
##	</p>
## </desc>
## <param name="domain">
##	<summary>
##	Domain to not audit.
##	</summary>
## </param>
#
interface(`seutil_dontaudit_libselinux_linked',`
	selinux_dontaudit_get_fs_mount($1)
	seutil_dontaudit_read_config($1)
')
