From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.68]) by mx.groups.io with SMTP id smtpd.web10.16123.1683863245080796503 for ; Thu, 11 May 2023 20:47:25 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@nvidia.com header.s=selector2 header.b=l5ss8qGE; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.94.68, mailfrom: nicklew@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KQgo6qmSVowuMpzNJ4HfRnWBfccZScOGQIRt5oTA8USGdPEG80GALih87+YBdragLemqm9mA1HbkwlLjsfjDwjkoaG+Gjo84u1LvqQOvs/ka7EoyjiL7g3pjAXki5u9cCZEEDwshC1MGBlrhhvR1HdkMnIb5vtuv22pnDuSozu1UE6b8W0+9AGbHa2oQHg0AWKuBlmfwrRlgwV2Rj+lO0Bpx82fAJCJ4kGhNGX7Bl6PPKNpk2WC/Kb8Eb6ytEMsyJDs3dFqirvyo+6vUJFXJzt83g44JJwhkBur31XCzBim+6g5t8f8PS80Mg3RBpYh2ba6bLl+yupF4+jw1mf8CSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BSl67i1MBkWIATiKBYNiFB8dFwhwhJlLTyzdPmZth58=; b=aqqv0d/Htnw+ct+vtYtf5pheu0xjhK6fYN76fnIcjsxwjQoqa8jtTZoOyN6DYoNoqP6PwFaX9HSoiKF97tODLHPalITKrdXnq5rsTzSnmy+C48FwT1JLafEqT6EY/ZM1UEHAiJpTY9fX9BLOkgnfiLkKP3jUDFmy6dYN1eady1n5ekAWxi4F3GyL+O7OLnHzTwK4Nr6MP7zpJ/Qu/Yy/6OpRPSgWn8v+H/CtJ86IiWdazr7qqLeK4TFddq8b6TJHLCym/tXrJ3m+i2sRpOTmSEPNSBrnUApA/47WzVOAnEwpU7yJja4iErFcAHVUpwjstz2NRVN63Ly8pSH5us4xGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BSl67i1MBkWIATiKBYNiFB8dFwhwhJlLTyzdPmZth58=; b=l5ss8qGEh2Pz/FEvFU7xcm79MoimKL/azynmL9YYW7oMLPutJFUGgp3uVhypHzWuAbrGciW3BaCKWQ8KRnsbcZh0nVr7gvuamvK2Niq/5q+7JmPWNJVN/cKnsATanStpOojSbfP1o2vtV7/VjxBZFMXggjrKdWosP5svgmjUUAcTNZXLPkVeR6VmKTECFCKoFwA4ydY/APVJHRwjIkZ1AO7zyqfbH6mOdBsORdpH5jiFlr6MsQGPAl7PX61TPVADCsnR3mmgmvpUJZ0dp07sQKNvXlRlssLGQiHtk/KSbsL57MAv+P2bTLqD9HmxWIsH34vDW6foih5QY8wMLHN+Kg== Received: from DM5PR08CA0058.namprd08.prod.outlook.com (2603:10b6:4:60::47) by DM4PR12MB6229.namprd12.prod.outlook.com (2603:10b6:8:a8::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.33; Fri, 12 May 2023 03:47:22 +0000 Received: from DM6NAM11FT082.eop-nam11.prod.protection.outlook.com (2603:10b6:4:60:cafe::3c) by DM5PR08CA0058.outlook.office365.com (2603:10b6:4:60::47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.24 via Frontend Transport; Fri, 12 May 2023 03:47:21 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by DM6NAM11FT082.mail.protection.outlook.com (10.13.173.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.23 via Frontend Transport; Fri, 12 May 2023 03:47:21 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.5; Thu, 11 May 2023 20:47:07 -0700 Received: from rnnvmail202.nvidia.com (10.129.68.7) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37; Thu, 11 May 2023 20:47:07 -0700 Received: from NV-CL38DL3.nvidia.com (10.127.8.13) by mail.nvidia.com (10.129.68.7) with Microsoft SMTP Server id 15.2.986.37 via Frontend Transport; Thu, 11 May 2023 20:47:06 -0700 From: "Nickle Wang" To: CC: Abner Chang , Igor Kulchytskyy Subject: [edk2-redfish-client][PATCH 2/4] RedfishClientPkg: Add Redfish.Settings support Date: Fri, 12 May 2023 11:47:05 +0800 Message-ID: <20230512034705.8537-1-nicklew@nvidia.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Return-Path: nicklew@nvidia.com X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM11FT082:EE_|DM4PR12MB6229:EE_ X-MS-Office365-Filtering-Correlation-Id: 18f34a29-d32d-4dfc-0a22-08db529b9788 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xZS8aRTql+OKLhz38yVOI2kZDoI2PhA0NJiF0SsB8fYqxVbT+xGPxE2ps+2mgan+6NxkLIz57+/R4KBFwYE/IdFfSG+AaauPWX/ih/E92QdfWR0n+1dRBSz5TXayewCfGJblIoMn1fEPHBVnws9E/CMKBiPeSsVFzUeRsLNWa/DeJeRvl+CfXdHJipNwAtcKxI8lvuaDsTTgFXXRjwinzeWMCjqN2eR/F6ZsJ9ZJxB64Wk4YjLR1QNzLayKxSwO7xq1j+2VdMaPwZVBmC8t8UG0l7sJjWuu3rjrQd3l8XyZ/nAPiPBbTEQ4sUQ+18swackkauMRd9yom16eiASwfpdp04wFgDT8ScLbvP56QbhaxCCgFH2hL9WBPTmI+Y/v2EyBp+whhRH/RhonthEnysVYeifOdgvM3NPg1Hmh99k4fwuSpb5MfmUs/MZ6HkDZRMRvmjP4sUTbJj+kCGqEgQXChmjgNuKgwRovvugp4hncofk+6eB3s+Ic9hcDvLUZYOe5j4JYNUlwe7NWFUDE+Bzd6ncQSRPiiO89UNaAO9pfo22wR1xPFe5wWZsmypPydT+HbfgJDJi9YyKF4sIp005b/4vGryLVloPYmggctUv6XlnV9MI7QDqH9s45y3aqySiyArf79YnoqKnHAT+790oH33l38bHjFkHpexfcFvEKBNsJKyzPEo7O2DSzd+z3GDf9p84fBCgUtQzWuXKahpA== X-Forefront-Antispam-Report: CIP:216.228.117.160;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.nvidia.com;PTR:dc6edge1.nvidia.com;CAT:NONE;SFS:(13230028)(4636009)(346002)(39860400002)(136003)(376002)(396003)(451199021)(40470700004)(46966006)(36840700001)(36860700001)(36756003)(478600001)(7696005)(2616005)(426003)(336012)(40480700001)(40460700003)(47076005)(83380400001)(41300700001)(82740400003)(4326008)(356005)(5660300002)(82310400005)(7636003)(1076003)(54906003)(70206006)(86362001)(26005)(70586007)(6916009)(316002)(8936002)(19627235002)(8676002)(186003)(2906002);DIR:OUT;SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 May 2023 03:47:21.7178 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 18f34a29-d32d-4dfc-0a22-08db529b9788 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.117.160];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT082.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6229 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain BIOS feature driver cannot recognize "@Redfish.Settings", decode it and get pending setting URI. So BIOS feature driver can consume pending setting from correct place. Signed-off-by: Simon Wang Cc: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy --- .../Features/Bios/v1_0_9/Dxe/BiosDxe.c | 65 ++++++++++++++++--- 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c b/RedfishC= lientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c index 15ec208d..125e4eda 100644 --- a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c @@ -2,6 +2,7 @@ Redfish feature driver implementation - Bios =20 (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
+ Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. =20 SPDX-License-Identifier: BSD-2-Clause-Patent =20 @@ -101,7 +102,13 @@ RedfishResourceConsumeResource ( REDFISH_RESOURCE_COMMON_PRIVATE *Private; EFI_STATUS Status; REDFISH_RESPONSE Response; + REDFISH_RESPONSE *ExpectedResponse; + REDFISH_RESPONSE RedfishSettingsResponse; CHAR8 *Etag; + UINTN Index; + EDKII_JSON_VALUE JsonValue; + EFI_STRING RedfishSettingsUri; + CONST CHAR8 *RedfishSettingsUriKeys[] =3D { "@Redfi= sh.Settings", "SettingsObject", "@odata.id" }; =20 if ((This =3D=3D NULL) || IS_EMPTY_STRING (Uri)) { return EFI_INVALID_PARAMETER; @@ -119,8 +126,38 @@ RedfishResourceConsumeResource ( return Status; } =20 + ExpectedResponse =3D &Response; + RedfishSettingsUri =3D NULL; + JsonValue =3D RedfishJsonInPayload (Response.Payload); + + // + // Seeking RedfishSettings URI link. + // + for (Index =3D 0; Index < sizeof (RedfishSettingsUriKeys) / sizeof (*Red= fishSettingsUriKeys); Index++) { + if (JsonValue =3D=3D NULL) { + break; + } + + JsonValue =3D JsonObjectGetValue (JsonValueGetObject (JsonValue), Redf= ishSettingsUriKeys[Index]); + } + + if (JsonValue !=3D NULL) { + // + // Verify RedfishSettings URI link is valid to retrieve resource or no= t. + // + RedfishSettingsUri =3D JsonValueGetUnicodeString (JsonValue); + + Status =3D GetResourceByUri (Private->RedfishService, RedfishSettingsU= ri, &RedfishSettingsResponse); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a, @Redfish.Settings exists, get resource fro= m: %s failed\n", __FUNCTION__, RedfishSettingsUri)); + } else { + Uri =3D RedfishSettingsUri; + ExpectedResponse =3D &RedfishSettingsResponse; + } + } + Private->Uri =3D Uri; - Private->Payload =3D Response.Payload; + Private->Payload =3D ExpectedResponse->Payload; ASSERT (Private->Payload !=3D NULL); =20 Private->Json =3D JsonDumpString (RedfishJsonInPayload (Private->Payload= ), EDKII_JSON_COMPACT); @@ -130,7 +167,7 @@ RedfishResourceConsumeResource ( // Find etag in HTTP response header // Etag =3D NULL; - Status =3D GetEtagAndLocation (&Response, &Etag, NULL); + Status =3D GetEtagAndLocation (ExpectedResponse, &Etag, NULL); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, failed to get ETag from HTTP header\n", __FU= NCTION__)); } @@ -153,12 +190,24 @@ RedfishResourceConsumeResource ( // Release resource // if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); + if (Response.Payload !=3D NULL) { + RedfishFreeResponse ( + Response.StatusCode, + Response.HeaderCount, + Response.Headers, + Response.Payload + ); + } + + if (RedfishSettingsResponse.Payload !=3D NULL) { + RedfishFreeResponse ( + RedfishSettingsResponse.StatusCode, + RedfishSettingsResponse.HeaderCount, + RedfishSettingsResponse.Headers, + RedfishSettingsResponse.Payload + ); + } + Private->Payload =3D NULL; } =20 --=20 2.17.1