type atfwd, domain, domain_deprecated;
type atfwd_exec, exec_type, file_type;

# Started by init
init_daemon_domain(atfwd)

# Creates/Talks to qmuxd via the qmux_radio socket.
qmux_socket(atfwd);

binder_use(atfwd);
binder_call(atfwd, servicemanager);
binder_call(atfwd, system_app);

allow atfwd self:udp_socket create;

allow atfwd atfwd_service:service_manager find;

set_prop(atfwd, radio_atfwd_prop)
