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 <linux/security.h>
30 #include <linux/export.h>
32 #include <net/bluetooth/bluetooth.h>
33 #include <net/bluetooth/hci_core.h>
34 #include <net/bluetooth/l2cap.h>
35 #include <net/bluetooth/smp.h>
37 static const struct proto_ops l2cap_sock_ops;
38 static void l2cap_sock_init(struct sock *sk, struct sock *parent);
39 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio);
41 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
43 struct sock *sk = sock->sk;
44 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
45 struct sockaddr_l2 la;
50 if (!addr || addr->sa_family != AF_BLUETOOTH)
53 memset(&la, 0, sizeof(la));
54 len = min_t(unsigned int, sizeof(la), alen);
55 memcpy(&la, addr, len);
57 if (la.l2_cid && la.l2_psm)
62 if (sk->sk_state != BT_OPEN) {
68 __u16 psm = __le16_to_cpu(la.l2_psm);
70 /* PSM must be odd and lsb of upper byte must be 0 */
71 if ((psm & 0x0101) != 0x0001) {
76 /* Restrict usage of well-known PSMs */
77 if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE)) {
84 err = l2cap_add_scid(chan, la.l2_cid);
86 err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
91 if (__le16_to_cpu(la.l2_psm) == 0x0001 ||
92 __le16_to_cpu(la.l2_psm) == 0x0003)
93 chan->sec_level = BT_SECURITY_SDP;
95 bacpy(&bt_sk(sk)->src, &la.l2_bdaddr);
97 chan->state = BT_BOUND;
98 sk->sk_state = BT_BOUND;
105 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
107 struct sock *sk = sock->sk;
108 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
109 struct sockaddr_l2 la;
114 if (!addr || alen < sizeof(addr->sa_family) ||
115 addr->sa_family != AF_BLUETOOTH)
118 memset(&la, 0, sizeof(la));
119 len = min_t(unsigned int, sizeof(la), alen);
120 memcpy(&la, addr, len);
122 if (la.l2_cid && la.l2_psm)
127 if (chan->chan_type == L2CAP_CHAN_CONN_ORIENTED
128 && !(la.l2_psm || la.l2_cid)) {
133 switch (chan->mode) {
134 case L2CAP_MODE_BASIC:
136 case L2CAP_MODE_ERTM:
137 case L2CAP_MODE_STREAMING:
146 switch (sk->sk_state) {
150 /* Already connecting */
154 /* Already connected */
168 /* PSM must be odd and lsb of upper byte must be 0 */
169 if ((__le16_to_cpu(la.l2_psm) & 0x0101) != 0x0001 && !la.l2_cid &&
170 chan->chan_type != L2CAP_CHAN_RAW) {
175 /* Set destination address and psm */
176 bacpy(&bt_sk(sk)->dst, &la.l2_bdaddr);
177 chan->psm = la.l2_psm;
178 chan->dcid = la.l2_cid;
180 err = l2cap_chan_connect(l2cap_pi(sk)->chan);
185 err = bt_sock_wait_state(sk, BT_CONNECTED,
186 sock_sndtimeo(sk, flags & O_NONBLOCK));
192 static int l2cap_sock_listen(struct socket *sock, int backlog)
194 struct sock *sk = sock->sk;
195 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
198 BT_DBG("sk %p backlog %d", sk, backlog);
202 if ((sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM)
203 || sk->sk_state != BT_BOUND) {
208 switch (chan->mode) {
209 case L2CAP_MODE_BASIC:
211 case L2CAP_MODE_ERTM:
212 case L2CAP_MODE_STREAMING:
221 sk->sk_max_ack_backlog = backlog;
222 sk->sk_ack_backlog = 0;
224 chan->state = BT_LISTEN;
225 sk->sk_state = BT_LISTEN;
232 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
234 DECLARE_WAITQUEUE(wait, current);
235 struct sock *sk = sock->sk, *nsk;
239 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
241 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
243 BT_DBG("sk %p timeo %ld", sk, timeo);
245 /* Wait for an incoming connection. (wake-one). */
246 add_wait_queue_exclusive(sk_sleep(sk), &wait);
248 set_current_state(TASK_INTERRUPTIBLE);
250 if (sk->sk_state != BT_LISTEN) {
255 nsk = bt_accept_dequeue(sk, newsock);
264 if (signal_pending(current)) {
265 err = sock_intr_errno(timeo);
270 timeo = schedule_timeout(timeo);
271 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
273 __set_current_state(TASK_RUNNING);
274 remove_wait_queue(sk_sleep(sk), &wait);
279 newsock->state = SS_CONNECTED;
281 BT_DBG("new socket %p", nsk);
288 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
290 struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
291 struct sock *sk = sock->sk;
292 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
294 BT_DBG("sock %p, sk %p", sock, sk);
296 addr->sa_family = AF_BLUETOOTH;
297 *len = sizeof(struct sockaddr_l2);
300 la->l2_psm = chan->psm;
301 bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
302 la->l2_cid = cpu_to_le16(chan->dcid);
304 la->l2_psm = chan->sport;
305 bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
306 la->l2_cid = cpu_to_le16(chan->scid);
312 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen)
314 struct sock *sk = sock->sk;
315 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
316 struct l2cap_options opts;
317 struct l2cap_conninfo cinfo;
323 if (get_user(len, optlen))
330 memset(&opts, 0, sizeof(opts));
331 opts.imtu = chan->imtu;
332 opts.omtu = chan->omtu;
333 opts.flush_to = chan->flush_to;
334 opts.mode = chan->mode;
335 opts.fcs = chan->fcs;
336 opts.max_tx = chan->max_tx;
337 opts.txwin_size = chan->tx_win;
339 len = min_t(unsigned int, len, sizeof(opts));
340 if (copy_to_user(optval, (char *) &opts, len))
346 switch (chan->sec_level) {
347 case BT_SECURITY_LOW:
350 case BT_SECURITY_MEDIUM:
351 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
353 case BT_SECURITY_HIGH:
354 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
362 if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
363 opt |= L2CAP_LM_MASTER;
365 if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
366 opt |= L2CAP_LM_RELIABLE;
368 if (put_user(opt, (u32 __user *) optval))
373 if (sk->sk_state != BT_CONNECTED &&
374 !(sk->sk_state == BT_CONNECT2 &&
375 bt_sk(sk)->defer_setup)) {
380 memset(&cinfo, 0, sizeof(cinfo));
381 cinfo.hci_handle = chan->conn->hcon->handle;
382 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
384 len = min_t(unsigned int, len, sizeof(cinfo));
385 if (copy_to_user(optval, (char *) &cinfo, len))
399 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
401 struct sock *sk = sock->sk;
402 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
403 struct bt_security sec;
409 if (level == SOL_L2CAP)
410 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
412 if (level != SOL_BLUETOOTH)
415 if (get_user(len, optlen))
422 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
423 chan->chan_type != L2CAP_CHAN_RAW) {
428 memset(&sec, 0, sizeof(sec));
429 sec.level = chan->sec_level;
431 if (sk->sk_state == BT_CONNECTED)
432 sec.key_size = chan->conn->hcon->enc_key_size;
434 len = min_t(unsigned int, len, sizeof(sec));
435 if (copy_to_user(optval, (char *) &sec, len))
441 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
446 if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
452 if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
453 (u32 __user *) optval))
459 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
460 && sk->sk_type != SOCK_RAW) {
465 pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
467 len = min_t(unsigned int, len, sizeof(pwr));
468 if (copy_to_user(optval, (char *) &pwr, len))
473 case BT_CHANNEL_POLICY:
479 if (put_user(chan->chan_policy, (u32 __user *) optval))
492 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
494 struct sock *sk = sock->sk;
495 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
496 struct l2cap_options opts;
506 if (sk->sk_state == BT_CONNECTED) {
511 opts.imtu = chan->imtu;
512 opts.omtu = chan->omtu;
513 opts.flush_to = chan->flush_to;
514 opts.mode = chan->mode;
515 opts.fcs = chan->fcs;
516 opts.max_tx = chan->max_tx;
517 opts.txwin_size = chan->tx_win;
519 len = min_t(unsigned int, sizeof(opts), optlen);
520 if (copy_from_user((char *) &opts, optval, len)) {
525 if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
530 chan->mode = opts.mode;
531 switch (chan->mode) {
532 case L2CAP_MODE_BASIC:
533 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
535 case L2CAP_MODE_ERTM:
536 case L2CAP_MODE_STREAMING:
545 chan->imtu = opts.imtu;
546 chan->omtu = opts.omtu;
547 chan->fcs = opts.fcs;
548 chan->max_tx = opts.max_tx;
549 chan->tx_win = opts.txwin_size;
553 if (get_user(opt, (u32 __user *) optval)) {
558 if (opt & L2CAP_LM_AUTH)
559 chan->sec_level = BT_SECURITY_LOW;
560 if (opt & L2CAP_LM_ENCRYPT)
561 chan->sec_level = BT_SECURITY_MEDIUM;
562 if (opt & L2CAP_LM_SECURE)
563 chan->sec_level = BT_SECURITY_HIGH;
565 if (opt & L2CAP_LM_MASTER)
566 set_bit(FLAG_ROLE_SWITCH, &chan->flags);
568 clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
570 if (opt & L2CAP_LM_RELIABLE)
571 set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
573 clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
585 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
587 struct sock *sk = sock->sk;
588 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
589 struct bt_security sec;
591 struct l2cap_conn *conn;
597 if (level == SOL_L2CAP)
598 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
600 if (level != SOL_BLUETOOTH)
607 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
608 chan->chan_type != L2CAP_CHAN_RAW) {
613 sec.level = BT_SECURITY_LOW;
615 len = min_t(unsigned int, sizeof(sec), optlen);
616 if (copy_from_user((char *) &sec, optval, len)) {
621 if (sec.level < BT_SECURITY_LOW ||
622 sec.level > BT_SECURITY_HIGH) {
627 chan->sec_level = sec.level;
634 /*change security for LE channels */
635 if (chan->scid == L2CAP_CID_LE_DATA) {
636 if (!conn->hcon->out) {
641 if (smp_conn_security(conn, sec.level))
643 sk->sk_state = BT_CONFIG;
645 /* or for ACL link, under defer_setup time */
646 } else if (sk->sk_state == BT_CONNECT2 &&
647 bt_sk(sk)->defer_setup) {
648 err = l2cap_chan_check_security(chan);
655 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
660 if (get_user(opt, (u32 __user *) optval)) {
665 bt_sk(sk)->defer_setup = opt;
669 if (get_user(opt, (u32 __user *) optval)) {
674 if (opt > BT_FLUSHABLE_ON) {
679 if (opt == BT_FLUSHABLE_OFF) {
680 struct l2cap_conn *conn = chan->conn;
681 /* proceed further only when we have l2cap_conn and
682 No Flush support in the LM */
683 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
690 set_bit(FLAG_FLUSHABLE, &chan->flags);
692 clear_bit(FLAG_FLUSHABLE, &chan->flags);
696 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
697 chan->chan_type != L2CAP_CHAN_RAW) {
702 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
704 len = min_t(unsigned int, sizeof(pwr), optlen);
705 if (copy_from_user((char *) &pwr, optval, len)) {
710 if (pwr.force_active)
711 set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
713 clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
716 case BT_CHANNEL_POLICY:
722 if (get_user(opt, (u32 __user *) optval)) {
727 if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
732 if (chan->mode != L2CAP_MODE_ERTM &&
733 chan->mode != L2CAP_MODE_STREAMING) {
738 chan->chan_policy = (u8) opt;
750 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
752 struct sock *sk = sock->sk;
753 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
756 BT_DBG("sock %p, sk %p", sock, sk);
758 err = sock_error(sk);
762 if (msg->msg_flags & MSG_OOB)
767 if (sk->sk_state != BT_CONNECTED) {
772 err = l2cap_chan_send(chan, msg, len, sk->sk_priority);
778 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags)
780 struct sock *sk = sock->sk;
781 struct l2cap_pinfo *pi = l2cap_pi(sk);
786 if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) {
787 sk->sk_state = BT_CONFIG;
789 __l2cap_connect_rsp_defer(pi->chan);
796 if (sock->type == SOCK_STREAM)
797 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
799 err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
801 if (pi->chan->mode != L2CAP_MODE_ERTM)
804 /* Attempt to put pending rx data in the socket buffer */
808 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
811 if (pi->rx_busy_skb) {
812 if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
813 pi->rx_busy_skb = NULL;
818 /* Restore data flow when half of the receive buffer is
819 * available. This avoids resending large numbers of
822 if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
823 l2cap_chan_busy(pi->chan, 0);
830 /* Kill socket (only if zapped and orphan)
831 * Must be called on unlocked socket.
833 static void l2cap_sock_kill(struct sock *sk)
835 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
838 BT_DBG("sk %p state %d", sk, sk->sk_state);
840 /* Kill poor orphan */
842 l2cap_chan_destroy(l2cap_pi(sk)->chan);
843 sock_set_flag(sk, SOCK_DEAD);
847 static int l2cap_sock_shutdown(struct socket *sock, int how)
849 struct sock *sk = sock->sk;
850 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
853 BT_DBG("sock %p, sk %p", sock, sk);
859 if (!sk->sk_shutdown) {
860 if (chan->mode == L2CAP_MODE_ERTM)
861 err = __l2cap_wait_ack(sk);
863 sk->sk_shutdown = SHUTDOWN_MASK;
864 l2cap_chan_close(chan, 0);
866 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime)
867 err = bt_sock_wait_state(sk, BT_CLOSED,
871 if (!err && sk->sk_err)
878 static int l2cap_sock_release(struct socket *sock)
880 struct sock *sk = sock->sk;
883 BT_DBG("sock %p, sk %p", sock, sk);
888 err = l2cap_sock_shutdown(sock, 2);
895 static struct l2cap_chan *l2cap_sock_new_connection_cb(void *data)
897 struct sock *sk, *parent = data;
899 sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
904 l2cap_sock_init(sk, parent);
906 return l2cap_pi(sk)->chan;
909 static int l2cap_sock_recv_cb(void *data, struct sk_buff *skb)
912 struct sock *sk = data;
913 struct l2cap_pinfo *pi = l2cap_pi(sk);
918 err = sock_queue_rcv_skb(sk, skb);
920 /* For ERTM, handle one skb that doesn't fit into the recv
921 * buffer. This is important to do because the data frames
922 * have already been acked, so the skb cannot be discarded.
924 * Notify the l2cap core that the buffer is full, so the
925 * LOCAL_BUSY state is entered and no more frames are
926 * acked and reassembled until there is buffer space
929 if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) {
930 pi->rx_busy_skb = skb;
931 l2cap_chan_busy(pi->chan, 1);
938 static void l2cap_sock_close_cb(void *data)
940 struct sock *sk = data;
945 static void l2cap_sock_state_change_cb(void *data, int state)
947 struct sock *sk = data;
949 sk->sk_state = state;
952 static struct l2cap_ops l2cap_chan_ops = {
953 .name = "L2CAP Socket Interface",
954 .new_connection = l2cap_sock_new_connection_cb,
955 .recv = l2cap_sock_recv_cb,
956 .close = l2cap_sock_close_cb,
957 .state_change = l2cap_sock_state_change_cb,
960 static void l2cap_sock_destruct(struct sock *sk)
964 if (l2cap_pi(sk)->rx_busy_skb) {
965 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
966 l2cap_pi(sk)->rx_busy_skb = NULL;
969 skb_queue_purge(&sk->sk_receive_queue);
970 skb_queue_purge(&sk->sk_write_queue);
973 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
975 struct l2cap_pinfo *pi = l2cap_pi(sk);
976 struct l2cap_chan *chan = pi->chan;
981 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
983 sk->sk_type = parent->sk_type;
984 bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup;
986 chan->chan_type = pchan->chan_type;
987 chan->imtu = pchan->imtu;
988 chan->omtu = pchan->omtu;
989 chan->conf_state = pchan->conf_state;
990 chan->mode = pchan->mode;
991 chan->fcs = pchan->fcs;
992 chan->max_tx = pchan->max_tx;
993 chan->tx_win = pchan->tx_win;
994 chan->tx_win_max = pchan->tx_win_max;
995 chan->sec_level = pchan->sec_level;
996 chan->flags = pchan->flags;
998 security_sk_clone(parent, sk);
1001 switch (sk->sk_type) {
1003 chan->chan_type = L2CAP_CHAN_RAW;
1006 chan->chan_type = L2CAP_CHAN_CONN_LESS;
1008 case SOCK_SEQPACKET:
1010 chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
1014 chan->imtu = L2CAP_DEFAULT_MTU;
1016 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
1017 chan->mode = L2CAP_MODE_ERTM;
1018 set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
1020 chan->mode = L2CAP_MODE_BASIC;
1022 chan->max_tx = L2CAP_DEFAULT_MAX_TX;
1023 chan->fcs = L2CAP_FCS_CRC16;
1024 chan->tx_win = L2CAP_DEFAULT_TX_WINDOW;
1025 chan->tx_win_max = L2CAP_DEFAULT_TX_WINDOW;
1026 chan->sec_level = BT_SECURITY_LOW;
1028 set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
1031 /* Default config options */
1032 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
1035 chan->ops = &l2cap_chan_ops;
1038 static struct proto l2cap_proto = {
1040 .owner = THIS_MODULE,
1041 .obj_size = sizeof(struct l2cap_pinfo)
1044 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio)
1047 struct l2cap_chan *chan;
1049 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
1053 sock_init_data(sock, sk);
1054 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1056 sk->sk_destruct = l2cap_sock_destruct;
1057 sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1059 sock_reset_flag(sk, SOCK_ZAPPED);
1061 sk->sk_protocol = proto;
1062 sk->sk_state = BT_OPEN;
1064 chan = l2cap_chan_create(sk);
1066 l2cap_sock_kill(sk);
1070 l2cap_pi(sk)->chan = chan;
1075 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1080 BT_DBG("sock %p", sock);
1082 sock->state = SS_UNCONNECTED;
1084 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1085 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1086 return -ESOCKTNOSUPPORT;
1088 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1091 sock->ops = &l2cap_sock_ops;
1093 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1097 l2cap_sock_init(sk, NULL);
1101 static const struct proto_ops l2cap_sock_ops = {
1102 .family = PF_BLUETOOTH,
1103 .owner = THIS_MODULE,
1104 .release = l2cap_sock_release,
1105 .bind = l2cap_sock_bind,
1106 .connect = l2cap_sock_connect,
1107 .listen = l2cap_sock_listen,
1108 .accept = l2cap_sock_accept,
1109 .getname = l2cap_sock_getname,
1110 .sendmsg = l2cap_sock_sendmsg,
1111 .recvmsg = l2cap_sock_recvmsg,
1112 .poll = bt_sock_poll,
1113 .ioctl = bt_sock_ioctl,
1114 .mmap = sock_no_mmap,
1115 .socketpair = sock_no_socketpair,
1116 .shutdown = l2cap_sock_shutdown,
1117 .setsockopt = l2cap_sock_setsockopt,
1118 .getsockopt = l2cap_sock_getsockopt
1121 static const struct net_proto_family l2cap_sock_family_ops = {
1122 .family = PF_BLUETOOTH,
1123 .owner = THIS_MODULE,
1124 .create = l2cap_sock_create,
1127 int __init l2cap_init_sockets(void)
1131 err = proto_register(&l2cap_proto, 0);
1135 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1139 BT_INFO("L2CAP socket layer initialized");
1144 BT_ERR("L2CAP socket registration failed");
1145 proto_unregister(&l2cap_proto);
1149 void l2cap_cleanup_sockets(void)
1151 if (bt_sock_unregister(BTPROTO_L2CAP) < 0)
1152 BT_ERR("L2CAP socket unregistration failed");
1154 proto_unregister(&l2cap_proto);