# 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 dac_override setpcap net_raw };

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

# Allow reads/writes to modem related block devices
allow rmt modem_block_device:blk_file rw_file_perms;
allow rmt block_device:dir r_dir_perms;
allow rmt cgroup:dir { create add_name };
allow rmt smem_log_device:chr_file rw_file_perms;

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

allow rmt ssd_block_device:blk_file rw_file_perms;

allow rmt self:socket create_socket_perms;

# Wake lock access
wakelock_use(rmt)

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

allow rmt mmc_block_device:blk_file r_file_perms;
