2 BlueZ - Bluetooth protocol stack for Linux
3 Copyright (C) 2000-2001 Qualcomm Incorporated
4 Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org>
5 Copyright (C) 2010 Google Inc.
7 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License version 2 as
11 published by the Free Software Foundation;
13 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
14 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
16 IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
17 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
18 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
19 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
20 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
23 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
24 SOFTWARE IS DISCLAIMED.
27 /* Bluetooth L2CAP sockets. */
29 #include <net/bluetooth/bluetooth.h>
30 #include <net/bluetooth/hci_core.h>
31 #include <net/bluetooth/l2cap.h>
33 /* ---- L2CAP timers ---- */
34 static void l2cap_sock_timeout(unsigned long arg
)
36 struct sock
*sk
= (struct sock
*) arg
;
39 BT_DBG("sock %p state %d", sk
, sk
->sk_state
);
43 if (sock_owned_by_user(sk
)) {
44 /* sk is owned by user. Try again later */
45 l2cap_sock_set_timer(sk
, HZ
/ 5);
51 if (sk
->sk_state
== BT_CONNECTED
|| sk
->sk_state
== BT_CONFIG
)
52 reason
= ECONNREFUSED
;
53 else if (sk
->sk_state
== BT_CONNECT
&&
54 l2cap_pi(sk
)->sec_level
!= BT_SECURITY_SDP
)
55 reason
= ECONNREFUSED
;
59 __l2cap_sock_close(sk
, reason
);
67 void l2cap_sock_set_timer(struct sock
*sk
, long timeout
)
69 BT_DBG("sk %p state %d timeout %ld", sk
, sk
->sk_state
, timeout
);
70 sk_reset_timer(sk
, &sk
->sk_timer
, jiffies
+ timeout
);
73 void l2cap_sock_clear_timer(struct sock
*sk
)
75 BT_DBG("sock %p state %d", sk
, sk
->sk_state
);
76 sk_stop_timer(sk
, &sk
->sk_timer
);
79 static struct sock
*__l2cap_get_sock_by_addr(__le16 psm
, bdaddr_t
*src
)
82 struct hlist_node
*node
;
83 sk_for_each(sk
, node
, &l2cap_sk_list
.head
)
84 if (l2cap_pi(sk
)->sport
== psm
&& !bacmp(&bt_sk(sk
)->src
, src
))
91 static int l2cap_sock_bind(struct socket
*sock
, struct sockaddr
*addr
, int alen
)
93 struct sock
*sk
= sock
->sk
;
94 struct sockaddr_l2 la
;
99 if (!addr
|| addr
->sa_family
!= AF_BLUETOOTH
)
102 memset(&la
, 0, sizeof(la
));
103 len
= min_t(unsigned int, sizeof(la
), alen
);
104 memcpy(&la
, addr
, len
);
111 if (sk
->sk_state
!= BT_OPEN
) {
117 __u16 psm
= __le16_to_cpu(la
.l2_psm
);
119 /* PSM must be odd and lsb of upper byte must be 0 */
120 if ((psm
& 0x0101) != 0x0001) {
125 /* Restrict usage of well-known PSMs */
126 if (psm
< 0x1001 && !capable(CAP_NET_BIND_SERVICE
)) {
132 write_lock_bh(&l2cap_sk_list
.lock
);
134 if (la
.l2_psm
&& __l2cap_get_sock_by_addr(la
.l2_psm
, &la
.l2_bdaddr
)) {
137 /* Save source address */
138 bacpy(&bt_sk(sk
)->src
, &la
.l2_bdaddr
);
139 l2cap_pi(sk
)->psm
= la
.l2_psm
;
140 l2cap_pi(sk
)->sport
= la
.l2_psm
;
141 sk
->sk_state
= BT_BOUND
;
143 if (__le16_to_cpu(la
.l2_psm
) == 0x0001 ||
144 __le16_to_cpu(la
.l2_psm
) == 0x0003)
145 l2cap_pi(sk
)->sec_level
= BT_SECURITY_SDP
;
148 write_unlock_bh(&l2cap_sk_list
.lock
);
155 static int l2cap_sock_connect(struct socket
*sock
, struct sockaddr
*addr
, int alen
, int flags
)
157 struct sock
*sk
= sock
->sk
;
158 struct sockaddr_l2 la
;
163 if (!addr
|| alen
< sizeof(addr
->sa_family
) ||
164 addr
->sa_family
!= AF_BLUETOOTH
)
167 memset(&la
, 0, sizeof(la
));
168 len
= min_t(unsigned int, sizeof(la
), alen
);
169 memcpy(&la
, addr
, len
);
176 if ((sk
->sk_type
== SOCK_SEQPACKET
|| sk
->sk_type
== SOCK_STREAM
)
182 switch (l2cap_pi(sk
)->mode
) {
183 case L2CAP_MODE_BASIC
:
185 case L2CAP_MODE_ERTM
:
186 case L2CAP_MODE_STREAMING
:
195 switch (sk
->sk_state
) {
199 /* Already connecting */
203 /* Already connected */
217 /* PSM must be odd and lsb of upper byte must be 0 */
218 if ((__le16_to_cpu(la
.l2_psm
) & 0x0101) != 0x0001 &&
219 sk
->sk_type
!= SOCK_RAW
) {
224 /* Set destination address and psm */
225 bacpy(&bt_sk(sk
)->dst
, &la
.l2_bdaddr
);
226 l2cap_pi(sk
)->psm
= la
.l2_psm
;
228 err
= l2cap_do_connect(sk
);
233 err
= bt_sock_wait_state(sk
, BT_CONNECTED
,
234 sock_sndtimeo(sk
, flags
& O_NONBLOCK
));
240 static int l2cap_sock_listen(struct socket
*sock
, int backlog
)
242 struct sock
*sk
= sock
->sk
;
245 BT_DBG("sk %p backlog %d", sk
, backlog
);
249 if ((sock
->type
!= SOCK_SEQPACKET
&& sock
->type
!= SOCK_STREAM
)
250 || sk
->sk_state
!= BT_BOUND
) {
255 switch (l2cap_pi(sk
)->mode
) {
256 case L2CAP_MODE_BASIC
:
258 case L2CAP_MODE_ERTM
:
259 case L2CAP_MODE_STREAMING
:
268 if (!l2cap_pi(sk
)->psm
) {
269 bdaddr_t
*src
= &bt_sk(sk
)->src
;
274 write_lock_bh(&l2cap_sk_list
.lock
);
276 for (psm
= 0x1001; psm
< 0x1100; psm
+= 2)
277 if (!__l2cap_get_sock_by_addr(cpu_to_le16(psm
), src
)) {
278 l2cap_pi(sk
)->psm
= cpu_to_le16(psm
);
279 l2cap_pi(sk
)->sport
= cpu_to_le16(psm
);
284 write_unlock_bh(&l2cap_sk_list
.lock
);
290 sk
->sk_max_ack_backlog
= backlog
;
291 sk
->sk_ack_backlog
= 0;
292 sk
->sk_state
= BT_LISTEN
;
299 static int l2cap_sock_accept(struct socket
*sock
, struct socket
*newsock
, int flags
)
301 DECLARE_WAITQUEUE(wait
, current
);
302 struct sock
*sk
= sock
->sk
, *nsk
;
306 lock_sock_nested(sk
, SINGLE_DEPTH_NESTING
);
308 if (sk
->sk_state
!= BT_LISTEN
) {
313 timeo
= sock_rcvtimeo(sk
, flags
& O_NONBLOCK
);
315 BT_DBG("sk %p timeo %ld", sk
, timeo
);
317 /* Wait for an incoming connection. (wake-one). */
318 add_wait_queue_exclusive(sk_sleep(sk
), &wait
);
319 while (!(nsk
= bt_accept_dequeue(sk
, newsock
))) {
320 set_current_state(TASK_INTERRUPTIBLE
);
327 timeo
= schedule_timeout(timeo
);
328 lock_sock_nested(sk
, SINGLE_DEPTH_NESTING
);
330 if (sk
->sk_state
!= BT_LISTEN
) {
335 if (signal_pending(current
)) {
336 err
= sock_intr_errno(timeo
);
340 set_current_state(TASK_RUNNING
);
341 remove_wait_queue(sk_sleep(sk
), &wait
);
346 newsock
->state
= SS_CONNECTED
;
348 BT_DBG("new socket %p", nsk
);
355 static int l2cap_sock_getname(struct socket
*sock
, struct sockaddr
*addr
, int *len
, int peer
)
357 struct sockaddr_l2
*la
= (struct sockaddr_l2
*) addr
;
358 struct sock
*sk
= sock
->sk
;
360 BT_DBG("sock %p, sk %p", sock
, sk
);
362 addr
->sa_family
= AF_BLUETOOTH
;
363 *len
= sizeof(struct sockaddr_l2
);
366 la
->l2_psm
= l2cap_pi(sk
)->psm
;
367 bacpy(&la
->l2_bdaddr
, &bt_sk(sk
)->dst
);
368 la
->l2_cid
= cpu_to_le16(l2cap_pi(sk
)->dcid
);
370 la
->l2_psm
= l2cap_pi(sk
)->sport
;
371 bacpy(&la
->l2_bdaddr
, &bt_sk(sk
)->src
);
372 la
->l2_cid
= cpu_to_le16(l2cap_pi(sk
)->scid
);
378 static int l2cap_sock_getsockopt_old(struct socket
*sock
, int optname
, char __user
*optval
, int __user
*optlen
)
380 struct sock
*sk
= sock
->sk
;
381 struct l2cap_options opts
;
382 struct l2cap_conninfo cinfo
;
388 if (get_user(len
, optlen
))
395 memset(&opts
, 0, sizeof(opts
));
396 opts
.imtu
= l2cap_pi(sk
)->imtu
;
397 opts
.omtu
= l2cap_pi(sk
)->omtu
;
398 opts
.flush_to
= l2cap_pi(sk
)->flush_to
;
399 opts
.mode
= l2cap_pi(sk
)->mode
;
400 opts
.fcs
= l2cap_pi(sk
)->fcs
;
401 opts
.max_tx
= l2cap_pi(sk
)->max_tx
;
402 opts
.txwin_size
= (__u16
)l2cap_pi(sk
)->tx_win
;
404 len
= min_t(unsigned int, len
, sizeof(opts
));
405 if (copy_to_user(optval
, (char *) &opts
, len
))
411 switch (l2cap_pi(sk
)->sec_level
) {
412 case BT_SECURITY_LOW
:
415 case BT_SECURITY_MEDIUM
:
416 opt
= L2CAP_LM_AUTH
| L2CAP_LM_ENCRYPT
;
418 case BT_SECURITY_HIGH
:
419 opt
= L2CAP_LM_AUTH
| L2CAP_LM_ENCRYPT
|
427 if (l2cap_pi(sk
)->role_switch
)
428 opt
|= L2CAP_LM_MASTER
;
430 if (l2cap_pi(sk
)->force_reliable
)
431 opt
|= L2CAP_LM_RELIABLE
;
433 if (put_user(opt
, (u32 __user
*) optval
))
438 if (sk
->sk_state
!= BT_CONNECTED
&&
439 !(sk
->sk_state
== BT_CONNECT2
&&
440 bt_sk(sk
)->defer_setup
)) {
445 cinfo
.hci_handle
= l2cap_pi(sk
)->conn
->hcon
->handle
;
446 memcpy(cinfo
.dev_class
, l2cap_pi(sk
)->conn
->hcon
->dev_class
, 3);
448 len
= min_t(unsigned int, len
, sizeof(cinfo
));
449 if (copy_to_user(optval
, (char *) &cinfo
, len
))
463 static int l2cap_sock_getsockopt(struct socket
*sock
, int level
, int optname
, char __user
*optval
, int __user
*optlen
)
465 struct sock
*sk
= sock
->sk
;
466 struct bt_security sec
;
471 if (level
== SOL_L2CAP
)
472 return l2cap_sock_getsockopt_old(sock
, optname
, optval
, optlen
);
474 if (level
!= SOL_BLUETOOTH
)
477 if (get_user(len
, optlen
))
484 if (sk
->sk_type
!= SOCK_SEQPACKET
&& sk
->sk_type
!= SOCK_STREAM
485 && sk
->sk_type
!= SOCK_RAW
) {
490 sec
.level
= l2cap_pi(sk
)->sec_level
;
492 len
= min_t(unsigned int, len
, sizeof(sec
));
493 if (copy_to_user(optval
, (char *) &sec
, len
))
499 if (sk
->sk_state
!= BT_BOUND
&& sk
->sk_state
!= BT_LISTEN
) {
504 if (put_user(bt_sk(sk
)->defer_setup
, (u32 __user
*) optval
))
510 if (put_user(l2cap_pi(sk
)->flushable
, (u32 __user
*) optval
))
524 static int l2cap_sock_setsockopt_old(struct socket
*sock
, int optname
, char __user
*optval
, unsigned int optlen
)
526 struct sock
*sk
= sock
->sk
;
527 struct l2cap_options opts
;
537 if (sk
->sk_state
== BT_CONNECTED
) {
542 opts
.imtu
= l2cap_pi(sk
)->imtu
;
543 opts
.omtu
= l2cap_pi(sk
)->omtu
;
544 opts
.flush_to
= l2cap_pi(sk
)->flush_to
;
545 opts
.mode
= l2cap_pi(sk
)->mode
;
546 opts
.fcs
= l2cap_pi(sk
)->fcs
;
547 opts
.max_tx
= l2cap_pi(sk
)->max_tx
;
548 opts
.txwin_size
= (__u16
)l2cap_pi(sk
)->tx_win
;
550 len
= min_t(unsigned int, sizeof(opts
), optlen
);
551 if (copy_from_user((char *) &opts
, optval
, len
)) {
556 if (opts
.txwin_size
> L2CAP_DEFAULT_TX_WINDOW
) {
561 l2cap_pi(sk
)->mode
= opts
.mode
;
562 switch (l2cap_pi(sk
)->mode
) {
563 case L2CAP_MODE_BASIC
:
564 l2cap_pi(sk
)->conf_state
&= ~L2CAP_CONF_STATE2_DEVICE
;
566 case L2CAP_MODE_ERTM
:
567 case L2CAP_MODE_STREAMING
:
576 l2cap_pi(sk
)->imtu
= opts
.imtu
;
577 l2cap_pi(sk
)->omtu
= opts
.omtu
;
578 l2cap_pi(sk
)->fcs
= opts
.fcs
;
579 l2cap_pi(sk
)->max_tx
= opts
.max_tx
;
580 l2cap_pi(sk
)->tx_win
= (__u8
)opts
.txwin_size
;
584 if (get_user(opt
, (u32 __user
*) optval
)) {
589 if (opt
& L2CAP_LM_AUTH
)
590 l2cap_pi(sk
)->sec_level
= BT_SECURITY_LOW
;
591 if (opt
& L2CAP_LM_ENCRYPT
)
592 l2cap_pi(sk
)->sec_level
= BT_SECURITY_MEDIUM
;
593 if (opt
& L2CAP_LM_SECURE
)
594 l2cap_pi(sk
)->sec_level
= BT_SECURITY_HIGH
;
596 l2cap_pi(sk
)->role_switch
= (opt
& L2CAP_LM_MASTER
);
597 l2cap_pi(sk
)->force_reliable
= (opt
& L2CAP_LM_RELIABLE
);
609 static int l2cap_sock_setsockopt(struct socket
*sock
, int level
, int optname
, char __user
*optval
, unsigned int optlen
)
611 struct sock
*sk
= sock
->sk
;
612 struct bt_security sec
;
618 if (level
== SOL_L2CAP
)
619 return l2cap_sock_setsockopt_old(sock
, optname
, optval
, optlen
);
621 if (level
!= SOL_BLUETOOTH
)
628 if (sk
->sk_type
!= SOCK_SEQPACKET
&& sk
->sk_type
!= SOCK_STREAM
629 && sk
->sk_type
!= SOCK_RAW
) {
634 sec
.level
= BT_SECURITY_LOW
;
636 len
= min_t(unsigned int, sizeof(sec
), optlen
);
637 if (copy_from_user((char *) &sec
, optval
, len
)) {
642 if (sec
.level
< BT_SECURITY_LOW
||
643 sec
.level
> BT_SECURITY_HIGH
) {
648 l2cap_pi(sk
)->sec_level
= sec
.level
;
652 if (sk
->sk_state
!= BT_BOUND
&& sk
->sk_state
!= BT_LISTEN
) {
657 if (get_user(opt
, (u32 __user
*) optval
)) {
662 bt_sk(sk
)->defer_setup
= opt
;
666 if (get_user(opt
, (u32 __user
*) optval
)) {
671 if (opt
> BT_FLUSHABLE_ON
) {
676 if (opt
== BT_FLUSHABLE_OFF
) {
677 struct l2cap_conn
*conn
= l2cap_pi(sk
)->conn
;
678 /* proceed futher only when we have l2cap_conn and
679 No Flush support in the LM */
680 if (!conn
|| !lmp_no_flush_capable(conn
->hcon
->hdev
)) {
686 l2cap_pi(sk
)->flushable
= opt
;
698 static int l2cap_sock_sendmsg(struct kiocb
*iocb
, struct socket
*sock
, struct msghdr
*msg
, size_t len
)
700 struct sock
*sk
= sock
->sk
;
701 struct l2cap_pinfo
*pi
= l2cap_pi(sk
);
706 BT_DBG("sock %p, sk %p", sock
, sk
);
708 err
= sock_error(sk
);
712 if (msg
->msg_flags
& MSG_OOB
)
717 if (sk
->sk_state
!= BT_CONNECTED
) {
722 /* Connectionless channel */
723 if (sk
->sk_type
== SOCK_DGRAM
) {
724 skb
= l2cap_create_connless_pdu(sk
, msg
, len
);
728 l2cap_do_send(sk
, skb
);
735 case L2CAP_MODE_BASIC
:
736 /* Check outgoing MTU */
737 if (len
> pi
->omtu
) {
742 /* Create a basic PDU */
743 skb
= l2cap_create_basic_pdu(sk
, msg
, len
);
749 l2cap_do_send(sk
, skb
);
753 case L2CAP_MODE_ERTM
:
754 case L2CAP_MODE_STREAMING
:
755 /* Entire SDU fits into one PDU */
756 if (len
<= pi
->remote_mps
) {
757 control
= L2CAP_SDU_UNSEGMENTED
;
758 skb
= l2cap_create_iframe_pdu(sk
, msg
, len
, control
, 0);
763 __skb_queue_tail(TX_QUEUE(sk
), skb
);
765 if (sk
->sk_send_head
== NULL
)
766 sk
->sk_send_head
= skb
;
769 /* Segment SDU into multiples PDUs */
770 err
= l2cap_sar_segment_sdu(sk
, msg
, len
);
775 if (pi
->mode
== L2CAP_MODE_STREAMING
) {
776 l2cap_streaming_send(sk
);
778 if ((pi
->conn_state
& L2CAP_CONN_REMOTE_BUSY
) &&
779 (pi
->conn_state
& L2CAP_CONN_WAIT_F
)) {
783 err
= l2cap_ertm_send(sk
);
791 BT_DBG("bad state %1.1x", pi
->mode
);
800 static int l2cap_sock_recvmsg(struct kiocb
*iocb
, struct socket
*sock
, struct msghdr
*msg
, size_t len
, int flags
)
802 struct sock
*sk
= sock
->sk
;
806 if (sk
->sk_state
== BT_CONNECT2
&& bt_sk(sk
)->defer_setup
) {
807 struct l2cap_conn_rsp rsp
;
808 struct l2cap_conn
*conn
= l2cap_pi(sk
)->conn
;
811 sk
->sk_state
= BT_CONFIG
;
813 rsp
.scid
= cpu_to_le16(l2cap_pi(sk
)->dcid
);
814 rsp
.dcid
= cpu_to_le16(l2cap_pi(sk
)->scid
);
815 rsp
.result
= cpu_to_le16(L2CAP_CR_SUCCESS
);
816 rsp
.status
= cpu_to_le16(L2CAP_CS_NO_INFO
);
817 l2cap_send_cmd(l2cap_pi(sk
)->conn
, l2cap_pi(sk
)->ident
,
818 L2CAP_CONN_RSP
, sizeof(rsp
), &rsp
);
820 if (l2cap_pi(sk
)->conf_state
& L2CAP_CONF_REQ_SENT
) {
825 l2cap_pi(sk
)->conf_state
|= L2CAP_CONF_REQ_SENT
;
826 l2cap_send_cmd(conn
, l2cap_get_ident(conn
), L2CAP_CONF_REQ
,
827 l2cap_build_conf_req(sk
, buf
), buf
);
828 l2cap_pi(sk
)->num_conf_req
++;
836 if (sock
->type
== SOCK_STREAM
)
837 return bt_sock_stream_recvmsg(iocb
, sock
, msg
, len
, flags
);
839 return bt_sock_recvmsg(iocb
, sock
, msg
, len
, flags
);
842 /* Kill socket (only if zapped and orphan)
843 * Must be called on unlocked socket.
845 void l2cap_sock_kill(struct sock
*sk
)
847 if (!sock_flag(sk
, SOCK_ZAPPED
) || sk
->sk_socket
)
850 BT_DBG("sk %p state %d", sk
, sk
->sk_state
);
852 /* Kill poor orphan */
853 bt_sock_unlink(&l2cap_sk_list
, sk
);
854 sock_set_flag(sk
, SOCK_DEAD
);
858 /* Must be called on unlocked socket. */
859 static void l2cap_sock_close(struct sock
*sk
)
861 l2cap_sock_clear_timer(sk
);
863 __l2cap_sock_close(sk
, ECONNRESET
);
868 static void l2cap_sock_cleanup_listen(struct sock
*parent
)
872 BT_DBG("parent %p", parent
);
874 /* Close not yet accepted channels */
875 while ((sk
= bt_accept_dequeue(parent
, NULL
)))
876 l2cap_sock_close(sk
);
878 parent
->sk_state
= BT_CLOSED
;
879 sock_set_flag(parent
, SOCK_ZAPPED
);
882 void __l2cap_sock_close(struct sock
*sk
, int reason
)
884 BT_DBG("sk %p state %d socket %p", sk
, sk
->sk_state
, sk
->sk_socket
);
886 switch (sk
->sk_state
) {
888 l2cap_sock_cleanup_listen(sk
);
893 if (sk
->sk_type
== SOCK_SEQPACKET
||
894 sk
->sk_type
== SOCK_STREAM
) {
895 struct l2cap_conn
*conn
= l2cap_pi(sk
)->conn
;
897 l2cap_sock_set_timer(sk
, sk
->sk_sndtimeo
);
898 l2cap_send_disconn_req(conn
, sk
, reason
);
900 l2cap_chan_del(sk
, reason
);
904 if (sk
->sk_type
== SOCK_SEQPACKET
||
905 sk
->sk_type
== SOCK_STREAM
) {
906 struct l2cap_conn
*conn
= l2cap_pi(sk
)->conn
;
907 struct l2cap_conn_rsp rsp
;
910 if (bt_sk(sk
)->defer_setup
)
911 result
= L2CAP_CR_SEC_BLOCK
;
913 result
= L2CAP_CR_BAD_PSM
;
915 rsp
.scid
= cpu_to_le16(l2cap_pi(sk
)->dcid
);
916 rsp
.dcid
= cpu_to_le16(l2cap_pi(sk
)->scid
);
917 rsp
.result
= cpu_to_le16(result
);
918 rsp
.status
= cpu_to_le16(L2CAP_CS_NO_INFO
);
919 l2cap_send_cmd(conn
, l2cap_pi(sk
)->ident
,
920 L2CAP_CONN_RSP
, sizeof(rsp
), &rsp
);
922 l2cap_chan_del(sk
, reason
);
927 l2cap_chan_del(sk
, reason
);
931 sock_set_flag(sk
, SOCK_ZAPPED
);
936 static int l2cap_sock_shutdown(struct socket
*sock
, int how
)
938 struct sock
*sk
= sock
->sk
;
941 BT_DBG("sock %p, sk %p", sock
, sk
);
947 if (!sk
->sk_shutdown
) {
948 if (l2cap_pi(sk
)->mode
== L2CAP_MODE_ERTM
)
949 err
= __l2cap_wait_ack(sk
);
951 sk
->sk_shutdown
= SHUTDOWN_MASK
;
952 l2cap_sock_clear_timer(sk
);
953 __l2cap_sock_close(sk
, 0);
955 if (sock_flag(sk
, SOCK_LINGER
) && sk
->sk_lingertime
)
956 err
= bt_sock_wait_state(sk
, BT_CLOSED
,
960 if (!err
&& sk
->sk_err
)
967 static int l2cap_sock_release(struct socket
*sock
)
969 struct sock
*sk
= sock
->sk
;
972 BT_DBG("sock %p, sk %p", sock
, sk
);
977 err
= l2cap_sock_shutdown(sock
, 2);
984 static void l2cap_sock_destruct(struct sock
*sk
)
988 skb_queue_purge(&sk
->sk_receive_queue
);
989 skb_queue_purge(&sk
->sk_write_queue
);
992 void l2cap_sock_init(struct sock
*sk
, struct sock
*parent
)
994 struct l2cap_pinfo
*pi
= l2cap_pi(sk
);
999 sk
->sk_type
= parent
->sk_type
;
1000 bt_sk(sk
)->defer_setup
= bt_sk(parent
)->defer_setup
;
1002 pi
->imtu
= l2cap_pi(parent
)->imtu
;
1003 pi
->omtu
= l2cap_pi(parent
)->omtu
;
1004 pi
->conf_state
= l2cap_pi(parent
)->conf_state
;
1005 pi
->mode
= l2cap_pi(parent
)->mode
;
1006 pi
->fcs
= l2cap_pi(parent
)->fcs
;
1007 pi
->max_tx
= l2cap_pi(parent
)->max_tx
;
1008 pi
->tx_win
= l2cap_pi(parent
)->tx_win
;
1009 pi
->sec_level
= l2cap_pi(parent
)->sec_level
;
1010 pi
->role_switch
= l2cap_pi(parent
)->role_switch
;
1011 pi
->force_reliable
= l2cap_pi(parent
)->force_reliable
;
1012 pi
->flushable
= l2cap_pi(parent
)->flushable
;
1014 pi
->imtu
= L2CAP_DEFAULT_MTU
;
1016 if (!disable_ertm
&& sk
->sk_type
== SOCK_STREAM
) {
1017 pi
->mode
= L2CAP_MODE_ERTM
;
1018 pi
->conf_state
|= L2CAP_CONF_STATE2_DEVICE
;
1020 pi
->mode
= L2CAP_MODE_BASIC
;
1022 pi
->max_tx
= L2CAP_DEFAULT_MAX_TX
;
1023 pi
->fcs
= L2CAP_FCS_CRC16
;
1024 pi
->tx_win
= L2CAP_DEFAULT_TX_WINDOW
;
1025 pi
->sec_level
= BT_SECURITY_LOW
;
1026 pi
->role_switch
= 0;
1027 pi
->force_reliable
= 0;
1028 pi
->flushable
= BT_FLUSHABLE_OFF
;
1031 /* Default config options */
1033 pi
->flush_to
= L2CAP_DEFAULT_FLUSH_TO
;
1034 skb_queue_head_init(TX_QUEUE(sk
));
1035 skb_queue_head_init(SREJ_QUEUE(sk
));
1036 skb_queue_head_init(BUSY_QUEUE(sk
));
1037 INIT_LIST_HEAD(SREJ_LIST(sk
));
1040 static struct proto l2cap_proto
= {
1042 .owner
= THIS_MODULE
,
1043 .obj_size
= sizeof(struct l2cap_pinfo
)
1046 struct sock
*l2cap_sock_alloc(struct net
*net
, struct socket
*sock
, int proto
, gfp_t prio
)
1050 sk
= sk_alloc(net
, PF_BLUETOOTH
, prio
, &l2cap_proto
);
1054 sock_init_data(sock
, sk
);
1055 INIT_LIST_HEAD(&bt_sk(sk
)->accept_q
);
1057 sk
->sk_destruct
= l2cap_sock_destruct
;
1058 sk
->sk_sndtimeo
= msecs_to_jiffies(L2CAP_CONN_TIMEOUT
);
1060 sock_reset_flag(sk
, SOCK_ZAPPED
);
1062 sk
->sk_protocol
= proto
;
1063 sk
->sk_state
= BT_OPEN
;
1065 setup_timer(&sk
->sk_timer
, l2cap_sock_timeout
, (unsigned long) sk
);
1067 bt_sock_link(&l2cap_sk_list
, sk
);
1071 static int l2cap_sock_create(struct net
*net
, struct socket
*sock
, int protocol
,
1076 BT_DBG("sock %p", sock
);
1078 sock
->state
= SS_UNCONNECTED
;
1080 if (sock
->type
!= SOCK_SEQPACKET
&& sock
->type
!= SOCK_STREAM
&&
1081 sock
->type
!= SOCK_DGRAM
&& sock
->type
!= SOCK_RAW
)
1082 return -ESOCKTNOSUPPORT
;
1084 if (sock
->type
== SOCK_RAW
&& !kern
&& !capable(CAP_NET_RAW
))
1087 sock
->ops
= &l2cap_sock_ops
;
1089 sk
= l2cap_sock_alloc(net
, sock
, protocol
, GFP_ATOMIC
);
1093 l2cap_sock_init(sk
, NULL
);
1097 const struct proto_ops l2cap_sock_ops
= {
1098 .family
= PF_BLUETOOTH
,
1099 .owner
= THIS_MODULE
,
1100 .release
= l2cap_sock_release
,
1101 .bind
= l2cap_sock_bind
,
1102 .connect
= l2cap_sock_connect
,
1103 .listen
= l2cap_sock_listen
,
1104 .accept
= l2cap_sock_accept
,
1105 .getname
= l2cap_sock_getname
,
1106 .sendmsg
= l2cap_sock_sendmsg
,
1107 .recvmsg
= l2cap_sock_recvmsg
,
1108 .poll
= bt_sock_poll
,
1109 .ioctl
= bt_sock_ioctl
,
1110 .mmap
= sock_no_mmap
,
1111 .socketpair
= sock_no_socketpair
,
1112 .shutdown
= l2cap_sock_shutdown
,
1113 .setsockopt
= l2cap_sock_setsockopt
,
1114 .getsockopt
= l2cap_sock_getsockopt
1117 static const struct net_proto_family l2cap_sock_family_ops
= {
1118 .family
= PF_BLUETOOTH
,
1119 .owner
= THIS_MODULE
,
1120 .create
= l2cap_sock_create
,
1123 int __init
l2cap_init_sockets(void)
1127 err
= proto_register(&l2cap_proto
, 0);
1131 err
= bt_sock_register(BTPROTO_L2CAP
, &l2cap_sock_family_ops
);
1135 BT_INFO("L2CAP socket layer initialized");
1140 BT_ERR("L2CAP socket registration failed");
1141 proto_unregister(&l2cap_proto
);
1145 void l2cap_cleanup_sockets(void)
1147 if (bt_sock_unregister(BTPROTO_L2CAP
) < 0)
1148 BT_ERR("L2CAP socket unregistration failed");
1150 proto_unregister(&l2cap_proto
);