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 memset(la, 0, sizeof(struct sockaddr_l2));
297 addr->sa_family = AF_BLUETOOTH;
298 *len = sizeof(struct sockaddr_l2);
301 la->l2_psm = chan->psm;
302 bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
303 la->l2_cid = cpu_to_le16(chan->dcid);
305 la->l2_psm = chan->sport;
306 bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
307 la->l2_cid = cpu_to_le16(chan->scid);
313 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen)
315 struct sock *sk = sock->sk;
316 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
317 struct l2cap_options opts;
318 struct l2cap_conninfo cinfo;
324 if (get_user(len, optlen))
331 memset(&opts, 0, sizeof(opts));
332 opts.imtu = chan->imtu;
333 opts.omtu = chan->omtu;
334 opts.flush_to = chan->flush_to;
335 opts.mode = chan->mode;
336 opts.fcs = chan->fcs;
337 opts.max_tx = chan->max_tx;
338 opts.txwin_size = (__u16)chan->tx_win;
340 len = min_t(unsigned int, len, sizeof(opts));
341 if (copy_to_user(optval, (char *) &opts, len))
347 switch (chan->sec_level) {
348 case BT_SECURITY_LOW:
351 case BT_SECURITY_MEDIUM:
352 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
354 case BT_SECURITY_HIGH:
355 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
363 if (chan->role_switch)
364 opt |= L2CAP_LM_MASTER;
366 if (chan->force_reliable)
367 opt |= L2CAP_LM_RELIABLE;
369 if (put_user(opt, (u32 __user *) optval))
374 if (sk->sk_state != BT_CONNECTED &&
375 !(sk->sk_state == BT_CONNECT2 &&
376 bt_sk(sk)->defer_setup)) {
381 memset(&cinfo, 0, sizeof(cinfo));
382 cinfo.hci_handle = chan->conn->hcon->handle;
383 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
385 len = min_t(unsigned int, len, sizeof(cinfo));
386 if (copy_to_user(optval, (char *) &cinfo, len))
400 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
402 struct sock *sk = sock->sk;
403 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
404 struct bt_security sec;
410 if (level == SOL_L2CAP)
411 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
413 if (level != SOL_BLUETOOTH)
416 if (get_user(len, optlen))
423 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
424 chan->chan_type != L2CAP_CHAN_RAW) {
429 memset(&sec, 0, sizeof(sec));
430 sec.level = chan->sec_level;
432 if (sk->sk_state == BT_CONNECTED)
433 sec.key_size = chan->conn->hcon->enc_key_size;
435 len = min_t(unsigned int, len, sizeof(sec));
436 if (copy_to_user(optval, (char *) &sec, len))
442 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
447 if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
453 if (put_user(chan->flushable, (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 = chan->force_active;
467 len = min_t(unsigned int, len, sizeof(pwr));
468 if (copy_to_user(optval, (char *) &pwr, len))
482 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
484 struct sock *sk = sock->sk;
485 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
486 struct l2cap_options opts;
496 if (sk->sk_state == BT_CONNECTED) {
501 opts.imtu = chan->imtu;
502 opts.omtu = chan->omtu;
503 opts.flush_to = chan->flush_to;
504 opts.mode = chan->mode;
505 opts.fcs = chan->fcs;
506 opts.max_tx = chan->max_tx;
507 opts.txwin_size = (__u16)chan->tx_win;
509 len = min_t(unsigned int, sizeof(opts), optlen);
510 if (copy_from_user((char *) &opts, optval, len)) {
515 if (opts.txwin_size > L2CAP_DEFAULT_TX_WINDOW) {
520 chan->mode = opts.mode;
521 switch (chan->mode) {
522 case L2CAP_MODE_BASIC:
523 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
525 case L2CAP_MODE_ERTM:
526 case L2CAP_MODE_STREAMING:
535 chan->imtu = opts.imtu;
536 chan->omtu = opts.omtu;
537 chan->fcs = opts.fcs;
538 chan->max_tx = opts.max_tx;
539 chan->tx_win = (__u8)opts.txwin_size;
543 if (get_user(opt, (u32 __user *) optval)) {
548 if (opt & L2CAP_LM_AUTH)
549 chan->sec_level = BT_SECURITY_LOW;
550 if (opt & L2CAP_LM_ENCRYPT)
551 chan->sec_level = BT_SECURITY_MEDIUM;
552 if (opt & L2CAP_LM_SECURE)
553 chan->sec_level = BT_SECURITY_HIGH;
555 chan->role_switch = (opt & L2CAP_LM_MASTER);
556 chan->force_reliable = (opt & L2CAP_LM_RELIABLE);
568 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
570 struct sock *sk = sock->sk;
571 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
572 struct bt_security sec;
574 struct l2cap_conn *conn;
580 if (level == SOL_L2CAP)
581 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
583 if (level != SOL_BLUETOOTH)
590 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
591 chan->chan_type != L2CAP_CHAN_RAW) {
596 sec.level = BT_SECURITY_LOW;
598 len = min_t(unsigned int, sizeof(sec), optlen);
599 if (copy_from_user((char *) &sec, optval, len)) {
604 if (sec.level < BT_SECURITY_LOW ||
605 sec.level > BT_SECURITY_HIGH) {
610 chan->sec_level = sec.level;
613 if (conn && chan->scid == L2CAP_CID_LE_DATA) {
614 if (!conn->hcon->out) {
619 if (smp_conn_security(conn->hcon, sec.level))
623 sk->sk_state = BT_CONFIG;
628 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
633 if (get_user(opt, (u32 __user *) optval)) {
638 bt_sk(sk)->defer_setup = opt;
642 if (get_user(opt, (u32 __user *) optval)) {
647 if (opt > BT_FLUSHABLE_ON) {
652 if (opt == BT_FLUSHABLE_OFF) {
653 struct l2cap_conn *conn = chan->conn;
654 /* proceed further only when we have l2cap_conn and
655 No Flush support in the LM */
656 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
662 chan->flushable = opt;
666 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
667 chan->chan_type != L2CAP_CHAN_RAW) {
672 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
674 len = min_t(unsigned int, sizeof(pwr), optlen);
675 if (copy_from_user((char *) &pwr, optval, len)) {
679 chan->force_active = pwr.force_active;
691 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
693 struct sock *sk = sock->sk;
694 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
697 BT_DBG("sock %p, sk %p", sock, sk);
699 err = sock_error(sk);
703 if (msg->msg_flags & MSG_OOB)
708 if (sk->sk_state != BT_CONNECTED) {
713 err = l2cap_chan_send(chan, msg, len);
719 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags)
721 struct sock *sk = sock->sk;
722 struct l2cap_pinfo *pi = l2cap_pi(sk);
727 if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) {
728 sk->sk_state = BT_CONFIG;
730 __l2cap_connect_rsp_defer(pi->chan);
737 if (sock->type == SOCK_STREAM)
738 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
740 err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
742 if (pi->chan->mode != L2CAP_MODE_ERTM)
745 /* Attempt to put pending rx data in the socket buffer */
749 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
752 if (pi->rx_busy_skb) {
753 if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
754 pi->rx_busy_skb = NULL;
759 /* Restore data flow when half of the receive buffer is
760 * available. This avoids resending large numbers of
763 if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
764 l2cap_chan_busy(pi->chan, 0);
771 /* Kill socket (only if zapped and orphan)
772 * Must be called on unlocked socket.
774 static void l2cap_sock_kill(struct sock *sk)
776 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
779 BT_DBG("sk %p state %d", sk, sk->sk_state);
781 /* Kill poor orphan */
783 l2cap_chan_destroy(l2cap_pi(sk)->chan);
784 sock_set_flag(sk, SOCK_DEAD);
788 static int l2cap_sock_shutdown(struct socket *sock, int how)
790 struct sock *sk = sock->sk;
791 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
794 BT_DBG("sock %p, sk %p", sock, sk);
800 if (!sk->sk_shutdown) {
801 if (chan->mode == L2CAP_MODE_ERTM)
802 err = __l2cap_wait_ack(sk);
804 sk->sk_shutdown = SHUTDOWN_MASK;
805 l2cap_chan_close(chan, 0);
807 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
808 !(current->flags & PF_EXITING))
809 err = bt_sock_wait_state(sk, BT_CLOSED,
813 if (!err && sk->sk_err)
820 static int l2cap_sock_release(struct socket *sock)
822 struct sock *sk = sock->sk;
825 BT_DBG("sock %p, sk %p", sock, sk);
830 err = l2cap_sock_shutdown(sock, 2);
837 static struct l2cap_chan *l2cap_sock_new_connection_cb(void *data)
839 struct sock *sk, *parent = data;
841 sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
846 l2cap_sock_init(sk, parent);
848 return l2cap_pi(sk)->chan;
851 static int l2cap_sock_recv_cb(void *data, struct sk_buff *skb)
854 struct sock *sk = data;
855 struct l2cap_pinfo *pi = l2cap_pi(sk);
860 err = sock_queue_rcv_skb(sk, skb);
862 /* For ERTM, handle one skb that doesn't fit into the recv
863 * buffer. This is important to do because the data frames
864 * have already been acked, so the skb cannot be discarded.
866 * Notify the l2cap core that the buffer is full, so the
867 * LOCAL_BUSY state is entered and no more frames are
868 * acked and reassembled until there is buffer space
871 if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) {
872 pi->rx_busy_skb = skb;
873 l2cap_chan_busy(pi->chan, 1);
880 static void l2cap_sock_close_cb(void *data)
882 struct sock *sk = data;
887 static void l2cap_sock_state_change_cb(void *data, int state)
889 struct sock *sk = data;
891 sk->sk_state = state;
894 static struct l2cap_ops l2cap_chan_ops = {
895 .name = "L2CAP Socket Interface",
896 .new_connection = l2cap_sock_new_connection_cb,
897 .recv = l2cap_sock_recv_cb,
898 .close = l2cap_sock_close_cb,
899 .state_change = l2cap_sock_state_change_cb,
902 static void l2cap_sock_destruct(struct sock *sk)
906 if (l2cap_pi(sk)->rx_busy_skb) {
907 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
908 l2cap_pi(sk)->rx_busy_skb = NULL;
911 skb_queue_purge(&sk->sk_receive_queue);
912 skb_queue_purge(&sk->sk_write_queue);
915 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
917 struct l2cap_pinfo *pi = l2cap_pi(sk);
918 struct l2cap_chan *chan = pi->chan;
923 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
925 sk->sk_type = parent->sk_type;
926 bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup;
928 chan->chan_type = pchan->chan_type;
929 chan->imtu = pchan->imtu;
930 chan->omtu = pchan->omtu;
931 chan->conf_state = pchan->conf_state;
932 chan->mode = pchan->mode;
933 chan->fcs = pchan->fcs;
934 chan->max_tx = pchan->max_tx;
935 chan->tx_win = pchan->tx_win;
936 chan->sec_level = pchan->sec_level;
937 chan->role_switch = pchan->role_switch;
938 chan->force_reliable = pchan->force_reliable;
939 chan->flushable = pchan->flushable;
940 chan->force_active = pchan->force_active;
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->sec_level = BT_SECURITY_LOW;
970 chan->role_switch = 0;
971 chan->force_reliable = 0;
972 chan->flushable = BT_FLUSHABLE_OFF;
973 chan->force_active = BT_POWER_FORCE_ACTIVE_ON;
977 /* Default config options */
978 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
981 chan->ops = &l2cap_chan_ops;
984 static struct proto l2cap_proto = {
986 .owner = THIS_MODULE,
987 .obj_size = sizeof(struct l2cap_pinfo)
990 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio)
993 struct l2cap_chan *chan;
995 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
999 sock_init_data(sock, sk);
1000 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1002 sk->sk_destruct = l2cap_sock_destruct;
1003 sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1005 sock_reset_flag(sk, SOCK_ZAPPED);
1007 sk->sk_protocol = proto;
1008 sk->sk_state = BT_OPEN;
1010 chan = l2cap_chan_create(sk);
1012 l2cap_sock_kill(sk);
1016 l2cap_pi(sk)->chan = chan;
1021 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1026 BT_DBG("sock %p", sock);
1028 sock->state = SS_UNCONNECTED;
1030 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1031 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1032 return -ESOCKTNOSUPPORT;
1034 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1037 sock->ops = &l2cap_sock_ops;
1039 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1043 l2cap_sock_init(sk, NULL);
1047 static const struct proto_ops l2cap_sock_ops = {
1048 .family = PF_BLUETOOTH,
1049 .owner = THIS_MODULE,
1050 .release = l2cap_sock_release,
1051 .bind = l2cap_sock_bind,
1052 .connect = l2cap_sock_connect,
1053 .listen = l2cap_sock_listen,
1054 .accept = l2cap_sock_accept,
1055 .getname = l2cap_sock_getname,
1056 .sendmsg = l2cap_sock_sendmsg,
1057 .recvmsg = l2cap_sock_recvmsg,
1058 .poll = bt_sock_poll,
1059 .ioctl = bt_sock_ioctl,
1060 .mmap = sock_no_mmap,
1061 .socketpair = sock_no_socketpair,
1062 .shutdown = l2cap_sock_shutdown,
1063 .setsockopt = l2cap_sock_setsockopt,
1064 .getsockopt = l2cap_sock_getsockopt
1067 static const struct net_proto_family l2cap_sock_family_ops = {
1068 .family = PF_BLUETOOTH,
1069 .owner = THIS_MODULE,
1070 .create = l2cap_sock_create,
1073 int __init l2cap_init_sockets(void)
1077 err = proto_register(&l2cap_proto, 0);
1081 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1085 BT_INFO("L2CAP socket layer initialized");
1090 BT_ERR("L2CAP socket registration failed");
1091 proto_unregister(&l2cap_proto);
1095 void l2cap_cleanup_sockets(void)
1097 if (bt_sock_unregister(BTPROTO_L2CAP) < 0)
1098 BT_ERR("L2CAP socket unregistration failed");
1100 proto_unregister(&l2cap_proto);