FreeBSD kernel netgraph code
ng_btsocket_sco.c File Reference
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bitstring.h>
#include <sys/domain.h>
#include <sys/endian.h>
#include <sys/errno.h>
#include <sys/filedesc.h>
#include <sys/ioccom.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <sys/mutex.h>
#include <sys/protosw.h>
#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
#include <sys/sysctl.h>
#include <sys/taskqueue.h>
#include <net/vnet.h>
#include <netgraph/ng_message.h>
#include <netgraph/netgraph.h>
#include <netgraph/bluetooth/include/ng_bluetooth.h>
#include <netgraph/bluetooth/include/ng_hci.h>
#include <netgraph/bluetooth/include/ng_l2cap.h>
#include <netgraph/bluetooth/include/ng_btsocket.h>
#include <netgraph/bluetooth/include/ng_btsocket_sco.h>
Include dependency graph for ng_btsocket_sco.c:

Go to the source code of this file.

Macros

#define M_NETGRAPH_BTSOCKET_SCO   M_NETGRAPH
 
#define NG_BTSOCKET_SCO_INFO
 
#define NG_BTSOCKET_SCO_WARN
 
#define NG_BTSOCKET_SCO_ERR
 
#define NG_BTSOCKET_SCO_ALERT
 
#define ng_btsocket_sco_wakeup_input_task()    taskqueue_enqueue(taskqueue_swi, &ng_btsocket_sco_queue_task)
 
#define ng_btsocket_sco_wakeup_route_task()    taskqueue_enqueue(taskqueue_swi, &ng_btsocket_sco_rt_task)
 

Functions

static void ng_btsocket_sco_input (void *, int)
 
static void ng_btsocket_sco_rtclean (void *, int)
 
static LIST_HEAD (ng_btsocket_sco_pcb)
 
static int ng_btsocket_sco_node_shutdown (node_p node)
 
static int ng_btsocket_sco_node_newhook (node_p node, hook_p hook, char const *name)
 
static int ng_btsocket_sco_node_connect (hook_p hook)
 
static int ng_btsocket_sco_node_disconnect (hook_p hook)
 
static int ng_btsocket_sco_node_rcvmsg (node_p node, item_p item, hook_p hook)
 
static int ng_btsocket_sco_node_rcvdata (hook_p hook, item_p item)
 
static int ng_btsocket_sco_process_lp_con_cfm (struct ng_mesg *msg, ng_btsocket_sco_rtentry_p rt)
 
static int ng_btsocket_sco_process_lp_con_ind (struct ng_mesg *msg, ng_btsocket_sco_rtentry_p rt)
 
static int ng_btsocket_sco_process_lp_discon_ind (struct ng_mesg *msg, ng_btsocket_sco_rtentry_p rt)
 
static int ng_btsocket_sco_send_lp_con_req (ng_btsocket_sco_pcb_p pcb)
 
static int ng_btsocket_sco_send_lp_con_rsp (ng_btsocket_sco_rtentry_p rt, bdaddr_p dst, int status)
 
static int ng_btsocket_sco_send_lp_discon_req (ng_btsocket_sco_pcb_p pcb)
 
static void ng_btsocket_sco_data_input (struct mbuf *m, hook_p hook)
 
static void ng_btsocket_sco_default_msg_input (struct ng_mesg *msg, hook_p hook)
 
static void ng_btsocket_sco_lp_msg_input (struct ng_mesg *msg, hook_p hook)
 
static void ng_btsocket_sco_init (void *arg __unused)
 
 SYSINIT (ng_btsocket_sco_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, ng_btsocket_sco_init, NULL)
 
void ng_btsocket_sco_abort (struct socket *so)
 
void ng_btsocket_sco_close (struct socket *so)
 
int ng_btsocket_sco_accept (struct socket *so, struct sockaddr **nam)
 
int ng_btsocket_sco_attach (struct socket *so, int proto, struct thread *td)
 
int ng_btsocket_sco_bind (struct socket *so, struct sockaddr *nam, struct thread *td)
 
int ng_btsocket_sco_connect (struct socket *so, struct sockaddr *nam, struct thread *td)
 
int ng_btsocket_sco_control (struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp, struct thread *td)
 
