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