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

Commit ab52e778 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 nyc-dev

parents 18b7207c 56e7ad8f
Loading
Loading
Loading
Loading
+33 −0
Original line number Original line Diff line number Diff line
@@ -222,6 +222,39 @@ void pan_conn_ind_cb (UINT16 handle,
        return;
        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.
     */
    BOOLEAN 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 */
    /* Requested destination role is */
    if (local_uuid->uu.uuid16 == UUID_SERVCLASS_PANU)
    if (local_uuid->uu.uuid16 == UUID_SERVCLASS_PANU)
        req_role = PAN_ROLE_CLIENT;
        req_role = PAN_ROLE_CLIENT;