# For IP Multimedia Subsystem(IMS) functionality type ims, domain, device_domain_deprecated; type ims_exec, exec_type, file_type; # Started by init init_daemon_domain(ims) allow ims self:capability { net_raw net_admin }; # Allow ims to create and use socket to communicate between ims processes. allow ims self:socket create_socket_perms; allowxperm ims self:socket ioctl msm_sock_ipc_ioctls; # Allow ims to tell init to start the ims data service via property=sys.ims.QMI_DAEMON_STATUS set_prop(ims, qcom_ims_prop); # Allow ims to write to ims_socket allow ims ims_socket:sock_file write; # talk to connectivity engine observer interface daemon (cnd) unix_socket_connect(ims, cnd, cnd) # talk to netd unix_socket_connect(ims, netd, netd) # talk to qmux qmux_socket(ims) # communicate with the network driver allow ims self:udp_socket { create ioctl }; allowxperm ims self:udp_socket ioctl SIOCDEVPRIVATE_D; # Runs /system/bin/sh for executing ndc commands via popen allow ims shell_exec:file rx_file_perms; # Runs /system/bin/ndc allow ims system_file:file rx_file_perms; allow ims vendor_file_type:file rx_file_perms; # address qualcomm proprietary binary denials allow ims self:netlink_socket create_socket_perms_no_ioctl; allow ims self:netlink_route_socket { create_socket_perms_no_ioctl nlmsg_write nlmsg_read };