# bluetooth subsystem
type bluetooth, domain;
app_domain(bluetooth)

# Data file accesses.
allow bluetooth bluetooth_data_file:dir create_dir_perms;
allow bluetooth bluetooth_data_file:notdevfile_class_set create_file_perms;

# bluetooth factory file accesses.
r_dir_file(bluetooth, bluetooth_efs_file)

# Device accesses.
allow bluetooth { tun_device uhid_device hci_attach_dev }:chr_file rw_file_perms;
allow bluetooth input_device:chr_file write;

# sysfs access.
allow bluetooth sysfs_bluetooth_writable:file rw_file_perms;
allow bluetooth self:capability net_admin;

# Other domains that can create and use bluetooth sockets.
# SELinux does not presently define a specific socket class for
# bluetooth sockets, nor does it distinguish among the bluetooth protocols.
allow bluetoothdomain self:socket *;
allow bluetoothdomain bluetooth:unix_stream_socket { read write shutdown };

# tethering
allow bluetooth self:{ tun_socket udp_socket } { ioctl create };
allow bluetooth efs_file:dir search;

# Talk to init over the property socket.
unix_socket_connect(bluetooth, property, init)

# proc access.
allow bluetooth proc_bluetooth_writable:file rw_file_perms;
