| Commit | Line | Data |
|---|---|---|
| b06ebda0 MD |
1 | /* |
| 2 | * ng_l2cap_misc.h | |
| 3 | */ | |
| 4 | ||
| 5 | /*- | |
| 6 | * Copyright (c) Maksim Yevmenkin <m_evmenkin@yahoo.com> | |
| 7 | * All rights reserved. | |
| 8 | * | |
| 9 | * Redistribution and use in source and binary forms, with or without | |
| 10 | * modification, are permitted provided that the following conditions | |
| 11 | * are met: | |
| 12 | * 1. Redistributions of source code must retain the above copyright | |
| 13 | * notice, this list of conditions and the following disclaimer. | |
| 14 | * 2. Redistributions in binary form must reproduce the above copyright | |
| 15 | * notice, this list of conditions and the following disclaimer in the | |
| 16 | * documentation and/or other materials provided with the distribution. | |
| 17 | * | |
| 18 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | |
| 19 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 20 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 21 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | |
| 22 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| 23 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| 24 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 25 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| 26 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| 27 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| 28 | * SUCH DAMAGE. | |
| 29 | * | |
| 30 | * $Id: ng_l2cap_misc.h,v 1.3 2003/09/08 19:11:45 max Exp $ | |
| 31 | * $FreeBSD: src/sys/netgraph/bluetooth/l2cap/ng_l2cap_misc.h,v 1.6 2005/08/21 19:15:14 pjd Exp $ | |
| 5a975a3d | 32 | * $DragonFly: src/sys/netgraph7/bluetooth/l2cap/ng_l2cap_misc.h,v 1.2 2008/06/26 23:05:40 dillon Exp $ |
| b06ebda0 MD |
33 | */ |
| 34 | ||
| 35 | #ifndef _NETGRAPH_L2CAP_MISC_H_ | |
| 36 | #define _NETGRAPH_L2CAP_MISC_H_ | |
| 37 | ||
| 38 | void ng_l2cap_send_hook_info (node_p, hook_p, void *, int); | |
| 39 | ||
| 40 | /* | |
| 41 | * ACL Connections | |
| 42 | */ | |
| 43 | ||
| 44 | ng_l2cap_con_p ng_l2cap_new_con (ng_l2cap_p, bdaddr_p); | |
| 45 | void ng_l2cap_con_ref (ng_l2cap_con_p); | |
| 46 | void ng_l2cap_con_unref (ng_l2cap_con_p); | |
| 47 | ng_l2cap_con_p ng_l2cap_con_by_addr (ng_l2cap_p, bdaddr_p); | |
| 48 | ng_l2cap_con_p ng_l2cap_con_by_handle (ng_l2cap_p, u_int16_t); | |
| 49 | void ng_l2cap_free_con (ng_l2cap_con_p); | |
| 50 | ||
| 51 | /* | |
| 52 | * L2CAP channels | |
| 53 | */ | |
| 54 | ||
| 55 | ng_l2cap_chan_p ng_l2cap_new_chan (ng_l2cap_p, ng_l2cap_con_p, u_int16_t); | |
| 56 | ng_l2cap_chan_p ng_l2cap_chan_by_scid (ng_l2cap_p, u_int16_t); | |
| 57 | void ng_l2cap_free_chan (ng_l2cap_chan_p); | |
| 58 | ||
| 59 | /* | |
| 60 | * L2CAP command descriptors | |
| 61 | */ | |
| 62 | ||
| 63 | #define ng_l2cap_link_cmd(con, cmd) \ | |
| 64 | do { \ | |
| 65 | TAILQ_INSERT_TAIL(&(con)->cmd_list, (cmd), next); \ | |
| 66 | ng_l2cap_con_ref((con)); \ | |
| 67 | } while (0) | |
| 68 | ||
| 69 | #define ng_l2cap_unlink_cmd(cmd) \ | |
| 70 | do { \ | |
| 71 | TAILQ_REMOVE(&((cmd)->con->cmd_list), (cmd), next); \ | |
| 72 | ng_l2cap_con_unref((cmd)->con); \ | |
| 73 | } while (0) | |
| 74 | ||
| 75 | #define ng_l2cap_free_cmd(cmd) \ | |
| 76 | do { \ | |
| 77 | KASSERT(!callout_pending(&(cmd)->timo), ("Pending callout!")); \ | |
| 78 | NG_FREE_M((cmd)->aux); \ | |
| 79 | bzero((cmd), sizeof(*(cmd))); \ | |
| fc025606 | 80 | kfree((cmd), M_NETGRAPH_L2CAP); \ |
| b06ebda0 MD |
81 | } while (0) |
| 82 | ||
| 83 | ng_l2cap_cmd_p ng_l2cap_new_cmd (ng_l2cap_con_p, ng_l2cap_chan_p, | |
| 84 | u_int8_t, u_int8_t, u_int32_t); | |
| 85 | ng_l2cap_cmd_p ng_l2cap_cmd_by_ident (ng_l2cap_con_p, u_int8_t); | |
| 86 | u_int8_t ng_l2cap_get_ident (ng_l2cap_con_p); | |
| 87 | ||
| 88 | /* | |
| 89 | * Timeout | |
| 90 | */ | |
| 91 | ||
| 92 | int ng_l2cap_discon_timeout (ng_l2cap_con_p); | |
| 93 | int ng_l2cap_discon_untimeout (ng_l2cap_con_p); | |
| 94 | int ng_l2cap_lp_timeout (ng_l2cap_con_p); | |
| 95 | int ng_l2cap_lp_untimeout (ng_l2cap_con_p); | |
| 96 | int ng_l2cap_command_timeout (ng_l2cap_cmd_p, int); | |
| 97 | int ng_l2cap_command_untimeout (ng_l2cap_cmd_p); | |
| 98 | ||
| 99 | /* | |
| 100 | * Other stuff | |
| 101 | */ | |
| 102 | ||
| 103 | struct mbuf * ng_l2cap_prepend (struct mbuf *, int); | |
| 104 | ng_l2cap_flow_p ng_l2cap_default_flow (void); | |
| 105 | ||
| 106 | #endif /* ndef _NETGRAPH_L2CAP_MISC_H_ */ | |
| 107 |