3 * BlueZ - Bluetooth protocol stack for Linux
5 * Copyright (C) 2000-2001 Qualcomm Incorporated
6 * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com>
7 * Copyright (C) 2002-2008 Marcel Holtmann <marcel@holtmann.org>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
33 #include <sys/socket.h>
36 #define L2CAP_DEFAULT_MTU 672
37 #define L2CAP_DEFAULT_FLUSH_TO 0xFFFF
39 #define L2CAP_CONN_TIMEOUT (HZ * 40)
41 /* L2CAP socket address */
43 sa_family_t l2_family;
44 unsigned short l2_psm;
48 /* L2CAP socket options */
49 #define L2CAP_OPTIONS 0x01
50 struct l2cap_options {
57 #define L2CAP_CONNINFO 0x02
58 struct l2cap_conninfo {
64 #define L2CAP_LM_MASTER 0x0001
65 #define L2CAP_LM_AUTH 0x0002
66 #define L2CAP_LM_ENCRYPT 0x0004
67 #define L2CAP_LM_TRUSTED 0x0008
68 #define L2CAP_LM_RELIABLE 0x0010
69 #define L2CAP_LM_SECURE 0x0020
71 /* L2CAP command codes */
72 #define L2CAP_COMMAND_REJ 0x01
73 #define L2CAP_CONN_REQ 0x02
74 #define L2CAP_CONN_RSP 0x03
75 #define L2CAP_CONF_REQ 0x04
76 #define L2CAP_CONF_RSP 0x05
77 #define L2CAP_DISCONN_REQ 0x06
78 #define L2CAP_DISCONN_RSP 0x07
79 #define L2CAP_ECHO_REQ 0x08
80 #define L2CAP_ECHO_RSP 0x09
81 #define L2CAP_INFO_REQ 0x0a
82 #define L2CAP_INFO_RSP 0x0b
84 /* L2CAP structures */
88 } __attribute__ ((packed)) l2cap_hdr;
89 #define L2CAP_HDR_SIZE 4
95 } __attribute__ ((packed)) l2cap_cmd_hdr;
96 #define L2CAP_CMD_HDR_SIZE 4
100 } __attribute__ ((packed)) l2cap_cmd_rej;
101 #define L2CAP_CMD_REJ_SIZE 2
106 } __attribute__ ((packed)) l2cap_conn_req;
107 #define L2CAP_CONN_REQ_SIZE 4
114 } __attribute__ ((packed)) l2cap_conn_rsp;
115 #define L2CAP_CONN_RSP_SIZE 8
118 #define L2CAP_CR_SUCCESS 0x0000
119 #define L2CAP_CR_PEND 0x0001
120 #define L2CAP_CR_BAD_PSM 0x0002
121 #define L2CAP_CR_SEC_BLOCK 0x0003
122 #define L2CAP_CR_NO_MEM 0x0004
125 #define L2CAP_CS_NO_INFO 0x0000
126 #define L2CAP_CS_AUTHEN_PEND 0x0001
127 #define L2CAP_CS_AUTHOR_PEND 0x0002
133 } __attribute__ ((packed)) l2cap_conf_req;
134 #define L2CAP_CONF_REQ_SIZE 4
141 } __attribute__ ((packed)) l2cap_conf_rsp;
142 #define L2CAP_CONF_RSP_SIZE 6
144 #define L2CAP_CONF_SUCCESS 0x0000
145 #define L2CAP_CONF_UNACCEPT 0x0001
146 #define L2CAP_CONF_REJECT 0x0002
147 #define L2CAP_CONF_UNKNOWN 0x0003
153 } __attribute__ ((packed)) l2cap_conf_opt;
154 #define L2CAP_CONF_OPT_SIZE 2
156 #define L2CAP_CONF_MTU 0x01
157 #define L2CAP_CONF_FLUSH_TO 0x02
158 #define L2CAP_CONF_QOS 0x03
159 #define L2CAP_CONF_RFC 0x04
160 #define L2CAP_CONF_RFC_MODE 0x04
162 #define L2CAP_CONF_MAX_SIZE 22
164 #define L2CAP_MODE_BASIC 0x00
165 #define L2CAP_MODE_RETRANS 0x01
166 #define L2CAP_MODE_FLOWCTL 0x02
171 } __attribute__ ((packed)) l2cap_disconn_req;
172 #define L2CAP_DISCONN_REQ_SIZE 4
177 } __attribute__ ((packed)) l2cap_disconn_rsp;
178 #define L2CAP_DISCONN_RSP_SIZE 4
182 } __attribute__ ((packed)) l2cap_info_req;
183 #define L2CAP_INFO_REQ_SIZE 2
189 } __attribute__ ((packed)) l2cap_info_rsp;
190 #define L2CAP_INFO_RSP_SIZE 4
193 #define L2CAP_IT_CL_MTU 0x0001
194 #define L2CAP_IT_FEAT_MASK 0x0002
197 #define L2CAP_IR_SUCCESS 0x0000
198 #define L2CAP_IR_NOTSUPP 0x0001
204 #endif /* __L2CAP_H */