FreeBSD kernel netgraph code
ng_btsocket_l2cap_raw.c File Reference
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bitstring.h>
#include <sys/domain.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/priv.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_l2cap.h>
Include dependency graph for ng_btsocket_l2cap_raw.c:

Go to the source code of this file.

Macros

#define M_NETGRAPH_BTSOCKET_L2CAP_RAW   M_NETGRAPH
 
#define ng_btsocket_l2cap_raw_wakeup_input_task()    taskqueue_enqueue(taskqueue_swi, &ng_btsocket_l2cap_raw_queue_task)
 
#define ng_btsocket_l2cap_raw_wakeup_route_task()    taskqueue_enqueue(taskqueue_swi, &ng_btsocket_l2cap_raw_rt_task)
 
#define NG_BTSOCKET_L2CAP_RAW_INFO
 
#define NG_BTSOCKET_L2CAP_RAW_WARN
 
#define NG_BTSOCKET_L2CAP_RAW_ERR
 
#define NG_BTSOCKET_L2CAP_RAW_ALERT
 

Functions

static void ng_btsocket_l2cap_raw_input (void *, int)
 
static void ng_btsocket_l2cap_raw_rtclean (void *, int)
 
static void ng_btsocket_l2cap_raw_get_token (u_int32_t *)
 
static int ng_btsocket_l2cap_raw_send_ngmsg (hook_p, int, void *, int)
 
static int ng_btsocket_l2cap_raw_send_sync_ngmsg (ng_btsocket_l2cap_raw_pcb_p, int, void *, int)
 
static LIST_HEAD (ng_btsocket_l2cap_raw_pcb)
 
static int ng_btsocket_l2cap_raw_node_shutdown (node_p node)
 
static int ng_btsocket_l2cap_raw_node_newhook (node_p node, hook_p hook, char const *name)
 
static int ng_btsocket_l2cap_raw_node_connect (hook_p hook)
 
static int ng_btsocket_l2cap_raw_node_disconnect (hook_p hook)
 
static int ng_btsocket_l2cap_raw_node_rcvmsg (node_p node, item_p item, hook_p hook)
 
static int ng_btsocket_l2cap_raw_node_rcvdata (hook_p hook, item_p item)
 
static void ng_btsocket_l2cap_raw_init (void *arg __unused)
 
 SYSINIT (ng_btsocket_l2cap_raw_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, ng_btsocket_l2cap_raw_init, NULL)
 
void ng_btsocket_l2cap_raw_abort (struct socket *so)
 
void ng_btsocket_l2cap_raw_close (struct socket *so)
 
int ng_btsocket_l2cap_raw_attach (struct socket *so, int proto, struct thread *td)
 
int ng_btsocket_l2cap_raw_bind (struct socket *so, struct sockaddr *nam, struct thread *td)
 
int ng_btsocket_l2cap_raw_connect (struct socket *so, struct sockaddr *nam, struct thread *td)
 
int ng_btsocket_l2cap_raw_control (struct socket *so, u_long cmd, caddr_t data, struct ifnet *ifp, struct thread *td)
 
void ng_btsocket_l2cap_raw_detach (struct socket *so)
 
int ng_btsocket_l2cap_raw_disconnect (struct socket *so)
 
int ng_btsocket_l2cap_raw_peeraddr (struct socket *so, struct sockaddr **nam)
 
int ng_btsocket_l2cap_raw_send (struct socket *so, int flags, struct mbuf *m, struct sockaddr *nam, struct mbuf *control, struct thread *td)
 
int ng_btsocket_l2cap_raw_sockaddr (struct socket *so, struct sockaddr **nam)
 

Variables

static ng_constructor_t ng_btsocket_l2cap_raw_node_constructor
 
static ng_rcvmsg_t ng_btsocket_l2cap_raw_node_rcvmsg
 
static ng_shutdown_t ng_btsocket_l2cap_raw_node_shutdown
 
static ng_newhook_t ng_btsocket_l2cap_raw_node_newhook
 
static ng_connect_t ng_btsocket_l2cap_raw_node_connect
 
static ng_rcvdata_t ng_btsocket_l2cap_raw_node_rcvdata
 
static ng_disconnect_t ng_btsocket_l2cap_raw_node_disconnect
 
static struct ng_type typestruct
 
int ifqmaxlen
 
static u_int32_t ng_btsocket_l2cap_raw_debug_level
 
static u_int32_t ng_btsocket_l2cap_raw_ioctl_timeout
 
static node_p ng_btsocket_l2cap_raw_node
 
static struct ng_bt_itemq ng_btsocket_l2cap_raw_queue
 
