typeattribute netutils_wrapper coredomain;

r_dir_file(netutils_wrapper, system_file);

# For netutils (ip, iptables, tc)
allow netutils_wrapper self:global_capability_class_set net_raw;

allow netutils_wrapper system_file:file { execute execute_no_trans };
allow netutils_wrapper proc_net:file { open read getattr };
allow netutils_wrapper self:rawip_socket create_socket_perms;
allow netutils_wrapper self:udp_socket create_socket_perms;
allow netutils_wrapper self:global_capability_class_set net_admin;
# ip utils need everything but ioctl
allow netutils_wrapper self:netlink_route_socket ~ioctl;
allow netutils_wrapper self:netlink_xfrm_socket ~ioctl;

# For netutils (ndc) to be able to talk to netd
allow netutils_wrapper netd_socket:sock_file { open getattr read write append };
allow netutils_wrapper netd:unix_stream_socket { read getattr connectto };

# For /data/misc/net access to ndc and ip
r_dir_file(netutils_wrapper, net_data_file)

domain_auto_trans({
    domain
    -coredomain
    -appdomain
}, netutils_wrapper_exec, netutils_wrapper)
