type hal_imsrtp, domain;
type hal_imsrtp_exec, exec_type, vendor_file_type, file_type;

init_daemon_domain(hal_imsrtp)

hwbinder_use(hal_imsrtp)
net_domain(hal_imsrtp)

add_hwservice(hal_imsrtp, hal_imsrtp_hwservice)
unix_socket_connect(hal_imsrtp, ims, ims)

get_prop(hal_imsrtp, hwservicemanager_prop)
get_prop(hal_imsrtp, qcom_ims_prop)

allow hal_imsrtp self:qipcrtr_socket create_socket_perms_no_ioctl;
allow hal_imsrtp sysfs_ssr:file r_file_perms;
allow hal_imsrtp sysfs_timestamp_switch:file r_file_perms;

r_dir_file(hal_imsrtp, sysfs_soc)
r_dir_file(hal_imsrtp, sysfs_msm_subsys)

userdebug_or_eng(`
  r_dir_file(hal_imsrtp, sysfs_diag)
  allow hal_imsrtp diag_device:chr_file rw_file_perms;
')
