type location, domain, device_domain_deprecated;
type location_exec, exec_type, file_type;

# Started by init
init_daemon_domain(location)

allow location location_exec:file rx_file_perms;

allow location self:capability { setuid setgid net_raw };

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

binder_use(location)
binder_call(location, system_server)
allow location sensorservice_service:service_manager find;

allow location system_server:unix_stream_socket { read write };

# slim_daemon
allow location sysfs_msm_subsys:dir r_dir_perms;
allow location sysfs_msm_subsys:lnk_file rw_file_perms;

qmux_socket(location)
