type gsiffd, domain, domain_deprecated;
type gsiffd_exec, exec_type, file_type;

# Started by init
init_daemon_domain(gsiffd)

# Write to /data/misc/location/gsiff/
allow gsiffd gsiffd_data_file:dir rw_dir_perms;
allow gsiffd gsiffd_data_file:fifo_file create_file_perms;

# Write to /data/misc/location/quipc/
allow gsiffd quipc_data_file:dir rw_dir_perms;
allow gsiffd quipc_data_file:sock_file create_file_perms;

# Create sockets
allow gsiffd self:socket create_socket_perms;

# Talk to qmux
qmux_socket(gsiffd)

# Run stat on /dev/sensors
allow gsiffd sensors_device:chr_file getattr;

# Talk to the sensors daemon
unix_socket_connect(gsiffd, sensors, sensors)
