policy_module(oident, 2.3.0)

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

type oidentd_t;
type oidentd_exec_t;
init_daemon_domain(oidentd_t, oidentd_exec_t)

type oidentd_home_t;
typealias oidentd_home_t alias { oidentd_user_content_t oidentd_staff_content_t oidentd_sysadm_content_t };
typealias oidentd_home_t alias { oidentd_secadm_content_t oidentd_auditadm_content_t };
userdom_user_home_content(oidentd_home_t)

type oidentd_initrc_exec_t;
init_script_file(oidentd_initrc_exec_t)

type oidentd_config_t;
files_config_file(oidentd_config_t)

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

allow oidentd_t self:capability { setuid setgid };
allow oidentd_t self:netlink_tcpdiag_socket r_netlink_socket_perms;
allow oidentd_t self:tcp_socket { accept listen };

allow oidentd_t oidentd_config_t:file read_file_perms;

allow oidentd_t oidentd_home_t:file read_file_perms;

kernel_read_kernel_sysctls(oidentd_t)
kernel_read_network_state(oidentd_t)
kernel_read_network_state_symlinks(oidentd_t)
kernel_read_sysctl(oidentd_t)
kernel_request_load_module(oidentd_t)

corenet_all_recvfrom_unlabeled(oidentd_t)
corenet_all_recvfrom_netlabel(oidentd_t)
corenet_tcp_sendrecv_generic_if(oidentd_t)
corenet_tcp_sendrecv_generic_node(oidentd_t)
corenet_tcp_bind_generic_node(oidentd_t)

corenet_sendrecv_auth_server_packets(oidentd_t)
corenet_tcp_bind_auth_port(oidentd_t)
corenet_tcp_sendrecv_auth_port(oidentd_t)

fs_getattr_all_fs(oidentd_t)
fs_search_auto_mountpoints(oidentd_t)

auth_use_nsswitch(oidentd_t)

logging_send_syslog_msg(oidentd_t)

miscfiles_read_localization(oidentd_t)

userdom_search_user_home_dirs(oidentd_t)

tunable_policy(`use_samba_home_dirs',`
	fs_list_cifs(oidentd_t)
 	fs_read_cifs_files(oidentd_t)
')

tunable_policy(`use_nfs_home_dirs',`
	fs_list_nfs(oidentd_t)
 	fs_read_nfs_files(oidentd_t)
')