int ng_btsocket_sco_ctloutput (struct socket *so, struct sockopt *sopt)
 
void ng_btsocket_sco_detach (struct socket *so)
 
int ng_btsocket_sco_disconnect (struct socket *so)
 
int ng_btsocket_sco_listen (struct socket *so, int backlog, struct thread *td)
 
int ng_btsocket_sco_peeraddr (struct socket *so, struct sockaddr **nam)
 
int ng_btsocket_sco_send (struct socket *so, int flags, struct mbuf *m, struct sockaddr *nam, struct mbuf *control, struct thread *td)
 
static int ng_btsocket_sco_send2 (ng_btsocket_sco_pcb_p pcb)
 
int ng_btsocket_sco_sockaddr (struct socket *so, struct sockaddr **nam)
 
static ng_btsocket_sco_pcb_p ng_btsocket_sco_pcb_by_addr (bdaddr_p bdaddr)
 
static ng_btsocket_sco_pcb_p ng_btsocket_sco_pcb_by_handle (bdaddr_p src, int con_handle)
 
static ng_btsocket_sco_pcb_p ng_btsocket_sco_pcb_by_addrs (bdaddr_p src, bdaddr_p dst)
 
static void ng_btsocket_sco_timeout (ng_btsocket_sco_pcb_p pcb)
 
static void ng_btsocket_sco_untimeout (ng_btsocket_sco_pcb_p pcb)
 
static void ng_btsocket_sco_process_timeout (void *xpcb)
 

Variables

static ng_constructor_t ng_btsocket_sco_node_constructor
 
static ng_rcvmsg_t ng_btsocket_sco_node_rcvmsg
 
static ng_shutdown_t ng_btsocket_sco_node_shutdown
 
static ng_newhook_t ng_btsocket_sco_node_newhook
 
static ng_connect_t ng_btsocket_sco_node_connect
 
static ng_rcvdata_t ng_btsocket_sco_node_rcvdata
 
static ng_disconnect_t ng_btsocket_sco_node_disconnect
 
static struct ng_type typestruct
 
static u_int32_t ng_btsocket_sco_debug_level
 
static node_p ng_btsocket_sco_node
 
static struct ng_bt_itemq ng_btsocket_sco_queue
 
static struct mtx ng_btsocket_sco_queue_mtx
 
static struct task ng_btsocket_sco_queue_task
 
static struct mtx ng_btsocket_sco_sockets_mtx
 

Macro Definition Documentation

◆ M_NETGRAPH_BTSOCKET_SCO

#define M_NETGRAPH_BTSOCKET_SCO   M_NETGRAPH

Definition at line 71 of file ng_btsocket_sco.c.

◆ NG_BTSOCKET_SCO_ALERT

#define NG_BTSOCKET_SCO_ALERT
Value:
ppsratecheck(&ng_btsocket_sco_lasttime, &ng_btsocket_sco_curpps, 1)) \
printf
#define NG_BTSOCKET_ALERT_LEVEL
Definition: ng_btsocket.h:370
static u_int32_t ng_btsocket_sco_debug_level

◆ NG_BTSOCKET_SCO_ERR

#define NG_BTSOCKET_SCO_ERR
Value:
ppsratecheck(&ng_btsocket_sco_lasttime, &ng_btsocket_sco_curpps, 1)) \
printf
#define NG_BTSOCKET_ERR_LEVEL
Definition: ng_btsocket.h:371

◆ NG_BTSOCKET_SCO_INFO

#define NG_BTSOCKET_SCO_INFO
Value:
ppsratecheck(&ng_btsocket_sco_lasttime, &ng_btsocket_sco_curpps, 1)) \
printf
#define NG_BTSOCKET_INFO_LEVEL
Definition: ng_btsocket.h:373

◆ ng_btsocket_sco_wakeup_input_task

#define ng_btsocket_sco_wakeup_input_task ( )     taskqueue_enqueue(taskqueue_swi, &ng_btsocket_sco_queue_task)

◆ ng_btsocket_sco_wakeup_route_task

#define ng_btsocket_sco_wakeup_route_task ( )     taskqueue_enqueue(taskqueue_swi, &ng_btsocket_sco_rt_task)

◆ NG_BTSOCKET_SCO_WARN

