38#include <sys/bitstring.h>
40#include <sys/domain.h>
41#include <sys/kernel.h>
45#include <sys/protosw.h>
46#include <sys/socket.h>
47#include <sys/socketvar.h>
48#include <sys/sysctl.h>
49#include <sys/taskqueue.h>
100 .pru_shutdown = NULL,
121 .pru_shutdown = NULL,
142 .pru_shutdown = NULL,
163 .pru_shutdown = NULL,
177 .pr_flags = PR_ATOMIC|PR_ADDR,
185 .pr_flags = PR_ATOMIC|PR_ADDR,
189 .pr_type = SOCK_SEQPACKET,
192 .pr_flags = PR_ATOMIC|PR_CONNREQUIRED,
197 .pr_type = SOCK_STREAM,
200 .pr_flags = PR_CONNREQUIRED,
205 .pr_type = SOCK_SEQPACKET,
208 .pr_flags = PR_ATOMIC|PR_CONNREQUIRED,
214#define ng_btsocket_protosw_end \
215 &ng_btsocket_protosw[nitems(ng_btsocket_protosw)]
222 .dom_family = AF_BLUETOOTH,
223 .dom_name =
"bluetooth",
233 CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
234 "Bluetooth HCI sockets family");
236 CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
237 "Bluetooth L2CAP sockets family");
239 CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
240 "Bluetooth RFCOMM sockets family");
242 CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
243 "Bluetooth SCO sockets family");
#define NG_BLUETOOTH_VERSION
static struct domain ng_btsocket_domain
static struct pr_usrreqs ng_btsocket_l2cap_usrreqs
static struct protosw ng_btsocket_protosw[]
static struct pr_usrreqs ng_btsocket_l2cap_raw_usrreqs
static struct pr_usrreqs ng_btsocket_hci_raw_usrreqs
SYSCTL_NODE(_net_bluetooth_hci, OID_AUTO, sockets, CTLFLAG_RW|CTLFLAG_MPSAFE, 0, "Bluetooth HCI sockets family")
#define ng_btsocket_protosw_end
DECLARE_MODULE(ng_btsocket, ng_btsocket_mod, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY)
static moduledata_t ng_btsocket_mod
static struct pr_usrreqs ng_btsocket_rfcomm_usrreqs
MODULE_VERSION(ng_btsocket, NG_BLUETOOTH_VERSION)
static int ng_btsocket_modevent(module_t, int, void *)
MODULE_DEPEND(ng_btsocket, ng_bluetooth, NG_BLUETOOTH_VERSION, NG_BLUETOOTH_VERSION, NG_BLUETOOTH_VERSION)
static struct pr_usrreqs ng_btsocket_sco_usrreqs
#define BLUETOOTH_PROTO_SCO
#define BLUETOOTH_PROTO_HCI
#define BLUETOOTH_PROTO_L2CAP
#define BLUETOOTH_PROTO_RFCOMM
int ng_btsocket_hci_raw_control(struct socket *, u_long, caddr_t, struct ifnet *, struct thread *)
int ng_btsocket_hci_raw_ctloutput(struct socket *, struct sockopt *)
void ng_btsocket_hci_raw_abort(struct socket *)
void ng_btsocket_hci_raw_detach(struct socket *)
int ng_btsocket_hci_raw_sockaddr(struct socket *, struct sockaddr **)
void ng_btsocket_hci_raw_close(struct socket *)
int ng_btsocket_hci_raw_bind(struct socket *, struct sockaddr *, struct thread *)
int ng_btsocket_hci_raw_disconnect(struct socket *)
int ng_btsocket_hci_raw_peeraddr(struct socket *, struct sockaddr **)
int ng_btsocket_hci_raw_attach(struct socket *, int, struct thread *)
int ng_btsocket_hci_raw_connect(struct socket *, struct sockaddr *, struct thread *)
int ng_btsocket_hci_raw_send(struct socket *, int, struct mbuf *, struct sockaddr *, struct mbuf *, struct thread *)
int ng_btsocket_l2cap_raw_sockaddr(struct socket *, struct sockaddr **)
int ng_btsocket_l2cap_control(struct socket *, u_long, caddr_t, struct ifnet *, struct thread *)
int ng_btsocket_l2cap_send(struct socket *, int, struct mbuf *, struct sockaddr *, struct mbuf *, struct thread *)
int ng_btsocket_l2cap_raw_bind(struct socket *, struct sockaddr *, struct thread *)
int ng_btsocket_l2cap_peeraddr(struct socket *, struct sockaddr **)
void ng_btsocket_l2cap_close(struct socket *)
int ng_btsocket_l2cap_raw_send(struct socket *, int, struct mbuf *, struct sockaddr *, struct mbuf *, struct thread *)
int ng_btsocket_l2cap_listen(struct socket *, int, struct thread *)
int ng_btsocket_l2cap_raw_peeraddr(struct socket *, struct sockaddr **)
int ng_btsocket_l2cap_ctloutput(struct socket *, struct sockopt *)
int ng_btsocket_l2cap_raw_attach(struct socket *, int, struct thread *)
int ng_btsocket_l2cap_raw_control(struct socket *, u_long, caddr_t, struct ifnet *, struct thread *)
int ng_btsocket_l2cap_accept(struct socket *, struct sockaddr **)
int ng_btsocket_l2cap_bind(struct socket *, struct sockaddr *, struct thread *)
void ng_btsocket_l2cap_raw_close(struct socket *)
int ng_btsocket_l2cap_disconnect(struct socket *)
int ng_btsocket_l2cap_raw_connect(struct socket *, struct sockaddr *, struct thread *)
int ng_btsocket_l2cap_raw_disconnect(struct socket *)
void ng_btsocket_l2cap_detach(struct socket *)
int ng_btsocket_l2cap_sockaddr(struct socket *, struct sockaddr **)
void ng_btsocket_l2cap_abort(struct socket *)
void ng_btsocket_l2cap_raw_detach(struct socket *)
int ng_btsocket_l2cap_connect(struct socket *, struct sockaddr *, struct thread *)
int ng_btsocket_l2cap_attach(struct socket *, int, struct thread *)
void ng_btsocket_l2cap_raw_abort(struct socket *)
int ng_btsocket_rfcomm_ctloutput(struct socket *, struct sockopt *)
int ng_btsocket_rfcomm_send(struct socket *, int, struct mbuf *, struct sockaddr *, struct mbuf *, struct thread *)
int ng_btsocket_rfcomm_bind(struct socket *, struct sockaddr *, struct thread *)
int ng_btsocket_rfcomm_disconnect(struct socket *)
int ng_btsocket_rfcomm_listen(struct socket *, int, struct thread *)
int ng_btsocket_rfcomm_connect(struct socket *, struct sockaddr *, struct thread *)
void ng_btsocket_rfcomm_close(struct socket *)
void ng_btsocket_rfcomm_detach(struct socket *)
int ng_btsocket_rfcomm_peeraddr(struct socket *, struct sockaddr **)
int ng_btsocket_rfcomm_attach(struct socket *, int, struct thread *)
int ng_btsocket_rfcomm_sockaddr(struct socket *, struct sockaddr **)
void ng_btsocket_rfcomm_abort(struct socket *)
int ng_btsocket_rfcomm_control(struct socket *, u_long, caddr_t, struct ifnet *, struct thread *)
int ng_btsocket_rfcomm_accept(struct socket *, struct sockaddr **)
int ng_btsocket_sco_accept(struct socket *, struct sockaddr **)
int ng_btsocket_sco_listen(struct socket *, int, struct thread *)
void ng_btsocket_sco_abort(struct socket *)
void ng_btsocket_sco_close(struct socket *)
int ng_btsocket_sco_bind(struct socket *, struct sockaddr *, struct thread *)
int ng_btsocket_sco_sockaddr(struct socket *, struct sockaddr **)
int ng_btsocket_sco_disconnect(struct socket *)
int ng_btsocket_sco_control(struct socket *, u_long, caddr_t, struct ifnet *, struct thread *)
int ng_btsocket_sco_peeraddr(struct socket *, struct sockaddr **)
int ng_btsocket_sco_attach(struct socket *, int, struct thread *)
int ng_btsocket_sco_connect(struct socket *, struct sockaddr *, struct thread *)
int ng_btsocket_sco_ctloutput(struct socket *, struct sockopt *)
int ng_btsocket_sco_send(struct socket *, int, struct mbuf *, struct sockaddr *, struct mbuf *, struct thread *)
void ng_btsocket_sco_detach(struct socket *)