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

Commit 09bdf32b authored by Pavlin Radoslavov's avatar Pavlin Radoslavov Committed by android-build-merger
Browse files

Merge "Disable PAN Reverse Tethering when connection originated by the Remote"...

Merge "Disable PAN Reverse Tethering when connection originated by the Remote" into nyc-dev am: ab52e778 am: 2d2c6bf6
am: de0ddb05

Change-Id: I8635a23f75175bcde855ddf925ce2da0efd7de2b
parents 814fdea7 de0ddb05
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;