xref: /freebsd/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.h (revision c398230b64aea809cb7c5cea8db580af7097920c)
1878ed226SJulian Elischer /*
2878ed226SJulian Elischer  * ng_l2cap_misc.h
3c398230bSWarner Losh  */
4c398230bSWarner Losh 
5c398230bSWarner Losh /*-
6878ed226SJulian Elischer  * Copyright (c) Maksim Yevmenkin <m_evmenkin@yahoo.com>
7878ed226SJulian Elischer  * All rights reserved.
8878ed226SJulian Elischer  *
9878ed226SJulian Elischer  * Redistribution and use in source and binary forms, with or without
10878ed226SJulian Elischer  * modification, are permitted provided that the following conditions
11878ed226SJulian Elischer  * are met:
12878ed226SJulian Elischer  * 1. Redistributions of source code must retain the above copyright
13878ed226SJulian Elischer  *    notice, this list of conditions and the following disclaimer.
14878ed226SJulian Elischer  * 2. Redistributions in binary form must reproduce the above copyright
15878ed226SJulian Elischer  *    notice, this list of conditions and the following disclaimer in the
16878ed226SJulian Elischer  *    documentation and/or other materials provided with the distribution.
17878ed226SJulian Elischer  *
18878ed226SJulian Elischer  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19878ed226SJulian Elischer  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20878ed226SJulian Elischer  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21878ed226SJulian Elischer  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22878ed226SJulian Elischer  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23878ed226SJulian Elischer  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24878ed226SJulian Elischer  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25878ed226SJulian Elischer  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26878ed226SJulian Elischer  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27878ed226SJulian Elischer  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28878ed226SJulian Elischer  * SUCH DAMAGE.
29878ed226SJulian Elischer  *
300986ab12SMaksim Yevmenkin  * $Id: ng_l2cap_misc.h,v 1.3 2003/09/08 19:11:45 max Exp $
31878ed226SJulian Elischer  * $FreeBSD$
32878ed226SJulian Elischer  */
33878ed226SJulian Elischer 
34878ed226SJulian Elischer #ifndef _NETGRAPH_L2CAP_MISC_H_
35f21fff6cSMaksim Yevmenkin #define _NETGRAPH_L2CAP_MISC_H_
36878ed226SJulian Elischer 
37878ed226SJulian Elischer void           ng_l2cap_send_hook_info (node_p, hook_p, void *, int);
38878ed226SJulian Elischer 
39878ed226SJulian Elischer /*
40878ed226SJulian Elischer  * ACL Connections
41878ed226SJulian Elischer  */
42878ed226SJulian Elischer 
43878ed226SJulian Elischer ng_l2cap_con_p ng_l2cap_new_con       (ng_l2cap_p, bdaddr_p);
44f2bb1caeSJulian Elischer void           ng_l2cap_con_ref       (ng_l2cap_con_p);
45f2bb1caeSJulian Elischer void           ng_l2cap_con_unref     (ng_l2cap_con_p);
46878ed226SJulian Elischer ng_l2cap_con_p ng_l2cap_con_by_addr   (ng_l2cap_p, bdaddr_p);
47878ed226SJulian Elischer ng_l2cap_con_p ng_l2cap_con_by_handle (ng_l2cap_p, u_int16_t);
48878ed226SJulian Elischer void           ng_l2cap_free_con      (ng_l2cap_con_p);
49878ed226SJulian Elischer 
50878ed226SJulian Elischer /*
51878ed226SJulian Elischer  * L2CAP channels
52878ed226SJulian Elischer  */
53878ed226SJulian Elischer 
54878ed226SJulian Elischer ng_l2cap_chan_p ng_l2cap_new_chan     (ng_l2cap_p, ng_l2cap_con_p, u_int16_t);
55878ed226SJulian Elischer ng_l2cap_chan_p ng_l2cap_chan_by_scid (ng_l2cap_p, u_int16_t);
56878ed226SJulian Elischer void            ng_l2cap_free_chan    (ng_l2cap_chan_p);
57878ed226SJulian Elischer 
58878ed226SJulian Elischer /*
59878ed226SJulian Elischer  * L2CAP command descriptors
60878ed226SJulian Elischer  */
61878ed226SJulian Elischer 
62878ed226SJulian Elischer #define ng_l2cap_link_cmd(con, cmd) \
63878ed226SJulian Elischer do { \
64878ed226SJulian Elischer 	TAILQ_INSERT_TAIL(&(con)->cmd_list, (cmd), next); \
65f2bb1caeSJulian Elischer 	ng_l2cap_con_ref((con)); \
66878ed226SJulian Elischer } while (0)
67878ed226SJulian Elischer 
68878ed226SJulian Elischer #define ng_l2cap_unlink_cmd(cmd) \
69878ed226SJulian Elischer do { \
70878ed226SJulian Elischer 	TAILQ_REMOVE(&((cmd)->con->cmd_list), (cmd), next); \
71f2bb1caeSJulian Elischer 	ng_l2cap_con_unref((cmd)->con); \
72878ed226SJulian Elischer } while (0)
73878ed226SJulian Elischer 
74878ed226SJulian Elischer #define ng_l2cap_free_cmd(cmd) \
75878ed226SJulian Elischer do { \
76878ed226SJulian Elischer 	NG_FREE_M((cmd)->aux); \
77878ed226SJulian Elischer 	bzero((cmd), sizeof(*(cmd))); \
78878ed226SJulian Elischer 	FREE((cmd), M_NETGRAPH_L2CAP); \
79878ed226SJulian Elischer } while (0)
80878ed226SJulian Elischer 
81878ed226SJulian Elischer ng_l2cap_cmd_p ng_l2cap_new_cmd      (ng_l2cap_con_p, ng_l2cap_chan_p,
82878ed226SJulian Elischer 						u_int8_t, u_int8_t, u_int32_t);
83878ed226SJulian Elischer ng_l2cap_cmd_p ng_l2cap_cmd_by_ident (ng_l2cap_con_p, u_int8_t);
84878ed226SJulian Elischer u_int8_t       ng_l2cap_get_ident    (ng_l2cap_con_p);
85878ed226SJulian Elischer 
86878ed226SJulian Elischer /*
87878ed226SJulian Elischer  * Timeout
88878ed226SJulian Elischer  */
89878ed226SJulian Elischer 
900986ab12SMaksim Yevmenkin int ng_l2cap_discon_timeout    (ng_l2cap_con_p);
910986ab12SMaksim Yevmenkin int ng_l2cap_discon_untimeout  (ng_l2cap_con_p);
920986ab12SMaksim Yevmenkin int ng_l2cap_lp_timeout        (ng_l2cap_con_p);
930986ab12SMaksim Yevmenkin int ng_l2cap_lp_untimeout      (ng_l2cap_con_p);
940986ab12SMaksim Yevmenkin int ng_l2cap_command_timeout   (ng_l2cap_cmd_p, int);
950986ab12SMaksim Yevmenkin int ng_l2cap_command_untimeout (ng_l2cap_cmd_p);
96878ed226SJulian Elischer 
97878ed226SJulian Elischer /*
98878ed226SJulian Elischer  * Other stuff
99878ed226SJulian Elischer  */
100878ed226SJulian Elischer 
101878ed226SJulian Elischer struct mbuf *   ng_l2cap_prepend      (struct mbuf *, int);
102878ed226SJulian Elischer ng_l2cap_flow_p ng_l2cap_default_flow (void);
103878ed226SJulian Elischer 
104878ed226SJulian Elischer #endif /* ndef _NETGRAPH_L2CAP_MISC_H_ */
105878ed226SJulian Elischer 
106