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);
171 if (la.l2_cid && la.l2_psm)
176 if ((sk->sk_type == SOCK_SEQPACKET || sk->sk_type == SOCK_STREAM)
177 && !(la.l2_psm || la.l2_cid)) {
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 && !la.l2_cid) {
224 /* Set destination address and psm */
225 bacpy(&bt_sk(sk)->dst, &la.l2_bdaddr);
226 l2cap_pi(sk)->psm = la.l2_psm;
227 l2cap_pi(sk)->dcid = la.l2_cid;
229 err = l2cap_do_connect(sk);
234 err = bt_sock_wait_state(sk, BT_CONNECTED,
235 sock_sndtimeo(sk, flags & O_NONBLOCK));
241 static int l2cap_sock_listen(struct socket *sock, int backlog)
243 struct sock *sk = sock->sk;
246 BT_DBG("sk %p backlog %d", sk, backlog);
250 if ((sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM)
251 || sk->sk_state != BT_BOUND) {
256 switch (l2cap_pi(sk)->mode) {
257 case L2CAP_MODE_BASIC:
259 case L2CAP_MODE_ERTM:
260 case L2CAP_MODE_STREAMING:
269 if (!l2cap_pi(sk)->psm) {
270 bdaddr_t *src = &bt_sk(sk)->src;
275 write_lock_bh(&l2cap_sk_list.lock);
277 for (psm = 0x1001; psm < 0x1100; psm += 2)
278 if (!__l2cap_get_sock_by_addr(cpu_to_le16(psm), src)) {
279 l2cap_pi(sk)->psm = cpu_to_le16(psm);
280 l2cap_pi(sk)->sport = cpu_to_le16(psm);
285 write_unlock_bh(&l2cap_sk_list.lock);
291 sk->sk_max_ack_backlog = backlog;
292 sk->sk_ack_backlog = 0;
293 sk->sk_state = BT_LISTEN;
300 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
302 DECLARE_WAITQUEUE(wait, current);
303 struct sock *sk = sock->sk, *nsk;
307 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
309 if (sk->sk_state != BT_LISTEN) {
314 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
316 BT_DBG("sk %p timeo %ld", sk, timeo);
318 /* Wait for an incoming connection. (wake-one). */
319 add_wait_queue_exclusive(sk_sleep(sk), &wait);
320 while (!(nsk = bt_accept_dequeue(sk, newsock))) {
321 set_current_state(TASK_INTERRUPTIBLE);
328 timeo = schedule_timeout(timeo);
329 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
331 if (sk->sk_state != BT_LISTEN) {
336 if (signal_pending(current)) {
337 err = sock_intr_errno(timeo);
341 set_current_state(TASK_RUNNING);
342 remove_wait_queue(sk_sleep(sk), &wait);
347 newsock->state = SS_CONNECTED;
349 BT_DBG("new socket %p", nsk);
356 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
358 struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
359 struct sock *sk = sock->sk;
361 BT_DBG("sock %p, sk %p", sock, sk);
363 addr->sa_family = AF_BLUETOOTH;
364 *len = sizeof(struct sockaddr_l2);
367 la->l2_psm = l2cap_pi(sk)->psm;
368 bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
369 la->l2_cid = cpu_to_le16(l2cap_pi(sk)->dcid);
371 la->l2_psm = l2cap_pi(sk)->sport;
372 bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
373 la->l2_cid = cpu_to_le16(l2cap_pi(sk)->scid);
379 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen)
381 struct sock *sk = sock->sk;
382 struct l2cap_options opts;
383 struct l2cap_conninfo cinfo;
389 if (get_user(len, optlen))
396 memset(&opts, 0, sizeof(opts));
397 opts.imtu = l2cap_pi(sk)->imtu;
398 opts.omtu = l2cap_pi(sk)->omtu;
399 opts.flush_to = l2cap_pi(sk)->flush_to;
400 opts.mode = l2cap_pi(sk)->mode;
401 opts.fcs = l2cap_pi(sk)->fcs;
402 opts.max_tx = l2cap_pi(sk)->max_tx;
403 opts.txwin_size = (__u16)l2cap_pi(sk)->tx_win;
405 len = min_t(unsigned int, len, sizeof(opts));
406 if (copy_to_user(optval, (char *) &opts, len))
412 switch (l2cap_pi(sk)->sec_level) {
413 case BT_SECURITY_LOW:
416 case BT_SECURITY_MEDIUM:
417 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
419 case BT_SECURITY_HIGH:
420 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
428 if (l2cap_pi(sk)->role_switch)
429 opt |= L2CAP_LM_MASTER;
431 if (l2cap_pi(sk)->force_reliable)
432 opt |= L2CAP_LM_RELIABLE;
434 if (put_user(opt, (u32 __user *) optval))
439 if (sk->sk_state != BT_CONNECTED &&
440 !(sk->sk_state == BT_CONNECT2 &&
441 bt_sk(sk)->defer_setup)) {
446 cinfo.hci_handle = l2cap_pi(sk)->conn->hcon->handle;
447 memcpy(cinfo.dev_class, l2cap_pi(sk)->conn->hcon->dev_class, 3);
449 len = min_t(unsigned int, len, sizeof(cinfo));
450 if (copy_to_user(optval, (char *) &cinfo, len))
464 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
466 struct sock *sk = sock->sk;
467 struct bt_security sec;
472 if (level == SOL_L2CAP)
473 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
475 if (level != SOL_BLUETOOTH)
478 if (get_user(len, optlen))
485 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
486 && sk->sk_type != SOCK_RAW) {
491 sec.level = l2cap_pi(sk)->sec_level;
493 len = min_t(unsigned int, len, sizeof(sec));
494 if (copy_to_user(optval, (char *) &sec, len))
500 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
505 if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
511 if (put_user(l2cap_pi(sk)->flushable, (u32 __user *) optval))
525 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
527 struct sock *sk = sock->sk;
528 struct l2cap_options opts;
538 if (sk->sk_state == BT_CONNECTED) {
543 opts.imtu = l2cap_pi(sk)->imtu;
544 opts.omtu = l2cap_pi(sk)->omtu;
545 opts.flush_to = l2cap_pi(sk)->flush_to;
546 opts.mode = l2cap_pi(sk)->mode;
547 opts.fcs = l2cap_pi(sk)->fcs;
548 opts.max_tx = l2cap_pi(sk)->max_tx;
549 opts.txwin_size = (__u16)l2cap_pi(sk)->tx_win;
551 len = min_t(unsigned int, sizeof(opts), optlen);
552 if (copy_from_user((char *) &opts, optval, len)) {
557 if (opts.txwin_size > L2CAP_DEFAULT_TX_WINDOW) {
562 l2cap_pi(sk)->mode = opts.mode;
563 switch (l2cap_pi(sk)->mode) {
564 case L2CAP_MODE_BASIC:
565 l2cap_pi(sk)->conf_state &= ~L2CAP_CONF_STATE2_DEVICE;
567 case L2CAP_MODE_ERTM:
568 case L2CAP_MODE_STREAMING:
577 l2cap_pi(sk)->imtu = opts.imtu;
578 l2cap_pi(sk)->omtu = opts.omtu;
579 l2cap_pi(sk)->fcs = opts.fcs;
580 l2cap_pi(sk)->max_tx = opts.max_tx;
581 l2cap_pi(sk)->tx_win = (__u8)opts.txwin_size;
585 if (get_user(opt, (u32 __user *) optval)) {
590 if (opt & L2CAP_LM_AUTH)
591 l2cap_pi(sk)->sec_level = BT_SECURITY_LOW;
592 if (opt & L2CAP_LM_ENCRYPT)
593 l2cap_pi(sk)->sec_level = BT_SECURITY_MEDIUM;
594 if (opt & L2CAP_LM_SECURE)
595 l2cap_pi(sk)->sec_level = BT_SECURITY_HIGH;
597 l2cap_pi(sk)->role_switch = (opt & L2CAP_LM_MASTER);
598 l2cap_pi(sk)->force_reliable = (opt & L2CAP_LM_RELIABLE);
610 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
612 struct sock *sk = sock->sk;
613 struct bt_security sec;
619 if (level == SOL_L2CAP)
620 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
622 if (level != SOL_BLUETOOTH)
629 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
630 && sk->sk_type != SOCK_RAW) {
635 sec.level = BT_SECURITY_LOW;
637 len = min_t(unsigned int, sizeof(sec), optlen);
638 if (copy_from_user((char *) &sec, optval, len)) {
643 if (sec.level < BT_SECURITY_LOW ||
644 sec.level > BT_SECURITY_HIGH) {
649 l2cap_pi(sk)->sec_level = sec.level;
653 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
658 if (get_user(opt, (u32 __user *) optval)) {
663 bt_sk(sk)->defer_setup = opt;
667 if (get_user(opt, (u32 __user *) optval)) {
672 if (opt > BT_FLUSHABLE_ON) {
677 if (opt == BT_FLUSHABLE_OFF) {
678 struct l2cap_conn *conn = l2cap_pi(sk)->conn;
679 /* proceed futher only when we have l2cap_conn and
680 No Flush support in the LM */
681 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
687 l2cap_pi(sk)->flushable = opt;
699 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
701 struct sock *sk = sock->sk;
702 struct l2cap_pinfo *pi = l2cap_pi(sk);
707 BT_DBG("sock %p, sk %p", sock, sk);
709 err = sock_error(sk);
713 if (msg->msg_flags & MSG_OOB)
718 if (sk->sk_state != BT_CONNECTED) {
723 /* Connectionless channel */
724 if (sk->sk_type == SOCK_DGRAM) {
725 skb = l2cap_create_connless_pdu(sk, msg, len);
729 l2cap_do_send(sk, skb);
736 case L2CAP_MODE_BASIC:
737 /* Check outgoing MTU */
738 if (len > pi->omtu) {
743 /* Create a basic PDU */
744 skb = l2cap_create_basic_pdu(sk, msg, len);
750 l2cap_do_send(sk, skb);
754 case L2CAP_MODE_ERTM:
755 case L2CAP_MODE_STREAMING:
756 /* Entire SDU fits into one PDU */
757 if (len <= pi->remote_mps) {
758 control = L2CAP_SDU_UNSEGMENTED;
759 skb = l2cap_create_iframe_pdu(sk, msg, len, control, 0);
764 __skb_queue_tail(TX_QUEUE(sk), skb);
766 if (sk->sk_send_head == NULL)
767 sk->sk_send_head = skb;
770 /* Segment SDU into multiples PDUs */
771 err = l2cap_sar_segment_sdu(sk, msg, len);
776 if (pi->mode == L2CAP_MODE_STREAMING) {
777 l2cap_streaming_send(sk);
779 if ((pi->conn_state & L2CAP_CONN_REMOTE_BUSY) &&
780 (pi->conn_state & L2CAP_CONN_WAIT_F)) {
784 err = l2cap_ertm_send(sk);
792 BT_DBG("bad state %1.1x", pi->mode);
801 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags)
803 struct sock *sk = sock->sk;
807 if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) {
808 struct l2cap_conn_rsp rsp;
809 struct l2cap_conn *conn = l2cap_pi(sk)->conn;
812 sk->sk_state = BT_CONFIG;
814 rsp.scid = cpu_to_le16(l2cap_pi(sk)->dcid);
815 rsp.dcid = cpu_to_le16(l2cap_pi(sk)->scid);
816 rsp.result = cpu_to_le16(L2CAP_CR_SUCCESS);
817 rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
818 l2cap_send_cmd(l2cap_pi(sk)->conn, l2cap_pi(sk)->ident,
819 L2CAP_CONN_RSP, sizeof(rsp), &rsp);
821 if (l2cap_pi(sk)->conf_state & L2CAP_CONF_REQ_SENT) {
826 l2cap_pi(sk)->conf_state |= L2CAP_CONF_REQ_SENT;
827 l2cap_send_cmd(conn, l2cap_get_ident(conn), L2CAP_CONF_REQ,
828 l2cap_build_conf_req(sk, buf), buf);
829 l2cap_pi(sk)->num_conf_req++;
837 if (sock->type == SOCK_STREAM)
838 return bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
840 return bt_sock_recvmsg(iocb, sock, msg, len, flags);
843 /* Kill socket (only if zapped and orphan)
844 * Must be called on unlocked socket.
846 void l2cap_sock_kill(struct sock *sk)
848 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
851 BT_DBG("sk %p state %d", sk, sk->sk_state);
853 /* Kill poor orphan */
854 bt_sock_unlink(&l2cap_sk_list, sk);
855 sock_set_flag(sk, SOCK_DEAD);
859 /* Must be called on unlocked socket. */
860 static void l2cap_sock_close(struct sock *sk)
862 l2cap_sock_clear_timer(sk);
864 __l2cap_sock_close(sk, ECONNRESET);
869 static void l2cap_sock_cleanup_listen(struct sock *parent)
873 BT_DBG("parent %p", parent);
875 /* Close not yet accepted channels */
876 while ((sk = bt_accept_dequeue(parent, NULL)))
877 l2cap_sock_close(sk);
879 parent->sk_state = BT_CLOSED;
880 sock_set_flag(parent, SOCK_ZAPPED);
883 void __l2cap_sock_close(struct sock *sk, int reason)
885 BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket);
887 switch (sk->sk_state) {
889 l2cap_sock_cleanup_listen(sk);
894 if (sk->sk_type == SOCK_SEQPACKET ||
895 sk->sk_type == SOCK_STREAM) {
896 struct l2cap_conn *conn = l2cap_pi(sk)->conn;
898 l2cap_sock_set_timer(sk, sk->sk_sndtimeo);
899 l2cap_send_disconn_req(conn, sk, reason);
901 l2cap_chan_del(sk, reason);
905 if (sk->sk_type == SOCK_SEQPACKET ||
906 sk->sk_type == SOCK_STREAM) {
907 struct l2cap_conn *conn = l2cap_pi(sk)->conn;
908 struct l2cap_conn_rsp rsp;
911 if (bt_sk(sk)->defer_setup)
912 result = L2CAP_CR_SEC_BLOCK;
914 result = L2CAP_CR_BAD_PSM;
916 rsp.scid = cpu_to_le16(l2cap_pi(sk)->dcid);
917 rsp.dcid = cpu_to_le16(l2cap_pi(sk)->scid);
918 rsp.result = cpu_to_le16(result);
919 rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
920 l2cap_send_cmd(conn, l2cap_pi(sk)->ident,
921 L2CAP_CONN_RSP, sizeof(rsp), &rsp);
923 l2cap_chan_del(sk, reason);
928 l2cap_chan_del(sk, reason);
932 sock_set_flag(sk, SOCK_ZAPPED);
937 static int l2cap_sock_shutdown(struct socket *sock, int how)
939 struct sock *sk = sock->sk;
942 BT_DBG("sock %p, sk %p", sock, sk);
948 if (!sk->sk_shutdown) {
949 if (l2cap_pi(sk)->mode == L2CAP_MODE_ERTM)
950 err = __l2cap_wait_ack(sk);
952 sk->sk_shutdown = SHUTDOWN_MASK;
953 l2cap_sock_clear_timer(sk);
954 __l2cap_sock_close(sk, 0);
956 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime)
957 err = bt_sock_wait_state(sk, BT_CLOSED,
961 if (!err && sk->sk_err)
968 static int l2cap_sock_release(struct socket *sock)
970 struct sock *sk = sock->sk;
973 BT_DBG("sock %p, sk %p", sock, sk);
978 err = l2cap_sock_shutdown(sock, 2);
985 static void l2cap_sock_destruct(struct sock *sk)
989 skb_queue_purge(&sk->sk_receive_queue);
990 skb_queue_purge(&sk->sk_write_queue);
993 void l2cap_sock_init(struct sock *sk, struct sock *parent)
995 struct l2cap_pinfo *pi = l2cap_pi(sk);
1000 sk->sk_type = parent->sk_type;
1001 bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup;
1003 pi->imtu = l2cap_pi(parent)->imtu;
1004 pi->omtu = l2cap_pi(parent)->omtu;
1005 pi->conf_state = l2cap_pi(parent)->conf_state;
1006 pi->mode = l2cap_pi(parent)->mode;
1007 pi->fcs = l2cap_pi(parent)->fcs;
1008 pi->max_tx = l2cap_pi(parent)->max_tx;
1009 pi->tx_win = l2cap_pi(parent)->tx_win;
1010 pi->sec_level = l2cap_pi(parent)->sec_level;
1011 pi->role_switch = l2cap_pi(parent)->role_switch;
1012 pi->force_reliable = l2cap_pi(parent)->force_reliable;
1013 pi->flushable = l2cap_pi(parent)->flushable;
1015 pi->imtu = L2CAP_DEFAULT_MTU;
1017 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1018 pi->mode = L2CAP_MODE_ERTM;
1019 pi->conf_state |= L2CAP_CONF_STATE2_DEVICE;
1021 pi->mode = L2CAP_MODE_BASIC;
1023 pi->max_tx = L2CAP_DEFAULT_MAX_TX;
1024 pi->fcs = L2CAP_FCS_CRC16;
1025 pi->tx_win = L2CAP_DEFAULT_TX_WINDOW;
1026 pi->sec_level = BT_SECURITY_LOW;
1027 pi->role_switch = 0;
1028 pi->force_reliable = 0;
1029 pi->flushable = BT_FLUSHABLE_OFF;
1032 /* Default config options */
1034 pi->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1035 skb_queue_head_init(TX_QUEUE(sk));
1036 skb_queue_head_init(SREJ_QUEUE(sk));
1037 skb_queue_head_init(BUSY_QUEUE(sk));
1038 INIT_LIST_HEAD(SREJ_LIST(sk));
1041 static struct proto l2cap_proto = {
1043 .owner = THIS_MODULE,
1044 .obj_size = sizeof(struct l2cap_pinfo)
1047 struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio)
1051 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
1055 sock_init_data(sock, sk);
1056 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1058 sk->sk_destruct = l2cap_sock_destruct;
1059 sk->sk_sndtimeo = msecs_to_jiffies(L2CAP_CONN_TIMEOUT);
1061 sock_reset_flag(sk, SOCK_ZAPPED);
1063 sk->sk_protocol = proto;
1064 sk->sk_state = BT_OPEN;
1066 setup_timer(&sk->sk_timer, l2cap_sock_timeout, (unsigned long) sk);
1068 bt_sock_link(&l2cap_sk_list, sk);
1072 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1077 BT_DBG("sock %p", sock);
1079 sock->state = SS_UNCONNECTED;
1081 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1082 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1083 return -ESOCKTNOSUPPORT;
1085 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1088 sock->ops = &l2cap_sock_ops;
1090 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1094 l2cap_sock_init(sk, NULL);
1098 const struct proto_ops l2cap_sock_ops = {
1099 .family = PF_BLUETOOTH,
1100 .owner = THIS_MODULE,
1101 .release = l2cap_sock_release,
1102 .bind = l2cap_sock_bind,
1103 .connect = l2cap_sock_connect,
1104 .listen = l2cap_sock_listen,
1105 .accept = l2cap_sock_accept,
1106 .getname = l2cap_sock_getname,
1107 .sendmsg = l2cap_sock_sendmsg,
1108 .recvmsg = l2cap_sock_recvmsg,
1109 .poll = bt_sock_poll,
1110 .ioctl = bt_sock_ioctl,
1111 .mmap = sock_no_mmap,
1112 .socketpair = sock_no_socketpair,
1113 .shutdown = l2cap_sock_shutdown,
1114 .setsockopt = l2cap_sock_setsockopt,
1115 .getsockopt = l2cap_sock_getsockopt
1118 static const struct net_proto_family l2cap_sock_family_ops = {
1119 .family = PF_BLUETOOTH,
1120 .owner = THIS_MODULE,
1121 .create = l2cap_sock_create,
1124 int __init l2cap_init_sockets(void)
1128 err = proto_register(&l2cap_proto, 0);
1132 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1136 BT_INFO("L2CAP socket layer initialized");
1141 BT_ERR("L2CAP socket registration failed");
1142 proto_unregister(&l2cap_proto);
1146 void l2cap_cleanup_sockets(void)
1148 if (bt_sock_unregister(BTPROTO_L2CAP) < 0)
1149 BT_ERR("L2CAP socket unregistration failed");
1151 proto_unregister(&l2cap_proto);