policy_module(pxe, 1.5.0)

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

type pxe_t;
type pxe_exec_t;
init_daemon_domain(pxe_t, pxe_exec_t)

type pxe_initrc_exec_t;
init_script_file(pxe_initrc_exec_t)

type pxe_log_t;
logging_log_file(pxe_log_t)

type pxe_var_run_t;
files_pid_file(pxe_var_run_t)

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

allow pxe_t self:capability { chown setgid setuid };
dontaudit pxe_t self:capability sys_tty_config;
allow pxe_t self:process signal_perms;

allow pxe_t pxe_log_t:file { append_file_perms create_file_perms setattr_file_perms };
logging_log_filetrans(pxe_t, pxe_log_t, file)

manage_files_pattern(pxe_t, pxe_var_run_t, pxe_var_run_t)
files_pid_filetrans(pxe_t, pxe_var_run_t, file)

kernel_read_kernel_sysctls(pxe_t)
kernel_read_system_state(pxe_t)

corenet_all_recvfrom_unlabeled(pxe_t)
corenet_all_recvfrom_netlabel(pxe_t)
corenet_udp_sendrecv_generic_if(pxe_t)
corenet_udp_sendrecv_generic_node(pxe_t)
corenet_udp_bind_generic_node(pxe_t)

corenet_sendrecv_pxe_server_packets(pxe_t)
corenet_udp_bind_pxe_port(pxe_t)
corenet_udp_sendrecv_pxe_port(pxe_t)

dev_read_sysfs(pxe_t)

domain_use_interactive_fds(pxe_t)


fs_getattr_all_fs(pxe_t)
fs_search_auto_mountpoints(pxe_t)

logging_send_syslog_msg(pxe_t)

userdom_dontaudit_use_unpriv_user_fds(pxe_t)
userdom_dontaudit_search_user_home_dirs(pxe_t)

optional_policy(`
	seutil_sigchld_newrole(pxe_t)
')

optional_policy(`
	udev_read_db(pxe_t)
')
