ng_btsocket_hci_raw.h revision 157370
1356290Sjkim/* 2238405Sjkim * ng_btsocket_hci_raw.h 3238405Sjkim */ 4238405Sjkim 5238405Sjkim/*- 6238405Sjkim * Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com> 7238405Sjkim * All rights reserved. 8238405Sjkim * 9238405Sjkim * Redistribution and use in source and binary forms, with or without 10238405Sjkim * modification, are permitted provided that the following conditions 11238405Sjkim * are met: 12238405Sjkim * 1. Redistributions of source code must retain the above copyright 13238405Sjkim * notice, this list of conditions and the following disclaimer. 14238405Sjkim * 2. Redistributions in binary form must reproduce the above copyright 15238405Sjkim * notice, this list of conditions and the following disclaimer in the 16238405Sjkim * documentation and/or other materials provided with the distribution. 17238405Sjkim * 18238405Sjkim * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19238405Sjkim * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20238405Sjkim * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21238405Sjkim * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22238405Sjkim * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23238405Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24238405Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25238405Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26238405Sjkim * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27238405Sjkim * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28238405Sjkim * SUCH DAMAGE. 29238405Sjkim * 30238405Sjkim * $Id: ng_btsocket_hci_raw.h,v 1.3 2003/03/25 23:53:32 max Exp $ 31238405Sjkim * $FreeBSD: head/sys/netgraph/bluetooth/include/ng_btsocket_hci_raw.h 157370 2006-04-01 15:42:02Z rwatson $ 32238405Sjkim */ 33238405Sjkim 34238405Sjkim#ifndef _NETGRAPH_BTSOCKET_HCI_RAW_H_ 35238405Sjkim#define _NETGRAPH_BTSOCKET_HCI_RAW_H_ 36238405Sjkim 37238405Sjkim#define NG_BTSOCKET_HCI_RAW_SENDSPACE (4 * 1024) 38238405Sjkim#define NG_BTSOCKET_HCI_RAW_RECVSPACE (4 * 1024) 39238405Sjkim 40238405Sjkim/* 41276861Sjkim * Bluetooth raw HCI socket PCB 42276861Sjkim */ 43238405Sjkim 44238405Sjkimstruct ng_btsocket_hci_raw_pcb { 45238405Sjkim struct socket *so; /* socket */ 46238405Sjkim u_int32_t flags; /* flags */ 47238405Sjkim#define NG_BTSOCKET_HCI_RAW_DIRECTION (1 << 0) 48238405Sjkim#define NG_BTSOCKET_HCI_RAW_PRIVILEGED (1 << 1) 49312826Sjkim struct sockaddr_hci addr; /* local address */ 50238405Sjkim struct ng_btsocket_hci_raw_filter filter; /* filter */ 51238405Sjkim u_int32_t token; /* message token */ 52238405Sjkim struct ng_mesg *msg; /* message */ 53276861Sjkim LIST_ENTRY(ng_btsocket_hci_raw_pcb) next; /* link to next */ 54276861Sjkim struct mtx pcb_mtx; /* pcb mutex */ 55276861Sjkim}; 56238405Sjkimtypedef struct ng_btsocket_hci_raw_pcb ng_btsocket_hci_raw_pcb_t; 57344604Sjkimtypedef struct ng_btsocket_hci_raw_pcb * ng_btsocket_hci_raw_pcb_p; 58344604Sjkim 59344604Sjkim#define so2hci_raw_pcb(so) \ 60344604Sjkim ((struct ng_btsocket_hci_raw_pcb *)((so)->so_pcb)) 61344604Sjkim 62344604Sjkim/* 63238405Sjkim * Bluetooth raw HCI socket methods 64344604Sjkim */ 65344604Sjkim 66344604Sjkim#ifdef _KERNEL 67344604Sjkim 68276861Sjkimvoid ng_btsocket_hci_raw_init (void); 69238405Sjkimvoid ng_btsocket_hci_raw_abort (struct socket *); 70344604Sjkimint ng_btsocket_hci_raw_attach (struct socket *, int, struct thread *); 71238405Sjkimint ng_btsocket_hci_raw_bind (struct socket *, struct sockaddr *, 72238405Sjkim struct thread *); 73238405Sjkimint ng_btsocket_hci_raw_connect (struct socket *, struct sockaddr *, 74238405Sjkim struct thread *); 75238405Sjkimint ng_btsocket_hci_raw_control (struct socket *, u_long, caddr_t, 76238405Sjkim struct ifnet *, struct thread *); 77238405Sjkimint ng_btsocket_hci_raw_ctloutput (struct socket *, struct sockopt *); 78238405Sjkimvoid ng_btsocket_hci_raw_detach (struct socket *); 79238405Sjkimint ng_btsocket_hci_raw_disconnect (struct socket *); 80238405Sjkimint ng_btsocket_hci_raw_peeraddr (struct socket *, struct sockaddr **); 81238405Sjkimint ng_btsocket_hci_raw_send (struct socket *, int, struct mbuf *, 82238405Sjkim struct sockaddr *, struct mbuf *, 83238405Sjkim struct thread *); 84238405Sjkimint ng_btsocket_hci_raw_sockaddr (struct socket *, struct sockaddr **); 85238405Sjkim 86238405Sjkim#endif /* _KERNEL */ 87238405Sjkim 88238405Sjkim#endif /* ndef _NETGRAPH_BTSOCKET_HCI_RAW_H_ */ 89238405Sjkim 90238405Sjkim