# remote storage process (runs as nobody)
type rmt, domain, domain_deprecated;
type rmt_exec, exec_type, file_type;

# Started by init
init_daemon_domain(rmt)

# Drop (user, group) to (nobody, nobody)
allow rmt self:capability { setuid setgid };

# opens and reads /dev/block/mmcblk0
allow rmt root_block_device:blk_file r_file_perms;
allow rmt block_device:dir r_dir_perms;

# Needed for ioprio_set(IOPRIO_WHO_PROCESS, 0, IOPRIO_CLASS_RT << IOPRIO_CLASS_SHIFT);
allow rmt self:capability sys_admin;

# Allow reads/writes to modem related block devices
allow rmt modem_block_device:blk_file rw_file_perms;
allow rmt ssd_block_device:blk_file rw_file_perms;

# Allow shared memory logging access
allow rmt shared_log_device:chr_file rw_file_perms;

allow rmt self:socket create_socket_perms;
allow rmt cgroup:dir { create add_name };

# Wake lock access
wakelock_use(rmt)

# Allow access to /dev/uio0.
allow rmt uio_device:chr_file rw_file_perms;
