# Grant access to Qualcomm MSM Interface (QMI) audio sockets to audioserver
qmux_socket(audioserver)

# Permit audioserver to create sockets with no specific SELinux class.
# TODO: Investigate the specific type of socket.
allow audioserver self:socket create_socket_perms;
allowxperm audioserver self:socket ioctl msm_sock_ipc_ioctls;

allow audioserver mpdecision_socket:dir r_dir_perms;
unix_socket_send(audioserver, mpdecision, mpdecision)

binder_call(audioserver, rild)

unix_socket_connect(audioserver, adspd, adspd)
allow audioserver audio_cutback_data_file:dir search;
allow audioserver audio_cutback_data_file:sock_file write;

# access files in /sys
r_dir_file(audioserver, sysfs)
# connect to rild for phone calls
allow audioserver rild:unix_stream_socket connectto;
