| # wpa - wpa supplicant or equivalent |
| type wpa, domain; |
| type wpa_exec, exec_type, file_type; |
| |
| init_daemon_domain(wpa) |
| |
| net_domain(wpa) |
| |
| allow wpa kernel:system module_request; |
| allow wpa self:capability { setuid net_admin setgid net_raw }; |
| allow wpa cgroup:dir create_dir_perms; |
| allow wpa self:netlink_route_socket nlmsg_write; |
| allow wpa self:netlink_socket create_socket_perms; |
| allow wpa self:packet_socket create_socket_perms; |
| allow wpa wifi_data_file:dir create_dir_perms; |
| allow wpa wifi_data_file:file create_file_perms; |
| unix_socket_send(wpa, system_wpa, system_server) |
| allow wpa random_device:chr_file r_file_perms; |
| |
| # Create a socket for receiving info from wpa |
| type_transition wpa wifi_data_file:dir wpa_socket "sockets"; |
| allow wpa wpa_socket:dir create_dir_perms; |
| allow wpa wpa_socket:sock_file create_file_perms; |
| |
| # Allow wpa_cli to work. wpa_cli creates a socket in |
| # /data/misc/wifi/sockets which wpa supplicant communicates with. |
| userdebug_or_eng(` |
| unix_socket_send(wpa, wpa, su) |
| ') |