1ec3d1a
## <summary>Xen hypervisor</summary>
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Execute a domain transition to run xend.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
## 	<summary>
1ec3d1a
##	Domain allowed to transition.
1ec3d1a
## 	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_domtrans',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xend_t, xend_exec_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	domtrans_pattern($1, xend_exec_t, xend_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
be2ae3b
##	Allow the specified domain to execute xend
be2ae3b
##	in the caller domain.
be2ae3b
## </summary>
be2ae3b
## <param name="domain">
be2ae3b
## 	<summary>
be2ae3b
##	Domain allowed access.
be2ae3b
## 	</summary>
be2ae3b
## </param>
be2ae3b
#
be2ae3b
interface(`xen_exec',`
be2ae3b
	gen_require(`
be2ae3b
		type xend_exec_t;
be2ae3b
	')
be2ae3b
be2ae3b
	can_exec($1, xend_exec_t)
be2ae3b
')
be2ae3b
be2ae3b
########################################
be2ae3b
## <summary>
1ec3d1a
##	Inherit and use xen file descriptors.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_use_fds',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xend_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	allow $1 xend_t:fd use;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Do not audit attempts to inherit
1ec3d1a
##	xen file descriptors.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain to not audit.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_dontaudit_use_fds',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xend_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	dontaudit $1 xend_t:fd use;
1ec3d1a
')
1ec3d1a
1ec3d1a
#######################################
1ec3d1a
## <summary>
1ec3d1a
##  Read xend pid files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##  <summary>
1ec3d1a
##  Domain allowed access.
1ec3d1a
##  </summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_read_pid_files_xenstored',`
1ec3d1a
    gen_require(`
1ec3d1a
        type xenstored_var_run_t;
1ec3d1a
    ')
1ec3d1a
1ec3d1a
    files_search_pids($1)
1ec3d1a
1ec3d1a
    read_files_pattern($1, xenstored_var_run_t, xenstored_var_run_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Read xend image files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
## 	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
## 	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_read_image_files',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xen_image_t, xend_var_lib_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_list_var_lib($1)
1ec3d1a
1ec3d1a
	list_dirs_pattern($1, xend_var_lib_t, xend_var_lib_t)
1ec3d1a
	read_files_pattern($1, { xend_var_lib_t xen_image_t }, xen_image_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Allow the specified domain to read/write
1ec3d1a
##	xend image files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
## 	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
## 	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_manage_image_dirs',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xend_var_lib_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_list_var_lib($1)
1ec3d1a
	manage_dirs_pattern($1, xend_var_lib_t, xend_var_lib_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Allow the specified domain to read/write
1ec3d1a
##	xend image files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
## 	<summary>
1ec3d1a
##	Domain allowed to transition.
1ec3d1a
## 	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_rw_image_files',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xen_image_t, xend_var_lib_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_list_var_lib($1)
1ec3d1a
	allow $1 xend_var_lib_t:dir search_dir_perms;
1ec3d1a
	rw_files_pattern($1, xen_image_t, xen_image_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Allow the specified domain to append
1ec3d1a
##	xend log files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
## 	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
## 	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_append_log',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xend_var_log_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	logging_search_logs($1)
1ec3d1a
	append_files_pattern($1, xend_var_log_t, xend_var_log_t)
1ec3d1a
	dontaudit $1 xend_var_log_t:file write;
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Create, read, write, and delete the
1ec3d1a
##	xend log files.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
## 	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
## 	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_manage_log',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xend_var_log_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	logging_search_logs($1)
1ec3d1a
	manage_dirs_pattern($1, xend_var_log_t, xend_var_log_t)
1ec3d1a
	manage_files_pattern($1, xend_var_log_t, xend_var_log_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Do not audit attempts to read and write
1ec3d1a
##	Xen unix domain stream sockets.  These
1ec3d1a
##	are leaked file descriptors.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain to not audit.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_dontaudit_rw_unix_stream_sockets',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xend_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	dontaudit $1 xend_t:unix_stream_socket { read write };
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Connect to xenstored over a unix stream socket.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_stream_connect_xenstore',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xenstored_t, xenstored_var_run_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_search_pids($1)
1ec3d1a
	stream_connect_pattern($1, xenstored_var_run_t, xenstored_var_run_t, xenstored_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Connect to xend over a unix domain stream socket.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_stream_connect',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xend_t, xend_var_run_t, xend_var_lib_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_search_pids($1)
1ec3d1a
	stream_connect_pattern($1, xend_var_run_t, xend_var_run_t, xend_t)
1ec3d1a
1ec3d1a
	files_search_var_lib($1)
1ec3d1a
	stream_connect_pattern($1, xend_var_lib_t, xend_var_lib_t, xend_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Execute a domain transition to run xm.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
## <summary>
1ec3d1a
##	Domain allowed to transition.
1ec3d1a
## </summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_domtrans_xm',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xm_t, xm_exec_t;
1ec3d1a
		attribute virsh_transition_domain;
1ec3d1a
	')
1ec3d1a
	typeattribute $1 virsh_transition_domain;
1ec3d1a
	domtrans_pattern($1, xm_exec_t, xm_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
## <summary>
1ec3d1a
##	Connect to xm over a unix stream socket.
1ec3d1a
## </summary>
1ec3d1a
## <param name="domain">
1ec3d1a
##	<summary>
1ec3d1a
##	Domain allowed access.
1ec3d1a
##	</summary>
1ec3d1a
## </param>
1ec3d1a
#
1ec3d1a
interface(`xen_stream_connect_xm',`
1ec3d1a
	gen_require(`
1ec3d1a
		type xm_t, xenstored_var_run_t;
1ec3d1a
	')
1ec3d1a
1ec3d1a
	files_search_pids($1)
1ec3d1a
	stream_connect_pattern($1, xenstored_var_run_t, xenstored_var_run_t, xm_t)
1ec3d1a
')