policy_module(minissdpd, 1.0.0)

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

type minissdpd_t;
type minissdpd_exec_t;
init_daemon_domain(minissdpd_t, minissdpd_exec_t)

type minissdpd_initrc_exec_t;
init_script_file(minissdpd_initrc_exec_t)

type minissdpd_conf_t;
files_config_file(minissdpd_conf_t)

type minissdpd_var_run_t;
files_pid_file(minissdpd_var_run_t)

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

allow minissdpd_t self:capability { sys_module net_admin };
allow minissdpd_t self:netlink_route_socket r_netlink_socket_perms;
allow minissdpd_t self:udp_socket create_socket_perms;
allow minissdpd_t self:unix_dgram_socket create_socket_perms;

allow minissdpd_t minissdpd_var_run_t:file manage_file_perms;
allow minissdpd_t minissdpd_var_run_t:sock_file manage_sock_file_perms;
files_pid_filetrans(minissdpd_t, minissdpd_var_run_t, { file sock_file })

kernel_load_module(minissdpd_t)
kernel_read_network_state(minissdpd_t)
kernel_request_load_module(minissdpd_t)

corenet_all_recvfrom_unlabeled(minissdpd_t)
corenet_all_recvfrom_netlabel(minissdpd_t)
corenet_udp_sendrecv_generic_if(minissdpd_t)
corenet_udp_sendrecv_generic_node(minissdpd_t)
corenet_udp_bind_generic_node(minissdpd_t)

corenet_sendrecv_ssdp_server_packets(minissdpd_t)
corenet_udp_bind_ssdp_port(minissdpd_t)
corenet_udp_sendrecv_ssdp_port(minissdpd_t)

logging_send_syslog_msg(minissdpd_t)

miscfiles_read_localization(minissdpd_t)