type ims, domain; type ims_exec, exec_type, file_type; # Started by init init_daemon_domain(ims) # Uses network sockets net_domain(ims) # Grant access to Qualcomm MSM Interface (QMI) radio sockets to ims daemon qmux_socket(ims) # Allow ims to communicate with netd. allow ims netd_socket:sock_file write; # Needed to let ims daemon drop unneeded capabilities and to allow access to # net_bind allow ims self:capability { setpcap setuid net_bind_service }; # Allow ims to create and use netlink sockets. allow ims self:netlink_socket create_socket_perms; # Allow access to smem log allow ims shared_log_device:chr_file rw_file_perms; # ims needs to parse through /proc to obtain pid of netmgrd r_dir_file(ims, netmgrd) # b/18352920 suppress denials until the procfs lookup is removed dontaudit ims domain:dir r_dir_perms; # Allow ims to create and use socket to communicate between ims processes. allow ims self:socket create_socket_perms; # 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; # Talks to init via property socket. unix_socket_connect(ims, property, init) # Allow ims to tell init to start the ims data service via property=sys.ims.QMI_DAEMON_STATUS allow ims qcom_ims_prop:property_service set; allow ims wpa_socket:sock_file create_file_perms; allow ims wpa_socket:dir rw_dir_perms; allow ims wifi_data_file:dir r_dir_perms; unix_socket_send(ims, wpa, wpa)