xref: /freebsd/share/man/man4/ng_btsocket.4 (revision 6b99842ada7bb3bd24c5fd4541e046994733757b)
1878ed226SJulian Elischer.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
2878ed226SJulian Elischer.\" All rights reserved.
3878ed226SJulian Elischer.\"
4878ed226SJulian Elischer.\" Redistribution and use in source and binary forms, with or without
5878ed226SJulian Elischer.\" modification, are permitted provided that the following conditions
6878ed226SJulian Elischer.\" are met:
7878ed226SJulian Elischer.\" 1. Redistributions of source code must retain the above copyright
8878ed226SJulian Elischer.\"    notice, this list of conditions and the following disclaimer.
9878ed226SJulian Elischer.\" 2. Redistributions in binary form must reproduce the above copyright
10878ed226SJulian Elischer.\"    notice, this list of conditions and the following disclaimer in the
11878ed226SJulian Elischer.\"    documentation and/or other materials provided with the distribution.
12878ed226SJulian Elischer.\"
13878ed226SJulian Elischer.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14878ed226SJulian Elischer.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15878ed226SJulian Elischer.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16878ed226SJulian Elischer.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17878ed226SJulian Elischer.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18878ed226SJulian Elischer.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19878ed226SJulian Elischer.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20878ed226SJulian Elischer.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21878ed226SJulian Elischer.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22878ed226SJulian Elischer.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23878ed226SJulian Elischer.\" SUCH DAMAGE.
24878ed226SJulian Elischer.\"
250986ab12SMaksim Yevmenkin.\" $Id: ng_btsocket.4,v 1.7 2003/05/21 19:37:35 max Exp $
26878ed226SJulian Elischer.\" $FreeBSD$
2772f00208SRuslan Ermilov.\"
28878ed226SJulian Elischer.Dd July 8, 2002
29878ed226SJulian Elischer.Dt NG_BTSOCKET 4
30878ed226SJulian Elischer.Os
31878ed226SJulian Elischer.Sh NAME
32f393f498SRuslan Ermilov.Nm ng_btsocket
33878ed226SJulian Elischer.Nd Bluetooth sockets layer
34878ed226SJulian Elischer.Sh SYNOPSIS
35878ed226SJulian Elischer.In sys/types.h
36878ed226SJulian Elischer.In sys/socket.h
373a08bb88SMaksim Yevmenkin.In sys/bitstring.h
383a08bb88SMaksim Yevmenkin.In netgraph/bluetooth/include/ng_hci.h
393a08bb88SMaksim Yevmenkin.In netgraph/bluetooth/include/ng_l2cap.h
403a08bb88SMaksim Yevmenkin.In netgraph/bluetooth/include/ng_btsocket.h
41878ed226SJulian Elischer.Sh DESCRIPTION
42878ed226SJulian ElischerThe
43878ed226SJulian Elischer.Nm
4472f00208SRuslan Ermilovmodule implements three Netgraph node types.
4572f00208SRuslan ErmilovEach type in its turn implements one protocol within
46878ed226SJulian Elischer.Dv PF_BLUETOOTH
47878ed226SJulian Elischerdomain.
4872f00208SRuslan Ermilov.Sh Dv BLUETOOTH_PROTO_HCI Sh protocol
4972f00208SRuslan Ermilov.Ss Dv SOCK_RAW Ss HCI sockets
50878ed226SJulian ElischerImplemented by
5172f00208SRuslan Ermilov.Nm btsock_hci_raw
5272f00208SRuslan ErmilovNetgraph type.
5372f00208SRuslan ErmilovRaw HCI sockets allow sending of raw HCI command datagrams
54878ed226SJulian Elischeronly to correspondents named in
55878ed226SJulian Elischer.Xr send 2
5672f00208SRuslan Ermilovcalls.
5772f00208SRuslan ErmilovRaw HCI datagrams (HCI commands, events and data) are generally received with
58878ed226SJulian Elischer.Xr recvfrom 2 ,
5972f00208SRuslan Ermilovwhich returns the next datagram with its return address.
6072f00208SRuslan ErmilovRaw HCI sockets can also be used to control HCI nodes.
61878ed226SJulian Elischer.Pp
62878ed226SJulian ElischerThe Bluetooth raw HCI socket address is defined as follows:
63878ed226SJulian Elischer.Bd -literal -offset indent
64878ed226SJulian Elischer/* Bluetooth version of struct sockaddr for raw HCI sockets */
65878ed226SJulian Elischerstruct sockaddr_hci {
66878ed226SJulian Elischer        u_char	hci_len;      /* total length */
67878ed226SJulian Elischer        u_char	hci_family;   /* address family */
68878ed226SJulian Elischer	char	hci_node[16]; /* HCI node name */
69878ed226SJulian Elischer};
70878ed226SJulian Elischer.Ed
71878ed226SJulian Elischer.Pp
72c2025a76SJoel DahlRaw HCI sockets support a number of
73878ed226SJulian Elischer.Xr ioctl 2
74878ed226SJulian Elischerrequests such as:
7572f00208SRuslan Ermilov.Bl -tag -width indent
76878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_STATE
77878ed226SJulian ElischerReturns current state for the HCI node.
78878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_INIT
79878ed226SJulian ElischerTurn on
80878ed226SJulian Elischer.Dq inited
81878ed226SJulian Elischerbit for the HCI node.
82878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_DEBUG
83878ed226SJulian ElischerReturns current debug level for the HCI node.
84878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_SET_DEBUG
85878ed226SJulian ElischerSets current debug level for the HCI node.
86878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_BUFFER
87878ed226SJulian ElischerReturns current state of data buffers for the HCI node.
88878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_BDADDR
89878ed226SJulian ElischerReturns BD_ADDR for the HCI node.
90878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_FEATURES
91878ed226SJulian ElischerReturns the list of features supported by hardware for the HCI node.
92878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_STAT
93878ed226SJulian ElischerReturns various statistic counters for the HCI node.
94878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_RESET_STAT
95878ed226SJulian ElischerResets all statistic counters for the HCI node to zero.
96878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_FLUSH_NEIGHBOR_CACHE
97878ed226SJulian ElischerRemove all neighbor cache entries for the HCI node.
98878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_NEIGHBOR_CACHE
99878ed226SJulian ElischerReturns content of the neighbor cache for the HCI node.
100878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_CON_LIST
1015203edcdSRuslan ErmilovReturns list of active baseband connections (i.e., ACL and SCO links) for
102878ed226SJulian Elischerthe HCI node.
103878ed226SJulian Elischer.It SIOC_HCI_RAW_NODE_GET_LINK_POLICY_MASK
104878ed226SJulian ElischerReturns current link policy settings mask for the HCI node.
105878ed226SJulian Elischer.It SIOC_HCI_RAW_NODE_SET_LINK_POLICY_MASK
106878ed226SJulian ElischerSets current link policy settings mask for the HCI node.
107878ed226SJulian Elischer.It SIOC_HCI_RAW_NODE_GET_PACKET_MASK
108878ed226SJulian ElischerReturns current packet mask for the HCI node.
109878ed226SJulian Elischer.It SIOC_HCI_RAW_NODE_SET_PACKET_MASK
110878ed226SJulian ElischerSets current packet mask for the HCI node.
111f2bb1caeSJulian Elischer.It SIOC_HCI_RAW_NODE_GET_ROLE_SWITCH
112f2bb1caeSJulian ElischerReturns current value of the role switch parameter for the HCI node.
113f2bb1caeSJulian Elischer.It SIOC_HCI_RAW_NODE_SET_ROLE_SWITCH
114f2bb1caeSJulian ElischerSets new value of the role switch parameter for the HCI node.
115878ed226SJulian Elischer.El
116878ed226SJulian Elischer.Pp
117f2bb1caeSJulian ElischerThe
11872f00208SRuslan Ermilov.Va net.bluetooth.hci.sockets.raw.ioctl_timeout
119f2bb1caeSJulian Elischervariable, that can be examined and set via
120f2bb1caeSJulian Elischer.Xr sysctl 8 ,
121f2bb1caeSJulian Elischercontrols the control request timeout (in seconds) for raw HCI sockets.
122f2bb1caeSJulian Elischer.Pp
12372f00208SRuslan ErmilovRaw HCI sockets support filters.
12472f00208SRuslan ErmilovThe application can filter certain HCI datagram types.
12572f00208SRuslan ErmilovFor HCI event datagrams the application can set additional filter.
12672f00208SRuslan ErmilovThe raw HCI socket filter defined as follows:
127878ed226SJulian Elischer.Bd -literal -offset indent
128878ed226SJulian Elischer/*
129878ed226SJulian Elischer * Raw HCI socket filter.
130878ed226SJulian Elischer *
131878ed226SJulian Elischer * For packet mask use (1 << (HCI packet indicator - 1))
132878ed226SJulian Elischer * For event mask use (1 << (Event - 1))
133878ed226SJulian Elischer */
134878ed226SJulian Elischer
135878ed226SJulian Elischerstruct ng_btsocket_hci_raw_filter {
136878ed226SJulian Elischer        bitstr_t bit_decl(packet_mask, 32);
137878ed226SJulian Elischer        bitstr_t bit_decl(event_mask, (NG_HCI_EVENT_MASK_SIZE * 8));
138878ed226SJulian Elischer};
139878ed226SJulian Elischer.Ed
140878ed226SJulian Elischer.Pp
141878ed226SJulian ElischerThe
142878ed226SJulian Elischer.Dv SO_HCI_RAW_FILTER
143878ed226SJulian Elischeroption defined at
144878ed226SJulian Elischer.Dv SOL_HCI_RAW
145878ed226SJulian Elischerlevel can be used to obtain via
146878ed226SJulian Elischer.Xr getsockopt 2
147878ed226SJulian Elischeror change via
148878ed226SJulian Elischer.Xr setsockopt 2
149878ed226SJulian Elischerraw HCI socket's filter.
15072f00208SRuslan Ermilov.Sh Dv BLUETOOTH_PROTO_L2CAP Sh protocol
151878ed226SJulian ElischerThe Bluetooth L2CAP socket address is defined as follows:
152878ed226SJulian Elischer.Bd -literal -offset indent
153878ed226SJulian Elischer/* Bluetooth version of struct sockaddr for L2CAP sockets */
154878ed226SJulian Elischerstruct sockaddr_l2cap {
155878ed226SJulian Elischer        u_char    l2cap_len;    /* total length */
156878ed226SJulian Elischer        u_char    l2cap_family; /* address family */
157*6b99842aSEd Schouten        uint16_t  l2cap_psm;    /* Protocol/Service Multiplexor */
158878ed226SJulian Elischer        bdaddr_t  l2cap_bdaddr; /* address */
159878ed226SJulian Elischer};
160878ed226SJulian Elischer.Ed
16172f00208SRuslan Ermilov.Ss Dv SOCK_RAW Ss L2CAP sockets
162878ed226SJulian ElischerImplemented by
16372f00208SRuslan Ermilov.Nm btsock_l2c_raw
164878ed226SJulian ElischerNetgraph type.
16572f00208SRuslan ErmilovRaw L2CAP sockets do not provide access to raw L2CAP datagrams.
16672f00208SRuslan ErmilovThese
167878ed226SJulian Elischersockets used to control L2CAP nodes and to issue special L2CAP requests
16872f00208SRuslan Ermilovsuch as
16972f00208SRuslan Ermilov.Dv ECHO_REQUEST
17072f00208SRuslan Ermilovand
17172f00208SRuslan Ermilov.Dv GET_INFO
17272f00208SRuslan Ermilovrequest.
173878ed226SJulian Elischer.Pp
174878ed226SJulian ElischerRaw L2CAP sockets support number of
175878ed226SJulian Elischer.Xr ioctl 2
176878ed226SJulian Elischerrequests such as:
17772f00208SRuslan Ermilov.Bl -tag -width indent
178878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_GET_FLAGS
179878ed226SJulian ElischerReturns current state for the L2CAP node.
180878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_GET_DEBUG
181878ed226SJulian ElischerReturns current debug level for the L2CAP node.
182878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_SET_DEBUG
183878ed226SJulian ElischerSets current debug level for the L2CAP node.
184878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_GET_CON_LIST
1855203edcdSRuslan ErmilovReturns list of active baseband connections (i.e., ACL links) for the L2CAP
186878ed226SJulian Elischernode.
187878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_GET_CHAN_LIST
188878ed226SJulian ElischerReturns list of active channels for the L2CAP node.
1890986ab12SMaksim Yevmenkin.It Dv SIOC_L2CAP_NODE_GET_AUTO_DISCON_TIMO
1900986ab12SMaksim YevmenkinReturns current value of the auto disconnect timeout for the L2CAP node.
1910986ab12SMaksim Yevmenkin.It Dv SIOC_L2CAP_NODE_SET_AUTO_DISCON_TIMO
1920986ab12SMaksim YevmenkinSets current value of the auto disconnect timeout for the L2CAP node.
193878ed226SJulian Elischer.It Dv SIOC_L2CAP_L2CA_PING
19472f00208SRuslan ErmilovIssues L2CAP
19572f00208SRuslan Ermilov.Dv ECHO_REQUEST .
196878ed226SJulian Elischer.It Dv SIOC_L2CAP_L2CA_GET_INFO
19772f00208SRuslan ErmilovIssues L2CAP
19872f00208SRuslan Ermilov.Dv GET_INFO
19972f00208SRuslan Ermilovrequest.
200878ed226SJulian Elischer.El
201f2bb1caeSJulian Elischer.Pp
202f2bb1caeSJulian ElischerThe
20372f00208SRuslan Ermilov.Va net.bluetooth.l2cap.sockets.raw.ioctl_timeout
204f2bb1caeSJulian Elischervariable, that can be examined and set via
205f2bb1caeSJulian Elischer.Xr sysctl 8 ,
206f2bb1caeSJulian Elischercontrols the control request timeout (in seconds) for raw L2CAP sockets.
20772f00208SRuslan Ermilov.Ss Dv SOCK_SEQPACKET Ss L2CAP sockets
208878ed226SJulian ElischerImplemented by
20972f00208SRuslan Ermilov.Nm btsock_l2c
210878ed226SJulian ElischerNetgraph type.
211878ed226SJulian ElischerL2CAP sockets are either
212878ed226SJulian Elischer.Dq active
213878ed226SJulian Elischeror
214878ed226SJulian Elischer.Dq passive .
21572f00208SRuslan ErmilovActive sockets initiate connections to passive sockets.
21672f00208SRuslan ErmilovBy default, L2CAP sockets are created active; to create a passive socket, the
217878ed226SJulian Elischer.Xr listen 2
218878ed226SJulian Elischersystem call must be used after binding the socket with the
219878ed226SJulian Elischer.Xr bind 2
22072f00208SRuslan Ermilovsystem call.
22172f00208SRuslan ErmilovOnly passive sockets may use the
222878ed226SJulian Elischer.Xr accept 2
22372f00208SRuslan Ermilovcall to accept incoming connections.
22472f00208SRuslan ErmilovOnly active sockets may use the
225878ed226SJulian Elischer.Xr connect 2
226878ed226SJulian Elischercall to initiate connections.
227878ed226SJulian Elischer.Pp
228f393f498SRuslan ErmilovL2CAP sockets support
22972f00208SRuslan Ermilov.Dq "wildcard addressing" .
23072f00208SRuslan ErmilovIn this case, socket must be bound to
231878ed226SJulian Elischer.Dv NG_HCI_BDADDR_ANY
23272f00208SRuslan Ermilovaddress.
23372f00208SRuslan ErmilovNote that PSM (Protocol/Service Multiplexor) field is always required.
23472f00208SRuslan ErmilovOnce a connection has been established, the socket's address is
23572f00208SRuslan Ermilovfixed by the peer entity's location.
23672f00208SRuslan ErmilovThe address assigned to the socket is
237878ed226SJulian Elischerthe address associated with the Bluetooth device through which packets are
238878ed226SJulian Elischerbeing transmitted and received, and PSM (Protocol/Service Multiplexor).
239878ed226SJulian Elischer.Pp
240878ed226SJulian ElischerL2CAP sockets support number of options defined at
241878ed226SJulian Elischer.Dv SOL_L2CAP
242878ed226SJulian Elischerlevel which can be set with
243878ed226SJulian Elischer.Xr setsockopt 2
244878ed226SJulian Elischerand tested with
245878ed226SJulian Elischer.Xr getsockopt 2 :
24672f00208SRuslan Ermilov.Bl -tag -width indent
247878ed226SJulian Elischer.It Dv SO_L2CAP_IMTU
248878ed226SJulian ElischerGet (set) maximum payload size the local socket is capable of accepting.
249878ed226SJulian Elischer.It Dv SO_L2CAP_OMTU
250878ed226SJulian ElischerGet maximum payload size the remote socket is capable of accepting.
251878ed226SJulian Elischer.It Dv SO_L2CAP_IFLOW
252878ed226SJulian ElischerGet incoming flow specification for the socket.
25372f00208SRuslan Ermilov.Bf -emphasis
25472f00208SRuslan ErmilovNot implemented.
25572f00208SRuslan Ermilov.Ef
256878ed226SJulian Elischer.It Dv SO_L2CAP_OFLOW
257878ed226SJulian ElischerGet (set) outgoing flow specification for the socket.
25872f00208SRuslan Ermilov.Bf -emphasis
25972f00208SRuslan ErmilovNot implemented.
26072f00208SRuslan Ermilov.Ef
261878ed226SJulian Elischer.It Dv SO_L2CAP_FLUSH
262878ed226SJulian ElischerGet (set) value of the flush timeout.
26372f00208SRuslan Ermilov.Bf -emphasis
26472f00208SRuslan ErmilovNot implemented.
26572f00208SRuslan Ermilov.Ef
266878ed226SJulian Elischer.El
26772f00208SRuslan Ermilov.Sh Dv BLUETOOTH_PROTO_RFCOMM Sh protocol
268f2bb1caeSJulian ElischerThe Bluetooth RFCOMM socket address is defined as follows:
269f2bb1caeSJulian Elischer.Bd -literal -offset indent
270f2bb1caeSJulian Elischer/* Bluetooth version of struct sockaddr for RFCOMM sockets */
271f2bb1caeSJulian Elischerstruct sockaddr_rfcomm {
272f2bb1caeSJulian Elischer        u_char   rfcomm_len;     /* total length */
273f2bb1caeSJulian Elischer        u_char   rfcomm_family;  /* address family */
274f2bb1caeSJulian Elischer        bdaddr_t rfcomm_bdaddr;  /* address */
275*6b99842aSEd Schouten        uint8_t  rfcomm_channel; /* channel */
276f2bb1caeSJulian Elischer};
277f2bb1caeSJulian Elischer.Ed
27872f00208SRuslan Ermilov.Ss Dv SOCK_STREAM Ss RFCOMM sockets
27972f00208SRuslan ErmilovNote that RFCOMM sockets do not have associated Netgraph node type.
28072f00208SRuslan ErmilovRFCOMM sockets are implemented as additional layer on top of L2CAP sockets.
28172f00208SRuslan ErmilovRFCOMM sockets are either
282f2bb1caeSJulian Elischer.Dq active
283f2bb1caeSJulian Elischeror
284f2bb1caeSJulian Elischer.Dq passive .
28572f00208SRuslan ErmilovActive sockets initiate connections to passive sockets.
28672f00208SRuslan ErmilovBy default, RFCOMM sockets are created active; to create a passive socket, the
287f2bb1caeSJulian Elischer.Xr listen 2
288f2bb1caeSJulian Elischersystem call must be used after binding the socket with the
289f2bb1caeSJulian Elischer.Xr bind 2
29072f00208SRuslan Ermilovsystem call.
29172f00208SRuslan ErmilovOnly passive sockets may use the
292f2bb1caeSJulian Elischer.Xr accept 2
29372f00208SRuslan Ermilovcall to accept incoming connections.
29472f00208SRuslan ErmilovOnly active sockets may use the
295f2bb1caeSJulian Elischer.Xr connect 2
296f2bb1caeSJulian Elischercall to initiate connections.
297f2bb1caeSJulian Elischer.Pp
298f2bb1caeSJulian ElischerRFCOMM sockets support
29972f00208SRuslan Ermilov.Dq "wildcard addressing" .
30072f00208SRuslan ErmilovIn this case, socket must be bound to
301f2bb1caeSJulian Elischer.Dv NG_HCI_BDADDR_ANY
30272f00208SRuslan Ermilovaddress.
30372f00208SRuslan ErmilovNote that RFCOMM channel field is always required.
30472f00208SRuslan ErmilovOnce a connection has been established, the socket's address is fixed by the
30572f00208SRuslan Ermilovpeer entity's location.
30672f00208SRuslan ErmilovThe address assigned to the socket is the address associated with the
307f2bb1caeSJulian ElischerBluetooth device through which packets are being transmitted and received,
308f2bb1caeSJulian Elischerand RFCOMM channel.
309f2bb1caeSJulian Elischer.Pp
310f2bb1caeSJulian ElischerThe following options, which can be tested with
311f2bb1caeSJulian Elischer.Xr getsockopt 2
312f2bb1caeSJulian Elischercall, are defined at
313f2bb1caeSJulian Elischer.Dv SOL_RFCOMM
314f2bb1caeSJulian Elischerlevel for RFCOMM sockets:
31572f00208SRuslan Ermilov.Bl -tag -width indent
31672f00208SRuslan Ermilov.It Dv SO_RFCOMM_MTU
317f2bb1caeSJulian ElischerReturns the maximum transfer unit size (in bytes) for the underlying RFCOMM
31872f00208SRuslan Ermilovchannel.
31972f00208SRuslan ErmilovNote that application still can write/read bigger chunks to/from the socket.
32072f00208SRuslan Ermilov.It Dv SO_RFCOMM_FC_INFO
321f2bb1caeSJulian ElischerReturn the flow control information for the underlying RFCOMM channel.
322f2bb1caeSJulian Elischer.El
323f2bb1caeSJulian Elischer.Pp
324f2bb1caeSJulian ElischerThe
32572f00208SRuslan Ermilov.Va net.bluetooth.rfcomm.sockets.stream.timeout
326f2bb1caeSJulian Elischervariable, that can be examined and set via
327f2bb1caeSJulian Elischer.Xr sysctl 8 ,
328f2bb1caeSJulian Elischercontrols the connection timeout (in seconds) for RFCOMM sockets.
329878ed226SJulian Elischer.Sh HOOKS
330f2bb1caeSJulian ElischerThese node types support hooks with arbitrary names (as long as they are
331f2bb1caeSJulian Elischerunique) and always accept hook connection requests.
332878ed226SJulian Elischer.Sh NETGRAPH CONTROL MESSAGES
333f2bb1caeSJulian ElischerThese node types support the generic control messages.
334878ed226SJulian Elischer.Sh SHUTDOWN
335878ed226SJulian ElischerThese nodes are persistent and cannot be shut down.
336878ed226SJulian Elischer.Sh SEE ALSO
33772f00208SRuslan Ermilov.Xr btsockstat 1 ,
338878ed226SJulian Elischer.Xr socket 2 ,
339878ed226SJulian Elischer.Xr netgraph 4 ,
340f2bb1caeSJulian Elischer.Xr ng_bluetooth 4 ,
341878ed226SJulian Elischer.Xr ng_hci 4 ,
342878ed226SJulian Elischer.Xr ng_l2cap 4 ,
34372f00208SRuslan Ermilov.Xr ngctl 8 ,
34472f00208SRuslan Ermilov.Xr sysctl 8
345878ed226SJulian Elischer.Sh HISTORY
346878ed226SJulian ElischerThe
347f2bb1caeSJulian Elischer.Nm
348f2bb1caeSJulian Elischermodule was implemented in
349878ed226SJulian Elischer.Fx 5.0 .
350878ed226SJulian Elischer.Sh AUTHORS
351878ed226SJulian Elischer.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
3529cbda590SRuslan Ermilov.Sh BUGS
3539cbda590SRuslan ErmilovMost likely.
3549cbda590SRuslan ErmilovPlease report if found.
355