static struct mtx ng_btsocket_l2cap_raw_queue_mtx
 
static struct task ng_btsocket_l2cap_raw_queue_task
 

Macro Definition Documentation

◆ M_NETGRAPH_BTSOCKET_L2CAP_RAW

#define M_NETGRAPH_BTSOCKET_L2CAP_RAW   M_NETGRAPH

Definition at line 71 of file ng_btsocket_l2cap_raw.c.

◆ NG_BTSOCKET_L2CAP_RAW_ALERT

#define NG_BTSOCKET_L2CAP_RAW_ALERT
Value:
ppsratecheck(&ng_btsocket_l2cap_raw_lasttime, &ng_btsocket_l2cap_raw_curpps, 1)) \
printf
#define NG_BTSOCKET_ALERT_LEVEL
Definition: ng_btsocket.h:370
static u_int32_t ng_btsocket_l2cap_raw_debug_level

◆ NG_BTSOCKET_L2CAP_RAW_ERR

#define NG_BTSOCKET_L2CAP_RAW_ERR
Value:
ppsratecheck(&ng_btsocket_l2cap_raw_lasttime, &ng_btsocket_l2cap_raw_curpps, 1)) \
printf
#define NG_BTSOCKET_ERR_LEVEL
Definition: ng_btsocket.h:371

◆ NG_BTSOCKET_L2CAP_RAW_INFO

#define NG_BTSOCKET_L2CAP_RAW_INFO
Value:
ppsratecheck(&ng_btsocket_l2cap_raw_lasttime, &ng_btsocket_l2cap_raw_curpps, 1)) \
printf
#define NG_BTSOCKET_INFO_LEVEL
Definition: ng_btsocket.h:373

◆ ng_btsocket_l2cap_raw_wakeup_input_task

#define ng_btsocket_l2cap_raw_wakeup_input_task ( )     taskqueue_enqueue(taskqueue_swi, &ng_btsocket_l2cap_raw_queue_task)

Definition at line 92 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_wakeup_route_task

#define ng_btsocket_l2cap_raw_wakeup_route_task ( )     taskqueue_enqueue(taskqueue_swi, &ng_btsocket_l2cap_raw_rt_task)

Definition at line 95 of file ng_btsocket_l2cap_raw.c.

◆ NG_BTSOCKET_L2CAP_RAW_WARN

#define NG_BTSOCKET_L2CAP_RAW_WARN
Value:
ppsratecheck(&ng_btsocket_l2cap_raw_lasttime, &ng_btsocket_l2cap_raw_curpps, 1)) \
printf
#define NG_BTSOCKET_WARN_LEVEL
Definition: ng_btsocket.h:372

Function Documentation

◆ LIST_HEAD()

static LIST_HEAD ( ng_btsocket_l2cap_raw_pcb  )
static

Definition at line 119 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_abort()

void ng_btsocket_l2cap_raw_abort ( struct socket *  so)

Definition at line 589 of file ng_btsocket_l2cap_raw.c.

References ng_btsocket_l2cap_raw_disconnect().

Here is the call graph for this function:

◆ ng_btsocket_l2cap_raw_attach()

◆ ng_btsocket_l2cap_raw_bind()

◆ ng_btsocket_l2cap_raw_close()

void ng_btsocket_l2cap_raw_close ( struct socket *  so)

Definition at line 596 of file ng_btsocket_l2cap_raw.c.

References ng_btsocket_l2cap_raw_disconnect().

Here is the call graph for this function:

◆ ng_btsocket_l2cap_raw_connect()

◆ ng_btsocket_l2cap_raw_control()

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

Definition at line 787 of file ng_btsocket_l2cap_raw.c.

