2014-08-05 11:55:31 +04:00
|
|
|
/* $NetBSD: sco.h,v 1.11 2014/08/05 07:55:32 rtr Exp $ */
|
2006-06-19 19:44:33 +04:00
|
|
|
|
|
|
|
/*-
|
|
|
|
* Copyright (c) 2006 Itronix Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
|
|
|
* 3. The name of Itronix Inc. may not be used to endorse
|
|
|
|
* or promote products derived from this software without specific
|
|
|
|
* prior written permission.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY ITRONIX INC. ``AS IS'' AND
|
|
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
|
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ITRONIX INC. BE LIABLE FOR ANY
|
|
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
|
|
* ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _NETBT_SCO_H_
|
|
|
|
#define _NETBT_SCO_H_
|
|
|
|
|
|
|
|
#define SO_SCO_MTU 1
|
|
|
|
#define SO_SCO_HANDLE 2
|
|
|
|
|
|
|
|
#ifdef _KERNEL
|
|
|
|
/*
|
|
|
|
* SCO protocol control block
|
|
|
|
*/
|
|
|
|
struct sco_pcb {
|
|
|
|
struct hci_link *sp_link; /* SCO link */
|
|
|
|
unsigned int sp_flags; /* flags */
|
|
|
|
bdaddr_t sp_laddr; /* local address */
|
|
|
|
bdaddr_t sp_raddr; /* remote address */
|
|
|
|
unsigned int sp_mtu; /* link MTU */
|
|
|
|
int sp_pending; /* number of packets pending */
|
|
|
|
|
|
|
|
const struct btproto *sp_proto; /* upper layer protocol */
|
|
|
|
void *sp_upper; /* upper layer argument */
|
|
|
|
|
|
|
|
LIST_ENTRY(sco_pcb) sp_next;
|
|
|
|
};
|
|
|
|
|
|
|
|
LIST_HEAD(sco_pcb_list, sco_pcb);
|
2006-07-26 14:20:56 +04:00
|
|
|
extern struct sco_pcb_list sco_pcb;
|
2006-06-19 19:44:33 +04:00
|
|
|
|
|
|
|
/* sp_flags */
|
|
|
|
#define SP_LISTENING (1<<0) /* is listening pcb */
|
|
|
|
|
|
|
|
struct socket;
|
2008-08-06 19:01:23 +04:00
|
|
|
struct sockopt;
|
|
|
|
|
|
|
|
/* sco_socket.c */
|
2006-06-19 19:44:33 +04:00
|
|
|
extern int sco_sendspace;
|
|
|
|
extern int sco_recvspace;
|
2008-08-06 19:01:23 +04:00
|
|
|
int sco_ctloutput(int, struct socket *, struct sockopt *);
|
2006-06-19 19:44:33 +04:00
|
|
|
|
|
|
|
/* sco_upper.c */
|
2014-05-20 22:25:54 +04:00
|
|
|
int sco_attach_pcb(struct sco_pcb **, const struct btproto *, void *);
|
2014-07-24 19:12:03 +04:00
|
|
|
int sco_bind_pcb(struct sco_pcb *, struct sockaddr_bt *);
|
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic()
usrreq switches and put into separate functions
xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request
is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is
implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into
easier to cut & paste functions tcp_debug_capture() and
tcp_debug_trace()
- functions provided by rmind
- remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a
future commit.
* rename netbt functions to permit consistency of pru function names
(as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb()
- rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb()
- sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into
two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from
do_sys_getsockname()
- have svr4_stream directly call do_sys_get{sock,peer}name()
respectively instead of providing `which' & fix a DPRINTF string
that incorrectly wrote "getpeername" when it meant "getsockname"
- fix sys_getpeername() and sys_getsockname() to call
do_sys_get{sock,peer}name() without `which' and `lwp' & adjust
comments
- bump kernel version for removal of lwp & which parameters from
do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in
xxx_{peer,sock}name()
still to come, not done in this commit since it is easier to do post
split.
patch reviewed by rmind
welcome to 6.99.47
2014-07-09 08:54:03 +04:00
|
|
|
int sco_sockaddr_pcb(struct sco_pcb *, struct sockaddr_bt *);
|
2014-07-30 14:04:25 +04:00
|
|
|
int sco_connect_pcb(struct sco_pcb *, struct sockaddr_bt *);
|
* split PRU_PEERADDR and PRU_SOCKADDR function out of pr_generic()
usrreq switches and put into separate functions
xxx_{peer,sock}addr(struct socket *, struct mbuf *).
- KASSERT(solocked(so)) always in new functions even if request
is not implemented
- KASSERT(pcb != NULL) and KASSERT(nam) if the request is
implemented and not for tcp.
* for tcp roll #ifdef KPROF and #ifdef DEBUG code from tcp_usrreq() into
easier to cut & paste functions tcp_debug_capture() and
tcp_debug_trace()
- functions provided by rmind
- remaining use of PRU_{PEER,SOCK}ADDR #define to be removed in a
future commit.
* rename netbt functions to permit consistency of pru function names
(as has been done with other requests already split out).
- l2cap_{peer,sock}addr() -> l2cap_{peer,sock}_addr_pcb()
- rfcomm_{peer,sock}addr() -> rfcomm_{peer,sock}_addr_pcb()
- sco_{peer,sock}addr() -> sco_{peer,sock}_addr_pcb()
* split/refactor do_sys_getsockname(lwp, fd, which, nam) into
two functions do_sys_get{peer,sock}name(fd, nam).
- move PRU_PEERADDR handling into do_sys_getpeername() from
do_sys_getsockname()
- have svr4_stream directly call do_sys_get{sock,peer}name()
respectively instead of providing `which' & fix a DPRINTF string
that incorrectly wrote "getpeername" when it meant "getsockname"
- fix sys_getpeername() and sys_getsockname() to call
do_sys_get{sock,peer}name() without `which' and `lwp' & adjust
comments
- bump kernel version for removal of lwp & which parameters from
do_sys_getsockname()
note: future cleanup to remove struct mbuf * abuse in
xxx_{peer,sock}name()
still to come, not done in this commit since it is easier to do post
split.
patch reviewed by rmind
welcome to 6.99.47
2014-07-09 08:54:03 +04:00
|
|
|
int sco_peeraddr_pcb(struct sco_pcb *, struct sockaddr_bt *);
|
split PRU_DISCONNECT, PRU_SHUTDOWN and PRU_ABORT function out of
pr_generic() usrreq switches and put into separate functions
xxx_disconnect(struct socket *)
xxx_shutdown(struct socket *)
xxx_abort(struct socket *)
- always KASSERT(solocked(so)) even if not implemented
- replace calls to pr_generic() with req =
PRU_{DISCONNECT,SHUTDOWN,ABORT}
with calls to pr_{disconnect,shutdown,abort}() respectively
rename existing internal functions used to implement above functionality
to permit use of the names for xxx_{disconnect,shutdown,abort}().
- {l2cap,sco,rfcomm}_disconnect() ->
{l2cap,sco,rfcomm}_disconnect_pcb()
- {unp,rip,tcp}_disconnect() -> {unp,rip,tcp}_disconnect1()
- unp_shutdown() -> unp_shutdown1()
patch reviewed by rmind
2014-07-31 07:39:35 +04:00
|
|
|
int sco_disconnect_pcb(struct sco_pcb *, int);
|
2014-05-20 22:25:54 +04:00
|
|
|
void sco_detach_pcb(struct sco_pcb **);
|
2014-07-24 19:12:03 +04:00
|
|
|
int sco_listen_pcb(struct sco_pcb *);
|
2014-08-05 11:55:31 +04:00
|
|
|
int sco_send_pcb(struct sco_pcb *, struct mbuf *);
|
2008-08-06 19:01:23 +04:00
|
|
|
int sco_setopt(struct sco_pcb *, const struct sockopt *);
|
|
|
|
int sco_getopt(struct sco_pcb *, struct sockopt *);
|
2006-06-19 19:44:33 +04:00
|
|
|
|
|
|
|
#endif /* _KERNEL */
|
|
|
|
|
|
|
|
#endif /* _NETBT_SCO_H_ */
|