policy_module(fcoe, 1.1.0)

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

type fcoemon_t;
type fcoemon_exec_t;
init_daemon_domain(fcoemon_t, fcoemon_exec_t)

type fcoemon_initrc_exec_t;
init_script_file(fcoemon_initrc_exec_t)

type fcoemon_var_run_t;
files_pid_file(fcoemon_var_run_t)

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

allow fcoemon_t self:capability { net_admin net_raw dac_read_search  };
allow fcoemon_t self:fifo_file rw_fifo_file_perms;
allow fcoemon_t self:unix_stream_socket { accept listen };
allow fcoemon_t self:netlink_socket create_socket_perms;
allow fcoemon_t self:netlink_route_socket create_netlink_socket_perms;
allow fcoemon_t self:netlink_scsitransport_socket create_socket_perms;
allow fcoemon_t self:packet_socket create_socket_perms;
allow fcoemon_t self:udp_socket create_socket_perms;

manage_dirs_pattern(fcoemon_t, fcoemon_var_run_t, fcoemon_var_run_t)
manage_files_pattern(fcoemon_t, fcoemon_var_run_t, fcoemon_var_run_t)
manage_sock_files_pattern(fcoemon_t, fcoemon_var_run_t, fcoemon_var_run_t)
files_pid_filetrans(fcoemon_t, fcoemon_var_run_t, { dir file })

kernel_request_load_module(fcoemon_t)

dev_rw_sysfs(fcoemon_t)
dev_create_sysfs_files(fcoemon_t)

logging_send_syslog_msg(fcoemon_t)

miscfiles_read_localization(fcoemon_t)

userdom_dgram_send(fcoemon_t)

optional_policy(`
	lldpad_dgram_send(fcoemon_t)
')

optional_policy(`
    networkmanager_dgram_send(fcoemon_t)
')
