From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web11.14919.1658886000342940579 for ; Tue, 26 Jul 2022 18:40:00 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=HLtF2zmE; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: hpe.com, ip: 148.163.147.86, mailfrom: prvs=0207a15765=nickle.wang@hpe.com) Received: from pps.filterd (m0134422.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 26R1TwHC031646; Wed, 27 Jul 2022 01:39:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=bj7C4cJvMhnmeobz7bJyxLtwxm/FF0pz08wENDT1cHc=; b=HLtF2zmEDgL4iF2tsu3CgFp2uELR9IipaTUBBDHGx4EUPt3VJ6WW2t7okHCP/evDXBXU UQ73W07uJbYZ9GfmvH0oCygMr67u71vw7gNAUc7MFSLt0wEuICgp+jybli/jUC73YacQ mLWiH8Mns5wjXVbpE1Z2Rnqry6YC2vTx+GT+sBbLC2ZOjp71yGue8wTE1OaTqpMYzXmK 1reKvpUqzBr+ltAbBfEm3ky4zrFs/pKNpyHsPHbBOKdb2bsTs5+Hdo3Hd8V7XJJ3pNMi xmb2HGZGxYKDS+itD8vJ6K0Q+Ty3H59AhE8UUi3VvekHCROfx3BUP64bF2b7IszsNSn4 Hw== Received: from p1lg14879.it.hpe.com (p1lg14879.it.hpe.com [16.230.97.200]) by mx0b-002e3701.pphosted.com (PPS) with ESMTPS id 3hjur982q6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 27 Jul 2022 01:39:58 +0000 Received: from p1wg14926.americas.hpqcorp.net (unknown [10.119.18.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by p1lg14879.it.hpe.com (Postfix) with ESMTPS id E14F0D2D2; Wed, 27 Jul 2022 01:39:57 +0000 (UTC) Received: from p1wg14928.americas.hpqcorp.net (10.119.18.116) by p1wg14926.americas.hpqcorp.net (10.119.18.115) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Tue, 26 Jul 2022 13:39:57 -1200 Received: from p1wg14919.americas.hpqcorp.net (16.230.19.122) by p1wg14928.americas.hpqcorp.net (10.119.18.116) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15 via Frontend Transport; Tue, 26 Jul 2022 13:39:57 -1200 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (192.58.206.38) by edge.it.hpe.com (16.230.19.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Tue, 26 Jul 2022 13:39:56 -1200 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LwSdlCN1d9STpu7VPgeoI8qjf68t0IL1zIVc0JOpV2K2xUQLzAsB18aN0RxWoTF4/83yBk32gFShJxf8iS+4gAYVeXEV+22LXZcKaBHcZRhGOBDFPbGNJypwH/E5AE4r7tpPfqHE7ivmcLmLia3ytqilPjxePLOzRBg35o3tuhW88auE2I7XEm4eqpDpPyF7WfgkA0UufY6WMbbfpoz5H8W/8EeJuxzXm3kDPNgGqEgiaOKnNu1oqiknBkmaYNkHOmPLdQvsXNVp8FlYNZ2+rRGTzenb74K9xT+aTOxY0YRtRDdQBXbrwz+7A4LmMd2I0+tHqhWsy0R37patSg1qDg== 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=bj7C4cJvMhnmeobz7bJyxLtwxm/FF0pz08wENDT1cHc=; b=M2dYumDcLdBEga1Yy9c6aXboJIrqSOslNDn98tdKmYgb4DUqiR1e/L3QBnZLolyq/3WNd6vWbyC/5F3W6fea+Bujm2KyR0GFifsaOcmixSzG8sROSGLj8WuCTAneUwQ4O1Y1V7i1KaeKipFkDkKRF5q2XYZkxFI+uvcTft45fZ5zL7vJWwUVhGaRK40IHr/v14UnFPLrp5MM6dWC/PvL1aq7ejxyguZ2LyLe3yqMfjhMGX2qPYZ68cgNg2d+MeaKDUiYltPPnWYd7LfT92KHmyMF1BVdpKd/KnrhBHGFHfRe7H3aAuHFTLXvAdEFMKPNAjEeIhOnhOyyg8FSUljdyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from MW4PR84MB1729.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:303:1a4::16) by SA1PR84MB3238.NAMPRD84.PROD.OUTLOOK.COM (2603:10b6:806:25a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.25; Wed, 27 Jul 2022 01:39:55 +0000 Received: from MW4PR84MB1729.NAMPRD84.PROD.OUTLOOK.COM ([fe80::7925:4fe2:1b5b:9019]) by MW4PR84MB1729.NAMPRD84.PROD.OUTLOOK.COM ([fe80::7925:4fe2:1b5b:9019%5]) with mapi id 15.20.5458.025; Wed, 27 Jul 2022 01:39:55 +0000 From: "Nickle Wang" To: "Chang, Abner" , "devel@edk2.groups.io" CC: "Yang, Atom" , Nick Ramirez Subject: Re: [edk2-staging][PATCH v2 05/15] edk2-staging/RedfishClientPkg: Introduce resource identify library Thread-Topic: [edk2-staging][PATCH v2 05/15] edk2-staging/RedfishClientPkg: Introduce resource identify library Thread-Index: AQHYn8bq7pHlN9qBZkGOaBfB6VU6/q2P574wgAGMCwA= Date: Wed, 27 Jul 2022 01:39:55 +0000 Message-ID: References: <20220725013555.926-1-nickle.wang@hpe.com> <20220725013555.926-6-nickle.wang@hpe.com> In-Reply-To: Accept-Language: en-US, zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2022-07-26T02:04:09Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=60e5eafa-2196-4e58-8182-b849ac3de49c; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 75d01350-f4fa-448e-76cd-08da6f70e850 x-ms-traffictypediagnostic: SA1PR84MB3238:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DXd37FAUH7kRqeBqO23TrkZu8I6CGAxvwU/+isImK07UBtqiUuoU6loqaU+1hptZ0v+E68clB3Pr045cxVetrrK5qzHosHFnVuC9D2vuAX/CZfPvgiPhEbVIdRivjJET6nmPSTCGmIUfgBGz9oZm/OZSczXRYtAys5qBhaCj+pG7Iz/yoRBvk/W20Dx3fcHtd4VnoCOZHHxaPJBnSydToQE3/ulCWF4Oq84v443MAPo143bF1w+4i9gSx9DJItksymCIxf0/U9d84H/aiUmqijw4mOVzs+cl28PqjTNuTIbVpxk/CZuHAE+RA4+4lQ8c4doCF9s0we4MkNsFAA5U4z6aKPWHKRz7YvWsNkPDUGLzMDsbVPb9DSfQRGhReTU+bWtXUx2Oq8ynsOltMvlodz/a72hhQ0b4uNlZsYRIRakX/sptPfhvmP1/c+ZIGx5QyKAlIEW5DfUzgXH8JKvHlXiYgRgFHSlFm5n8SvtqmUDx8HRSgfLIJcpwToa2fQyCbm13T7mwvOxmpBJrEgKgaFNiXGgNyd0q9lixnL4eRybs9QwkiNGV1INNRPlu/GRd8QWcbOhC8VcY2I5UMtVlFR41teacEZyB8CW4hpYi7s0Y1IDl5zPWGv6crBc1X+naKx7o0FscX6YDcHHw3aNID1HQg2KbvMYV6k2hs0HEWn9yhShdhqy0b5UaWLSWbdhqTwobyrGV8iQsFOIvmPA9XXmJjJiFkQ+ySwdOd1oXUMPUNPGr92DHtDUDiLnmMSzWwVh5DPqjzRzHKKhmuFaI3kTqLhGL4dOarupzESG0gHrrMPqTxbO/N/WeBy94yMci x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR84MB1729.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230016)(346002)(396003)(366004)(39860400002)(136003)(376002)(9686003)(6506007)(26005)(30864003)(7696005)(55236004)(186003)(53546011)(83380400001)(8936002)(2906002)(52536014)(41300700001)(478600001)(122000001)(66946007)(38100700002)(33656002)(19627235002)(86362001)(71200400001)(66556008)(55016003)(82960400001)(5660300002)(8676002)(66446008)(64756008)(4326008)(38070700005)(110136005)(316002)(76116006)(54906003)(66476007);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?+nU3JXQnjujoYBltfeu0q7MZAYa/W6FAucHjbXKZnnxJK+1nRYq1ureH7dRn?= =?us-ascii?Q?V5oklzWGBZbsw3xfiUXwYhBjGOv7HRj2MsFdh/BjxjpuHTXy3p+UZxj2c5gP?= =?us-ascii?Q?8S0Bxj3Zyd2otRZfspEIFjMRrDsPAApmf2z4uOL9BtL0NyjQ3Obj0cdYOB8J?= =?us-ascii?Q?IxV2RhhnfhIj73EuIoxMIm8Bwp+apnReIL3aLdY655+TK5e+6C375vD5P/AV?= =?us-ascii?Q?BMrn+WxrPxIMgb4F8llZajNjaFjZ4TWN3Lkp+jezFRYXUSlkGT4Y7lSlI887?= =?us-ascii?Q?rXBZ6ZoRXHNvh+85/rHmxXeQdKkmiP2zn7kXzUPKtAp/IB9CrkWH+XZaRlME?= =?us-ascii?Q?g0Udaebp1GEEkzOERMtivCb65TYH9qymkGjOuGxs1DIuDYEE1bX4rPOEEVZG?= =?us-ascii?Q?3zi8n2+VlqOi90pMhUqVvqFzh6URnIpFHuMQOelLwpj+FskGOD4gMALftO/Y?= =?us-ascii?Q?6s/1MbK58K+s6OVoACIftkYiRR0rt6Z9TFC+v0w7bpG8iuljWLe2VnHNNSjC?= =?us-ascii?Q?m2q+BU7P9hBcij/an0TYZgPVe0Rx0Z6oml2qnx/CX9fWxHneD/H02BGF3/ER?= =?us-ascii?Q?QzV82ly5MyhdXajqscemIrBQBsWYon9NEAUj1FU5DwJbNLhxW8tA0VIe/h8/?= =?us-ascii?Q?NKKJUkrrziGSSRchyi8kj3JIQjV8o4PEcYYeNKH56RfqoYUY+KDKWc4CWYUb?= =?us-ascii?Q?+W6QkNp6EVeYSRxDHJcb2EVmIWD/dtRTthW/0ZhVRJppBJLS2cmHzg6RJ27W?= =?us-ascii?Q?hWSqVpHo2A3IShKUoLtXPsImj6wf8EHTZgDqTbAjDPc0TC/gLLROV2HI2uMX?= =?us-ascii?Q?zPcUjivDIf7S3d4RCOhOCPOYiIsuy5UbgkisRmMZQNosg8tTbKdywBYBRaZG?= =?us-ascii?Q?0P8b/Y7L5jHqgTZGQijK0RqPkknzMPVBqFhNZ1A/rNkqEsgP0XuyLosST9R6?= =?us-ascii?Q?86IUgIYfWQ7F4BdV/k6Vf334ZecTFy2cT3bwXFARroMtFY8sp1aPiSGXb2vE?= =?us-ascii?Q?87qqnIIrWRAx6aFoeFhqpRQHeWUOkIzbwY8Zw4I3bpA13vKNzLHDn6yVPJkQ?= =?us-ascii?Q?wNNR79ehny3zzTgWy1PHC4lXeHP/Nglqi6ZiiTjse/rIiAhWFUp0Ar48BnUI?= =?us-ascii?Q?FB9cGEDpwBujShVgRVMewpiScSIvUg5MOVP2RFii4QqHabtiLJvrWQo01cpm?= =?us-ascii?Q?2GVVa8rhQ2gRccjpU1gEOYYJup3zdvAtDHJYryq4TC2dYUZxNGqg4dgVDk6G?= =?us-ascii?Q?+fpDCCYUhtCO0u/VwWufWdYGr50t4Ov/h0s8T0EMtdNrxIrBpEkvMOD2TnhW?= =?us-ascii?Q?dXNagR+J1ruibIJjOsJg7xtPgrmVpkH9byVkXk3qKRqvUvI7kza1AW5nq7B5?= =?us-ascii?Q?Ap6yWQJJa8Tz4sdlGkuEL8PDX2teVqovZolbfGE2pTIg9GmJ5hHIPRX7PlFb?= =?us-ascii?Q?WwqeLiJ/ZutxQZF2asIHsglb/Osr2mblNV8Aj7G+hqMc+BS+3mcBpVPNg2Wi?= =?us-ascii?Q?6Kah4VkK4hAVntOSJ0mZ6VG1O9t66YDaEJJ5hRfm54AiJDGj7rIghZr4qFzN?= =?us-ascii?Q?KAXXmgti08xZnVVg22hNLzSbrPG1nAZOoTPkEO2w?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR84MB1729.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 75d01350-f4fa-448e-76cd-08da6f70e850 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jul 2022 01:39:55.0641 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: L2/qFS/zl2S6wdR5uiVWWwKfpDBbQCHzlcJCBYwGhIgioVP8zvn8iYetk4OFyC9jCYZ1kFuHKxpz9xkVDx/D2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR84MB3238 X-OriginatorOrg: hpe.com X-Proofpoint-GUID: C7CZgABxAXy4zAIllEm39gNx77s36MmF X-Proofpoint-ORIG-GUID: C7CZgABxAXy4zAIllEm39gNx77s36MmF X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-07-26_07,2022-07-26_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 mlxscore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 suspectscore=0 adultscore=0 spamscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2207270002 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Thanks Abner! Review comments for 04/15 and 05/15 are addressed in version = 3. Nickle -----Original Message----- From: Chang, Abner =20 Sent: Tuesday, July 26, 2022 10:04 AM To: Wang, Nickle (Server BIOS) ; devel@edk2.groups.io Cc: Yang, Atom ; Nick Ramirez Subject: RE: [edk2-staging][PATCH v2 05/15] edk2-staging/RedfishClientPkg: = Introduce resource identify library [AMD Official Use Only - General] Comment in-line. You can search [Chang, Abner] for the comment. > -----Original Message----- > From: Nickle Wang > Sent: Monday, July 25, 2022 9:36 AM > To: devel@edk2.groups.io > Cc: Chang, Abner ; Yang, Atom=20 > ; Nick Ramirez > Subject: [edk2-staging][PATCH v2 05/15] edk2-staging/RedfishClientPkg: > Introduce resource identify library >=20 > [CAUTION: External Email] >=20 > Introduce resource identify library which works with resource config=20 > protocol to identify Redfish resource. This library provides the=20 > flexibility for platform to implement its own policy and identify=20 > resource. Two library implementation are provided as demonstration=20 > code. NULL version of library accepts all Redfish resource and another=20 > implementation to computer system resource uses UUID to identify Redfish = resource. >=20 > Signed-off-by: Nickle Wang > Cc: Abner Chang > Cc: Yang Atom > Cc: Nick Ramirez > --- > .../Library/RedfishResourceIdentifyLib.h | 29 ++++ > .../RedfishResourceIdentifyLibComuterSystem.c | 164 > ++++++++++++++++++ ...edfishResourceIdentifyLibComuterSystem.inf | =20 > ++++++++++++++++++ 42 > +++++ > .../RedfishResourceIdentifyLibNull.c | 37 ++++ > .../RedfishResourceIdentifyLibNull.inf | 37 ++++ > RedfishClientPkg/RedfishClientLibs.dsc.inc | 2 +- > RedfishClientPkg/RedfishClientPkg.dec | 1 + > 7 files changed, 311 insertions(+), 1 deletion(-) create mode 100644=20 > RedfishClientPkg/Include/Library/RedfishResourceIdentifyLib.h > create mode 100644 > RedfishClientPkg/Library/RedfishResourceIdentifyLibComuterSystem/v1_5_ > 0/Re dfishResourceIdentifyLibComuterSystem.c > create mode 100644 > RedfishClientPkg/Library/RedfishResourceIdentifyLibComuterSystem/v1_5_ > 0/Re dfishResourceIdentifyLibComuterSystem.inf > create mode 100644 > RedfishClientPkg/Library/RedfishResourceIdentifyLibNull/RedfishResourc > eIdenti > fyLibNull.c > create mode 100644 > RedfishClientPkg/Library/RedfishResourceIdentifyLibNull/RedfishResourc > eIdenti > fyLibNull.inf >=20 > diff --git=20 > a/RedfishClientPkg/Include/Library/RedfishResourceIdentifyLib.h > b/RedfishClientPkg/Include/Library/RedfishResourceIdentifyLib.h > new file mode 100644 > index 0000000000..91d01b7d68 > --- /dev/null > +++ b/RedfishClientPkg/Include/Library/RedfishResourceIdentifyLib.h > @@ -0,0 +1,29 @@ > +/** @file > + This file defines the Redfish resource identify Library interface. > + > + (C) Copyright 2022 Hewlett Packard Enterprise Development LP
> + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef REDFISH_RESOURCE_IDENTIFY_LIB_H_ #define=20 > +REDFISH_RESOURCE_IDENTIFY_LIB_H_ > + > +/** > + Identify resource from given URI and context in JSON format > + > + @param[in] Uri URI of given Redfish resource > + @param[in] Json Context in JSON format of give Redfish resource > + > + @retval TRUE This is the Redfish resource that we have to handl= e. > + @retval FALSE We don't handle this Redfish resource. > + > +**/ > +BOOLEAN > +RedfishIdentifyResource ( > + IN EFI_STRING Uri, > + IN CHAR8 *Json > + ); > + > +#endif > diff --git > a/RedfishClientPkg/Library/RedfishResourceIdentifyLibComuterSystem/v1_ > 5_0/ RedfishResourceIdentifyLibComuterSystem.c > b/RedfishClientPkg/Library/RedfishResourceIdentifyLibComuterSystem/v1_ > 5_0/ RedfishResourceIdentifyLibComuterSystem.c > new file mode 100644 > index 0000000000..e5699f194c > --- /dev/null > +++ b/RedfishClientPkg/Library/RedfishResourceIdentifyLibComuterSystem > +++ /v 1_5_0/RedfishResourceIdentifyLibComuterSystem.c > @@ -0,0 +1,164 @@ > +/** @file > + Redfish resource identify library implementation for computer=20 > +system version 1.5.0 > + > + (C) Copyright 2022 Hewlett Packard Enterprise Development LP
> + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > +#include > + > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > + > +#include > + > > + > +EFI_REST_JSON_STRUCTURE_PROTOCOL *mJsonStructProtocol =3D NULL; > + > +/** > + Identify resource from given URI and context in JSON format > + > + @param[in] Uri URI of given Redfish resource > + @param[in] Json Context in JSON format of give Redfish resource > + > + @retval TRUE This is the Redfish resource that we have to handl= e. > + @retval FALSE We don't handle this Redfish resource. > + > +**/ > +BOOLEAN > +RedfishIdentifyResource ( > + IN EFI_STRING Uri, > + IN CHAR8 *Json > + ) > +{ > + EFI_STATUS Status; > + EFI_REDFISH_COMPUTERSYSTEM_V1_5_0 *ComputerSystem; > + EFI_REDFISH_COMPUTERSYSTEM_V1_5_0_CS *ComputerSystemCs; > + EFI_GUID SystemUuid; > + EFI_GUID ResourceUuid; > + > + if (IS_EMPTY_STRING (Uri) || IS_EMPTY_STRING (Json)) { > + return FALSE; > + } > + > + if (mJsonStructProtocol =3D=3D NULL) { > + return FALSE; > + } > + > + ComputerSystem =3D NULL; > + ComputerSystemCs =3D NULL; > + > + Status =3D mJsonStructProtocol->ToStructure ( > + mJsonStructProtocol, > + NULL, > + Json, > + (EFI_REST_JSON_STRUCTURE_HEADER > **)&ComputerSystem > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "%a, ToStructure() failed: %r\n",=20 > + __FUNCTION__, > Status)); > + return FALSE; > + } > + > + ComputerSystemCs =3D ComputerSystem->ComputerSystem; > + > + if (IS_EMPTY_STRING (ComputerSystemCs->UUID)) { > + return FALSE; > + } > + > + Status =3D AsciiStrToGuid (ComputerSystemCs->UUID, &ResourceUuid); =20 > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "%a, fail to get resource UUID: %r\n", > __FUNCTION__, Status)); > + return FALSE; > + } > + > + Status =3D NetLibGetSystemGuid (&SystemUuid); if (EFI_ERROR=20 > + (Status)) { > + DEBUG ((DEBUG_ERROR, "%a, fail to get system UUID from SMBIOS:=20 > + %r\n", > __FUNCTION__, Status)); > + return FALSE; > + } > + > + DEBUG ((REDFISH_DEBUG_TRACE, "%a, Identify: System: %g Resource: > + %g\n", __FUNCTION__, &SystemUuid, &ResourceUuid)); if (CompareGuid > (&ResourceUuid, &SystemUuid)) { > + Status =3D EFI_SUCCESS; > + } else { > + Status =3D EFI_UNSUPPORTED; > + } > + > + mJsonStructProtocol->DestoryStructure ( > + mJsonStructProtocol, > + (EFI_REST_JSON_STRUCTURE_HEADER *)ComputerSystem > + ); > + > + return (Status =3D=3D EFI_SUCCESS ? TRUE : FALSE); } > + > +/** > + Callback function when gEfiRestJsonStructureProtocolGuid is installed. > + > + @param[in] Event Event whose notification function is being invoked= . > + @param[in] Context Pointer to the notification function's context. > +**/ > +VOID > +EFIAPI > +RestJasonStructureProtocolIsReady > + ( > + IN EFI_EVENT Event, > + IN VOID *Context > + ) > +{ > + EFI_STATUS Status; > + > + if (mJsonStructProtocol !=3D NULL) { > + return; > + } > + > + Status =3D gBS->LocateProtocol ( > + &gEfiRestJsonStructureProtocolGuid, > + NULL, > + (VOID **)&mJsonStructProtocol > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "%a, failed to locate > + gEfiRestJsonStructureProtocolGuid: %r\n", __FUNCTION__, Status)); } > + > + gBS->CloseEvent (Event); > +} > + > +/** > + > + Install JSON protocol notification > + > + @param[in] ImageHandle The image handle. > + @param[in] SystemTable The system table. > + > + @retval EFI_SUCEESS Install Boot manager menu success. > + @retval Other Return error status. > + > +**/ > +EFI_STATUS > +EFIAPI > +RedfishResourceIdentifyComuterSystemConstructor ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + VOID *Registration; > + > + EfiCreateProtocolNotifyEvent ( > + &gEfiRestJsonStructureProtocolGuid, > + TPL_CALLBACK, > + RestJasonStructureProtocolIsReady, > + NULL, > + &Registration > + ); > + > + return EFI_SUCCESS; > +} > diff --git > a/RedfishClientPkg/Library/RedfishResourceIdentifyLibComuterSystem/v1_ > 5_0/ RedfishResourceIdentifyLibComuterSystem.inf > b/RedfishClientPkg/Library/RedfishResourceIdentifyLibComuterSystem/v1_ > 5_0/ RedfishResourceIdentifyLibComuterSystem.inf > new file mode 100644 > index 0000000000..862522cdf6 > --- /dev/null > +++ b/RedfishClientPkg/Library/RedfishResourceIdentifyLibComuterSystem > +++ /v 1_5_0/RedfishResourceIdentifyLibComuterSystem.inf > @@ -0,0 +1,42 @@ > +## @file > +# > +# (C) Copyright 2022 Hewlett Packard Enterprise Development LP
#=20 > +# > +SPDX-License-Identifier: BSD-2-Clause-Patent # ## > + > +[Defines] > + INF_VERSION =3D 0x00010006 > + BASE_NAME =3D RedfishResourceIdentifyLibComuterSy= stem > + FILE_GUID =3D 2AEE2C80-126A-44A6-877E-642F20510D1= 3 > + MODULE_TYPE =3D DXE_DRIVER > + VERSION_STRING =3D 1.0 > + LIBRARY_CLASS =3D RedfishResourceIdentifyLib| DXE_DRI= VER > + CONSTRUCTOR =3D > RedfishResourceIdentifyComuterSystemConstructor > + > +# > +# VALID_ARCHITECTURES =3D IA32 X64 EBC > +# > + > +[Sources] > + RedfishResourceIdentifyLibComuterSystem.c > + > +[Packages] > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + NetworkPkg/NetworkPkg.dec > + RedfishPkg/RedfishPkg.dec > + RedfishClientPkg/RedfishClientPkg.dec > + > +[LibraryClasses] > + BaseLib > + DebugLib > + UefiBootServicesTableLib > + UefiLib > + > +[Protocols] > + gEfiRestJsonStructureProtocolGuid ## CONSUMES > + > +[Pcd] > + > diff --git > a/RedfishClientPkg/Library/RedfishResourceIdentifyLibNull/RedfishResou > rceIde > ntifyLibNull.c > b/RedfishClientPkg/Library/RedfishResourceIdentifyLibNull/RedfishResou > rceIde > ntifyLibNull.c > new file mode 100644 > index 0000000000..98eb8fde47 > --- /dev/null > +++ b/RedfishClientPkg/Library/RedfishResourceIdentifyLibNull/RedfishR > +++ es > +++ ourceIdentifyLibNull.c > @@ -0,0 +1,37 @@ > +/** @file > + Redfish resource identify NULL library implementation > + > + (C) Copyright 2022 Hewlett Packard Enterprise Development LP
> + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > +#include > +#include > +#include > +#include > + > +/** > + Identify resource from given URI and context in JSON format > + > + @param[in] Uri URI of given Redfish resource > + @param[in] Json Context in JSON format of give Redfish resource > + > + @retval TRUE This is the Redfish resource that we have to handl= e. > + @retval FALSE We don't handle this Redfish resource. > + > +**/ > +BOOLEAN > +RedfishIdentifyResource ( > + IN EFI_STRING Uri, > + IN CHAR8 *Json > + ) > +{ > + if (!IS_EMPTY_STRING (Uri)) { > + DEBUG ((DEBUG_VERBOSE, "%a, accept resource: %s\n", __FUNCTION__,=20 > +Uri)); > + } > + > + return TRUE; > +} > diff --git > a/RedfishClientPkg/Library/RedfishResourceIdentifyLibNull/RedfishResou > rceIde > ntifyLibNull.inf > b/RedfishClientPkg/Library/RedfishResourceIdentifyLibNull/RedfishResou > rceIde > ntifyLibNull.inf > new file mode 100644 > index 0000000000..092e180305 > --- /dev/null > +++ b/RedfishClientPkg/Library/RedfishResourceIdentifyLibNull/RedfishR > +++ es > +++ ourceIdentifyLibNull.inf > @@ -0,0 +1,37 @@ > +## @file > +# > +# (C) Copyright 2022 Hewlett Packard Enterprise Development LP
#=20 > +# > +SPDX-License-Identifier: BSD-2-Clause-Patent # ## > + > +[Defines] > + INF_VERSION =3D 0x00010006 > + BASE_NAME =3D RedfishResourceIdentifyLibNull > + FILE_GUID =3D 6FFD4E25-48F8-4CB6-B194-CFAB407316E= 1 > + MODULE_TYPE =3D DXE_DRIVER > + VERSION_STRING =3D 1.0 > + LIBRARY_CLASS =3D RedfishResourceIdentifyLib| DXE_DRI= VER > + > +# > +# VALID_ARCHITECTURES =3D IA32 X64 EBC > +# > + > +[Sources] > + RedfishResourceIdentifyLibNull.c > + > +[Packages] > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + RedfishPkg/RedfishPkg.dec > + RedfishClientPkg/RedfishClientPkg.dec > + > +[LibraryClasses] > + BaseLib > + DebugLib > + > +[Protocols] > + > +[Pcd] [Chang, Abner] We can remove Protocol and Pcd section if we don need anything for them. Thanks. Abner > + > diff --git a/RedfishClientPkg/RedfishClientLibs.dsc.inc > b/RedfishClientPkg/RedfishClientLibs.dsc.inc > index 8acb479170..413b83a732 100644 > --- a/RedfishClientPkg/RedfishClientLibs.dsc.inc > +++ b/RedfishClientPkg/RedfishClientLibs.dsc.inc > @@ -27,7 +27,7 @@ >=20 > RedfishPlatformConfigLib|RedfishPkg/Library/RedfishPlatformConfigLib/R > RedfishPlatformConfigLib|edfish > PlatformConfigLib.inf >=20 > RedfishContentCodingLib|RedfishPkg/Library/RedfishContentCodingLibNull > RedfishContentCodingLib|/Red > fishContentCodingLibNull.inf >=20 > ConverterCommonLib|RedfishClientPkg/ConverterLib/edk2library/Converter > ConverterCommonLib|Co > mmonLib/ConverterCommonLib.inf > - > + > + RedfishResourceIdentifyLib|RedfishClientPkg/Library/RedfishResourceI > + RedfishResourceIdentifyLib|de > + ntifyLibNull/RedfishResourceIdentifyLibNull.inf >=20 > EdkIIRedfishResourceConfigLib|RedfishClientPkg/Library/EdkIIRedfishRes > EdkIIRedfishResourceConfigLib|ource > ConfigLib/EdkIIRedfishResourceConfigLib.inf > =20 > RedfishEventLib|RedfishClientPkg/Library/RedfishEventLib/RedfishEventL > ib.inf >=20 > RedfishVersionLib|RedfishClientPkg/Library/RedfishVersionLib/RedfishVe > RedfishVersionLib|rsionLi > b.inf > diff --git a/RedfishClientPkg/RedfishClientPkg.dec > b/RedfishClientPkg/RedfishClientPkg.dec > index 9d18c42c24..c61c581213 100644 > --- a/RedfishClientPkg/RedfishClientPkg.dec > +++ b/RedfishClientPkg/RedfishClientPkg.dec > @@ -21,6 +21,7 @@ >=20 > [LibraryClasses] > RedfishFeatureUtilityLib|Include/Library/RedfishFeatureUtilityLib.h > + > + RedfishResourceIdentifyLib|Include/Library/RedfishResourceIdentifyLib. > + h >=20 > EdkIIRedfishResourceConfigLib|Include/Library/EdkIIRedfishResourceConfigL= ib. > h > RedfishEventLib|Include/Library/RedfishEventLib.h > RedfishVersionLib|Include/Library/RedfishVersionLib.h > -- > 2.32.0.windows.2