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>
31 #include <net/bluetooth/bluetooth.h>
32 #include <net/bluetooth/hci_core.h>
33 #include <net/bluetooth/l2cap.h>
34 #include <net/bluetooth/smp.h>
36 static const struct proto_ops l2cap_sock_ops;
37 static void l2cap_sock_init(struct sock *sk, struct sock *parent);
38 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio);
40 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
42 struct sock *sk = sock->sk;
43 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
44 struct sockaddr_l2 la;
49 if (!addr || addr->sa_family != AF_BLUETOOTH)
52 memset(&la, 0, sizeof(la));
53 len = min_t(unsigned int, sizeof(la), alen);
54 memcpy(&la, addr, len);
56 if (la.l2_cid && la.l2_psm)
61 if (sk->sk_state != BT_OPEN) {
67 __u16 psm = __le16_to_cpu(la.l2_psm);
69 /* PSM must be odd and lsb of upper byte must be 0 */
70 if ((psm & 0x0101) != 0x0001) {
75 /* Restrict usage of well-known PSMs */
76 if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE)) {
83 err = l2cap_add_scid(chan, la.l2_cid);
85 err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
90 if (__le16_to_cpu(la.l2_psm) == 0x0001 ||
91 __le16_to_cpu(la.l2_psm) == 0x0003)
92 chan->sec_level = BT_SECURITY_SDP;
94 bacpy(&bt_sk(sk)->src, &la.l2_bdaddr);
96 chan->state = BT_BOUND;
97 sk->sk_state = BT_BOUND;
104 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
106 struct sock *sk = sock->sk;
107 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
108 struct sockaddr_l2 la;
113 if (!addr || alen < sizeof(addr->sa_family) ||
114 addr->sa_family != AF_BLUETOOTH)
117 memset(&la, 0, sizeof(la));
118 len = min_t(unsigned int, sizeof(la), alen);
119 memcpy(&la, addr, len);
121 if (la.l2_cid && la.l2_psm)
124 err = l2cap_chan_connect(chan, la.l2_psm, la.l2_cid, &la.l2_bdaddr);
128 err = bt_sock_wait_state(sk, BT_CONNECTED,
129 sock_sndtimeo(sk, flags & O_NONBLOCK));
131 if (sock_owned_by_user(sk))
136 static int l2cap_sock_listen(struct socket *sock, int backlog)
138 struct sock *sk = sock->sk;
139 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
142 BT_DBG("sk %p backlog %d", sk, backlog);
146 if ((sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM)
147 || sk->sk_state != BT_BOUND) {
152 switch (chan->mode) {
153 case L2CAP_MODE_BASIC:
155 case L2CAP_MODE_ERTM:
156 case L2CAP_MODE_STREAMING:
165 sk->sk_max_ack_backlog = backlog;
166 sk->sk_ack_backlog = 0;
168 chan->state = BT_LISTEN;
169 sk->sk_state = BT_LISTEN;
176 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
178 DECLARE_WAITQUEUE(wait, current);
179 struct sock *sk = sock->sk, *nsk;
183 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
185 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
187 BT_DBG("sk %p timeo %ld", sk, timeo);
189 /* Wait for an incoming connection. (wake-one). */
190 add_wait_queue_exclusive(sk_sleep(sk), &wait);
192 set_current_state(TASK_INTERRUPTIBLE);
194 if (sk->sk_state != BT_LISTEN) {
199 nsk = bt_accept_dequeue(sk, newsock);
208 if (signal_pending(current)) {
209 err = sock_intr_errno(timeo);
214 timeo = schedule_timeout(timeo);
215 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
217 __set_current_state(TASK_RUNNING);
218 remove_wait_queue(sk_sleep(sk), &wait);
223 newsock->state = SS_CONNECTED;
225 BT_DBG("new socket %p", nsk);
232 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
234 struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
235 struct sock *sk = sock->sk;
236 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
238 BT_DBG("sock %p, sk %p", sock, sk);
240 addr->sa_family = AF_BLUETOOTH;
241 *len = sizeof(struct sockaddr_l2);
244 la->l2_psm = chan->psm;
245 bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
246 la->l2_cid = cpu_to_le16(chan->dcid);
248 la->l2_psm = chan->sport;
249 bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
250 la->l2_cid = cpu_to_le16(chan->scid);
256 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen)
258 struct sock *sk = sock->sk;
259 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
260 struct l2cap_options opts;
261 struct l2cap_conninfo cinfo;
267 if (get_user(len, optlen))
274 memset(&opts, 0, sizeof(opts));
275 opts.imtu = chan->imtu;
276 opts.omtu = chan->omtu;
277 opts.flush_to = chan->flush_to;
278 opts.mode = chan->mode;
279 opts.fcs = chan->fcs;
280 opts.max_tx = chan->max_tx;
281 opts.txwin_size = chan->tx_win;
283 len = min_t(unsigned int, len, sizeof(opts));
284 if (copy_to_user(optval, (char *) &opts, len))
290 switch (chan->sec_level) {
291 case BT_SECURITY_LOW:
294 case BT_SECURITY_MEDIUM:
295 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
297 case BT_SECURITY_HIGH:
298 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
306 if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
307 opt |= L2CAP_LM_MASTER;
309 if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
310 opt |= L2CAP_LM_RELIABLE;
312 if (put_user(opt, (u32 __user *) optval))
317 if (sk->sk_state != BT_CONNECTED &&
318 !(sk->sk_state == BT_CONNECT2 &&
319 bt_sk(sk)->defer_setup)) {
324 memset(&cinfo, 0, sizeof(cinfo));
325 cinfo.hci_handle = chan->conn->hcon->handle;
326 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
328 len = min_t(unsigned int, len, sizeof(cinfo));
329 if (copy_to_user(optval, (char *) &cinfo, len))
343 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
345 struct sock *sk = sock->sk;
346 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
347 struct bt_security sec;
353 if (level == SOL_L2CAP)
354 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
356 if (level != SOL_BLUETOOTH)
359 if (get_user(len, optlen))
366 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
367 chan->chan_type != L2CAP_CHAN_RAW) {
372 memset(&sec, 0, sizeof(sec));
373 sec.level = chan->sec_level;
375 if (sk->sk_state == BT_CONNECTED)
376 sec.key_size = chan->conn->hcon->enc_key_size;
378 len = min_t(unsigned int, len, sizeof(sec));
379 if (copy_to_user(optval, (char *) &sec, len))
385 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
390 if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
396 if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
397 (u32 __user *) optval))
403 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
404 && sk->sk_type != SOCK_RAW) {
409 pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
411 len = min_t(unsigned int, len, sizeof(pwr));
412 if (copy_to_user(optval, (char *) &pwr, len))
417 case BT_CHANNEL_POLICY:
423 if (put_user(chan->chan_policy, (u32 __user *) optval))
436 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
438 struct sock *sk = sock->sk;
439 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
440 struct l2cap_options opts;
450 if (sk->sk_state == BT_CONNECTED) {
455 opts.imtu = chan->imtu;
456 opts.omtu = chan->omtu;
457 opts.flush_to = chan->flush_to;
458 opts.mode = chan->mode;
459 opts.fcs = chan->fcs;
460 opts.max_tx = chan->max_tx;
461 opts.txwin_size = chan->tx_win;
463 len = min_t(unsigned int, sizeof(opts), optlen);
464 if (copy_from_user((char *) &opts, optval, len)) {
469 if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
474 chan->mode = opts.mode;
475 switch (chan->mode) {
476 case L2CAP_MODE_BASIC:
477 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
479 case L2CAP_MODE_ERTM:
480 case L2CAP_MODE_STREAMING:
489 chan->imtu = opts.imtu;
490 chan->omtu = opts.omtu;
491 chan->fcs = opts.fcs;
492 chan->max_tx = opts.max_tx;
493 chan->tx_win = opts.txwin_size;
497 if (get_user(opt, (u32 __user *) optval)) {
502 if (opt & L2CAP_LM_AUTH)
503 chan->sec_level = BT_SECURITY_LOW;
504 if (opt & L2CAP_LM_ENCRYPT)
505 chan->sec_level = BT_SECURITY_MEDIUM;
506 if (opt & L2CAP_LM_SECURE)
507 chan->sec_level = BT_SECURITY_HIGH;
509 if (opt & L2CAP_LM_MASTER)
510 set_bit(FLAG_ROLE_SWITCH, &chan->flags);
512 clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
514 if (opt & L2CAP_LM_RELIABLE)
515 set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
517 clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
529 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
531 struct sock *sk = sock->sk;
532 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
533 struct bt_security sec;
535 struct l2cap_conn *conn;
541 if (level == SOL_L2CAP)
542 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
544 if (level != SOL_BLUETOOTH)
551 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
552 chan->chan_type != L2CAP_CHAN_RAW) {
557 sec.level = BT_SECURITY_LOW;
559 len = min_t(unsigned int, sizeof(sec), optlen);
560 if (copy_from_user((char *) &sec, optval, len)) {
565 if (sec.level < BT_SECURITY_LOW ||
566 sec.level > BT_SECURITY_HIGH) {
571 chan->sec_level = sec.level;
578 /*change security for LE channels */
579 if (chan->scid == L2CAP_CID_LE_DATA) {
580 if (!conn->hcon->out) {
585 if (smp_conn_security(conn, sec.level))
587 sk->sk_state = BT_CONFIG;
589 /* or for ACL link, under defer_setup time */
590 } else if (sk->sk_state == BT_CONNECT2 &&
591 bt_sk(sk)->defer_setup) {
592 err = l2cap_chan_check_security(chan);
599 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
604 if (get_user(opt, (u32 __user *) optval)) {
609 bt_sk(sk)->defer_setup = opt;
613 if (get_user(opt, (u32 __user *) optval)) {
618 if (opt > BT_FLUSHABLE_ON) {
623 if (opt == BT_FLUSHABLE_OFF) {
624 struct l2cap_conn *conn = chan->conn;
625 /* proceed further only when we have l2cap_conn and
626 No Flush support in the LM */
627 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
634 set_bit(FLAG_FLUSHABLE, &chan->flags);
636 clear_bit(FLAG_FLUSHABLE, &chan->flags);
640 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
641 chan->chan_type != L2CAP_CHAN_RAW) {
646 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
648 len = min_t(unsigned int, sizeof(pwr), optlen);
649 if (copy_from_user((char *) &pwr, optval, len)) {
654 if (pwr.force_active)
655 set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
657 clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
660 case BT_CHANNEL_POLICY:
666 if (get_user(opt, (u32 __user *) optval)) {
671 if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
676 if (chan->mode != L2CAP_MODE_ERTM &&
677 chan->mode != L2CAP_MODE_STREAMING) {
682 chan->chan_policy = (u8) opt;
694 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
696 struct sock *sk = sock->sk;
697 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
700 BT_DBG("sock %p, sk %p", sock, sk);
702 err = sock_error(sk);
706 if (msg->msg_flags & MSG_OOB)
711 if (sk->sk_state != BT_CONNECTED) {
716 err = l2cap_chan_send(chan, msg, len, sk->sk_priority);
722 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags)
724 struct sock *sk = sock->sk;
725 struct l2cap_pinfo *pi = l2cap_pi(sk);
730 if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) {
731 sk->sk_state = BT_CONFIG;
733 __l2cap_connect_rsp_defer(pi->chan);
740 if (sock->type == SOCK_STREAM)
741 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
743 err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
745 if (pi->chan->mode != L2CAP_MODE_ERTM)
748 /* Attempt to put pending rx data in the socket buffer */
752 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
755 if (pi->rx_busy_skb) {
756 if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
757 pi->rx_busy_skb = NULL;
762 /* Restore data flow when half of the receive buffer is
763 * available. This avoids resending large numbers of
766 if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
767 l2cap_chan_busy(pi->chan, 0);
774 /* Kill socket (only if zapped and orphan)
775 * Must be called on unlocked socket.
777 static void l2cap_sock_kill(struct sock *sk)
779 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
782 BT_DBG("sk %p state %d", sk, sk->sk_state);
784 /* Kill poor orphan */
786 l2cap_chan_destroy(l2cap_pi(sk)->chan);
787 sock_set_flag(sk, SOCK_DEAD);
791 static int l2cap_sock_shutdown(struct socket *sock, int how)
793 struct sock *sk = sock->sk;
794 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
797 BT_DBG("sock %p, sk %p", sock, sk);
803 if (!sk->sk_shutdown) {
804 if (chan->mode == L2CAP_MODE_ERTM)
805 err = __l2cap_wait_ack(sk);
807 sk->sk_shutdown = SHUTDOWN_MASK;
808 l2cap_chan_close(chan, 0);
810 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime)
811 err = bt_sock_wait_state(sk, BT_CLOSED,
815 if (!err && sk->sk_err)
822 static int l2cap_sock_release(struct socket *sock)
824 struct sock *sk = sock->sk;
827 BT_DBG("sock %p, sk %p", sock, sk);
832 err = l2cap_sock_shutdown(sock, 2);
839 static struct l2cap_chan *l2cap_sock_new_connection_cb(void *data)
841 struct sock *sk, *parent = data;
843 sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
848 l2cap_sock_init(sk, parent);
850 return l2cap_pi(sk)->chan;
853 static int l2cap_sock_recv_cb(void *data, struct sk_buff *skb)
856 struct sock *sk = data;
857 struct l2cap_pinfo *pi = l2cap_pi(sk);
862 err = sock_queue_rcv_skb(sk, skb);
864 /* For ERTM, handle one skb that doesn't fit into the recv
865 * buffer. This is important to do because the data frames
866 * have already been acked, so the skb cannot be discarded.
868 * Notify the l2cap core that the buffer is full, so the
869 * LOCAL_BUSY state is entered and no more frames are
870 * acked and reassembled until there is buffer space
873 if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) {
874 pi->rx_busy_skb = skb;
875 l2cap_chan_busy(pi->chan, 1);
882 static void l2cap_sock_close_cb(void *data)
884 struct sock *sk = data;
889 static void l2cap_sock_state_change_cb(void *data, int state)
891 struct sock *sk = data;
893 sk->sk_state = state;
896 static struct l2cap_ops l2cap_chan_ops = {
897 .name = "L2CAP Socket Interface",
898 .new_connection = l2cap_sock_new_connection_cb,
899 .recv = l2cap_sock_recv_cb,
900 .close = l2cap_sock_close_cb,
901 .state_change = l2cap_sock_state_change_cb,
904 static void l2cap_sock_destruct(struct sock *sk)
908 if (l2cap_pi(sk)->rx_busy_skb) {
909 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
910 l2cap_pi(sk)->rx_busy_skb = NULL;
913 skb_queue_purge(&sk->sk_receive_queue);
914 skb_queue_purge(&sk->sk_write_queue);
917 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
919 struct l2cap_pinfo *pi = l2cap_pi(sk);
920 struct l2cap_chan *chan = pi->chan;
925 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
927 sk->sk_type = parent->sk_type;
928 bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup;
930 chan->chan_type = pchan->chan_type;
931 chan->imtu = pchan->imtu;
932 chan->omtu = pchan->omtu;
933 chan->conf_state = pchan->conf_state;
934 chan->mode = pchan->mode;
935 chan->fcs = pchan->fcs;
936 chan->max_tx = pchan->max_tx;
937 chan->tx_win = pchan->tx_win;
938 chan->tx_win_max = pchan->tx_win_max;
939 chan->sec_level = pchan->sec_level;
940 chan->flags = pchan->flags;
942 security_sk_clone(parent, sk);
945 switch (sk->sk_type) {
947 chan->chan_type = L2CAP_CHAN_RAW;
950 chan->chan_type = L2CAP_CHAN_CONN_LESS;
954 chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
958 chan->imtu = L2CAP_DEFAULT_MTU;
960 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
961 chan->mode = L2CAP_MODE_ERTM;
962 set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
964 chan->mode = L2CAP_MODE_BASIC;
966 chan->max_tx = L2CAP_DEFAULT_MAX_TX;
967 chan->fcs = L2CAP_FCS_CRC16;
968 chan->tx_win = L2CAP_DEFAULT_TX_WINDOW;
969 chan->tx_win_max = L2CAP_DEFAULT_TX_WINDOW;
970 chan->sec_level = BT_SECURITY_LOW;
972 set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
975 /* Default config options */
976 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
979 chan->ops = &l2cap_chan_ops;
982 static struct proto l2cap_proto = {
984 .owner = THIS_MODULE,
985 .obj_size = sizeof(struct l2cap_pinfo)
988 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio)
991 struct l2cap_chan *chan;
993 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
997 sock_init_data(sock, sk);
998 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1000 sk->sk_destruct = l2cap_sock_destruct;
1001 sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1003 sock_reset_flag(sk, SOCK_ZAPPED);
1005 sk->sk_protocol = proto;
1006 sk->sk_state = BT_OPEN;
1008 chan = l2cap_chan_create(sk);
1010 l2cap_sock_kill(sk);
1014 l2cap_pi(sk)->chan = chan;
1019 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1024 BT_DBG("sock %p", sock);
1026 sock->state = SS_UNCONNECTED;
1028 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1029 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1030 return -ESOCKTNOSUPPORT;
1032 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1035 sock->ops = &l2cap_sock_ops;
1037 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1041 l2cap_sock_init(sk, NULL);
1045 static const struct proto_ops l2cap_sock_ops = {
1046 .family = PF_BLUETOOTH,
1047 .owner = THIS_MODULE,
1048 .release = l2cap_sock_release,
1049 .bind = l2cap_sock_bind,
1050 .connect = l2cap_sock_connect,
1051 .listen = l2cap_sock_listen,
1052 .accept = l2cap_sock_accept,
1053 .getname = l2cap_sock_getname,
1054 .sendmsg = l2cap_sock_sendmsg,
1055 .recvmsg = l2cap_sock_recvmsg,
1056 .poll = bt_sock_poll,
1057 .ioctl = bt_sock_ioctl,
1058 .mmap = sock_no_mmap,
1059 .socketpair = sock_no_socketpair,
1060 .shutdown = l2cap_sock_shutdown,
1061 .setsockopt = l2cap_sock_setsockopt,
1062 .getsockopt = l2cap_sock_getsockopt
1065 static const struct net_proto_family l2cap_sock_family_ops = {
1066 .family = PF_BLUETOOTH,
1067 .owner = THIS_MODULE,
1068 .create = l2cap_sock_create,
1071 int __init l2cap_init_sockets(void)
1075 err = proto_register(&l2cap_proto, 0);
1079 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1083 BT_INFO("L2CAP socket layer initialized");
1088 BT_ERR("L2CAP socket registration failed");
1089 proto_unregister(&l2cap_proto);
1093 void l2cap_cleanup_sockets(void)
1095 if (bt_sock_unregister(BTPROTO_L2CAP) < 0)
1096 BT_ERR("L2CAP socket unregistration failed");
1098 proto_unregister(&l2cap_proto);