# remote storage process (runs as nobody)
type rmt, domain;
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;
