Below are the EDK2 drivers implemented on EDK2,
The abstract EDK2 DXE driver to create SMBIOS type 42 record through EFI SMBIOS protocol according to the device descriptor and protocol type data (defined in SMBIOS type 42h [7]) provided by platform level Redfish host interface library. On EDK2 open source implementation (EmulatorPkg), SMBIOS type 42 data is retrieved from EFI variables created by RedfishPlatformConfig.efi [20] under EFI shell. OEM may provide its own PlatformHostInterfaceLib [11] instance for the platform-specific implementation.
The abstract DXE driver which incorporates with RedfishPlatformCredentialLib [10] to acquire the credential of Redfish service. On edk2 EmulatorPkg implementation, the credential is hardcoded using the fixed Account/Password in order to connect to Redfish service established by Redfish Profile Simulator. OEM may provide its own RedfishPlatformCredentialLib instance for the platform-specific implementation.
This is the network-based driver instance of EFI_REST_EX protocol (UEFI spec 2.8, section 29.7.2) for communicating with Redfish service using the HTTP protocol. OEM may have its own EFI REST EX UEFI Driver instance on which the underlying transport to Redfish service could be proprietary.
EFI Redfish Discover Protocol implementation (UEFI spec 2.8, section 31.1). Only support Redfish service discovery through Redfish Host Interface. The Redfish service discovery using SSDP over UDP [18] is not implemented at the moment.
EFI REST JSON Structure DXE implementation (UEFI spec 2.8, section 29.7.3). This could be used by EDK2 Redfish Feature DXE Drivers [17]. The EDK2 Redfish feature drivers manipulate platform-owned Redfish properties in C structure format and convert them into the payload in JSON format through this protocol. This driver leverages the effort of Redfish Schema to C Generator to have the “C Structure” <-> “JSON” conversion.
This is the centralized manager of EDK2 Redfish feature drivers, it initiates EDK2 Redfish feature drivers by invoking init() function of EDK2 Redfish Config Handler Protocol [16] installed by each EDK2 Redfish feature driver. EDK2 Redfish Config Handler driver is an UEFI driver which has the dependency with EFI REST EX protocol and utilizes EFI Redfish Discover protocol to discover Redfish service that manages this system.
The library is incorporated with RedfishLib [13] to encode and decode Redfish JSON payload. This is the platform library to support HTTP Content-Encoding/Accept-Encoding headers. EumlatorPkg use the NULL instance of this library because Redfish Profile Simulator supports neither HTTP Content-Encoding header on the payload returned to Redfish client nor HTTP Accept-Encoding header.
The following libraries are the wrappers of other open source projects used in RedfishPkg
RedfishPkg\PrivateLibrary\RedfishLib [13] This is the wrapper of open source project libredfish, which is the library to initialize the connection to Redfish service with the proper credential and execute Create/Read/Update/Delete (CRUD) HTTP methods on Redfish properties.
RedfishPkg\Library\JsonLib [14] This is the wrapper of open source project Jansson, which is the library that provides APIs to manipulate JSON payload.
RedfishPlatformCredentialLib the EDK2 Emulator platform implementation of acquiring credential to build up the communication between UEFI firmware and Redfish service. [10]
RedfishPlatformHostInterfaceLib EDK2 Emulator platform implementation which provides the information of building up SMBIOS type 42h record. [11]
For example, run shell command "RedfishPlatformConfig.efi -s 192.168.10.101 255.255.255.0 192.168.10.123 255.255.255.0", which means the source IP address is 192.168.10.101, and the Redfish Server IP address is 192.168.10.123.
e.g. %WORKSPACE%/Build/EmulatorX64/DEBUG_VS2015x86/X64
NETWORK_SNP_ENABLE = TRUE NETWORK_HTTP_ENABLE = TRUE NETWORK_IP6_ENABLE = TRUE SECURE_BOOT_ENABLE = TRUE REDFISH_ENABLE = TRUE
NETWORK_ALLOW_HTTP_CONNECTIONS = TRUE
gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExServiceDevicePath.DevicePath|{DEVICE_PATH("MAC(000000000000,0x1)")}
# # For Windows based host, use a number to refer to network adapter # gEmulatorPkgTokenSpaceGuid.PcdEmuNetworkInterface|L"1" or # # For Linux based host, use the device name of network adapter # gEmulatorPkgTokenSpaceGuid.PcdEmuNetworkInterface|L"en0"
Execute RedfishPlatformConfig.efi under EFI shell to configure the Redfish service information. The EFI variables are created for storing Redfish service information and is consumed by RedfishPlatformHostInterfaceLib under EmulatorPkg.
Thanks to the below predecessors who contributed to the UEFI EDK2 Redfish Prove of Concept code.
Fu, Siyuan siyuan.fu@intel.com
Ye, Ting ting.ye@intel.com
Wang, Fan fan.wang@intel.com
Wu, Jiaxin jiaxin.wu@intel.com
Yao, Jiewen jiewen.yao@intel.com
Shia, Cinnamon cinnamon.shia@hpe.com