# wpa - wpa supplicant or equivalent
type wpa, domain;
permissive wpa;
type wpa_exec, exec_type, file_type;

init_daemon_domain(wpa)
unconfined_domain(wpa)
type_transition wpa wifi_data_file:sock_file wpa_socket;
