Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2debfa5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Disable PAN Reverse Tethering when connection originated by the Remote" into oc-dev

parents ee5796f8 3a7e3cb9
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -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;