From: "Ni, Ray" <ray.ni@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"Chang, Abner (HPS SW/FW Technologist)" <abner.chang@hpe.com>
Cc: "Justen, Jordan L" <jordan.l.justen@intel.com>,
Andrew Fish <afish@apple.com>,
"Wang, Nickle (HPS SW)" <nickle.wang@hpe.com>,
"O'Hanley, Peter (EXL)" <peter.ohanley@hpe.com>
Subject: Re: [edk2-devel] [Platform Redfish Host Interface PATCH 4/6] EmulatorPkg/Application: Publish Redfish Host Interface Record
Date: Thu, 3 Dec 2020 05:25:16 +0000 [thread overview]
Message-ID: <CO1PR11MB4930E75CDD95B318399218A48CF20@CO1PR11MB4930.namprd11.prod.outlook.com> (raw)
In-Reply-To: <1644A5FE1ACD3DCB.8528@groups.io>
Acked-by: Ray Ni <ray.ni@intel.com>
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Chang,
> Abner (HPS SW/FW Technologist)
> Sent: Thursday, November 5, 2020 10:39 PM
> To: devel@edk2.groups.io
> Cc: Justen, Jordan L <jordan.l.justen@intel.com>; Andrew Fish
> <afish@apple.com>; Ni, Ray <ray.ni@intel.com>; Wang, Nickle (HPS SW)
> <nickle.wang@hpe.com>; O'Hanley, Peter (EXL) <peter.ohanley@hpe.com>
> Subject: [edk2-devel] [Platform Redfish Host Interface PATCH 4/6]
> EmulatorPkg/Application: Publish Redfish Host Interface Record
>
> Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com>
> Signed-off-by: Ting Ye <ting.ye@intel.com>
> Signed-off-by: Siyuan Fu <siyuan.fu@intel.com>
> Signed-off-by: Fan Wang <fan.wang@intel.com>
> Signed-off-by: Abner Chang <abner.chang@hpe.com>
>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Andrew Fish <afish@apple.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Nickle Wang <nickle.wang@hpe.com>
> Cc: Peter O'Hanley <peter.ohanley@hpe.com>
> ---
> .../RedfishPlatformConfig.c | 298 ++++++++++++++++++
> .../RedfishPlatformConfig.inf | 42 +++
> 2 files changed, 340 insertions(+)
> create mode 100644
> EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.c
> create mode 100644
> EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.inf
>
> diff --git
> a/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.c
> b/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.c
> new file mode 100644
> index 0000000000..89d4c760a7
> --- /dev/null
> +++
> b/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.c
> @@ -0,0 +1,298 @@
> +/** @file
> + The implementation for Redfish Platform Configuration application.
> +
> + Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> + (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <Uefi.h>
> +#include <Library/DebugLib.h>
> +#include <Library/NetLib.h>
> +#include <Library/UefiApplicationEntryPoint.h>
> +#include <Library/UefiBootServicesTableLib.h>
> +#include <Library/UefiRuntimeServicesTableLib.h>
> +#include <Library/UefiLib.h>
> +#include <Protocol/ShellParameters.h>
> +
> +UINTN Argc;
> +CHAR16 **Argv;
> +
> +/**
> +
> + This function parse application ARG.
> +
> + @return Status
> +**/
> +EFI_STATUS
> +GetArg (
> + VOID
> + )
> +{
> + EFI_STATUS Status;
> + EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters;
> +
> + Status = gBS->HandleProtocol (
> + gImageHandle,
> + &gEfiShellParametersProtocolGuid,
> + (VOID**)&ShellParameters
> + );
> + if (EFI_ERROR(Status)) {
> + return Status;
> + }
> +
> + Argc = ShellParameters->Argc;
> + Argv = ShellParameters->Argv;
> + return EFI_SUCCESS;
> +}
> +
> +/**
> +
> + This function print the help message.
> +
> +**/
> +VOID
> +PrintHelp (
> + VOID
> + )
> +{
> + Print (L"\n");
> + Print (L"Format (Only Ipv4 Address is supported):\n");
> + Print (L"RedfishPlatformConfig.efi -s HostIpAddress HostIpMask
> RedfishServiceIpAddress RedfishServiceIpMask RedfishServiceIpPort\n");
> + Print (L"OR:\n");
> + Print (L"RedfishPlatformConfig.efi -a RedfishServiceIpAddress
> RedfishServiceIpMask RedfishServiceIpPort\n");
> + Print (L"\n");
> +}
> +
> +/**
> + The user Entry Point for Application. The user code starts with this function
> + as the real entry point for the application.
> +
> + @param[in] ImageHandle The firmware allocated handle for the EFI image.
> + @param[in] SystemTable A pointer to the EFI System Table.
> +
> + @retval EFI_SUCCESS The entry point is executed successfully.
> + @retval other Some error occurs when executing this entry point.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +UefiMain (
> + IN EFI_HANDLE ImageHandle,
> + IN EFI_SYSTEM_TABLE *SystemTable
> + )
> +{
> + EFI_STATUS Status;
> + RETURN_STATUS ReturnStatus;
> +
> + UINT8 HostIpAssignmentType;
> + EFI_IPv4_ADDRESS HostIpAddress;
> + EFI_IPv4_ADDRESS HostIpMask;
> + EFI_IPv4_ADDRESS RedfishServiceIpAddress;
> + EFI_IPv4_ADDRESS RedfishServiceIpMask;
> + UINTN RedfishServiceIpPort;
> +
> + Status = GetArg();
> + if (EFI_ERROR(Status)) {
> + return Status;
> + }
> +
> + //
> + // Format is like :
> + // RedfishPlatformConfig.efi -s HostIpAddress HostIpMask
> RedfishServiceIpAddress RedfishServiceIpMask RedfishServiceIpPort
> + // RedfishPlatformConfig.efi -a RedfishServiceIpAddress
> RedfishServiceIpMask RedfishServiceIpPort
> + //
> + if (Argc != 7 && Argc != 5) {
> +
> + PrintHelp();
> + return EFI_UNSUPPORTED;
> + }
> +
> + if (StrCmp(Argv[1], L"-s") == 0) {
> +
> + HostIpAssignmentType = 1;
> +
> + Status = NetLibStrToIp4 (Argv[2], &HostIpAddress);
> + if (EFI_ERROR (Status)) {
> + PrintHelp();
> + return Status;
> + }
> + Status = NetLibStrToIp4 (Argv[3], &HostIpMask);
> + if (EFI_ERROR (Status)) {
> + PrintHelp();
> + return Status;
> + }
> + Status = NetLibStrToIp4 (Argv[4], &RedfishServiceIpAddress);
> + if (EFI_ERROR (Status)) {
> + PrintHelp();
> + return Status;
> + }
> + Status = NetLibStrToIp4 (Argv[5], &RedfishServiceIpMask);
> + if (EFI_ERROR (Status)) {
> + PrintHelp();
> + return Status;
> + }
> + ReturnStatus = StrDecimalToUintnS (Argv[6], NULL, &RedfishServiceIpPort);
> + if (RETURN_ERROR (ReturnStatus)) {
> + PrintHelp();
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"HostIpAssignmentType",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (UINT8),
> + &HostIpAssignmentType
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"HostIpAddress",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (EFI_IPv4_ADDRESS),
> + &HostIpAddress
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"HostIpMask",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (EFI_IPv4_ADDRESS),
> + &HostIpMask
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"RedfishServiceIpAddress",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (EFI_IPv4_ADDRESS),
> + &RedfishServiceIpAddress
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"RedfishServiceIpMask",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (EFI_IPv4_ADDRESS),
> + &RedfishServiceIpMask
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"RedfishServiceIpPort",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (UINT16),
> + &RedfishServiceIpPort
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Print (L"\n");
> + Print (L"HostIpAssignmentType is Static!\n");
> + Print (L"HostIpAddress: %s has been set Successfully!\n", Argv[2]);
> + Print (L"HostIpMask: %s has been set Successfully!\n", Argv[3]);
> + Print (L"RedfishServiceIpAddress: %s has been set Successfully!\n", Argv[4]);
> + Print (L"RedfishServiceIpMask: %s has been set Successfully!\n", Argv[5]);
> + Print (L"RedfishServiceIpPort: %s has been set Successfully!\n", Argv[6]);
> + Print (L"Please Restart!\n");
> +
> + } else if (StrCmp(Argv[1], L"-a") == 0) {
> +
> + HostIpAssignmentType = 3;
> +
> + Status = NetLibStrToIp4 (Argv[2], &RedfishServiceIpAddress);
> + if (EFI_ERROR (Status)) {
> + PrintHelp();
> + return Status;
> + }
> + Status = NetLibStrToIp4 (Argv[3], &RedfishServiceIpMask);
> + if (EFI_ERROR (Status)) {
> + PrintHelp();
> + return Status;
> + }
> + ReturnStatus = StrDecimalToUintnS (Argv[4], NULL, &RedfishServiceIpPort);
> + if (RETURN_ERROR (ReturnStatus)) {
> + PrintHelp();
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"HostIpAssignmentType",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (UINT8),
> + &HostIpAssignmentType
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"RedfishServiceIpAddress",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (EFI_IPv4_ADDRESS),
> + &RedfishServiceIpAddress
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"RedfishServiceIpMask",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (EFI_IPv4_ADDRESS),
> + &RedfishServiceIpMask
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Status = gRT->SetVariable (
> + L"RedfishServiceIpPort",
> + &gEmuRedfishServiceGuid,
> + EFI_VARIABLE_NON_VOLATILE |
> EFI_VARIABLE_BOOTSERVICE_ACCESS,
> + sizeof (UINT16),
> + &RedfishServiceIpPort
> + );
> + if (EFI_ERROR (Status)) {
> + return Status;
> + }
> +
> + Print (L"\n");
> + Print (L"HostIpAssignmentType is Auto!\n");
> + Print (L"RedfishServiceIpAddress: %s has been set Successfully!\n", Argv[2]);
> + Print (L"RedfishServiceIpMask: %s has been set Successfully!\n", Argv[3]);
> + Print (L"RedfishServiceIpPort: %s has been set Successfully!\n", Argv[4]);
> + Print (L"Please Restart!\n");
> + } else if (StrCmp(Argv[1], L"-h") == 0 || StrCmp(Argv[1], L"-help") == 0) {
> +
> + PrintHelp();
> + } else {
> +
> + PrintHelp();
> + return EFI_UNSUPPORTED;
> + }
> +
> + return EFI_SUCCESS;
> +}
> diff --git
> a/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.inf
> b/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.inf
> new file mode 100644
> index 0000000000..386c9bdd8c
> --- /dev/null
> +++
> b/EmulatorPkg/Application/RedfishPlatformConfig/RedfishPlatformConfig.inf
> @@ -0,0 +1,42 @@
> +## @file
> +# Sample UEFI Application Reference EDKII Module.
> +#
> +# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
> +# (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
> +#
> +#
> +##
> +
> +[Defines]
> + INF_VERSION = 0x0001000b
> + BASE_NAME = RedfishPlatformConfig
> + FILE_GUID = C02B67BB-3D19-4ACC-A080-1BDB575F8F36
> + MODULE_TYPE = UEFI_APPLICATION
> + VERSION_STRING = 1.0
> + ENTRY_POINT = UefiMain
> +
> +[Sources]
> + RedfishPlatformConfig.c
> +
> +[Packages]
> + EmulatorPkg/EmulatorPkg.dec
> + MdePkg/MdePkg.dec
> + MdeModulePkg/MdeModulePkg.dec
> + NetworkPkg/NetworkPkg.dec
> + RedfishPkg/RedfishPkg.dec
> +
> +[LibraryClasses]
> + DebugLib
> + NetLib
> + UefiApplicationEntryPoint
> + UefiLib
> + UefiBootServicesTableLib
> + UefiRuntimeServicesTableLib
> +[Protocols]
> + gEfiShellParametersProtocolGuid ## CONSUMES
> + gEfiShellProtocolGuid ## CONSUMES
> +
> +[Guids]
> + gEmuRedfishServiceGuid
> --
> 2.17.1
>
>
>
>
>
next prev parent reply other threads:[~2020-12-03 5:25 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-05 14:38 [Platform Redfish Host Interface PATCH 0/6] Enable Platform Redfish Abner Chang
2020-11-05 14:38 ` [Platform Redfish Host Interface PATCH 1/6] RedfishPkg: Add PCD definition to RedfishPkg Abner Chang
2020-11-09 4:24 ` [edk2-devel] " Nickle Wang
2020-11-05 14:38 ` [Platform Redfish Host Interface PATCH 2/6] RedfishPkg: DSC and FDF include files for enabling EFI Redfish support Abner Chang
2020-11-09 4:26 ` [edk2-devel] " Nickle Wang
2020-11-05 14:38 ` [Platform Redfish Host Interface PATCH 3/6] EmulatorPkg/RedfishPlatformHostInterfaceLib library Abner Chang
2020-11-05 14:38 ` [Platform Redfish Host Interface PATCH 4/6] EmulatorPkg/Application: Publish Redfish Host Interface Record Abner Chang
2020-11-05 14:38 ` [Platform Redfish Host Interface PATCH 5/6] EmulatorPkg: Add allowable dependency Abner Chang
2020-11-05 14:38 ` [Platform Redfish Host Interface PATCH 6/6] EmulatorPkg: Redfish related changes on EmulatorPkg Abner Chang
[not found] ` <1644A5FDFD825A04.31306@groups.io>
2020-11-24 9:24 ` [edk2-devel] [Platform Redfish Host Interface PATCH 3/6] EmulatorPkg/RedfishPlatformHostInterfaceLib library Ni, Ray
[not found] ` <1644A5FE6C306DA9.32447@groups.io>
2020-11-24 9:24 ` [edk2-devel] [Platform Redfish Host Interface PATCH 5/6] EmulatorPkg: Add allowable dependency Ni, Ray
[not found] ` <1644A5FF1778E4F7.31306@groups.io>
2020-11-24 9:24 ` [edk2-devel] [Platform Redfish Host Interface PATCH 6/6] EmulatorPkg: Redfish related changes on EmulatorPkg Ni, Ray
[not found] ` <1644A5FE1ACD3DCB.8528@groups.io>
2020-12-03 5:25 ` Ni, Ray [this message]
2020-12-03 5:41 ` [edk2-devel] [Platform Redfish Host Interface PATCH 4/6] EmulatorPkg/Application: Publish Redfish Host Interface Record Abner Chang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CO1PR11MB4930E75CDD95B318399218A48CF20@CO1PR11MB4930.namprd11.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox