type cnd, domain;
type cnd_exec, exec_type, vendor_file_type, file_type;
file_type_auto_trans(cnd, socket_device, cnd_socket);

# cnd is started by init, type transit from init domain to cnd domain
init_daemon_domain(cnd)

allow cnd self:capability { net_bind_service };
wakelock_use(cnd)

allow cnd self:udp_socket create_socket_perms;
allowxperm cnd self:udp_socket ioctl SIOCGIFMTU;

allow cnd sysfs_timestamp_switch:file r_file_perms;
r_dir_file(cnd, sysfs_msm_subsys)
r_dir_file(cnd, sysfs_diag)
r_dir_file(cnd, sysfs_soc)

allow cnd proc_meminfo:file r_file_perms;

set_prop(cnd, cnd_prop)

allow cnd self:socket create_socket_perms;
allowxperm cnd self:socket ioctl msm_sock_ipc_ioctls;

# To register cnd to hwbinder
add_hwservice(cnd, hal_cne_hwservice)
hwbinder_use(cnd)
get_prop(cnd, hwservicemanager_prop)
binder_call(cnd, dataservice_app)
binder_call(cnd, ims)

userdebug_or_eng(`
  allow cnd diag_device:chr_file rw_file_perms;
')
dontaudit cnd diag_device:chr_file rw_file_perms;