#define NG_BTSOCKET_SCO_WARN
Value:
ppsratecheck(&ng_btsocket_sco_lasttime, &ng_btsocket_sco_curpps, 1)) \
printf
#define NG_BTSOCKET_WARN_LEVEL
Definition: ng_btsocket.h:372

Function Documentation

◆ LIST_HEAD()

static LIST_HEAD ( ng_btsocket_sco_pcb  )
static

Definition at line 106 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_abort()

void ng_btsocket_sco_abort ( struct socket *  so)

Definition at line 1167 of file ng_btsocket_sco.c.

References ng_btsocket_sco_disconnect().

Here is the call graph for this function:

◆ ng_btsocket_sco_accept()

int ng_btsocket_sco_accept ( struct socket *  so,
struct sockaddr **  nam 
)

Definition at line 1186 of file ng_btsocket_sco.c.

References ng_btsocket_sco_node, and ng_btsocket_sco_peeraddr().

Here is the call graph for this function:

◆ ng_btsocket_sco_attach()

◆ ng_btsocket_sco_bind()

int ng_btsocket_sco_bind ( struct socket *  so,
struct sockaddr *  nam,
struct thread *  td 
)

◆ ng_btsocket_sco_close()

void ng_btsocket_sco_close ( struct socket *  so)

Definition at line 1175 of file ng_btsocket_sco.c.

References ng_btsocket_sco_disconnect().

Here is the call graph for this function:

◆ ng_btsocket_sco_connect()

◆ ng_btsocket_sco_control()

int ng_btsocket_sco_control ( struct socket *  so,
u_long  cmd,
caddr_t  data,
struct ifnet *  ifp,
struct thread *  td 
)

Definition at line 1448 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_ctloutput()

◆ ng_btsocket_sco_data_input()

static void ng_btsocket_sco_data_input ( struct mbuf *  m,
hook_p  hook 
)
static

◆ ng_btsocket_sco_default_msg_input()

◆ ng_btsocket_sco_detach()

◆ ng_btsocket_sco_disconnect()

◆ ng_btsocket_sco_init()

◆ ng_btsocket_sco_input()

◆ ng_btsocket_sco_listen()

int ng_btsocket_sco_listen ( struct socket *  so,
int  backlog,
struct thread *  td 
)

◆ ng_btsocket_sco_lp_msg_input()

static void ng_btsocket_sco_lp_msg_input ( struct ng_mesg msg,
hook_p  hook 
)
static

◆ ng_btsocket_sco_node_connect()

static int ng_btsocket_sco_node_connect ( hook_p  hook)
static

Definition at line 271 of file ng_btsocket_sco.c.

References NG_HOOK_FORCE_QUEUE, NG_HOOK_PEER, NG_HOOK_REF, and NG_HOOK_SET_PRIVATE.

◆ ng_btsocket_sco_node_disconnect()

static int ng_btsocket_sco_node_disconnect ( hook_p  hook)
static

◆ ng_btsocket_sco_node_newhook()

static int ng_btsocket_sco_node_newhook ( node_p  node,
hook_p  hook,
char const *  name 
)
static

Definition at line 261 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_node_rcvdata()

◆ ng_btsocket_sco_node_rcvmsg()

◆ ng_btsocket_sco_node_shutdown()

static int ng_btsocket_sco_node_shutdown ( node_p  node)
static

Definition at line 224 of file ng_btsocket_sco.c.

References NG_BTSOCKET_SCO_ALERT, ng_btsocket_sco_node, NG_BTSOCKET_SCO_NODE_TYPE, ng_make_node_common(), ng_name_node(), NG_NODE_UNREF, and typestruct.

Here is the call graph for this function:

◆ ng_btsocket_sco_pcb_by_addr()

static ng_btsocket_sco_pcb_p ng_btsocket_sco_pcb_by_addr ( bdaddr_p  bdaddr)
static

◆ ng_btsocket_sco_pcb_by_addrs()

static ng_btsocket_sco_pcb_p ng_btsocket_sco_pcb_by_addrs ( bdaddr_p  src,
bdaddr_p  dst 
)
static

◆ ng_btsocket_sco_pcb_by_handle()

static ng_btsocket_sco_pcb_p ng_btsocket_sco_pcb_by_handle ( bdaddr_p  src,
int  con_handle 
)
static

