pldmtool: Support parsing Redfish Resource/Action PDRs

Add support for parsing Redfish Resource/Action PDRs to pldmtool.

Tested:

The output of the GetPDR command for SmartNIC card now contains parsed
Redfish Resource/Action PDRs.

Example:
"""
...
{
    "nextRecordHandle": 3002,
    "responseCount": 89,
    "recordHandle": 3001,
    "PDRHeaderVersion": 1,
    "PDRType": "Redfish Action PDR",
    "recordChangeNumber": 0,
    "dataLength": 79,
    "ActionPDRIndex": 0,
    "RelatedResourceCount": 1,
    "RelatedResourceID[0]": 1,
    "ActionCount": 1,
    "ActionNameLengthBytes[0]": 23,
    "ActionName[0]": "ResetSettingsToDefault",
    "ActionPathLengthBytes[0]": 46,
    "ActionPath[0]": "Actions/NetworkAdapter.ResetSettingsToDefault"
}
...
{
    "nextRecordHandle": 4003,
    "responseCount": 135,
    "recordHandle": 4001,
    "PDRHeaderVersion": 1,
    "PDRType": "Redfish Resource PDR",
    "recordChangeNumber": 0,
    "dataLength": 125,
    "ResourceID": 1,
    "ResourceFlags": "Device Root|Contained in collection(3)",
    "ContainingResourceID": 0,
    "ProposedContainingResourceLengthBytes": 50,
    "ProposedContainingResourceName":
"NetworkAdapterCollection.NetworkAdapterCollection",
    "SubURILengthBytes": 1,
    "SubURI": "",
    "AdditionalResourceIDCount": 1,
    "AdditionalResourceID[0]": 11,
    "AdditionalResourceSubURILengthBytes[0]": 10,
    "AdditionalResourceSubURI[0]": "/Settings",
    "MajorSchemaVersion": "1.9.0",
    "MajorSchemaDictionaryLengthBytes": 1765,
    "MajorSchemaDictionarySignature": 50776613,
    "MajorSchemaNameLength": 30,
    "MajorSchemaName": "NetworkAdapter.NetworkAdapter",
    "OEMCount": 0
}
...
"""

Change-Id: I8d6723e8d75833b06067f60395dffa7c8a2e860b
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
1 file changed
tree: aedb6a4e8ad98f4ee17a0c416fb2a0beccd68096
  1. common/
  2. configurations/
  3. docs/
  4. fw-update/
  5. host-bmc/
  6. libpldmresponder/
  7. oem/
  8. platform-mc/
  9. pldmd/
  10. pldmtool/
  11. requester/
  12. softoff/
  13. subprojects/
  14. test/
  15. tools/
  16. utilities/
  17. .clang-format
  18. .clang-tidy
  19. .eslintignore
  20. .gitignore
  21. .linter-ignore
  22. LICENSE
  23. meson.build
  24. meson.options
  25. OWNERS
  26. README.md
README.md

PLDM - Platform Level Data Model

License

Overview

PLDM (Platform Level Data Model) is a key component of the OpenBMC project, providing a standardized data model and message formats for various platform management functionalities. It defines a method to manage, monitor, and control the firmware and hardware of a system.

The OpenBMC PLDM project aims to implement the specifications defined by the Distributed Management Task Force (DMTF), allowing for interoperable management interfaces across different hardware and firmware components.

Features

  • Standardized Messaging: Adheres to the DMTF's PLDM specifications, enabling consistent and interoperable communication between different components.
  • Modularity: Supports multiple PLDM types, including base, FRU,Firmware update, Platform Monitoring and Control, and BIOS Control and Configuration.
  • Extensibility: Easily extendable to support new PLDM types and custom OEM commands.
  • Integration: Seamlessly integrates with other OpenBMC components for comprehensive system management.

Getting Started

Prerequisites

To build and run PLDM, you need the following dependencies:

  • Meson
  • Ninja

Alternatively, source an OpenBMC ARM/x86 SDK.

Building

To build the PLDM project, follow these steps:

meson setup build && meson compile -C build

To run unit tests

The simplest way of running the tests is as described by the meson man page:

meson test -C build

Alternatively, tests can be run in the OpenBMC CI docker container using these steps.

To enable pldm verbosity

pldm daemon accepts a command line argument --verbose or --v or -v to enable the daemon to run in verbose mode. It can be done via adding this option to the environment file that pldm service consumes.

echo 'PLDMD_ARGS="--verbose"' > /etc/default/pldmd
systemctl restart pldmd

To disable pldm verbosity

rm /etc/default/pldmd
systemctl restart pldmd

Documentation

For complete documentation on the functionality and usage of this repository, please refer to the docs folder.