policy_module(vhostmd, 1.6.0)

########################################
#
# Declarations
#

type vhostmd_t;
type vhostmd_exec_t;
init_daemon_domain(vhostmd_t, vhostmd_exec_t)

type vhostmd_initrc_exec_t;
init_script_file(vhostmd_initrc_exec_t)

type vhostmd_runtime_t alias vhostmd_var_run_t;
files_runtime_file(vhostmd_runtime_t)

type vhostmd_tmpfs_t;
files_tmpfs_file(vhostmd_tmpfs_t)

########################################
#
# Local policy
#

allow vhostmd_t self:capability { dac_override ipc_lock setgid setuid };
allow vhostmd_t self:process { setsched getsched signal };
allow vhostmd_t self:fifo_file rw_fifo_file_perms;

manage_dirs_pattern(vhostmd_t, vhostmd_tmpfs_t, vhostmd_tmpfs_t)
manage_files_pattern(vhostmd_t, vhostmd_tmpfs_t, vhostmd_tmpfs_t)
fs_tmpfs_filetrans(vhostmd_t, vhostmd_tmpfs_t, { file dir })

manage_dirs_pattern(vhostmd_t, vhostmd_runtime_t, vhostmd_runtime_t)
manage_files_pattern(vhostmd_t, vhostmd_runtime_t, vhostmd_runtime_t)
manage_sock_files_pattern(vhostmd_t, vhostmd_runtime_t, vhostmd_runtime_t)
files_runtime_filetrans(vhostmd_t, vhostmd_runtime_t, { file dir sock_file })

kernel_read_kernel_sysctls(vhostmd_t)
kernel_read_system_state(vhostmd_t)
kernel_read_network_state(vhostmd_t)
kernel_write_xen_state(vhostmd_t)

corecmd_exec_bin(vhostmd_t)
corecmd_exec_shell(vhostmd_t)

corenet_all_recvfrom_netlabel(vhostmd_t)
corenet_tcp_sendrecv_generic_if(vhostmd_t)
corenet_tcp_sendrecv_generic_node(vhostmd_t)

corenet_sendrecv_soundd_client_packets(vhostmd_t)
corenet_tcp_connect_soundd_port(vhostmd_t)

dev_read_rand(vhostmd_t)
dev_read_urand(vhostmd_t)
dev_read_sysfs(vhostmd_t)

files_list_tmp(vhostmd_t)
files_read_usr_files(vhostmd_t)

auth_use_nsswitch(vhostmd_t)

logging_send_syslog_msg(vhostmd_t)

miscfiles_read_localization(vhostmd_t)

optional_policy(`
	hostname_exec(vhostmd_t)
')

optional_policy(`
	rpm_exec(vhostmd_t)
	rpm_read_db(vhostmd_t)
')

optional_policy(`
	virt_stream_connect(vhostmd_t)
')

optional_policy(`
	xen_domtrans_xm(vhostmd_t)
	xen_stream_connect(vhostmd_t)
	xen_stream_connect_xenstore(vhostmd_t)
	xen_stream_connect_xm(vhostmd_t)
')
