# Allow wifi hal access to LOWI
allow hal_wifi_ext location:unix_stream_socket connectto;

# write to files owned by location daemon
allow hal_wifi_ext location_socket:dir search;
allow hal_wifi_ext location_socket:sock_file write;
allow hal_wifi_ext location_data_file:{ file fifo_file } create_file_perms;

allow hal_wifi_ext wlan_device:chr_file w_file_perms;

# Allow wifi hal to read debug info from the driver.
r_dir_file(hal_wifi_ext, proc_wifi_dbg)

# Write wlan driver/fw version into property
set_prop(hal_wifi_ext, vendor_wifi_version)

dontaudit hal_wifi_ext kernel:system module_request;
dontaudit hal_wifi_ext self:capability sys_module;

userdebug_or_eng(`
# debugfs entries are only needed in user-debug or eng builds

# Allow wifi hal to access wlan debugfs files and directories
allow hal_wifi_ext debugfs_wlan:dir r_dir_perms;
')