◆ ng_btsocket_sco_peeraddr()

int ng_btsocket_sco_peeraddr ( struct socket *  so,
struct sockaddr **  nam 
)

◆ ng_btsocket_sco_process_lp_con_cfm()

◆ ng_btsocket_sco_process_lp_con_ind()

◆ ng_btsocket_sco_process_lp_discon_ind()

◆ ng_btsocket_sco_process_timeout()

static void ng_btsocket_sco_process_timeout ( void *  xpcb)
static

◆ ng_btsocket_sco_rtclean()

static void ng_btsocket_sco_rtclean ( void *  context,
int  pending 
)
static

◆ ng_btsocket_sco_send()

int ng_btsocket_sco_send ( struct socket *  so,
int  flags,
struct mbuf *  m,
struct sockaddr *  nam,
struct mbuf *  control,
struct thread *  td 
)

◆ ng_btsocket_sco_send2()

◆ ng_btsocket_sco_send_lp_con_req()

◆ ng_btsocket_sco_send_lp_con_rsp()

◆ ng_btsocket_sco_send_lp_discon_req()

◆ ng_btsocket_sco_sockaddr()

int ng_btsocket_sco_sockaddr ( struct socket *  so,
struct sockaddr **  nam 
)

◆ ng_btsocket_sco_timeout()

◆ ng_btsocket_sco_untimeout()

◆ SYSINIT()

SYSINIT ( ng_btsocket_sco_init  ,
SI_SUB_PROTO_DOMAIN  ,
SI_ORDER_THIRD  ,
ng_btsocket_sco_init  ,
NULL   
)

Variable Documentation

◆ ng_btsocket_sco_debug_level

u_int32_t ng_btsocket_sco_debug_level
static

Definition at line 100 of file ng_btsocket_sco.c.

Referenced by ng_btsocket_sco_init().

◆ ng_btsocket_sco_node

◆ ng_btsocket_sco_node_connect

ng_connect_t ng_btsocket_sco_node_connect
static

Definition at line 79 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_node_constructor

ng_constructor_t ng_btsocket_sco_node_constructor
static

Definition at line 75 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_node_disconnect

ng_disconnect_t ng_btsocket_sco_node_disconnect
static

Definition at line 81 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_node_newhook

ng_newhook_t ng_btsocket_sco_node_newhook
static

Definition at line 78 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_node_rcvdata

ng_rcvdata_t ng_btsocket_sco_node_rcvdata
static

Definition at line 80 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_node_rcvmsg

ng_rcvmsg_t ng_btsocket_sco_node_rcvmsg
static

Definition at line 76 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_node_shutdown

ng_shutdown_t ng_btsocket_sco_node_shutdown
static

Definition at line 77 of file ng_btsocket_sco.c.

◆ ng_btsocket_sco_queue

struct ng_bt_itemq ng_btsocket_sco_queue
static

◆ ng_btsocket_sco_queue_mtx

struct mtx ng_btsocket_sco_queue_mtx
static

◆ ng_btsocket_sco_queue_task

struct task ng_btsocket_sco_queue_task
static

Definition at line 104 of file ng_btsocket_sco.c.

Referenced by ng_btsocket_sco_init().

◆ ng_btsocket_sco_sockets_mtx

◆ typestruct

struct ng_type typestruct
static
Initial value:
= {
.version = NG_ABI_VERSION,
}
#define NG_ABI_VERSION
Definition: netgraph.h:77
#define NG_BTSOCKET_SCO_NODE_TYPE
Definition: ng_btsocket.h:364
static ng_connect_t ng_btsocket_sco_node_connect
static ng_shutdown_t ng_btsocket_sco_node_shutdown
static ng_disconnect_t ng_btsocket_sco_node_disconnect
static ng_rcvdata_t ng_btsocket_sco_node_rcvdata
static ng_rcvmsg_t ng_btsocket_sco_node_rcvmsg
static ng_constructor_t ng_btsocket_sco_node_constructor
static ng_newhook_t ng_btsocket_sco_node_newhook

Definition at line 87 of file ng_btsocket_sco.c.

Referenced by ng_btsocket_sco_init(), and ng_btsocket_sco_node_shutdown().