policy_module(isns, 1.5.0)

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

type isnsd_t;
type isnsd_exec_t;
init_daemon_domain(isnsd_t, isnsd_exec_t)

type isnsd_initrc_exec_t;
init_script_file(isnsd_initrc_exec_t)

type isnsd_runtime_t alias isnsd_var_run_t;
files_runtime_file(isnsd_runtime_t)

type isnsd_var_lib_t;
files_type(isnsd_var_lib_t)

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

allow isnsd_t self:capability kill;
allow isnsd_t self:process signal;
allow isnsd_t self:fifo_file rw_fifo_file_perms;
allow isnsd_t self:udp_socket { accept listen };
allow isnsd_t self:unix_stream_socket { accept listen };

manage_dirs_pattern(isnsd_t, isnsd_var_lib_t, isnsd_var_lib_t)
manage_files_pattern(isnsd_t, isnsd_var_lib_t, isnsd_var_lib_t)
files_var_lib_filetrans(isnsd_t, isnsd_var_lib_t, dir)

manage_sock_files_pattern(isnsd_t, isnsd_runtime_t, isnsd_runtime_t)
manage_files_pattern(isnsd_t, isnsd_runtime_t, isnsd_runtime_t)
files_runtime_filetrans(isnsd_t, isnsd_runtime_t, { file sock_file })

corenet_all_recvfrom_netlabel(isnsd_t)
corenet_tcp_sendrecv_generic_if(isnsd_t)
corenet_tcp_sendrecv_generic_node(isnsd_t)
corenet_tcp_bind_generic_node(isnsd_t)
corenet_sendrecv_isns_server_packets(isnsd_t)
corenet_tcp_bind_isns_port(isnsd_t)

files_read_etc_files(isnsd_t)

logging_send_syslog_msg(isnsd_t)

miscfiles_read_localization(isnsd_t)

sysnet_dns_name_resolve(isnsd_t)
