266
265
/* Service level security */
267
static inline int l2cap_check_link_mode(struct sock *sk)
266
static inline int l2cap_check_security(struct sock *sk)
269
268
struct l2cap_conn *conn = l2cap_pi(sk)->conn;
271
if ((l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT) ||
272
(l2cap_pi(sk)->link_mode & L2CAP_LM_SECURE))
273
return hci_conn_encrypt(conn->hcon);
275
if (l2cap_pi(sk)->link_mode & L2CAP_LM_AUTH)
276
return hci_conn_auth(conn->hcon);
271
if (l2cap_pi(sk)->psm == cpu_to_le16(0x0001)) {
272
if (l2cap_pi(sk)->sec_level == BT_SECURITY_HIGH)
273
auth_type = HCI_AT_NO_BONDING_MITM;
275
auth_type = HCI_AT_NO_BONDING;
277
if (l2cap_pi(sk)->sec_level == BT_SECURITY_LOW)
278
l2cap_pi(sk)->sec_level = BT_SECURITY_SDP;
280
switch (l2cap_pi(sk)->sec_level) {
281
case BT_SECURITY_HIGH:
282
auth_type = HCI_AT_GENERAL_BONDING_MITM;
284
case BT_SECURITY_MEDIUM:
285
auth_type = HCI_AT_GENERAL_BONDING;
288
auth_type = HCI_AT_NO_BONDING;
293
return hci_conn_security(conn->hcon, l2cap_pi(sk)->sec_level,
281
297
static inline u8 l2cap_get_ident(struct l2cap_conn *conn)
376
395
rsp.scid = cpu_to_le16(l2cap_pi(sk)->dcid);
377
396
rsp.dcid = cpu_to_le16(l2cap_pi(sk)->scid);
379
if (l2cap_check_link_mode(sk)) {
380
sk->sk_state = BT_CONFIG;
381
rsp.result = cpu_to_le16(L2CAP_CR_SUCCESS);
382
rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
398
if (l2cap_check_security(sk)) {
399
if (bt_sk(sk)->defer_setup) {
400
struct sock *parent = bt_sk(sk)->parent;
401
rsp.result = cpu_to_le16(L2CAP_CR_PEND);
402
rsp.status = cpu_to_le16(L2CAP_CS_AUTHOR_PEND);
403
parent->sk_data_ready(parent, 0);
406
sk->sk_state = BT_CONFIG;
407
rsp.result = cpu_to_le16(L2CAP_CR_SUCCESS);
408
rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
384
411
rsp.result = cpu_to_le16(L2CAP_CR_PEND);
385
412
rsp.status = cpu_to_le16(L2CAP_CS_AUTHEN_PEND);
629
657
l2cap_chan_del(sk, reason);
661
if (sk->sk_type == SOCK_SEQPACKET) {
662
struct l2cap_conn *conn = l2cap_pi(sk)->conn;
663
struct l2cap_conn_rsp rsp;
666
if (bt_sk(sk)->defer_setup)
667
result = L2CAP_CR_SEC_BLOCK;
669
result = L2CAP_CR_BAD_PSM;
671
rsp.scid = cpu_to_le16(l2cap_pi(sk)->dcid);
672
rsp.dcid = cpu_to_le16(l2cap_pi(sk)->scid);
673
rsp.result = cpu_to_le16(result);
674
rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
675
l2cap_send_cmd(conn, l2cap_pi(sk)->ident,
676
L2CAP_CONN_RSP, sizeof(rsp), &rsp);
678
l2cap_chan_del(sk, reason);
634
683
l2cap_chan_del(sk, reason);
660
709
sk->sk_type = parent->sk_type;
710
bt_sk(sk)->defer_setup = bt_sk(parent)->defer_setup;
661
712
pi->imtu = l2cap_pi(parent)->imtu;
662
713
pi->omtu = l2cap_pi(parent)->omtu;
663
pi->link_mode = l2cap_pi(parent)->link_mode;
714
pi->sec_level = l2cap_pi(parent)->sec_level;
715
pi->role_switch = l2cap_pi(parent)->role_switch;
716
pi->force_reliable = l2cap_pi(parent)->force_reliable;
665
718
pi->imtu = L2CAP_DEFAULT_MTU;
720
pi->sec_level = BT_SECURITY_LOW;
722
pi->force_reliable = 0;
670
725
/* Default config options */
731
static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
786
static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
733
struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
734
788
struct sock *sk = sock->sk;
789
struct sockaddr_l2 la;
737
BT_DBG("sk %p, %s %d", sk, batostr(&la->l2_bdaddr), la->l2_psm);
739
794
if (!addr || addr->sa_family != AF_BLUETOOTH)
797
memset(&la, 0, sizeof(la));
798
len = min_t(unsigned int, sizeof(la), alen);
799
memcpy(&la, addr, len);
744
806
if (sk->sk_state != BT_OPEN) {
755
817
write_lock_bh(&l2cap_sk_list.lock);
757
if (la->l2_psm && __l2cap_get_sock_by_addr(la->l2_psm, &la->l2_bdaddr)) {
819
if (la.l2_psm && __l2cap_get_sock_by_addr(la.l2_psm, &la.l2_bdaddr)) {
758
820
err = -EADDRINUSE;
760
822
/* Save source address */
761
bacpy(&bt_sk(sk)->src, &la->l2_bdaddr);
762
l2cap_pi(sk)->psm = la->l2_psm;
763
l2cap_pi(sk)->sport = la->l2_psm;
823
bacpy(&bt_sk(sk)->src, &la.l2_bdaddr);
824
l2cap_pi(sk)->psm = la.l2_psm;
825
l2cap_pi(sk)->sport = la.l2_psm;
764
826
sk->sk_state = BT_BOUND;
828
if (btohs(la.l2_psm) == 0x0001 || btohs(la.l2_psm) == 0x0003)
829
l2cap_pi(sk)->sec_level = BT_SECURITY_SDP;
767
832
write_unlock_bh(&l2cap_sk_list.lock);
793
if (l2cap_pi(sk)->link_mode & L2CAP_LM_AUTH ||
794
l2cap_pi(sk)->link_mode & L2CAP_LM_ENCRYPT ||
795
l2cap_pi(sk)->link_mode & L2CAP_LM_SECURE) {
796
if (l2cap_pi(sk)->psm == cpu_to_le16(0x0001))
859
if (sk->sk_type == SOCK_RAW) {
860
switch (l2cap_pi(sk)->sec_level) {
861
case BT_SECURITY_HIGH:
862
auth_type = HCI_AT_DEDICATED_BONDING_MITM;
864
case BT_SECURITY_MEDIUM:
865
auth_type = HCI_AT_DEDICATED_BONDING;
868
auth_type = HCI_AT_NO_BONDING;
871
} else if (l2cap_pi(sk)->psm == cpu_to_le16(0x0001)) {
872
if (l2cap_pi(sk)->sec_level == BT_SECURITY_HIGH)
797
873
auth_type = HCI_AT_NO_BONDING_MITM;
875
auth_type = HCI_AT_NO_BONDING;
877
if (l2cap_pi(sk)->sec_level == BT_SECURITY_LOW)
878
l2cap_pi(sk)->sec_level = BT_SECURITY_SDP;
880
switch (l2cap_pi(sk)->sec_level) {
881
case BT_SECURITY_HIGH:
799
882
auth_type = HCI_AT_GENERAL_BONDING_MITM;
801
if (l2cap_pi(sk)->psm == cpu_to_le16(0x0001))
802
auth_type = HCI_AT_NO_BONDING;
884
case BT_SECURITY_MEDIUM:
804
885
auth_type = HCI_AT_GENERAL_BONDING;
888
auth_type = HCI_AT_NO_BONDING;
807
hcon = hci_connect(hdev, ACL_LINK, dst, auth_type);
893
hcon = hci_connect(hdev, ACL_LINK, dst,
894
l2cap_pi(sk)->sec_level, auth_type);
841
928
static int l2cap_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
843
struct sockaddr_l2 *la = (struct sockaddr_l2 *) addr;
844
930
struct sock *sk = sock->sk;
931
struct sockaddr_l2 la;
936
if (!addr || addr->sa_family != AF_BLUETOOTH)
939
memset(&la, 0, sizeof(la));
940
len = min_t(unsigned int, sizeof(la), alen);
941
memcpy(&la, addr, len);
851
if (addr->sa_family != AF_BLUETOOTH || alen < sizeof(struct sockaddr_l2)) {
856
if (sk->sk_type == SOCK_SEQPACKET && !la->l2_psm) {
948
if (sk->sk_type == SOCK_SEQPACKET && !la.l2_psm) {
1005
1097
addr->sa_family = AF_BLUETOOTH;
1006
1098
*len = sizeof(struct sockaddr_l2);
1101
la->l2_psm = l2cap_pi(sk)->psm;
1009
1102
bacpy(&la->l2_bdaddr, &bt_sk(sk)->dst);
1103
la->l2_cid = htobs(l2cap_pi(sk)->dcid);
1105
la->l2_psm = l2cap_pi(sk)->sport;
1011
1106
bacpy(&la->l2_bdaddr, &bt_sk(sk)->src);
1107
la->l2_cid = htobs(l2cap_pi(sk)->scid);
1013
la->l2_psm = l2cap_pi(sk)->psm;
1114
static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
1210
static int l2cap_sock_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len, int flags)
1212
struct sock *sk = sock->sk;
1216
if (sk->sk_state == BT_CONNECT2 && bt_sk(sk)->defer_setup) {
1217
struct l2cap_conn_rsp rsp;
1219
sk->sk_state = BT_CONFIG;
1221
rsp.scid = cpu_to_le16(l2cap_pi(sk)->dcid);
1222
rsp.dcid = cpu_to_le16(l2cap_pi(sk)->scid);
1223
rsp.result = cpu_to_le16(L2CAP_CR_SUCCESS);
1224
rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
1225
l2cap_send_cmd(l2cap_pi(sk)->conn, l2cap_pi(sk)->ident,
1226
L2CAP_CONN_RSP, sizeof(rsp), &rsp);
1234
return bt_sock_recvmsg(iocb, sock, msg, len, flags);
1237
static int l2cap_sock_setsockopt_old(struct socket *sock, int optname, char __user *optval, int optlen)
1116
1239
struct sock *sk = sock->sk;
1117
1240
struct l2cap_options opts;
1121
1244
BT_DBG("sk %p", sk);
1148
l2cap_pi(sk)->link_mode = opt;
1160
static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
1271
if (opt & L2CAP_LM_AUTH)
1272
l2cap_pi(sk)->sec_level = BT_SECURITY_LOW;
1273
if (opt & L2CAP_LM_ENCRYPT)
1274
l2cap_pi(sk)->sec_level = BT_SECURITY_MEDIUM;
1275
if (opt & L2CAP_LM_SECURE)
1276
l2cap_pi(sk)->sec_level = BT_SECURITY_HIGH;
1278
l2cap_pi(sk)->role_switch = (opt & L2CAP_LM_MASTER);
1279
l2cap_pi(sk)->force_reliable = (opt & L2CAP_LM_RELIABLE);
1291
static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
1293
struct sock *sk = sock->sk;
1294
struct bt_security sec;
1298
BT_DBG("sk %p", sk);
1300
if (level == SOL_L2CAP)
1301
return l2cap_sock_setsockopt_old(sock, optname, optval, optlen);
1303
if (level != SOL_BLUETOOTH)
1304
return -ENOPROTOOPT;
1310
if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_RAW) {
1315
sec.level = BT_SECURITY_LOW;
1317
len = min_t(unsigned int, sizeof(sec), optlen);
1318
if (copy_from_user((char *) &sec, optval, len)) {
1323
if (sec.level < BT_SECURITY_LOW ||
1324
sec.level > BT_SECURITY_HIGH) {
1329
l2cap_pi(sk)->sec_level = sec.level;
1332
case BT_DEFER_SETUP:
1333
if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
1338
if (get_user(opt, (u32 __user *) optval)) {
1343
bt_sk(sk)->defer_setup = opt;
1355
static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __user *optval, int __user *optlen)
1162
1357
struct sock *sk = sock->sk;
1163
1358
struct l2cap_options opts;
1164
1359
struct l2cap_conninfo cinfo;
1165
1360
int len, err = 0;
1167
1363
BT_DBG("sk %p", sk);
1188
if (put_user(l2cap_pi(sk)->link_mode, (u32 __user *) optval))
1384
switch (l2cap_pi(sk)->sec_level) {
1385
case BT_SECURITY_LOW:
1386
opt = L2CAP_LM_AUTH;
1388
case BT_SECURITY_MEDIUM:
1389
opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT;
1391
case BT_SECURITY_HIGH:
1392
opt = L2CAP_LM_AUTH | L2CAP_LM_ENCRYPT |
1400
if (l2cap_pi(sk)->role_switch)
1401
opt |= L2CAP_LM_MASTER;
1403
if (l2cap_pi(sk)->force_reliable)
1404
opt |= L2CAP_LM_RELIABLE;
1406
if (put_user(opt, (u32 __user *) optval))
1192
1410
case L2CAP_CONNINFO:
1193
if (sk->sk_state != BT_CONNECTED) {
1411
if (sk->sk_state != BT_CONNECTED &&
1412
!(sk->sk_state == BT_CONNECT2 &&
1413
bt_sk(sk)->defer_setup)) {
1194
1414
err = -ENOTCONN;
1436
static int l2cap_sock_getsockopt(struct socket *sock, int level, int optname, char __user *optval, int __user *optlen)
1438
struct sock *sk = sock->sk;
1439
struct bt_security sec;
1442
BT_DBG("sk %p", sk);
1444
if (level == SOL_L2CAP)
1445
return l2cap_sock_getsockopt_old(sock, optname, optval, optlen);
1447
if (level != SOL_BLUETOOTH)
1448
return -ENOPROTOOPT;
1450
if (get_user(len, optlen))
1457
if (sk->sk_type != SOCK_SEQPACKET && sk->sk_type != SOCK_RAW) {
1462
sec.level = l2cap_pi(sk)->sec_level;
1464
len = min_t(unsigned int, len, sizeof(sec));
1465
if (copy_to_user(optval, (char *) &sec, len))
1470
case BT_DEFER_SETUP:
1471
if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
1476
if (put_user(bt_sk(sk)->defer_setup, (u32 __user *) optval))
1216
1490
static int l2cap_sock_shutdown(struct socket *sock, int how)
1218
1492
struct sock *sk = sock->sk;
1627
1900
l2cap_pi(sk)->ident = cmd->ident;
1629
if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) {
1630
if (l2cap_check_link_mode(sk)) {
1631
sk->sk_state = BT_CONFIG;
1632
result = L2CAP_CR_SUCCESS;
1633
status = L2CAP_CS_NO_INFO;
1902
if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE) {
1903
if (l2cap_check_security(sk)) {
1904
if (bt_sk(sk)->defer_setup) {
1905
sk->sk_state = BT_CONNECT2;
1906
result = L2CAP_CR_PEND;
1907
status = L2CAP_CS_AUTHOR_PEND;
1908
parent->sk_data_ready(parent, 0);
1910
sk->sk_state = BT_CONFIG;
1911
result = L2CAP_CR_SUCCESS;
1912
status = L2CAP_CS_NO_INFO;
1635
1915
sk->sk_state = BT_CONNECT2;
1636
1916
result = L2CAP_CR_PEND;
1913
2196
put_unaligned(cpu_to_le32(l2cap_feat_mask), (__le32 *) rsp->data);
1914
2197
l2cap_send_cmd(conn, cmd->ident,
1915
2198
L2CAP_INFO_RSP, sizeof(buf), buf);
2199
} else if (type == L2CAP_IT_FIXED_CHAN) {
2201
struct l2cap_info_rsp *rsp = (struct l2cap_info_rsp *) buf;
2202
rsp->type = cpu_to_le16(L2CAP_IT_FIXED_CHAN);
2203
rsp->result = cpu_to_le16(L2CAP_IR_SUCCESS);
2204
memcpy(buf + 4, l2cap_fixed_chan, 8);
2205
l2cap_send_cmd(conn, cmd->ident,
2206
L2CAP_INFO_RSP, sizeof(buf), buf);
1917
2208
struct l2cap_info_rsp rsp;
1918
2209
rsp.type = cpu_to_le16(type);
1935
2226
BT_DBG("type 0x%4.4x result 0x%2.2x", type, result);
1937
conn->info_ident = 0;
1939
2228
del_timer(&conn->info_timer);
1941
if (type == L2CAP_IT_FEAT_MASK)
2230
if (type == L2CAP_IT_FEAT_MASK) {
1942
2231
conn->feat_mask = get_unaligned_le32(rsp->data);
1944
l2cap_conn_start(conn);
2233
if (conn->feat_mask & 0x0080) {
2234
struct l2cap_info_req req;
2235
req.type = cpu_to_le16(L2CAP_IT_FIXED_CHAN);
2237
conn->info_ident = l2cap_get_ident(conn);
2239
l2cap_send_cmd(conn, conn->info_ident,
2240
L2CAP_INFO_REQ, sizeof(req), &req);
2242
conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
2243
conn->info_ident = 0;
2245
l2cap_conn_start(conn);
2247
} else if (type == L2CAP_IT_FIXED_CHAN) {
2248
conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;
2249
conn->info_ident = 0;
2251
l2cap_conn_start(conn);
2150
2458
if (!bacmp(&bt_sk(sk)->src, &hdev->bdaddr)) {
2151
lm1 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
2459
lm1 |= HCI_LM_ACCEPT;
2460
if (l2cap_pi(sk)->role_switch)
2461
lm1 |= HCI_LM_MASTER;
2153
} else if (!bacmp(&bt_sk(sk)->src, BDADDR_ANY))
2154
lm2 |= (HCI_LM_ACCEPT | l2cap_pi(sk)->link_mode);
2463
} else if (!bacmp(&bt_sk(sk)->src, BDADDR_ANY)) {
2464
lm2 |= HCI_LM_ACCEPT;
2465
if (l2cap_pi(sk)->role_switch)
2466
lm2 |= HCI_LM_MASTER;
2156
2469
read_unlock(&l2cap_sk_list.lock);
2192
static int l2cap_auth_cfm(struct hci_conn *hcon, u8 status)
2194
struct l2cap_chan_list *l;
2195
struct l2cap_conn *conn = hcon->l2cap_data;
2201
l = &conn->chan_list;
2203
BT_DBG("conn %p", conn);
2205
read_lock(&l->lock);
2207
for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
2208
struct l2cap_pinfo *pi = l2cap_pi(sk);
2212
if ((pi->link_mode & (L2CAP_LM_ENCRYPT | L2CAP_LM_SECURE)) &&
2213
!(hcon->link_mode & HCI_LM_ENCRYPT) &&
2219
if (sk->sk_state == BT_CONNECT) {
2221
struct l2cap_conn_req req;
2222
req.scid = cpu_to_le16(l2cap_pi(sk)->scid);
2223
req.psm = l2cap_pi(sk)->psm;
2225
l2cap_pi(sk)->ident = l2cap_get_ident(conn);
2227
l2cap_send_cmd(conn, l2cap_pi(sk)->ident,
2228
L2CAP_CONN_REQ, sizeof(req), &req);
2230
l2cap_sock_clear_timer(sk);
2231
l2cap_sock_set_timer(sk, HZ / 10);
2233
} else if (sk->sk_state == BT_CONNECT2) {
2234
struct l2cap_conn_rsp rsp;
2238
sk->sk_state = BT_CONFIG;
2239
result = L2CAP_CR_SUCCESS;
2241
sk->sk_state = BT_DISCONN;
2242
l2cap_sock_set_timer(sk, HZ / 10);
2243
result = L2CAP_CR_SEC_BLOCK;
2246
rsp.scid = cpu_to_le16(l2cap_pi(sk)->dcid);
2247
rsp.dcid = cpu_to_le16(l2cap_pi(sk)->scid);
2248
rsp.result = cpu_to_le16(result);
2249
rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
2250
l2cap_send_cmd(conn, l2cap_pi(sk)->ident,
2251
L2CAP_CONN_RSP, sizeof(rsp), &rsp);
2257
read_unlock(&l->lock);
2262
static int l2cap_encrypt_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
2264
struct l2cap_chan_list *l;
2265
struct l2cap_conn *conn = hcon->l2cap_data;
2271
l = &conn->chan_list;
2273
BT_DBG("conn %p", conn);
2275
read_lock(&l->lock);
2277
for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
2278
struct l2cap_pinfo *pi = l2cap_pi(sk);
2282
if ((pi->link_mode & (L2CAP_LM_ENCRYPT | L2CAP_LM_SECURE)) &&
2283
(sk->sk_state == BT_CONNECTED ||
2284
sk->sk_state == BT_CONFIG) &&
2285
!status && encrypt == 0x00) {
2517
static inline void l2cap_check_encryption(struct sock *sk, u8 encrypt)
2519
if (sk->sk_type != SOCK_SEQPACKET)
2522
if (encrypt == 0x00) {
2523
if (l2cap_pi(sk)->sec_level == BT_SECURITY_MEDIUM) {
2524
l2cap_sock_clear_timer(sk);
2525
l2cap_sock_set_timer(sk, HZ * 5);
2526
} else if (l2cap_pi(sk)->sec_level == BT_SECURITY_HIGH)
2286
2527
__l2cap_sock_close(sk, ECONNREFUSED);
2529
if (l2cap_pi(sk)->sec_level == BT_SECURITY_MEDIUM)
2530
l2cap_sock_clear_timer(sk);
2534
static int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
2536
struct l2cap_chan_list *l;
2537
struct l2cap_conn *conn = hcon->l2cap_data;
2543
l = &conn->chan_list;
2545
BT_DBG("conn %p", conn);
2547
read_lock(&l->lock);
2549
for (sk = l->head; sk; sk = l2cap_pi(sk)->next_c) {
2552
if (l2cap_pi(sk)->conf_state & L2CAP_CONF_CONNECT_PEND) {
2557
if (!status && (sk->sk_state == BT_CONNECTED ||
2558
sk->sk_state == BT_CONFIG)) {
2559
l2cap_check_encryption(sk, encrypt);
2287
2560
bh_unlock_sock(sk);
2429
2702
sk_for_each(sk, node, &l2cap_sk_list.head) {
2430
2703
struct l2cap_pinfo *pi = l2cap_pi(sk);
2432
str += sprintf(str, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d 0x%x\n",
2705
str += sprintf(str, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d %d\n",
2433
2706
batostr(&bt_sk(sk)->src), batostr(&bt_sk(sk)->dst),
2434
2707
sk->sk_state, btohs(pi->psm), pi->scid, pi->dcid,
2435
pi->imtu, pi->omtu, pi->link_mode);
2708
pi->imtu, pi->omtu, pi->sec_level);
2438
2711
read_unlock_bh(&l2cap_sk_list.lock);
2474
2747
.connect_ind = l2cap_connect_ind,
2475
2748
.connect_cfm = l2cap_connect_cfm,
2476
2749
.disconn_ind = l2cap_disconn_ind,
2477
.auth_cfm = l2cap_auth_cfm,
2478
.encrypt_cfm = l2cap_encrypt_cfm,
2750
.disconn_cfm = l2cap_disconn_cfm,
2751
.security_cfm = l2cap_security_cfm,
2479
2752
.recv_acldata = l2cap_recv_acldata