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.
6 Copyright (C) 2011 ProFUSION Embedded Systems
8 Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License version 2 as
12 published by the Free Software Foundation;
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
17 IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
18 CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
21 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
24 COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
25 SOFTWARE IS DISCLAIMED.
28 /* Bluetooth L2CAP sockets. */
30 #include <linux/security.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)
125 err = l2cap_chan_connect(chan, la.l2_psm, la.l2_cid, &la.l2_bdaddr);
129 err = bt_sock_wait_state(sk, BT_CONNECTED,
130 sock_sndtimeo(sk, flags & O_NONBLOCK));
132 if (sock_owned_by_user(sk))
137 static int l2cap_sock_listen(struct socket *sock, int backlog)
139 struct sock *sk = sock->sk;
140 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
143 BT_DBG("sk %p backlog %d", sk, backlog);
147 if ((sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM)
148 || sk->sk_state != BT_BOUND) {
153 switch (chan->mode) {
154 case L2CAP_MODE_BASIC:
156 case L2CAP_MODE_ERTM:
157 case L2CAP_MODE_STREAMING:
166 sk->sk_max_ack_backlog = backlog;
167 sk->sk_ack_backlog = 0;
169 chan->state = BT_LISTEN;
170 sk->sk_state = BT_LISTEN;
177 static int l2cap_sock_accept(struct socket *sock, struct socket *newsock, int flags)
179 DECLARE_WAITQUEUE(wait, current);
180 struct sock *sk = sock->sk, *nsk;
184 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
186 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
188 BT_DBG("sk %p timeo %ld", sk, timeo);
190 /* Wait for an incoming connection. (wake-one). */
191 add_wait_queue_exclusive(sk_sleep(sk), &wait);
193 set_current_state(TASK_INTERRUPTIBLE);
195 if (sk->sk_state != BT_LISTEN) {
200 nsk = bt_accept_dequeue(sk, newsock);
209 if (signal_pending(current)) {
210 err = sock_intr_errno(timeo);
215 timeo = schedule_timeout(timeo);
216 lock_sock_nested(sk, SINGLE_DEPTH_NESTING);
218 __set_current_state(TASK_RUNNING);
219 remove_wait_queue(sk_sleep(sk), &wait);
224 newsock->state = SS_CONNECTED;
226 BT_DBG("new socket %p", nsk);
233 static int l2cap_sock_getname(struct socket *sock, struct sockaddr *addr, int *len, int peer)
235 struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
236 struct sock *sk = sock->sk;
237 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
239 BT_DBG("sock %p, sk %p", sock, sk);
241 addr->sa_family = AF_BLUETOOTH;
242 *len = sizeof(struct sockaddr_l2);
245 la->l2_psm = chan->psm;
246 bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
247 la->l2_cid = cpu_to_le16(chan->dcid);
249 la->l2_psm = chan->sport;
250 bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
251 la->l2_cid = cpu_to_le16(chan->scid);
257 static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen)
259 struct sock *sk = sock->sk;
260 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
261 struct l2cap_options opts;
262 struct l2cap_conninfo cinfo;
268 if (get_user(len, optlen))
275 memset(&opts, 0, sizeof(opts));
276 opts.imtu = chan->imtu;
277 opts.omtu = chan->omtu;
278 opts.flush_to = chan->flush_to;
279 opts.mode = chan->mode;
280 opts.fcs = chan->fcs;
281 opts.max_tx = chan->max_tx;
282 opts.txwin_size = chan->tx_win;
284 len = min_t(unsigned int, len, sizeof(opts));
285 if (copy_to_user(optval, (char *) &opts, len))
291 switch (chan->sec_level) {
292 case BT_SECURITY_LOW:
295 case BT_SECURITY_MEDIUM:
296 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
298 case BT_SECURITY_HIGH:
299 opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
307 if (test_bit(FLAG_ROLE_SWITCH, &chan->flags))
308 opt |= L2CAP_LM_MASTER;
310 if (test_bit(FLAG_FORCE_RELIABLE, &chan->flags))
311 opt |= L2CAP_LM_RELIABLE;
313 if (put_user(opt, (u32 __user *) optval))
318 if (sk->sk_state != BT_CONNECTED &&
319 !(sk->sk_state == BT_CONNECT2 &&
320 bt_sk(sk)->defer_setup)) {
325 memset(&cinfo, 0, sizeof(cinfo));
326 cinfo.hci_handle = chan->conn->hcon->handle;
327 memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3);
329 len = min_t(unsigned int, len, sizeof(cinfo));
330 if (copy_to_user(optval, (char *) &cinfo, len))
344 static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
346 struct sock *sk = sock->sk;
347 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
348 struct bt_security sec;
354 if (level == SOL_L2CAP)
355 return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
357 if (level != SOL_BLUETOOTH)
360 if (get_user(len, optlen))
367 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
368 chan->chan_type != L2CAP_CHAN_RAW) {
373 memset(&sec, 0, sizeof(sec));
374 sec.level = chan->sec_level;
376 if (sk->sk_state == BT_CONNECTED)
377 sec.key_size = chan->conn->hcon->enc_key_size;
379 len = min_t(unsigned int, len, sizeof(sec));
380 if (copy_to_user(optval, (char *) &sec, len))
386 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
391 if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
397 if (put_user(test_bit(FLAG_FLUSHABLE, &chan->flags),
398 (u32 __user *) optval))
404 if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_STREAM
405 && sk->sk_type != SOCK_RAW) {
410 pwr.force_active = test_bit(FLAG_FORCE_ACTIVE, &chan->flags);
412 len = min_t(unsigned int, len, sizeof(pwr));
413 if (copy_to_user(optval, (char *) &pwr, len))
418 case BT_CHANNEL_POLICY:
424 if (put_user(chan->chan_policy, (u32 __user *) optval))
437 static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, unsigned int optlen)
439 struct sock *sk = sock->sk;
440 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
441 struct l2cap_options opts;
451 if (sk->sk_state == BT_CONNECTED) {
456 opts.imtu = chan->imtu;
457 opts.omtu = chan->omtu;
458 opts.flush_to = chan->flush_to;
459 opts.mode = chan->mode;
460 opts.fcs = chan->fcs;
461 opts.max_tx = chan->max_tx;
462 opts.txwin_size = chan->tx_win;
464 len = min_t(unsigned int, sizeof(opts), optlen);
465 if (copy_from_user((char *) &opts, optval, len)) {
470 if (opts.txwin_size > L2CAP_DEFAULT_EXT_WINDOW) {
475 chan->mode = opts.mode;
476 switch (chan->mode) {
477 case L2CAP_MODE_BASIC:
478 clear_bit(CONF_STATE2_DEVICE, &chan->conf_state);
480 case L2CAP_MODE_ERTM:
481 case L2CAP_MODE_STREAMING:
490 chan->imtu = opts.imtu;
491 chan->omtu = opts.omtu;
492 chan->fcs = opts.fcs;
493 chan->max_tx = opts.max_tx;
494 chan->tx_win = opts.txwin_size;
498 if (get_user(opt, (u32 __user *) optval)) {
503 if (opt & L2CAP_LM_AUTH)
504 chan->sec_level = BT_SECURITY_LOW;
505 if (opt & L2CAP_LM_ENCRYPT)
506 chan->sec_level = BT_SECURITY_MEDIUM;
507 if (opt & L2CAP_LM_SECURE)
508 chan->sec_level = BT_SECURITY_HIGH;
510 if (opt & L2CAP_LM_MASTER)
511 set_bit(FLAG_ROLE_SWITCH, &chan->flags);
513 clear_bit(FLAG_ROLE_SWITCH, &chan->flags);
515 if (opt & L2CAP_LM_RELIABLE)
516 set_bit(FLAG_FORCE_RELIABLE, &chan->flags);
518 clear_bit(FLAG_FORCE_RELIABLE, &chan->flags);
530 static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
532 struct sock *sk = sock->sk;
533 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
534 struct bt_security sec;
536 struct l2cap_conn *conn;
542 if (level == SOL_L2CAP)
543 return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
545 if (level != SOL_BLUETOOTH)
552 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
553 chan->chan_type != L2CAP_CHAN_RAW) {
558 sec.level = BT_SECURITY_LOW;
560 len = min_t(unsigned int, sizeof(sec), optlen);
561 if (copy_from_user((char *) &sec, optval, len)) {
566 if (sec.level < BT_SECURITY_LOW ||
567 sec.level > BT_SECURITY_HIGH) {
572 chan->sec_level = sec.level;
579 /*change security for LE channels */
580 if (chan->scid == L2CAP_CID_LE_DATA) {
581 if (!conn->hcon->out) {
586 if (smp_conn_security(conn, sec.level))
588 sk->sk_state = BT_CONFIG;
590 /* or for ACL link, under defer_setup time */
591 } else if (sk->sk_state == BT_CONNECT2 &&
592 bt_sk(sk)->defer_setup) {
593 err = l2cap_chan_check_security(chan);
600 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
605 if (get_user(opt, (u32 __user *) optval)) {
610 bt_sk(sk)->defer_setup = opt;
614 if (get_user(opt, (u32 __user *) optval)) {
619 if (opt > BT_FLUSHABLE_ON) {
624 if (opt == BT_FLUSHABLE_OFF) {
625 struct l2cap_conn *conn = chan->conn;
626 /* proceed further only when we have l2cap_conn and
627 No Flush support in the LM */
628 if (!conn || !lmp_no_flush_capable(conn->hcon->hdev)) {
635 set_bit(FLAG_FLUSHABLE, &chan->flags);
637 clear_bit(FLAG_FLUSHABLE, &chan->flags);
641 if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED &&
642 chan->chan_type != L2CAP_CHAN_RAW) {
647 pwr.force_active = BT_POWER_FORCE_ACTIVE_ON;
649 len = min_t(unsigned int, sizeof(pwr), optlen);
650 if (copy_from_user((char *) &pwr, optval, len)) {
655 if (pwr.force_active)
656 set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
658 clear_bit(FLAG_FORCE_ACTIVE, &chan->flags);
661 case BT_CHANNEL_POLICY:
667 if (get_user(opt, (u32 __user *) optval)) {
672 if (opt > BT_CHANNEL_POLICY_AMP_PREFERRED) {
677 if (chan->mode != L2CAP_MODE_ERTM &&
678 chan->mode != L2CAP_MODE_STREAMING) {
683 chan->chan_policy = (u8) opt;
695 static int l2cap_sock_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
697 struct sock *sk = sock->sk;
698 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
701 BT_DBG("sock %p, sk %p", sock, sk);
703 err = sock_error(sk);
707 if (msg->msg_flags & MSG_OOB)
712 if (sk->sk_state != BT_CONNECTED) {
717 err = l2cap_chan_send(chan, msg, len, sk->sk_priority);
723 static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags)
725 struct sock *sk = sock->sk;
726 struct l2cap_pinfo *pi = l2cap_pi(sk);
731 if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) {
732 sk->sk_state = BT_CONFIG;
734 __l2cap_connect_rsp_defer(pi->chan);
741 if (sock->type == SOCK_STREAM)
742 err = bt_sock_stream_recvmsg(iocb, sock, msg, len, flags);
744 err = bt_sock_recvmsg(iocb, sock, msg, len, flags);
746 if (pi->chan->mode != L2CAP_MODE_ERTM)
749 /* Attempt to put pending rx data in the socket buffer */
753 if (!test_bit(CONN_LOCAL_BUSY, &pi->chan->conn_state))
756 if (pi->rx_busy_skb) {
757 if (!sock_queue_rcv_skb(sk, pi->rx_busy_skb))
758 pi->rx_busy_skb = NULL;
763 /* Restore data flow when half of the receive buffer is
764 * available. This avoids resending large numbers of
767 if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf >> 1)
768 l2cap_chan_busy(pi->chan, 0);
775 /* Kill socket (only if zapped and orphan)
776 * Must be called on unlocked socket.
778 static void l2cap_sock_kill(struct sock *sk)
780 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
783 BT_DBG("sk %p state %d", sk, sk->sk_state);
785 /* Kill poor orphan */
787 l2cap_chan_destroy(l2cap_pi(sk)->chan);
788 sock_set_flag(sk, SOCK_DEAD);
792 static int l2cap_sock_shutdown(struct socket *sock, int how)
794 struct sock *sk = sock->sk;
795 struct l2cap_chan *chan = l2cap_pi(sk)->chan;
798 BT_DBG("sock %p, sk %p", sock, sk);
804 if (!sk->sk_shutdown) {
805 if (chan->mode == L2CAP_MODE_ERTM)
806 err = __l2cap_wait_ack(sk);
808 sk->sk_shutdown = SHUTDOWN_MASK;
809 l2cap_chan_close(chan, 0);
811 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime)
812 err = bt_sock_wait_state(sk, BT_CLOSED,
816 if (!err && sk->sk_err)
823 static int l2cap_sock_release(struct socket *sock)
825 struct sock *sk = sock->sk;
828 BT_DBG("sock %p, sk %p", sock, sk);
833 err = l2cap_sock_shutdown(sock, 2);
840 static struct l2cap_chan *l2cap_sock_new_connection_cb(void *data)
842 struct sock *sk, *parent = data;
844 sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
849 l2cap_sock_init(sk, parent);
851 return l2cap_pi(sk)->chan;
854 static int l2cap_sock_recv_cb(void *data, struct sk_buff *skb)
857 struct sock *sk = data;
858 struct l2cap_pinfo *pi = l2cap_pi(sk);
863 err = sock_queue_rcv_skb(sk, skb);
865 /* For ERTM, handle one skb that doesn't fit into the recv
866 * buffer. This is important to do because the data frames
867 * have already been acked, so the skb cannot be discarded.
869 * Notify the l2cap core that the buffer is full, so the
870 * LOCAL_BUSY state is entered and no more frames are
871 * acked and reassembled until there is buffer space
874 if (err < 0 && pi->chan->mode == L2CAP_MODE_ERTM) {
875 pi->rx_busy_skb = skb;
876 l2cap_chan_busy(pi->chan, 1);
883 static void l2cap_sock_close_cb(void *data)
885 struct sock *sk = data;
890 static void l2cap_sock_state_change_cb(void *data, int state)
892 struct sock *sk = data;
894 sk->sk_state = state;
897 static struct l2cap_ops l2cap_chan_ops = {
898 .name = "L2CAP Socket Interface",
899 .new_connection = l2cap_sock_new_connection_cb,
900 .recv = l2cap_sock_recv_cb,
901 .close = l2cap_sock_close_cb,
902 .state_change = l2cap_sock_state_change_cb,
905 static void l2cap_sock_destruct(struct sock *sk)
909 if (l2cap_pi(sk)->rx_busy_skb) {
910 kfree_skb(l2cap_pi(sk)->rx_busy_skb);
911 l2cap_pi(sk)->rx_busy_skb = NULL;
914 skb_queue_purge(&sk->sk_receive_queue);
915 skb_queue_purge(&sk->sk_write_queue);
918 static void l2cap_sock_init(struct sock *sk, struct sock *parent)
920 struct l2cap_pinfo *pi = l2cap_pi(sk);
921 struct l2cap_chan *chan = pi->chan;
926 struct l2cap_chan *pchan = l2cap_pi(parent)->chan;
928 sk->sk_type = parent->sk_type;
929 bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup;
931 chan->chan_type = pchan->chan_type;
932 chan->imtu = pchan->imtu;
933 chan->omtu = pchan->omtu;
934 chan->conf_state = pchan->conf_state;
935 chan->mode = pchan->mode;
936 chan->fcs = pchan->fcs;
937 chan->max_tx = pchan->max_tx;
938 chan->tx_win = pchan->tx_win;
939 chan->tx_win_max = pchan->tx_win_max;
940 chan->sec_level = pchan->sec_level;
941 chan->flags = pchan->flags;
943 security_sk_clone(parent, sk);
946 switch (sk->sk_type) {
948 chan->chan_type = L2CAP_CHAN_RAW;
951 chan->chan_type = L2CAP_CHAN_CONN_LESS;
955 chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
959 chan->imtu = L2CAP_DEFAULT_MTU;
961 if (!disable_ertm && sk->sk_type == SOCK_STREAM) {
962 chan->mode = L2CAP_MODE_ERTM;
963 set_bit(CONF_STATE2_DEVICE, &chan->conf_state);
965 chan->mode = L2CAP_MODE_BASIC;
967 chan->max_tx = L2CAP_DEFAULT_MAX_TX;
968 chan->fcs = L2CAP_FCS_CRC16;
969 chan->tx_win = L2CAP_DEFAULT_TX_WINDOW;
970 chan->tx_win_max = L2CAP_DEFAULT_TX_WINDOW;
971 chan->sec_level = BT_SECURITY_LOW;
973 set_bit(FLAG_FORCE_ACTIVE, &chan->flags);
976 /* Default config options */
977 chan->flush_to = L2CAP_DEFAULT_FLUSH_TO;
980 chan->ops = &l2cap_chan_ops;
983 static struct proto l2cap_proto = {
985 .owner = THIS_MODULE,
986 .obj_size = sizeof(struct l2cap_pinfo)
989 static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock, int proto, gfp_t prio)
992 struct l2cap_chan *chan;
994 sk = sk_alloc(net, PF_BLUETOOTH, prio, &l2cap_proto);
998 sock_init_data(sock, sk);
999 INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
1001 sk->sk_destruct = l2cap_sock_destruct;
1002 sk->sk_sndtimeo = L2CAP_CONN_TIMEOUT;
1004 sock_reset_flag(sk, SOCK_ZAPPED);
1006 sk->sk_protocol = proto;
1007 sk->sk_state = BT_OPEN;
1009 chan = l2cap_chan_create(sk);
1011 l2cap_sock_kill(sk);
1015 l2cap_pi(sk)->chan = chan;
1020 static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
1025 BT_DBG("sock %p", sock);
1027 sock->state = SS_UNCONNECTED;
1029 if (sock->type != SOCK_SEQPACKET && sock->type != SOCK_STREAM &&
1030 sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
1031 return -ESOCKTNOSUPPORT;
1033 if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
1036 sock->ops = &l2cap_sock_ops;
1038 sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC);
1042 l2cap_sock_init(sk, NULL);
1046 static const struct proto_ops l2cap_sock_ops = {
1047 .family = PF_BLUETOOTH,
1048 .owner = THIS_MODULE,
1049 .release = l2cap_sock_release,
1050 .bind = l2cap_sock_bind,
1051 .connect = l2cap_sock_connect,
1052 .listen = l2cap_sock_listen,
1053 .accept = l2cap_sock_accept,
1054 .getname = l2cap_sock_getname,
1055 .sendmsg = l2cap_sock_sendmsg,
1056 .recvmsg = l2cap_sock_recvmsg,
1057 .poll = bt_sock_poll,
1058 .ioctl = bt_sock_ioctl,
1059 .mmap = sock_no_mmap,
1060 .socketpair = sock_no_socketpair,
1061 .shutdown = l2cap_sock_shutdown,
1062 .setsockopt = l2cap_sock_setsockopt,
1063 .getsockopt = l2cap_sock_getsockopt
1066 static const struct net_proto_family l2cap_sock_family_ops = {
1067 .family = PF_BLUETOOTH,
1068 .owner = THIS_MODULE,
1069 .create = l2cap_sock_create,
1072 int __init l2cap_init_sockets(void)
1076 err = proto_register(&l2cap_proto, 0);
1080 err = bt_sock_register(BTPROTO_L2CAP, &l2cap_sock_family_ops);
1084 BT_INFO("L2CAP socket layer initialized");
1089 BT_ERR("L2CAP socket registration failed");
1090 proto_unregister(&l2cap_proto);
1094 void l2cap_cleanup_sockets(void)
1096 if (bt_sock_unregister(BTPROTO_L2CAP) < 0)
1097 BT_ERR("L2CAP socket unregistration failed");
1099 proto_unregister(&l2cap_proto);