Path: blob/main/sys/netgraph/bluetooth/include/ng_btsocket_hci_raw.h
34814 views
/*1* ng_btsocket_hci_raw.h2*/34/*-5* SPDX-License-Identifier: BSD-2-Clause6*7* Copyright (c) 2001-2002 Maksim Yevmenkin <[email protected]>8* All rights reserved.9*10* Redistribution and use in source and binary forms, with or without11* modification, are permitted provided that the following conditions12* are met:13* 1. Redistributions of source code must retain the above copyright14* notice, this list of conditions and the following disclaimer.15* 2. Redistributions in binary form must reproduce the above copyright16* notice, this list of conditions and the following disclaimer in the17* documentation and/or other materials provided with the distribution.18*19* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND20* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE21* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE22* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE23* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL24* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS25* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)26* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT27* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY28* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF29* SUCH DAMAGE.30*31* $Id: ng_btsocket_hci_raw.h,v 1.3 2003/03/25 23:53:32 max Exp $32*/3334#ifndef _NETGRAPH_BTSOCKET_HCI_RAW_H_35#define _NETGRAPH_BTSOCKET_HCI_RAW_H_3637#define NG_BTSOCKET_HCI_RAW_SENDSPACE (4 * 1024)38#define NG_BTSOCKET_HCI_RAW_RECVSPACE (4 * 1024)3940/*41* Bluetooth raw HCI socket PCB42*/4344struct ng_btsocket_hci_raw_pcb {45struct socket *so; /* socket */46u_int32_t flags; /* flags */47#define NG_BTSOCKET_HCI_RAW_DIRECTION (1 << 0)48#define NG_BTSOCKET_HCI_RAW_PRIVILEGED (1 << 1)49struct sockaddr_hci addr; /* local address */50struct ng_btsocket_hci_raw_filter filter; /* filter */51u_int32_t token; /* message token */52struct ng_mesg *msg; /* message */53LIST_ENTRY(ng_btsocket_hci_raw_pcb) next; /* link to next */54struct mtx pcb_mtx; /* pcb mutex */55};56typedef struct ng_btsocket_hci_raw_pcb ng_btsocket_hci_raw_pcb_t;57typedef struct ng_btsocket_hci_raw_pcb * ng_btsocket_hci_raw_pcb_p;5859#define so2hci_raw_pcb(so) \60((struct ng_btsocket_hci_raw_pcb *)((so)->so_pcb))6162/*63* Bluetooth raw HCI socket methods64*/6566#ifdef _KERNEL6768void ng_btsocket_hci_raw_abort (struct socket *);69void ng_btsocket_hci_raw_close (struct socket *);70int ng_btsocket_hci_raw_attach (struct socket *, int, struct thread *);71int ng_btsocket_hci_raw_bind (struct socket *, struct sockaddr *,72struct thread *);73int ng_btsocket_hci_raw_connect (struct socket *, struct sockaddr *,74struct thread *);75int ng_btsocket_hci_raw_control (struct socket *, u_long, void *,76struct ifnet *, struct thread *);77int ng_btsocket_hci_raw_ctloutput (struct socket *, struct sockopt *);78void ng_btsocket_hci_raw_detach (struct socket *);79int ng_btsocket_hci_raw_disconnect (struct socket *);80int ng_btsocket_hci_raw_send (struct socket *, int, struct mbuf *,81struct sockaddr *, struct mbuf *,82struct thread *);83int ng_btsocket_hci_raw_sockaddr (struct socket *, struct sockaddr *);8485#endif /* _KERNEL */8687#endif /* ndef _NETGRAPH_BTSOCKET_HCI_RAW_H_ */888990