# Grant access to Qualcomm MSM Interface (QMI) radio sockets to system services
# (e.g., LocationManager)
qmux_socket(system_server)

# PowerManagerService access to sensors socket
unix_socket_connect(system_server, sensors, sensors)
unix_socket_send(system_server, sensors, sensors)
allow system_server sensors:unix_stream_socket sendto;
allow system_server sensors_socket:sock_file r_file_perms;

# mpdecision socket access
unix_socket_connect(system_server, mpdecision, mpdecision)
unix_socket_send(system_server, mpdecision, mpdecision)
allow system_server mpdecision:unix_stream_socket sendto;
allow system_server mpdecision_socket:dir search;

# Read /data/tombstones/ramdump files.
allow system_server ramdump_data_file:dir r_dir_perms;
allow system_server ramdump_data_file:file r_file_perms;

allow system_server self:netlink_socket create_socket_perms;

# Reading from /persist/wifi/.macaddr
allow system_server persist_file:dir r_dir_perms;
r_dir_file(system_server, persist_wifi_file)
