github.com/google/syzkaller@v0.0.0-20240517125934-c0f1611a36d6/sys/freebsd/socket_bluetooth.txt (about) 1 # Copyright 2024 syzkaller project authors. All rights reserved. 2 # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 include <sys/types.h> 5 include <sys/socket.h> 6 include <sys/sockio.h> 7 include <sys/bitstring.h> 8 include <netinet/in.h> 9 include <netgraph/bluetooth/include/ng_hci.h> 10 include <netgraph/bluetooth/include/ng_l2cap.h> 11 include <netgraph/bluetooth/include/ng_btsocket.h> 12 13 resource sock_bt[sock] 14 resource sock_bt_hci[sock_bt] 15 resource sock_bt_sco[sock_bt] 16 resource sock_bt_rfcomm[sock_bt] 17 resource sock_bt_l2cap[sock_bt] 18 19 socket$bt_hci(domain const[PF_BLUETOOTH], type const[SOCK_RAW], protocol const[BLUETOOTH_PROTO_HCI]) sock_bt_hci 20 bind$bt_hci(s sock_bt_hci, addr ptr[in, sockaddr_hci], addrlen len[addr]) 21 ioctl$sock_bt_hci(fd sock_bt_hci, cmd flags[bt_hci_ioctl], arg buffer[inout]) 22 setsockopt$bt_hci_HCI_FILTER(s sock_bt_hci, level const[SOL_HCI_RAW], optname const[SO_HCI_RAW_FILTER], optval ptr[in, ng_btsocket_hci_raw_filter], optlen len[optval]) 23 setsockopt$bt_hci_HCI_DIRECTION(s sock_bt_hci, level const[SOL_HCI_RAW], optname const[SO_HCI_RAW_DIRECTION], optval ptr[in, int32], optlen len[optval]) 24 getsockopt$bt_hci(s sock_bt_hci, level const[SOL_HCI_RAW], optname flags[bt_hci_sockopt], optval buffer[out], optlen ptr[inout, len[optval, int32]]) 25 write$bt_hci(fd sock_bt_hci, buf buffer[in], nbytes bytesize[buf]) 26 27 socket$bt_sco(domain const[PF_BLUETOOTH], type const[SOCK_SEQPACKET], protocol const[BLUETOOTH_PROTO_SCO]) sock_bt_sco 28 bind$bt_sco_sockaddr_sco(s sock_bt_sco, addr ptr[in, sockaddr_sco], addrlen len[addr]) 29 connect$bt_sco_sockaddr_sco(s sock_bt_sco, name ptr[in, sockaddr_sco], namelen len[name]) 30 getsockopt$bt_sco_SOL_SCO(s sock_bt_sco, level const[SOL_SCO], optname flags[bt_sol_sockopt], optval buffer[out], optlen ptr[inout, len[optval, int32]]) 31 32 socket$bt_l2cap(domain const[PF_BLUETOOTH], type flags[bt_l2cap_type], protocol const[BLUETOOTH_PROTO_L2CAP]) sock_bt_l2cap 33 bind$bt_l2cap(fd sock_bt_l2cap, addr ptr[in, sockaddr_l2], addrlen len[addr]) 34 connect$bt_l2cap(fd sock_bt_l2cap, addr ptr[in, sockaddr_l2], addrlen len[addr]) 35 setsockopt$bt_l2cap(fd sock_bt_l2cap, level const[SOL_L2CAP], optname flags[bt_l2cap_sockopt], optval ptr[in, int32], optlen len[optval]) 36 getsockopt$bt_l2cap(s sock_bt_l2cap, level const[SOL_L2CAP], optname flags[bt_l2cap_sockopt], optval buffer[out], optlen ptr[inout, len[optval, int32]]) 37 38 socket$bt_rfcomm(domain const[PF_BLUETOOTH], type const[SOCK_STREAM], protocol const[BLUETOOTH_PROTO_RFCOMM]) sock_bt_rfcomm 39 bind$bt_rfcomm(fd sock_bt_rfcomm, addr ptr[in, sockaddr_rfcomm], addrlen len[addr]) 40 connect$bt_rfcomm(fd sock_bt_rfcomm, addr ptr[in, sockaddr_rfcomm], addrlen len[addr]) 41 setsockopt$bt_rfcomm(fd sock_bt_rfcomm, level const[SOL_RFCOMM], optname flags[bt_rfcomm_sockopt], optval ptr[in, int32], optlen len[optval]) 42 getsockopt$bt_rfcomm(s sock_bt_rfcomm, level const[SOL_RFCOMM], optname flags[bt_rfcomm_sockopt], optval buffer[out], optlen ptr[inout, len[optval, int32]]) 43 44 ng_btsocket_hci_raw_filter { 45 packet_mask int64[32] 46 event_mask int64[64] 47 } 48 49 sockaddr_hci { 50 hci_len int8 51 hci_family int8 52 hci_node int8[32] 53 } 54 55 sockaddr_sco { 56 sco_len int8 57 sco_family int8 58 sco_bdaddr int8[6] 59 } 60 61 sockaddr_l2 { 62 l2cap_len int8 63 l2cap_familty int8 64 l2cap_psm int16 65 l2cap_bdaddr int8[6] 66 l2cap_cid int16 67 l2cap_bdaddr_type int8 68 } 69 70 sockaddr_rfcomm { 71 rfcomm_len int8 72 rfcomm_family int8 73 rfcomm_bdaddr int8[6] 74 rfcomm_channel int8 75 } 76 77 bt_hci_ioctl = SIOC_HCI_RAW_NODE_GET_STATE, SIOC_HCI_RAW_NODE_INIT, SIOC_HCI_RAW_NODE_GET_DEBUG, SIOC_HCI_RAW_NODE_SET_DEBUG, SIOC_HCI_RAW_NODE_GET_BUFFER, SIOC_HCI_RAW_NODE_GET_BDADDR, SIOC_HCI_RAW_NODE_GET_FEATURES, SIOC_HCI_RAW_NODE_GET_STAT, SIOC_HCI_RAW_NODE_RESET_STAT, SIOC_HCI_RAW_NODE_FLUSH_NEIGHBOR_CACHE, SIOC_HCI_RAW_NODE_GET_NEIGHBOR_CACHE, SIOC_HCI_RAW_NODE_GET_CON_LIST, SIOC_HCI_RAW_NODE_GET_LINK_POLICY_MASK, SIOC_HCI_RAW_NODE_SET_LINK_POLICY_MASK, SIOC_HCI_RAW_NODE_GET_PACKET_MASK, SIOC_HCI_RAW_NODE_SET_PACKET_MASK, SIOC_HCI_RAW_NODE_GET_ROLE_SWITCH, SIOC_HCI_RAW_NODE_SET_ROLE_SWITCH 78 bt_hci_sockopt = SO_HCI_RAW_FILTER, SO_HCI_RAW_DIRECTION 79 bt_sol_sockopt = SO_SCO_MTU, SO_SCO_CONNINFO 80 bt_l2cap_sockopt = SO_L2CAP_IMTU, SO_L2CAP_OMTU, SO_L2CAP_IFLOW, SO_L2CAP_OFLOW, SO_L2CAP_FLUSH, SO_L2CAP_ENCRYPTED 81 bt_l2cap_type = SOCK_SEQPACKET, SOCK_RAW 82 bt_rfcomm_sockopt = SO_RFCOMM_MTU, SO_RFCOMM_FC_INFO