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 bool l2cap_is_socket(struct socket *sock)
43 return sock && sock->ops == &l2cap_sock_ops;
45 EXPORT_SYMBOL(l2cap_is_socket);
47 static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
49 struct sock *sk = sock->sk;
50 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
51 struct sockaddr_l2 la;
56 if (!addr || addr->sa_family != AF_BLUETOOTH)
59 memset(&la, 0, sizeof(la));
60 len = min_t(unsigned int, sizeof(la), alen);
61 memcpy(&la, addr, len);
63 if (la.l2_cid && la.l2_psm)
68 if (sk->sk_state != BT_OPEN) {
74 __u16 psm = __le16_to_cpu(la.l2_psm);
76 /* PSM must be odd and lsb of upper byte must be 0 */
77 if ((psm & 0x0101) != 0x0001) {
82 /* Restrict usage of well-known PSMs */
83 if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE)) {
90 err = l2cap_add_scid(chan, la.l2_cid);
92 err = l2cap_add_psm(chan, &la.l2_bdaddr, la.l2_psm);
97 if (__le16_to_cpu(la.l2_psm) == 0x0001 ||
98 __le16_to_cpu(la.l2_psm) == 0x0003)
99 chan->sec_level = BT_SECURITY_SDP;
101 bacpy(&bt_sk(sk)->src, &la.l2_bdaddr);
103 chan->state = BT_BOUND;
104 sk->sk_state = BT_BOUND;
111 static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
113 struct sock *sk = sock->sk;
114 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
115 struct sockaddr_l2 la;
120 if (!addr || alen < sizeof(addr->sa_family) ||
121 addr->sa_family != AF_BLUETOOTH)
124 memset(&la, 0, sizeof(la));
125 len = min_t(unsigned int, sizeof(la), alen);
126 memcpy(&la, addr, len);
128 if (la.l2_cid && la.l2_psm)
133 if (chan->chan_type == L2CAP_CHAN_CONN_ORIENTED
134 && !(la.l2_psm || la.l2_cid)) {
139 switch (chan->mode) {
140 case L2CAP_MODE_BASIC:
142 case L2CAP_MODE_ERTM:
143 case L2CAP_MODE_STREAMING:
152 switch (sk->sk_state) {
156 /* Already connecting */
160 /* Already connected */
174 /* PSM must be odd and lsb of upper byte must be 0 */
175 if ((__le16_to_cpu(la.l2_psm) & 0x0101) != 0x0001 && !la.l2_cid &&
176 chan->chan_type != L2CAP_CHAN_RAW) {
181 /* Set destination address and psm */
182 bacpy(&bt_sk(sk)->dst, &la.l2_bdaddr);
183 chan->psm = la.l2_psm;
184 chan->dcid = la.l2_cid;
186 err = l2cap_chan_connect(l2cap_pi(sk)->chan);
191 err = bt_sock_wait_state(sk, BT_CONNECTED,
192 sock_sndtimeo(sk, flags & O_NONBLOCK));
198 static int l2cap_sock_listen(struct socket *sock, int backlog)
200 struct sock *sk = sock->sk;
201 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
204 BT_DBG("sk %p backlog %d", sk, backlog);
208 if ((sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM)
209 || sk->sk_state != BT_BOUND) {
214 switch (chan->mode) {
215 case L2CAP_MODE_BASIC:
217 case L2CAP_MODE_ERTM:
218 case L2CAP_MODE_STREAMING:
227 sk->sk_max_ack_backlog = backlog;
228 sk->sk_ack_backlog = 0;
230 chan->state = BT_LISTEN;
231 sk->sk_state = BT_LISTEN;
238 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
240 DECLARE_WAITQUEUE(wait, current);
241 struct sock *sk = sock->sk, *nsk;
245 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
247 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
249 BT_DBG("sk %p timeo %ld", sk, timeo);
251 /* Wait for an incoming connection. (wake-one). */
252 add_wait_queue_exclusive(sk_sleep(sk), &wait);
254 set_current_state(TASK_INTERRUPTIBLE);
256 if (sk->sk_state != BT_LISTEN) {
261 nsk = bt_accept_dequeue(sk, newsock);
270 if (signal_pending(current)) {
271 err = sock_intr_errno(timeo);
276 timeo = schedule_timeout(timeo);
277 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
279 __set_current_state(TASK_RUNNING);
280 remove_wait_queue(sk_sleep(sk), &wait);
285 newsock->state = SS_CONNECTED;
287 BT_DBG("new socket %p", nsk);
294 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
296 struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
297 struct sock *sk = sock->sk;
298 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
300 BT_DBG("sock %p, sk %p", sock, sk);
302 memset(la, 0, sizeof(struct sockaddr_l2));
303 addr->sa_family = AF_BLUETOOTH;
304 *len = sizeof(struct sockaddr_l2);
307 la->l2_psm = chan->psm;
308 bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
309 la->l2_cid = cpu_to_le16(chan->dcid);
311 la->l2_psm = chan->sport;
312 bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
313 la->l2_cid = cpu_to_le16(chan->scid);
319 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen)
321 struct sock *sk = sock->sk;
322 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
323 struct l2cap_options opts;
324 struct l2cap_conninfo cinfo;
330 if (get_user(len, optlen))
337 memset(&opts, 0, sizeof(opts));
338 opts.imtu = chan->imtu;
339 opts.omtu = chan->omtu;
340 opts.flush_to = chan->flush_to;
341 opts.mode = chan->mode;
342 opts.fcs = chan->fcs;
343 opts.max_tx = chan->max_tx;
344 opts.txwin_size = (__u16)chan->tx_win;
346 len = min_t(unsigned int, len, sizeof(opts));
347 if (copy_to_user(optval, (char *) &opts, len))
353 switch (chan->sec_level) {
354 case BT_SECURITY_LOW:
357 case BT_SECURITY_MEDIUM:
358 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
360 case BT_SECURITY_HIGH:
361 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
369 if (chan->role_switch)
370 opt |= L2CAP_LM_MASTER;
372 if (chan->force_reliable)
373 opt |= L2CAP_LM_RELIABLE;
375 if (put_user(opt, (u32 __user *) optval))
380 if (sk->sk_state != BT_CONNECTED &&
381 !(sk->sk_state == BT_CONNECT2 &&
382 bt_sk(sk)->defer_setup)) {
387 memset(&cinfo, 0, sizeof(cinfo));
388 cinfo.hci_handle = chan->conn->hcon->handle;
389 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
391 len = min_t(unsigned int, len, sizeof(cinfo));
392 if (copy_to_user(optval, (char *) &cinfo, len))
406 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
408 struct sock *sk = sock->sk;
409 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
410 struct bt_security sec;
416 if (level == SOL_L2CAP)
417 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
419 if (level != SOL_BLUETOOTH)
422 if (get_user(len, optlen))
429 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
430 chan->chan_type != L2CAP_CHAN_RAW) {
435 memset(&sec, 0, sizeof(sec));
436 sec.level = chan->sec_level;
438 if (sk->sk_state == BT_CONNECTED)
439 sec.key_size = chan->conn->hcon->enc_key_size;
441 len = min_t(unsigned int, len, sizeof(sec));
442 if (copy_to_user(optval, (char *) &sec, len))
448 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
453 if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
459 if (put_user(chan->flushable, (u32 __user *) optval))
465 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
466 && sk->sk_type != SOCK_RAW) {
471 pwr.force_active = chan->force_active;
473 len = min_t(unsigned int, len, sizeof(pwr));
474 if (copy_to_user(optval, (char *) &pwr, len))
488 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
490 struct sock *sk = sock->sk;
491 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
492 struct l2cap_options opts;
502 if (sk->sk_state == BT_CONNECTED) {
507 opts.imtu = chan->imtu;
508 opts.omtu = chan->omtu;
509 opts.flush_to = chan->flush_to;
510 opts.mode = chan->mode;
511 opts.fcs = chan->fcs;
512 opts.max_tx = chan->max_tx;
513 opts.txwin_size = (__u16)chan->tx_win;
515 len = min_t(unsigned int, sizeof(opts), optlen);
516 if (copy_from_user((char *) &opts, optval, len)) {
521 if (opts.txwin_size > L2CAP_DEFAULT_TX_WINDOW) {
526 chan->mode = opts.mode;
527 switch (chan->mode) {
528 case L2CAP_MODE_BASIC:
529 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
531 case L2CAP_MODE_ERTM:
532 case L2CAP_MODE_STREAMING:
541 chan->imtu = opts.imtu;
542 chan->omtu = opts.omtu;
543 chan->fcs = opts.fcs;
544 chan->max_tx = opts.max_tx;
545 chan->tx_win = (__u8)opts.txwin_size;
549 if (get_user(opt, (u32 __user *) optval)) {
554 if (opt & L2CAP_LM_AUTH)
555 chan->sec_level = BT_SECURITY_LOW;
556 if (opt & L2CAP_LM_ENCRYPT)
557 chan->sec_level = BT_SECURITY_MEDIUM;
558 if (opt & L2CAP_LM_SECURE)
559 chan->sec_level = BT_SECURITY_HIGH;
561 chan->role_switch = (opt & L2CAP_LM_MASTER);
562 chan->force_reliable = (opt & L2CAP_LM_RELIABLE);
574 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
576 struct sock *sk = sock->sk;
577 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
578 struct bt_security sec;
580 struct l2cap_conn *conn;
586 if (level == SOL_L2CAP)
587 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
589 if (level != SOL_BLUETOOTH)
596 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
597 chan->chan_type != L2CAP_CHAN_RAW) {
602 sec.level = BT_SECURITY_LOW;
604 len = min_t(unsigned int, sizeof(sec), optlen);
605 if (copy_from_user((char *) &sec, optval, len)) {
610 if (sec.level < BT_SECURITY_LOW ||
611 sec.level > BT_SECURITY_HIGH) {
616 chan->sec_level = sec.level;
619 if (conn && chan->scid == L2CAP_CID_LE_DATA) {
620 if (!conn->hcon->out) {
625 if (smp_conn_security(conn->hcon, sec.level))
629 sk->sk_state = BT_CONFIG;
634 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
639 if (get_user(opt, (u16 __user *) optval)) {
644 bt_sk(sk)->defer_setup = opt;
648 if (get_user(opt, (u32 __user *) optval)) {
653 if (opt > BT_FLUSHABLE_ON) {
658 if (opt == BT_FLUSHABLE_OFF) {
659 struct l2cap_conn *conn = chan->conn;
660 /* proceed further only when we have l2cap_conn and
661 No Flush support in the LM */
662 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
668 chan->flushable = opt;
672 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
673 chan->chan_type != L2CAP_CHAN_RAW) {
678 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
680 len = min_t(unsigned int, sizeof(pwr), optlen);
681 if (copy_from_user((char *) &pwr, optval, len)) {
685 chan->force_active = pwr.force_active;
697 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
699 struct sock *sk = sock->sk;
700 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
703 BT_DBG("sock %p, sk %p", sock, sk);
705 err = sock_error(sk);
709 if (msg->msg_flags & MSG_OOB)
714 if (sk->sk_state != BT_CONNECTED) {
719 err = l2cap_chan_send(chan, msg, len);
725 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags)
727 struct sock *sk = sock->sk;
728 struct l2cap_pinfo *pi = l2cap_pi(sk);
733 if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) {
734 sk->sk_state = BT_CONFIG;
736 __l2cap_connect_rsp_defer(pi->chan);
743 if (sock->type == SOCK_STREAM)
744 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
746 err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
748 if (pi->chan->mode != L2CAP_MODE_ERTM)
751 /* Attempt to put pending rx data in the socket buffer */
755 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
758 if (pi->rx_busy_skb) {
759 if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
760 pi->rx_busy_skb = NULL;
765 /* Restore data flow when half of the receive buffer is
766 * available. This avoids resending large numbers of
769 if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
770 l2cap_chan_busy(pi->chan, 0);
777 /* Kill socket (only if zapped and orphan)
778 * Must be called on unlocked socket.
780 static void l2cap_sock_kill(struct sock *sk)
782 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
785 BT_DBG("sk %p state %d", sk, sk->sk_state);
787 /* Kill poor orphan */
789 l2cap_chan_destroy(l2cap_pi(sk)->chan);
790 sock_set_flag(sk, SOCK_DEAD);
794 static int l2cap_sock_shutdown(struct socket *sock, int how)
796 struct sock *sk = sock->sk;
797 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
800 BT_DBG("sock %p, sk %p", sock, sk);
806 if (!sk->sk_shutdown) {
807 if (chan->mode == L2CAP_MODE_ERTM)
808 err = __l2cap_wait_ack(sk);
810 sk->sk_shutdown = SHUTDOWN_MASK;
811 l2cap_chan_close(chan, 0);
813 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
814 !(current->flags & PF_EXITING))
815 err = bt_sock_wait_state(sk, BT_CLOSED,
819 if (!err && sk->sk_err)
826 static int l2cap_sock_release(struct socket *sock)
828 struct sock *sk = sock->sk;
831 BT_DBG("sock %p, sk %p", sock, sk);
836 err = l2cap_sock_shutdown(sock, 2);
843 static struct l2cap_chan *l2cap_sock_new_connection_cb(void *data)
845 struct sock *sk, *parent = data;
847 sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
852 l2cap_sock_init(sk, parent);
854 return l2cap_pi(sk)->chan;
857 static int l2cap_sock_recv_cb(void *data, struct sk_buff *skb)
860 struct sock *sk = data;
861 struct l2cap_pinfo *pi = l2cap_pi(sk);
866 err = sock_queue_rcv_skb(sk, skb);
868 /* For ERTM, handle one skb that doesn't fit into the recv
869 * buffer. This is important to do because the data frames
870 * have already been acked, so the skb cannot be discarded.
872 * Notify the l2cap core that the buffer is full, so the
873 * LOCAL_BUSY state is entered and no more frames are
874 * acked and reassembled until there is buffer space
877 if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) {
878 pi->rx_busy_skb = skb;
879 l2cap_chan_busy(pi->chan, 1);
886 static void l2cap_sock_close_cb(void *data)
888 struct sock *sk = data;
893 static void l2cap_sock_state_change_cb(void *data, int state)
895 struct sock *sk = data;
897 sk->sk_state = state;
900 static struct l2cap_ops l2cap_chan_ops = {
901 .name = "L2CAP Socket Interface",
902 .new_connection = l2cap_sock_new_connection_cb,
903 .recv = l2cap_sock_recv_cb,
904 .close = l2cap_sock_close_cb,
905 .state_change = l2cap_sock_state_change_cb,
908 static void l2cap_sock_destruct(struct sock *sk)
912 if (l2cap_pi(sk)->rx_busy_skb) {
913 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
914 l2cap_pi(sk)->rx_busy_skb = NULL;
917 skb_queue_purge(&sk->sk_receive_queue);
918 skb_queue_purge(&sk->sk_write_queue);
921 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
923 struct l2cap_pinfo *pi = l2cap_pi(sk);
924 struct l2cap_chan *chan = pi->chan;
929 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
931 sk->sk_type = parent->sk_type;
932 bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup;
934 chan->chan_type = pchan->chan_type;
935 chan->imtu = pchan->imtu;
936 chan->omtu = pchan->omtu;
937 chan->conf_state = pchan->conf_state;
938 chan->mode = pchan->mode;
939 chan->fcs = pchan->fcs;
940 chan->max_tx = pchan->max_tx;
941 chan->tx_win = pchan->tx_win;
942 chan->sec_level = pchan->sec_level;
943 chan->role_switch = pchan->role_switch;
944 chan->force_reliable = pchan->force_reliable;
945 chan->flushable = pchan->flushable;
946 chan->force_active = pchan->force_active;
948 security_sk_clone(parent, sk);
951 switch (sk->sk_type) {
953 chan->chan_type = L2CAP_CHAN_RAW;
956 chan->chan_type = L2CAP_CHAN_CONN_LESS;
960 chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
964 chan->imtu = L2CAP_DEFAULT_MTU;
966 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
967 chan->mode = L2CAP_MODE_ERTM;
968 set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
970 chan->mode = L2CAP_MODE_BASIC;
972 chan->max_tx = L2CAP_DEFAULT_MAX_TX;
973 chan->fcs = L2CAP_FCS_CRC16;
974 chan->tx_win = L2CAP_DEFAULT_TX_WINDOW;
975 chan->sec_level = BT_SECURITY_LOW;
976 chan->role_switch = 0;
977 chan->force_reliable = 0;
978 chan->flushable = BT_FLUSHABLE_OFF;
979 chan->force_active = BT_POWER_FORCE_ACTIVE_ON;
983 /* Default config options */
984 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
987 chan->ops = &l2cap_chan_ops;
990 static struct proto l2cap_proto = {
992 .owner = THIS_MODULE,
993 .obj_size = sizeof(struct l2cap_pinfo)
996 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio)
999 struct l2cap_chan *chan;
1001 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
1005 sock_init_data(sock, sk);
1006 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1008 sk->sk_destruct = l2cap_sock_destruct;
1009 sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1011 sock_reset_flag(sk, SOCK_ZAPPED);
1013 sk->sk_protocol = proto;
1014 sk->sk_state = BT_OPEN;
1016 chan = l2cap_chan_create(sk);
1018 l2cap_sock_kill(sk);
1022 l2cap_pi(sk)->chan = chan;
1027 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1032 BT_DBG("sock %p", sock);
1034 sock->state = SS_UNCONNECTED;
1036 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1037 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1038 return -ESOCKTNOSUPPORT;
1040 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1043 sock->ops = &l2cap_sock_ops;
1045 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1049 l2cap_sock_init(sk, NULL);
1053 static const struct proto_ops l2cap_sock_ops = {
1054 .family = PF_BLUETOOTH,
1055 .owner = THIS_MODULE,
1056 .release = l2cap_sock_release,
1057 .bind = l2cap_sock_bind,
1058 .connect = l2cap_sock_connect,
1059 .listen = l2cap_sock_listen,
1060 .accept = l2cap_sock_accept,
1061 .getname = l2cap_sock_getname,
1062 .sendmsg = l2cap_sock_sendmsg,
1063 .recvmsg = l2cap_sock_recvmsg,
1064 .poll = bt_sock_poll,
1065 .ioctl = bt_sock_ioctl,
1066 .mmap = sock_no_mmap,
1067 .socketpair = sock_no_socketpair,
1068 .shutdown = l2cap_sock_shutdown,
1069 .setsockopt = l2cap_sock_setsockopt,
1070 .getsockopt = l2cap_sock_getsockopt
1073 static const struct net_proto_family l2cap_sock_family_ops = {
1074 .family = PF_BLUETOOTH,
1075 .owner = THIS_MODULE,
1076 .create = l2cap_sock_create,
1079 int __init l2cap_init_sockets(void)
1083 err = proto_register(&l2cap_proto, 0);
1087 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1091 BT_INFO("L2CAP socket layer initialized");
1096 BT_ERR("L2CAP socket registration failed");
1097 proto_unregister(&l2cap_proto);
1101 void l2cap_cleanup_sockets(void)
1103 if (bt_sock_unregister(BTPROTO_L2CAP) < 0)
1104 BT_ERR("L2CAP socket unregistration failed");
1106 proto_unregister(&l2cap_proto);