References ng_l2cap_l2ca_ping_ip::bdaddr, ng_l2cap_l2ca_get_info_ip::bdaddr, bluetooth_l2cap_rtx_timeout(), ng_btsocket_l2cap_raw_chan_list::channels, ng_mesg::ng_msghdr::cmd, ng_btsocket_l2cap_raw_con_list::connections, data, ng_mesg::data, ng_btsocket_l2cap_raw_node_debug::debug, ng_btsocket_l2cap_raw_pcb::dst, ng_btsocket_l2cap_raw_ping::echo_data, ng_btsocket_l2cap_raw_ping::echo_size, ng_l2cap_l2ca_ping_ip::echo_size, ng_l2cap_l2ca_ping_op::echo_size, ng_btsocket_l2cap_raw_node_flags::flags, ng_btsocket_l2cap_raw_pcb::flags, ng_mesg::header, ng_btsocket_l2cap_rtentry::hook, ng_btsocket_l2cap_raw_get_info::info_data, ng_btsocket_l2cap_raw_get_info::info_size, ng_l2cap_l2ca_get_info_op::info_size, ng_btsocket_l2cap_raw_get_info::info_type, ng_l2cap_l2ca_get_info_ip::info_type, min, ng_btsocket_l2cap_raw_pcb::msg, ng_btsocket_l2cap_raw_get_token(), ng_btsocket_l2cap_raw_ioctl_timeout, ng_btsocket_l2cap_raw_node, NG_BTSOCKET_L2CAP_RAW_PRIVILEGED, ng_btsocket_l2cap_raw_send_ngmsg(), ng_btsocket_l2cap_raw_send_sync_ngmsg(), NG_FREE_MSG, NG_L2CAP_MAX_CHAN_NUM, NG_L2CAP_MAX_CON_NUM, NG_L2CAP_MAX_ECHO_SIZE, NG_MKMESSAGE, NG_SEND_MSG_HOOK, NGM_L2CAP_COOKIE, NGM_L2CAP_L2CA_GET_INFO, NGM_L2CAP_L2CA_PING, NGM_L2CAP_NODE_GET_AUTO_DISCON_TIMO, NGM_L2CAP_NODE_GET_CHAN_LIST, NGM_L2CAP_NODE_GET_CON_LIST, NGM_L2CAP_NODE_GET_DEBUG, NGM_L2CAP_NODE_GET_FLAGS, NGM_L2CAP_NODE_SET_AUTO_DISCON_TIMO, NGM_L2CAP_NODE_SET_DEBUG, ng_btsocket_l2cap_raw_chan_list::num_channels, ng_l2cap_node_chan_list_ep::num_channels, ng_btsocket_l2cap_raw_con_list::num_connections, ng_l2cap_node_con_list_ep::num_connections, ng_btsocket_l2cap_raw_pcb::pcb_mtx, ng_btsocket_l2cap_raw_ping::result, ng_btsocket_l2cap_raw_get_info::result, ng_l2cap_l2ca_ping_op::result, ng_l2cap_l2ca_get_info_op::result, ng_btsocket_l2cap_raw_pcb::rt, SIOC_L2CAP_L2CA_GET_INFO, SIOC_L2CAP_L2CA_PING, SIOC_L2CAP_NODE_GET_AUTO_DISCON_TIMO, SIOC_L2CAP_NODE_GET_CHAN_LIST, SIOC_L2CAP_NODE_GET_CON_LIST, SIOC_L2CAP_NODE_GET_DEBUG, SIOC_L2CAP_NODE_GET_FLAGS, SIOC_L2CAP_NODE_SET_AUTO_DISCON_TIMO, SIOC_L2CAP_NODE_SET_DEBUG, so2l2cap_raw_pcb, ng_btsocket_l2cap_raw_auto_discon_timo::timeout, ng_btsocket_l2cap_raw_pcb::token, and ng_mesg::ng_msghdr::token.

Here is the call graph for this function:

◆ ng_btsocket_l2cap_raw_detach()

void ng_btsocket_l2cap_raw_detach ( struct socket *  so)

◆ ng_btsocket_l2cap_raw_disconnect()

int ng_btsocket_l2cap_raw_disconnect ( struct socket *  so)

◆ ng_btsocket_l2cap_raw_get_token()

static void ng_btsocket_l2cap_raw_get_token ( u_int32_t *  token)
static

Definition at line 1281 of file ng_btsocket_l2cap_raw.c.

Referenced by ng_btsocket_l2cap_raw_control(), and ng_btsocket_l2cap_raw_send_sync_ngmsg().

Here is the caller graph for this function:

◆ ng_btsocket_l2cap_raw_init()

◆ ng_btsocket_l2cap_raw_input()

◆ ng_btsocket_l2cap_raw_node_connect()

static int ng_btsocket_l2cap_raw_node_connect ( hook_p  hook)
static

Definition at line 244 of file ng_btsocket_l2cap_raw.c.

References NG_HOOK_REF, and NG_HOOK_SET_PRIVATE.

◆ ng_btsocket_l2cap_raw_node_disconnect()

static int ng_btsocket_l2cap_raw_node_disconnect ( hook_p  hook)
static

◆ ng_btsocket_l2cap_raw_node_newhook()

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

Definition at line 234 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_node_rcvdata()

static int ng_btsocket_l2cap_raw_node_rcvdata ( hook_p  hook,
item_p  item 
)
static

Definition at line 331 of file ng_btsocket_l2cap_raw.c.

References NG_FREE_ITEM.

◆ ng_btsocket_l2cap_raw_node_rcvmsg()

