Home | History | Annotate | Download | only in bnep

Lines Matching defs:p_bcb

39 void bnepu_process_peer_multicast_filter_set (tBNEP_CONN *p_bcb, UINT8 *p_filters, UINT16 len);
40 void bnepu_send_peer_multicast_filter_rsp (tBNEP_CONN *p_bcb, UINT16 response_code);
56 tBNEP_CONN *p_bcb;
59 for (xx = 0, p_bcb = bnep_cb.bcb; xx < BNEP_MAX_CONNECTIONS; xx++, p_bcb++)
61 if ((p_bcb->con_state != BNEP_STATE_IDLE) && (p_bcb->l2cap_cid == cid))
62 return (p_bcb);
83 tBNEP_CONN *p_bcb;
86 for (xx = 0, p_bcb = bnep_cb.bcb; xx < BNEP_MAX_CONNECTIONS; xx++, p_bcb++)
88 if (p_bcb->con_state != BNEP_STATE_IDLE)
90 if (!memcmp ((UINT8 *)(p_bcb->rem_bda), p_bda, BD_ADDR_LEN))
91 return (p_bcb);
112 tBNEP_CONN *p_bcb;
115 for (xx = 0, p_bcb = bnep_cb.bcb; xx < BNEP_MAX_CONNECTIONS; xx++, p_bcb++)
117 if (p_bcb->con_state == BNEP_STATE_IDLE)
119 memset ((UINT8 *)p_bcb, 0, sizeof (tBNEP_CONN));
121 p_bcb->conn_tle.param = (UINT32) p_bcb;
123 memcpy ((UINT8 *)(p_bcb->rem_bda), (UINT8 *)p_rem_bda, BD_ADDR_LEN);
124 p_bcb->handle = xx + 1;
126 return (p_bcb);
144 void bnepu_release_bcb (tBNEP_CONN *p_bcb)
147 btu_stop_timer (&p_bcb->conn_tle);
150 p_bcb->con_state = BNEP_STATE_IDLE;
151 p_bcb->p_pending_data = NULL;
154 while (p_bcb->xmit_q.count)
156 GKI_freebuf (GKI_dequeue (&p_bcb->xmit_q));
170 void bnep_send_conn_req (tBNEP_CONN *p_bcb)
175 BNEP_TRACE_DEBUG1 ("BNEP sending setup req with dst uuid %x", p_bcb->dst_uuid.uu.uuid16);
191 UINT8_TO_BE_STREAM (p, p_bcb->dst_uuid.len);
193 if (p_bcb->dst_uuid.len == 2)
195 UINT16_TO_BE_STREAM (p, p_bcb->dst_uuid.uu.uuid16);
196 UINT16_TO_BE_STREAM (p, p_bcb->src_uuid.uu.uuid16);
199 else if (p_bcb->dst_uuid.len == 4)
201 UINT32_TO_BE_STREAM (p, p_bcb->dst_uuid.uu.uuid32);
202 UINT32_TO_BE_STREAM (p, p_bcb->src_uuid.uu.uuid32);
206 memcpy (p, p_bcb->dst_uuid.uu.uuid128, p_bcb->dst_uuid.len);
207 p += p_bcb->dst_uuid.len;
208 memcpy (p, p_bcb->src_uuid.uu.uuid128, p_bcb->dst_uuid.len);
209 p += p_bcb->dst_uuid.len;
215 bnepu_check_send_packet (p_bcb, p_buf);
228 void bnep_send_conn_responce (tBNEP_CONN *p_bcb, UINT16 resp_code)
233 BNEP_TRACE_EVENT1 ("BNEP - bnep_send_conn_responce for CID: 0x%x", p_bcb->l2cap_cid);
253 bnepu_check_send_packet (p_bcb, p_buf);
267 void bnepu_send_peer_our_filters (tBNEP_CONN *p_bcb)
291 UINT16_TO_BE_STREAM (p, (4 * p_bcb->sent_num_filters));
292 for (xx = 0; xx < p_bcb->sent_num_filters; xx++)
294 UINT16_TO_BE_STREAM (p, p_bcb->sent_prot_filter_start[xx]);
295 UINT16_TO_BE_STREAM (p, p_bcb->sent_prot_filter_end[xx]);
298 p_buf->len = 4 + (4 * p_bcb->sent_num_filters);
300 bnepu_check_send_packet (p_bcb, p_buf);
302 p_bcb->con_flags |= BNEP_FLAGS_FILTER_RESP_PEND;
305 btu_start_timer (&p_bcb->conn_tle, BTU_TTYPE_BNEP, BNEP_FILTER_SET_TIMEOUT);
319 void bnepu_send_peer_our_multi_filters (tBNEP_CONN *p_bcb)
343 UINT16_TO_BE_STREAM (p, (2 * BD_ADDR_LEN * p_bcb->sent_mcast_filters));
344 for (xx = 0; xx < p_bcb->sent_mcast_filters; xx++)
346 memcpy (p, p_bcb->sent_mcast_filter_start[xx], BD_ADDR_LEN);
348 memcpy (p, p_bcb->sent_mcast_filter_end[xx], BD_ADDR_LEN);
352 p_buf->len = 4 + (2 * BD_ADDR_LEN * p_bcb->sent_mcast_filters);
354 bnepu_check_send_packet (p_bcb, p_buf);
356 p_bcb->con_flags |= BNEP_FLAGS_MULTI_RESP_PEND;
359 btu_start_timer (&p_bcb->conn_tle, BTU_TTYPE_BNEP, BNEP_FILTER_SET_TIMEOUT);
373 void bnepu_send_peer_filter_rsp (tBNEP_CONN *p_bcb, UINT16 response_code)
398 bnepu_check_send_packet (p_bcb, p_buf);
411 void bnep_send_command_not_understood (tBNEP_CONN *p_bcb, UINT8 cmd_code)
416 BNEP_TRACE_EVENT2 ("BNEP - bnep_send_command_not_understood for CID: 0x%x, cmd 0x%x", p_bcb->l2cap_cid, cmd_code);
436 bnepu_check_send_packet (p_bcb, p_buf);
452 void bnepu_check_send_packet (tBNEP_CONN *p_bcb, BT_HDR *p_buf)
454 BNEP_TRACE_EVENT1 ("BNEP - bnepu_check_send_packet for CID: 0x%x", p_bcb->l2cap_cid);
455 if (p_bcb->con_flags & BNEP_FLAGS_L2CAP_CONGESTED)
457 if (p_bcb->xmit_q.count >= BNEP_MAX_XMITQ_DEPTH)
459 BNEP_TRACE_EVENT1 ("BNEP - congested, dropping buf, CID: 0x%x", p_bcb->l2cap_cid);
465 GKI_enqueue (&p_bcb->xmit_q, p_buf);
470 L2CA_DataWrite (p_bcb->l2cap_cid, p_buf);
486 void bnepu_build_bnep_hdr (tBNEP_CONN *p_bcb, BT_HDR *p_buf, UINT16 protocol,
497 if (memcmp (p_dest_addr, p_bcb->rem_bda, BD_ADDR_LEN))
584 void bnep_process_setup_conn_req (tBNEP_CONN *p_bcb, UINT8 *p_setup, UINT8 len)
586 BNEP_TRACE_EVENT1 ("BNEP - bnep_process_setup_conn_req for CID: 0x%x", p_bcb->l2cap_cid);
588 if (p_bcb->con_state != BNEP_STATE_CONN_SETUP &&
589 p_bcb->con_state != BNEP_STATE_SEC_CHECKING &&
590 p_bcb->con_state != BNEP_STATE_CONNECTED)
592 BNEP_TRACE_ERROR1 ("BNEP - setup request in bad state %d", p_bcb->con_state);
593 bnep_send_conn_responce (p_bcb, BNEP_SETUP_CONN_NOT_ALLOWED);
598 if (p_bcb->con_flags & BNEP_FLAGS_SETUP_RCVD)
605 if (p_bcb->con_state != BNEP_STATE_CONNECTED &&
606 (!(p_bcb->con_flags & BNEP_FLAGS_SETUP_RCVD)) &&
607 (p_bcb->con_flags & BNEP_FLAGS_IS_ORIG))
609 BNEP_TRACE_ERROR1 ("BNEP - setup request when we are originator", p_bcb->con_state);
610 bnep_send_conn_responce (p_bcb, BNEP_SETUP_CONN_NOT_ALLOWED);
614 if (p_bcb->con_state == BNEP_STATE_CONNECTED)
616 memcpy ((UINT8 *)&(p_bcb->prv_src_uuid), (UINT8 *)&(p_bcb->src_uuid), sizeof (tBT_UUID));
617 memcpy ((UINT8 *)&(p_bcb->prv_dst_uuid), (UINT8 *)&(p_bcb->dst_uuid), sizeof (tBT_UUID));
620 p_bcb->dst_uuid.len = p_bcb->src_uuid.len = len;
622 if (p_bcb->dst_uuid.len == 2)
625 BE_STREAM_TO_UINT16 (p_bcb->src_uuid.uu.uuid16, p_setup);
626 BE_STREAM_TO_UINT16 (p_bcb->dst_uuid.uu.uuid16, p_setup);
629 if (p_bcb->con_state == BNEP_STATE_CONNECTED &&
630 p_bcb->src_uuid.uu.uuid16 == p_bcb->prv_src_uuid.uu.uuid16 &&
631 p_bcb->dst_uuid.uu.uuid16 == p_bcb->prv_dst_uuid.uu.uuid16)
633 bnep_send_conn_responce (p_bcb, BNEP_SETUP_CONN_OK);
638 else if (p_bcb->dst_uuid.len == 4)
640 BE_STREAM_TO_UINT32 (p_bcb->src_uuid.uu.uuid32, p_setup);
641 BE_STREAM_TO_UINT32 (p_bcb->dst_uuid.uu.uuid32, p_setup);
643 else if (p_bcb->dst_uuid.len == 16)
645 memcpy (p_bcb->src_uuid.uu.uuid128, p_setup, p_bcb->src_uuid.len);
646 p_setup += p_bcb->src_uuid.len;
647 memcpy (p_bcb->dst_uuid.uu.uuid128, p_setup, p_bcb->dst_uuid.len);
648 p_setup += p_bcb->dst_uuid.len;
653 BNEP_TRACE_ERROR1 ("BNEP - Bad UID len %d in ConnReq", p_bcb->dst_uuid.len);
654 bnep_send_conn_responce (p_bcb, BNEP_SETUP_INVALID_UUID_SIZE);
658 p_bcb->con_state = BNEP_STATE_SEC_CHECKING;
659 p_bcb->con_flags |= BNEP_FLAGS_SETUP_RCVD;
661 BNEP_TRACE_EVENT1 ("BNEP initiating security check for incoming call for uuid 0x%x", p_bcb->src_uuid.uu.uuid16);
663 if (p_bcb->con_flags & BNEP_FLAGS_CONN_COMPLETED)
664 bnep_sec_check_complete (p_bcb->rem_bda, p_bcb, BTM_SUCCESS);
667 btm_sec_mx_access_request (p_bcb->rem_bda, BT_PSM_BNEP, FALSE,
668 BTM_SEC_PROTO_BNEP, bnep_get_uuid32(&(p_bcb->src_uuid)),
669 &bnep_sec_check_complete, p_bcb);
686 void bnep_process_setup_conn_responce (tBNEP_CONN *p_bcb, UINT8 *p_setup)
693 if (p_bcb->con_state != BNEP_STATE_CONN_SETUP)
696 BNEP_TRACE_ERROR1 ("BNEP - setup response in bad state %d", p_bcb->con_state);
701 if (!(p_bcb->con_flags & BNEP_FLAGS_IS_ORIG))
703 BNEP_TRACE_ERROR1 ("BNEP - setup response when we are not originator", p_bcb->con_state);
732 if (p_bcb->con_flags & BNEP_FLAGS_CONN_COMPLETED)
737 p_bcb->con_state = BNEP_STATE_CONNECTED;
738 p_bcb->con_flags &= (~BNEP_FLAGS_SETUP_RCVD);
739 memcpy ((UINT8 *)&(p_bcb->src_uuid), (UINT8 *)&(p_bcb->prv_src_uuid), sizeof (tBT_UUID));
740 memcpy ((UINT8 *)&(p_bcb->dst_uuid), (UINT8 *)&(p_bcb->prv_dst_uuid), sizeof (tBT_UUID));
743 btu_stop_timer (&p_bcb->conn_tle);
744 p_bcb->re_transmits = 0;
748 (*bnep_cb.p_conn_state_cb) (p_bcb->handle, p_bcb->rem_bda, resp, TRUE);
756 L2CA_DisconnectReq (p_bcb->l2cap_cid);
759 if ((p_bcb->con_flags & BNEP_FLAGS_IS_ORIG) && (bnep_cb.p_conn_state_cb))
760 (*bnep_cb.p_conn_state_cb) (p_bcb->handle, p_bcb->rem_bda, resp, FALSE);
762 bnepu_release_bcb (p_bcb);
768 bnep_connected (p_bcb);
783 UINT8 *bnep_process_control_packet (tBNEP_CONN *p_bcb, UINT8 *p, UINT16 *rem_len, BOOLEAN is_ext)
817 bnep_process_setup_conn_req (p_bcb, p, (UINT8)len);
824 bnep_process_setup_conn_responce (p_bcb, p);
837 bnepu_process_peer_filter_set (p_bcb, p, len);
843 bnepu_process_peer_filter_rsp (p_bcb, p);
856 bnepu_process_peer_multicast_filter_set (p_bcb, p, len);
862 bnepu_process_multicast_filter_rsp (p_bcb, p);
869 bnep_send_command_not_understood (p_bcb, control_type);
900 void bnepu_process_peer_filter_set (tBNEP_CONN *p_bcb, UINT8 *p_filters, UINT16 len)
908 if ((p_bcb->con_state != BNEP_STATE_CONNECTED) &&
909 (!(p_bcb->con_flags & BNEP_FLAGS_CONN_COMPLETED)))
920 bnepu_send_peer_filter_rsp (p_bcb, BNEP_FILTER_CRL_BAD_RANGE);
948 bnepu_send_peer_filter_rsp (p_bcb, resp_code);
953 (*bnep_cb.p_filter_ind_cb) (p_bcb->handle, TRUE, 0, len, p_filters);
955 p_bcb->rcvd_num_filters = num_filters;
961 p_bcb->rcvd_prot_filter_start[xx] = start;
962 p_bcb->rcvd_prot_filter_end[xx] = end;
965 bnepu_send_peer_filter_rsp (p_bcb, resp_code);
967 bnepu_send_peer_filter_rsp (p_bcb, BNEP_FILTER_CRL_UNSUPPORTED);
982 void bnepu_process_peer_filter_rsp (tBNEP_CONN *p_bcb, UINT8 *p_data)
990 if ((p_bcb->con_state != BNEP_STATE_CONNECTED) &&
991 (!(p_bcb->con_flags & BNEP_FLAGS_CONN_COMPLETED)))
993 BNEP_TRACE_ERROR1 ("BNEP - filter response in bad state %d", p_bcb->con_state);
998 if (!(p_bcb->con_flags & BNEP_FLAGS_FILTER_RESP_PEND))
1005 btu_stop_timer (&p_bcb->conn_tle);
1006 p_bcb->con_flags &= ~BNEP_FLAGS_FILTER_RESP_PEND;
1007 p_bcb->re_transmits = 0;
1016 (*bnep_cb.p_filter_ind_cb) (p_bcb->handle, FALSE, result, 0, NULL);
1034 void bnepu_process_multicast_filter_rsp (tBNEP_CONN *p_bcb, UINT8 *p_data)
1042 if ((p_bcb->con_state != BNEP_STATE_CONNECTED) &&
1043 (!(p_bcb
1045 BNEP_TRACE_ERROR1 ("BNEP - multicast filter response in bad state %d", p_bcb->con_state);
1050 if (!(p_bcb->con_flags & BNEP_FLAGS_MULTI_RESP_PEND))
1057 btu_stop_timer (&p_bcb->conn_tle);
1058 p_bcb->con_flags &= ~BNEP_FLAGS_MULTI_RESP_PEND;
1059 p_bcb->re_transmits = 0;
1068 (*bnep_cb.p_mfilter_ind_cb) (p_bcb->handle, FALSE, result, 0, NULL);
1087 void bnepu_process_peer_multicast_filter_set (tBNEP_CONN *p_bcb, UINT8 *p_filters, UINT16 len)
1094 if ((p_bcb->con_state != BNEP_STATE_CONNECTED) &&
1095 (!(p_bcb->con_flags & BNEP_FLAGS_CONN_COMPLETED)))
1104 bnepu_send_peer_multicast_filter_rsp (p_bcb, BNEP_FILTER_CRL_BAD_RANGE);
1111 bnepu_send_peer_multicast_filter_rsp (p_bcb, BNEP_FILTER_CRL_MAX_REACHED);
1127 bnepu_send_peer_multicast_filter_rsp (p_bcb, BNEP_FILTER_CRL_BAD_RANGE);
1135 p_bcb->rcvd_mcast_filters = num_filters;
1138 memcpy (p_bcb->rcvd_mcast_filter_start[xx], p_filters, BD_ADDR_LEN);
1139 memcpy (p_bcb->rcvd_mcast_filter_end[xx], p_filters + BD_ADDR_LEN, BD_ADDR_LEN);
1143 if ((memcmp (null_bda, p_bcb->rcvd_mcast_filter_start[xx], BD_ADDR_LEN) == 0) &&
1144 (memcmp (null_bda, p_bcb->rcvd_mcast_filter_end[xx], BD_ADDR_LEN) == 0))
1146 p_bcb->rcvd_mcast_filters = 0xFFFF;
1151 BNEP_TRACE_EVENT1 ("BNEP multicast filters %d", p_bcb->rcvd_mcast_filters);
1152 bnepu_send_peer_multicast_filter_rsp (p_bcb, resp_code);
1155 (*bnep_cb.p_mfilter_ind_cb) (p_bcb->handle, TRUE, 0, len, p_filters);
1157 bnepu_send_peer_multicast_filter_rsp (p_bcb, BNEP_FILTER_CRL_UNSUPPORTED);
1171 void bnepu_send_peer_multicast_filter_rsp (tBNEP_CONN *p_bcb, UINT16 response_code)
1196 bnepu_check_send_packet (p_bcb, p_buf);
1213 tBNEP_CONN *p_bcb = (tBNEP_CONN *)p_ref_data;
1218 if (p_bcb->con_flags & BNEP_FLAGS_CONN_COMPLETED)
1224 if (p_bcb->con_state != BNEP_STATE_SEC_CHECKING)
1226 BNEP_TRACE_ERROR1 ("BNEP Connection in wrong state %d when security is completed", p_bcb->con_state);
1231 if (!(p_bcb->con_flags & BNEP_FLAGS_SETUP_RCVD))
1235 if (p_bcb->con_flags & BNEP_FLAGS_CONN_COMPLETED)
1239 (*bnep_cb.p_conn_state_cb) (p_bcb->handle, p_bcb->rem_bda, BNEP_SECURITY_FAIL, is_role_change);
1241 p_bcb->con_state = BNEP_STATE_CONNECTED;
1242 memcpy ((UINT8 *)&(p_bcb->src_uuid), (UINT8 *)&(p_bcb->prv_src_uuid), sizeof (tBT_UUID));
1243 memcpy ((UINT8 *)&(p_bcb->dst_uuid), (UINT8 *)&(p_bcb->prv_dst_uuid), sizeof (tBT_UUID));
1247 L2CA_DisconnectReq (p_bcb->l2cap_cid);
1251 (*bnep_cb.p_conn_state_cb) (p_bcb->handle, p_bcb->rem_bda, BNEP_SECURITY_FAIL, is_role_change);
1253 bnepu_release_bcb (p_bcb);
1258 p_bcb->con_state = BNEP_STATE_CONN_SETUP;
1260 bnep_send_conn_req (p_bcb);
1261 btu_start_timer (&p_bcb->conn_tle, BTU_TTYPE_BNEP, BNEP_CONN_TIMEOUT);
1268 bnep_send_conn_responce (p_bcb, BNEP_SETUP_CONN_NOT_ALLOWED);
1269 if (p_bcb->con_flags & BNEP_FLAGS_CONN_COMPLETED)
1272 p_bcb->con_state = BNEP_STATE_CONNECTED;
1273 p_bcb->con_flags &= (~BNEP_FLAGS_SETUP_RCVD);
1274 memcpy ((UINT8 *)&(p_bcb->src_uuid), (UINT8 *)&(p_bcb->prv_src_uuid), sizeof (tBT_UUID));
1275 memcpy ((UINT8 *)&(p_bcb->dst_uuid), (UINT8 *)&(p_bcb->prv_dst_uuid), sizeof (tBT_UUID));
1279 L2CA_DisconnectReq (p_bcb->l2cap_cid);
1281 bnepu_release_bcb (p_bcb);
1287 p_bcb->con_state = BNEP_STATE_CONN_SETUP;
1288 (*bnep_cb.p_conn_ind_cb) (p_bcb->handle, p_bcb->rem_bda, &p_bcb->dst_uuid, &p_bcb->src_uuid, is_role_change);
1293 bnep_send_conn_responce (p_bcb, resp_code);
1294 bnep_connected (p_bcb);
1312 tBNEP_RESULT bnep_is_packet_allowed (tBNEP_CONN *p_bcb,
1319 if (p_bcb->rcvd_num_filters)
1343 for (i=0; i<p_bcb->rcvd_num_filters; i++)
1345 if ((p_bcb->rcvd_prot_filter_start[i] <= proto) &&
1346 (proto <= p_bcb->rcvd_prot_filter_end[i]))
1350 if (i == p_bcb->rcvd_num_filters)
1361 p_bcb->rcvd_mcast_filters)
1366 if (p_bcb->rcvd_mcast_filters != 0xFFFF)
1369 for (i = 0; i < p_bcb->rcvd_mcast_filters; i++)
1371 if ((memcmp (p_bcb->rcvd_mcast_filter_start[i], p_dest_addr, BD_ADDR_LEN) <= 0) &&
1372 (memcmp (p_bcb->rcvd_mcast_filter_end[i], p_dest_addr, BD_ADDR_LEN) >= 0))
1381 if ((p_bcb->rcvd_mcast_filters == 0xFFFF) || (i == p_bcb->rcvd_mcast_filters))
1441 tBNEP_CONN *p_bcb;
1449 for (i = 0, p_bcb = bnep_cb.bcb; i < BNEP_MAX_CONNECTIONS; i++, p_bcb++)
1452 i, p_bcb->con_state, p_bcb->con_flags, p_bcb->l2cap_cid,
1453 p_bcb->rcvd_num_filters, p_bcb->rcvd_mcast_filters,
1454 p_bcb->src_uuid.uu.uuid16, p_bcb->dst_uuid.uu.uuid16,
1455 p_bcb->rem_bda[0], p_bcb->rem_bda[1], p_bcb->rem_bda[2],
1456 p_bcb->rem_bda[3], p_bcb->rem_bda[4], p_bcb->rem_bda[5]);