xref: /freebsd/share/man/man4/ng_btsocket.4 (revision b2c76c41be32f904179efed29c0ca04d53f3996c)
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 $
2672f00208SRuslan Ermilov.\"
27c60bda17SJoel Dahl.Dd November 13, 2012
28878ed226SJulian Elischer.Dt NG_BTSOCKET 4
29878ed226SJulian Elischer.Os
30878ed226SJulian Elischer.Sh NAME
31f393f498SRuslan Ermilov.Nm ng_btsocket
32878ed226SJulian Elischer.Nd Bluetooth sockets layer
33878ed226SJulian Elischer.Sh SYNOPSIS
34878ed226SJulian Elischer.In sys/types.h
35878ed226SJulian Elischer.In sys/socket.h
363a08bb88SMaksim Yevmenkin.In sys/bitstring.h
373a08bb88SMaksim Yevmenkin.In netgraph/bluetooth/include/ng_hci.h
383a08bb88SMaksim Yevmenkin.In netgraph/bluetooth/include/ng_l2cap.h
393a08bb88SMaksim Yevmenkin.In netgraph/bluetooth/include/ng_btsocket.h
40878ed226SJulian Elischer.Sh DESCRIPTION
41878ed226SJulian ElischerThe
42878ed226SJulian Elischer.Nm
4372f00208SRuslan Ermilovmodule implements three Netgraph node types.
4472f00208SRuslan ErmilovEach type in its turn implements one protocol within
45878ed226SJulian Elischer.Dv PF_BLUETOOTH
46878ed226SJulian Elischerdomain.
47*548afe2bSChristian Brueffer.Sh Dv BLUETOOTH_PROTO_HCI protocol
48*548afe2bSChristian Brueffer.Ss Dv SOCK_RAW HCI sockets
49878ed226SJulian ElischerImplemented by
5072f00208SRuslan Ermilov.Nm btsock_hci_raw
5172f00208SRuslan ErmilovNetgraph type.
5272f00208SRuslan ErmilovRaw HCI sockets allow sending of raw HCI command datagrams
53878ed226SJulian Elischeronly to correspondents named in
54878ed226SJulian Elischer.Xr send 2
5572f00208SRuslan Ermilovcalls.
5672f00208SRuslan ErmilovRaw HCI datagrams (HCI commands, events and data) are generally received with
57878ed226SJulian Elischer.Xr recvfrom 2 ,
5872f00208SRuslan Ermilovwhich returns the next datagram with its return address.
5972f00208SRuslan ErmilovRaw HCI sockets can also be used to control HCI nodes.
60878ed226SJulian Elischer.Pp
61878ed226SJulian ElischerThe Bluetooth raw HCI socket address is defined as follows:
62878ed226SJulian Elischer.Bd -literal -offset indent
63878ed226SJulian Elischer/* Bluetooth version of struct sockaddr for raw HCI sockets */
64878ed226SJulian Elischerstruct sockaddr_hci {
65878ed226SJulian Elischer        u_char	hci_len;      /* total length */
66878ed226SJulian Elischer        u_char	hci_family;   /* address family */
67c60bda17SJoel Dahl	char	hci_node[32]; /* address (size == NG_NODESIZ ) */
68878ed226SJulian Elischer};
69878ed226SJulian Elischer.Ed
70878ed226SJulian Elischer.Pp
71c2025a76SJoel DahlRaw HCI sockets support a number of
72878ed226SJulian Elischer.Xr ioctl 2
73878ed226SJulian Elischerrequests such as:
74c60bda17SJoel Dahl.Bl -tag -width foo
75878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_STATE
76878ed226SJulian ElischerReturns current state for the HCI node.
77878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_INIT
78878ed226SJulian ElischerTurn on
79878ed226SJulian Elischer.Dq inited
80878ed226SJulian Elischerbit for the HCI node.
81878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_DEBUG
82878ed226SJulian ElischerReturns current debug level for the HCI node.
83878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_SET_DEBUG
84878ed226SJulian ElischerSets current debug level for the HCI node.
85878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_BUFFER
86878ed226SJulian ElischerReturns current state of data buffers for the HCI node.
87878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_BDADDR
88878ed226SJulian ElischerReturns BD_ADDR for the HCI node.
89878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_FEATURES
90878ed226SJulian ElischerReturns the list of features supported by hardware for the HCI node.
91878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_STAT
92878ed226SJulian ElischerReturns various statistic counters for the HCI node.
93878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_RESET_STAT
94878ed226SJulian ElischerResets all statistic counters for the HCI node to zero.
95878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_FLUSH_NEIGHBOR_CACHE
96878ed226SJulian ElischerRemove all neighbor cache entries for the HCI node.
97878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_NEIGHBOR_CACHE
98878ed226SJulian ElischerReturns content of the neighbor cache for the HCI node.
99878ed226SJulian Elischer.It Dv SIOC_HCI_RAW_NODE_GET_CON_LIST
1005203edcdSRuslan ErmilovReturns list of active baseband connections (i.e., ACL and SCO links) for
101878ed226SJulian Elischerthe HCI node.
102878ed226SJulian Elischer.It SIOC_HCI_RAW_NODE_GET_LINK_POLICY_MASK
103878ed226SJulian ElischerReturns current link policy settings mask for the HCI node.
104878ed226SJulian Elischer.It SIOC_HCI_RAW_NODE_SET_LINK_POLICY_MASK
105878ed226SJulian ElischerSets current link policy settings mask for the HCI node.
106878ed226SJulian Elischer.It SIOC_HCI_RAW_NODE_GET_PACKET_MASK
107878ed226SJulian ElischerReturns current packet mask for the HCI node.
108878ed226SJulian Elischer.It SIOC_HCI_RAW_NODE_SET_PACKET_MASK
109878ed226SJulian ElischerSets current packet mask for the HCI node.
110f2bb1caeSJulian Elischer.It SIOC_HCI_RAW_NODE_GET_ROLE_SWITCH
111f2bb1caeSJulian ElischerReturns current value of the role switch parameter for the HCI node.
112f2bb1caeSJulian Elischer.It SIOC_HCI_RAW_NODE_SET_ROLE_SWITCH
113f2bb1caeSJulian ElischerSets new value of the role switch parameter for the HCI node.
114878ed226SJulian Elischer.El
115878ed226SJulian Elischer.Pp
116f2bb1caeSJulian ElischerThe
11772f00208SRuslan Ermilov.Va net.bluetooth.hci.sockets.raw.ioctl_timeout
118f2bb1caeSJulian Elischervariable, that can be examined and set via
119f2bb1caeSJulian Elischer.Xr sysctl 8 ,
120f2bb1caeSJulian Elischercontrols the control request timeout (in seconds) for raw HCI sockets.
121f2bb1caeSJulian Elischer.Pp
12272f00208SRuslan ErmilovRaw HCI sockets support filters.
12372f00208SRuslan ErmilovThe application can filter certain HCI datagram types.
12472f00208SRuslan ErmilovFor HCI event datagrams the application can set additional filter.
12572f00208SRuslan ErmilovThe raw HCI socket filter defined as follows:
126878ed226SJulian Elischer.Bd -literal -offset indent
127878ed226SJulian Elischer/*
128878ed226SJulian Elischer * Raw HCI socket filter.
129878ed226SJulian Elischer *
130878ed226SJulian Elischer * For packet mask use (1 << (HCI packet indicator - 1))
131878ed226SJulian Elischer * For event mask use (1 << (Event - 1))
132878ed226SJulian Elischer */
133878ed226SJulian Elischer
134878ed226SJulian Elischerstruct ng_btsocket_hci_raw_filter {
135878ed226SJulian Elischer        bitstr_t bit_decl(packet_mask, 32);
136878ed226SJulian Elischer        bitstr_t bit_decl(event_mask, (NG_HCI_EVENT_MASK_SIZE * 8));
137878ed226SJulian Elischer};
138878ed226SJulian Elischer.Ed
139878ed226SJulian Elischer.Pp
140878ed226SJulian ElischerThe
141878ed226SJulian Elischer.Dv SO_HCI_RAW_FILTER
142878ed226SJulian Elischeroption defined at
143878ed226SJulian Elischer.Dv SOL_HCI_RAW
144878ed226SJulian Elischerlevel can be used to obtain via
145878ed226SJulian Elischer.Xr getsockopt 2
146878ed226SJulian Elischeror change via
147878ed226SJulian Elischer.Xr setsockopt 2
148878ed226SJulian Elischerraw HCI socket's filter.
149*548afe2bSChristian Brueffer.Sh Dv BLUETOOTH_PROTO_L2CAP protocol
150878ed226SJulian ElischerThe Bluetooth L2CAP socket address is defined as follows:
151878ed226SJulian Elischer.Bd -literal -offset indent
152878ed226SJulian Elischer/* Bluetooth version of struct sockaddr for L2CAP sockets */
153878ed226SJulian Elischerstruct sockaddr_l2cap {
154878ed226SJulian Elischer        u_char    l2cap_len;    /* total length */
155878ed226SJulian Elischer        u_char    l2cap_family; /* address family */
1566b99842aSEd Schouten        uint16_t  l2cap_psm;    /* Protocol/Service Multiplexor */
157878ed226SJulian Elischer        bdaddr_t  l2cap_bdaddr; /* address */
158878ed226SJulian Elischer};
159878ed226SJulian Elischer.Ed
160*548afe2bSChristian Brueffer.Ss Dv SOCK_RAW L2CAP sockets
161878ed226SJulian ElischerImplemented by
16272f00208SRuslan Ermilov.Nm btsock_l2c_raw
163878ed226SJulian ElischerNetgraph type.
16472f00208SRuslan ErmilovRaw L2CAP sockets do not provide access to raw L2CAP datagrams.
16572f00208SRuslan ErmilovThese
166878ed226SJulian Elischersockets used to control L2CAP nodes and to issue special L2CAP requests
16772f00208SRuslan Ermilovsuch as
16872f00208SRuslan Ermilov.Dv ECHO_REQUEST
16972f00208SRuslan Ermilovand
17072f00208SRuslan Ermilov.Dv GET_INFO
17172f00208SRuslan Ermilovrequest.
172878ed226SJulian Elischer.Pp
173878ed226SJulian ElischerRaw L2CAP sockets support number of
174878ed226SJulian Elischer.Xr ioctl 2
175878ed226SJulian Elischerrequests such as:
176c60bda17SJoel Dahl.Bl -tag -width foo
177878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_GET_FLAGS
178878ed226SJulian ElischerReturns current state for the L2CAP node.
179878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_GET_DEBUG
180878ed226SJulian ElischerReturns current debug level for the L2CAP node.
181878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_SET_DEBUG
182878ed226SJulian ElischerSets current debug level for the L2CAP node.
183878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_GET_CON_LIST
1845203edcdSRuslan ErmilovReturns list of active baseband connections (i.e., ACL links) for the L2CAP
185878ed226SJulian Elischernode.
186878ed226SJulian Elischer.It Dv SIOC_L2CAP_NODE_GET_CHAN_LIST
187878ed226SJulian ElischerReturns list of active channels for the L2CAP node.
1880986ab12SMaksim Yevmenkin.It Dv SIOC_L2CAP_NODE_GET_AUTO_DISCON_TIMO
1890986ab12SMaksim YevmenkinReturns current value of the auto disconnect timeout for the L2CAP node.
1900986ab12SMaksim Yevmenkin.It Dv SIOC_L2CAP_NODE_SET_AUTO_DISCON_TIMO
1910986ab12SMaksim YevmenkinSets current value of the auto disconnect timeout for the L2CAP node.
192878ed226SJulian Elischer.It Dv SIOC_L2CAP_L2CA_PING
19372f00208SRuslan ErmilovIssues L2CAP
19472f00208SRuslan Ermilov.Dv ECHO_REQUEST .
195878ed226SJulian Elischer.It Dv SIOC_L2CAP_L2CA_GET_INFO
19672f00208SRuslan ErmilovIssues L2CAP
19772f00208SRuslan Ermilov.Dv GET_INFO
19872f00208SRuslan Ermilovrequest.
199878ed226SJulian Elischer.El
200f2bb1caeSJulian Elischer.Pp
201f2bb1caeSJulian ElischerThe
20272f00208SRuslan Ermilov.Va net.bluetooth.l2cap.sockets.raw.ioctl_timeout
203f2bb1caeSJulian Elischervariable, that can be examined and set via
204f2bb1caeSJulian Elischer.Xr sysctl 8 ,
205f2bb1caeSJulian Elischercontrols the control request timeout (in seconds) for raw L2CAP sockets.
206*548afe2bSChristian Brueffer.Ss Dv SOCK_SEQPACKET L2CAP sockets
207878ed226SJulian ElischerImplemented by
20872f00208SRuslan Ermilov.Nm btsock_l2c
209878ed226SJulian ElischerNetgraph type.
210878ed226SJulian ElischerL2CAP sockets are either
211878ed226SJulian Elischer.Dq active
212878ed226SJulian Elischeror
213878ed226SJulian Elischer.Dq passive .
21472f00208SRuslan ErmilovActive sockets initiate connections to passive sockets.
21572f00208SRuslan ErmilovBy default, L2CAP sockets are created active; to create a passive socket, the
216878ed226SJulian Elischer.Xr listen 2
217878ed226SJulian Elischersystem call must be used after binding the socket with the
218878ed226SJulian Elischer.Xr bind 2
21972f00208SRuslan Ermilovsystem call.
22072f00208SRuslan ErmilovOnly passive sockets may use the
221878ed226SJulian Elischer.Xr accept 2
22272f00208SRuslan Ermilovcall to accept incoming connections.
22372f00208SRuslan ErmilovOnly active sockets may use the
224878ed226SJulian Elischer.Xr connect 2
225878ed226SJulian Elischercall to initiate connections.
226878ed226SJulian Elischer.Pp
227f393f498SRuslan ErmilovL2CAP sockets support
22872f00208SRuslan Ermilov.Dq "wildcard addressing" .
22972f00208SRuslan ErmilovIn this case, socket must be bound to
230878ed226SJulian Elischer.Dv NG_HCI_BDADDR_ANY
23172f00208SRuslan Ermilovaddress.
23272f00208SRuslan ErmilovNote that PSM (Protocol/Service Multiplexor) field is always required.
23372f00208SRuslan ErmilovOnce a connection has been established, the socket's address is
23472f00208SRuslan Ermilovfixed by the peer entity's location.
23572f00208SRuslan ErmilovThe address assigned to the socket is
236878ed226SJulian Elischerthe address associated with the Bluetooth device through which packets are
237878ed226SJulian Elischerbeing transmitted and received, and PSM (Protocol/Service Multiplexor).
238878ed226SJulian Elischer.Pp
239878ed226SJulian ElischerL2CAP sockets support number of options defined at
240878ed226SJulian Elischer.Dv SOL_L2CAP
241878ed226SJulian Elischerlevel which can be set with
242878ed226SJulian Elischer.Xr setsockopt 2
243878ed226SJulian Elischerand tested with
244878ed226SJulian Elischer.Xr getsockopt 2 :
245c60bda17SJoel Dahl.Bl -tag -width foo
246878ed226SJulian Elischer.It Dv SO_L2CAP_IMTU
247878ed226SJulian ElischerGet (set) maximum payload size the local socket is capable of accepting.
248878ed226SJulian Elischer.It Dv SO_L2CAP_OMTU
249878ed226SJulian ElischerGet maximum payload size the remote socket is capable of accepting.
250878ed226SJulian Elischer.It Dv SO_L2CAP_IFLOW
251878ed226SJulian ElischerGet incoming flow specification for the socket.
25272f00208SRuslan Ermilov.Bf -emphasis
25372f00208SRuslan ErmilovNot implemented.
25472f00208SRuslan Ermilov.Ef
255878ed226SJulian Elischer.It Dv SO_L2CAP_OFLOW
256878ed226SJulian ElischerGet (set) outgoing flow specification for the socket.
25772f00208SRuslan Ermilov.Bf -emphasis
25872f00208SRuslan ErmilovNot implemented.
25972f00208SRuslan Ermilov.Ef
260878ed226SJulian Elischer.It Dv SO_L2CAP_FLUSH
261878ed226SJulian ElischerGet (set) value of the flush timeout.
26272f00208SRuslan Ermilov.Bf -emphasis
26372f00208SRuslan ErmilovNot implemented.
26472f00208SRuslan Ermilov.Ef
265878ed226SJulian Elischer.El
266*548afe2bSChristian Brueffer.Sh Dv BLUETOOTH_PROTO_RFCOMM protocol
267f2bb1caeSJulian ElischerThe Bluetooth RFCOMM socket address is defined as follows:
268f2bb1caeSJulian Elischer.Bd -literal -offset indent
269f2bb1caeSJulian Elischer/* Bluetooth version of struct sockaddr for RFCOMM sockets */
270f2bb1caeSJulian Elischerstruct sockaddr_rfcomm {
271f2bb1caeSJulian Elischer        u_char   rfcomm_len;     /* total length */
272f2bb1caeSJulian Elischer        u_char   rfcomm_family;  /* address family */
273f2bb1caeSJulian Elischer        bdaddr_t rfcomm_bdaddr;  /* address */
2746b99842aSEd Schouten        uint8_t  rfcomm_channel; /* channel */
275f2bb1caeSJulian Elischer};
276f2bb1caeSJulian Elischer.Ed
277*548afe2bSChristian Brueffer.Ss Dv SOCK_STREAM RFCOMM sockets
27872f00208SRuslan ErmilovNote that RFCOMM sockets do not have associated Netgraph node type.
27972f00208SRuslan ErmilovRFCOMM sockets are implemented as additional layer on top of L2CAP sockets.
28072f00208SRuslan ErmilovRFCOMM sockets are either
281f2bb1caeSJulian Elischer.Dq active
282f2bb1caeSJulian Elischeror
283f2bb1caeSJulian Elischer.Dq passive .
28472f00208SRuslan ErmilovActive sockets initiate connections to passive sockets.
28572f00208SRuslan ErmilovBy default, RFCOMM sockets are created active; to create a passive socket, the
286f2bb1caeSJulian Elischer.Xr listen 2
287f2bb1caeSJulian Elischersystem call must be used after binding the socket with the
288f2bb1caeSJulian Elischer.Xr bind 2
28972f00208SRuslan Ermilovsystem call.
29072f00208SRuslan ErmilovOnly passive sockets may use the
291f2bb1caeSJulian Elischer.Xr accept 2
29272f00208SRuslan Ermilovcall to accept incoming connections.
29372f00208SRuslan ErmilovOnly active sockets may use the
294f2bb1caeSJulian Elischer.Xr connect 2
295f2bb1caeSJulian Elischercall to initiate connections.
296f2bb1caeSJulian Elischer.Pp
297f2bb1caeSJulian ElischerRFCOMM sockets support
29872f00208SRuslan Ermilov.Dq "wildcard addressing" .
29972f00208SRuslan ErmilovIn this case, socket must be bound to
300f2bb1caeSJulian Elischer.Dv NG_HCI_BDADDR_ANY
30172f00208SRuslan Ermilovaddress.
30272f00208SRuslan ErmilovNote that RFCOMM channel field is always required.
30372f00208SRuslan ErmilovOnce a connection has been established, the socket's address is fixed by the
30472f00208SRuslan Ermilovpeer entity's location.
30572f00208SRuslan ErmilovThe address assigned to the socket is the address associated with the
306f2bb1caeSJulian ElischerBluetooth device through which packets are being transmitted and received,
307f2bb1caeSJulian Elischerand RFCOMM channel.
308f2bb1caeSJulian Elischer.Pp
309f2bb1caeSJulian ElischerThe following options, which can be tested with
310f2bb1caeSJulian Elischer.Xr getsockopt 2
311f2bb1caeSJulian Elischercall, are defined at
312f2bb1caeSJulian Elischer.Dv SOL_RFCOMM
313f2bb1caeSJulian Elischerlevel for RFCOMM sockets:
314c60bda17SJoel Dahl.Bl -tag -width foo
31572f00208SRuslan Ermilov.It Dv SO_RFCOMM_MTU
316f2bb1caeSJulian ElischerReturns the maximum transfer unit size (in bytes) for the underlying RFCOMM
31772f00208SRuslan Ermilovchannel.
31872f00208SRuslan ErmilovNote that application still can write/read bigger chunks to/from the socket.
31972f00208SRuslan Ermilov.It Dv SO_RFCOMM_FC_INFO
320f2bb1caeSJulian ElischerReturn the flow control information for the underlying RFCOMM channel.
321f2bb1caeSJulian Elischer.El
322f2bb1caeSJulian Elischer.Pp
323f2bb1caeSJulian ElischerThe
32472f00208SRuslan Ermilov.Va net.bluetooth.rfcomm.sockets.stream.timeout
325f2bb1caeSJulian Elischervariable, that can be examined and set via
326f2bb1caeSJulian Elischer.Xr sysctl 8 ,
327f2bb1caeSJulian Elischercontrols the connection timeout (in seconds) for RFCOMM sockets.
328878ed226SJulian Elischer.Sh HOOKS
329f2bb1caeSJulian ElischerThese node types support hooks with arbitrary names (as long as they are
330f2bb1caeSJulian Elischerunique) and always accept hook connection requests.
331878ed226SJulian Elischer.Sh NETGRAPH CONTROL MESSAGES
332f2bb1caeSJulian ElischerThese node types support the generic control messages.
333878ed226SJulian Elischer.Sh SHUTDOWN
334878ed226SJulian ElischerThese nodes are persistent and cannot be shut down.
335878ed226SJulian Elischer.Sh SEE ALSO
33672f00208SRuslan Ermilov.Xr btsockstat 1 ,
337878ed226SJulian Elischer.Xr socket 2 ,
338878ed226SJulian Elischer.Xr netgraph 4 ,
339f2bb1caeSJulian Elischer.Xr ng_bluetooth 4 ,
340878ed226SJulian Elischer.Xr ng_hci 4 ,
341878ed226SJulian Elischer.Xr ng_l2cap 4 ,
34272f00208SRuslan Ermilov.Xr ngctl 8 ,
34372f00208SRuslan Ermilov.Xr sysctl 8
344878ed226SJulian Elischer.Sh HISTORY
345878ed226SJulian ElischerThe
346f2bb1caeSJulian Elischer.Nm
347f2bb1caeSJulian Elischermodule was implemented in
348878ed226SJulian Elischer.Fx 5.0 .
349878ed226SJulian Elischer.Sh AUTHORS
3506c899950SBaptiste Daroussin.An Maksim Yevmenkin Aq Mt m_evmenkin@yahoo.com
3519cbda590SRuslan Ermilov.Sh BUGS
3529cbda590SRuslan ErmilovMost likely.
3539cbda590SRuslan ErmilovPlease report if found.
354