◆ ng_btsocket_l2cap_raw_node_shutdown()

static int ng_btsocket_l2cap_raw_node_shutdown ( node_p  node)
static

◆ ng_btsocket_l2cap_raw_peeraddr()

◆ ng_btsocket_l2cap_raw_rtclean()

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

◆ ng_btsocket_l2cap_raw_send()

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

Definition at line 1238 of file ng_btsocket_l2cap_raw.c.

References control, and NG_FREE_M.

◆ ng_btsocket_l2cap_raw_send_ngmsg()

static int ng_btsocket_l2cap_raw_send_ngmsg ( hook_p  hook,
int  cmd,
void *  arg,
int  arglen 
)
static

Definition at line 1298 of file ng_btsocket_l2cap_raw.c.

References ng_mesg::data, ng_btsocket_l2cap_raw_node, NG_MKMESSAGE, NG_SEND_MSG_HOOK, and NGM_L2CAP_COOKIE.

Referenced by ng_btsocket_l2cap_raw_control().

Here is the caller graph for this function:

◆ ng_btsocket_l2cap_raw_send_sync_ngmsg()

◆ ng_btsocket_l2cap_raw_sockaddr()

◆ SYSINIT()

SYSINIT ( ng_btsocket_l2cap_raw_init  ,
SI_SUB_PROTO_DOMAIN  ,
SI_ORDER_THIRD  ,
ng_btsocket_l2cap_raw_init  ,
NULL   
)

Variable Documentation

◆ ifqmaxlen

int ifqmaxlen
extern

◆ ng_btsocket_l2cap_raw_debug_level

u_int32_t ng_btsocket_l2cap_raw_debug_level
static

Definition at line 113 of file ng_btsocket_l2cap_raw.c.

Referenced by ng_btsocket_l2cap_raw_init().

◆ ng_btsocket_l2cap_raw_ioctl_timeout

u_int32_t ng_btsocket_l2cap_raw_ioctl_timeout
static

◆ ng_btsocket_l2cap_raw_node

◆ ng_btsocket_l2cap_raw_node_connect

ng_connect_t ng_btsocket_l2cap_raw_node_connect
static

Definition at line 79 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_node_constructor

ng_constructor_t ng_btsocket_l2cap_raw_node_constructor
static

Definition at line 75 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_node_disconnect

ng_disconnect_t ng_btsocket_l2cap_raw_node_disconnect
static

Definition at line 81 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_node_newhook

ng_newhook_t ng_btsocket_l2cap_raw_node_newhook
static

Definition at line 78 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_node_rcvdata

ng_rcvdata_t ng_btsocket_l2cap_raw_node_rcvdata
static

Definition at line 80 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_node_rcvmsg

ng_rcvmsg_t ng_btsocket_l2cap_raw_node_rcvmsg
static

Definition at line 76 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_node_shutdown

ng_shutdown_t ng_btsocket_l2cap_raw_node_shutdown
static

Definition at line 77 of file ng_btsocket_l2cap_raw.c.

◆ ng_btsocket_l2cap_raw_queue

struct ng_bt_itemq ng_btsocket_l2cap_raw_queue
static

◆ ng_btsocket_l2cap_raw_queue_mtx

struct mtx ng_btsocket_l2cap_raw_queue_mtx
static

◆ ng_btsocket_l2cap_raw_queue_task

struct task ng_btsocket_l2cap_raw_queue_task
static

Definition at line 118 of file ng_btsocket_l2cap_raw.c.

Referenced by ng_btsocket_l2cap_raw_init().

◆ typestruct

struct ng_type typestruct
static
Initial value:
= {
.version = NG_ABI_VERSION,
}
#define NG_ABI_VERSION
Definition: netgraph.h:77
#define NG_BTSOCKET_L2CAP_RAW_NODE_TYPE
Definition: ng_btsocket.h:362
static ng_rcvmsg_t ng_btsocket_l2cap_raw_node_rcvmsg
static ng_constructor_t ng_btsocket_l2cap_raw_node_constructor
static ng_rcvdata_t ng_btsocket_l2cap_raw_node_rcvdata
static ng_connect_t ng_btsocket_l2cap_raw_node_connect
static ng_shutdown_t ng_btsocket_l2cap_raw_node_shutdown
static ng_newhook_t ng_btsocket_l2cap_raw_node_newhook
static ng_disconnect_t ng_btsocket_l2cap_raw_node_disconnect

Definition at line 99 of file ng_btsocket_l2cap_raw.c.

Referenced by ng_btsocket_l2cap_raw_init(), and ng_btsocket_l2cap_raw_node_shutdown().