Loading system/stack/pan/pan_main.cc +33 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,39 @@ void pan_conn_ind_cb(uint16_t handle, BD_ADDR p_bda, tBT_UUID* remote_uuid, return; } /* Check for valid interactions between the three PAN profile roles */ /* * For reference, see Table 1 in PAN Profile v1.0 spec. * Note: the remote is the initiator. */ bool is_valid_interaction = false; switch (remote_uuid->uu.uuid16) { case UUID_SERVCLASS_NAP: case UUID_SERVCLASS_GN: if (local_uuid->uu.uuid16 == UUID_SERVCLASS_PANU) is_valid_interaction = true; break; case UUID_SERVCLASS_PANU: is_valid_interaction = true; break; } /* * Explicitly disable connections to the local PANU if the remote is * not PANU. */ if ((local_uuid->uu.uuid16 == UUID_SERVCLASS_PANU) && (remote_uuid->uu.uuid16 != UUID_SERVCLASS_PANU)) { is_valid_interaction = false; } if (!is_valid_interaction) { PAN_TRACE_ERROR( "PAN Connection failed because of invalid PAN profile roles " "interaction: Remote UUID 0x%x Local UUID 0x%x", remote_uuid->uu.uuid16, local_uuid->uu.uuid16); BNEP_ConnectResp(handle, BNEP_CONN_FAILED_SRC_UUID); return; } /* Requested destination role is */ if (local_uuid->uu.uuid16 == UUID_SERVCLASS_PANU) req_role = PAN_ROLE_CLIENT; Loading Loading
system/stack/pan/pan_main.cc +33 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,39 @@ void pan_conn_ind_cb(uint16_t handle, BD_ADDR p_bda, tBT_UUID* remote_uuid, return; } /* Check for valid interactions between the three PAN profile roles */ /* * For reference, see Table 1 in PAN Profile v1.0 spec. * Note: the remote is the initiator. */ bool is_valid_interaction = false; switch (remote_uuid->uu.uuid16) { case UUID_SERVCLASS_NAP: case UUID_SERVCLASS_GN: if (local_uuid->uu.uuid16 == UUID_SERVCLASS_PANU) is_valid_interaction = true; break; case UUID_SERVCLASS_PANU: is_valid_interaction = true; break; } /* * Explicitly disable connections to the local PANU if the remote is * not PANU. */ if ((local_uuid->uu.uuid16 == UUID_SERVCLASS_PANU) && (remote_uuid->uu.uuid16 != UUID_SERVCLASS_PANU)) { is_valid_interaction = false; } if (!is_valid_interaction) { PAN_TRACE_ERROR( "PAN Connection failed because of invalid PAN profile roles " "interaction: Remote UUID 0x%x Local UUID 0x%x", remote_uuid->uu.uuid16, local_uuid->uu.uuid16); BNEP_ConnectResp(handle, BNEP_CONN_FAILED_SRC_UUID); return; } /* Requested destination role is */ if (local_uuid->uu.uuid16 == UUID_SERVCLASS_PANU) req_role = PAN_ROLE_CLIENT; Loading