pldmd: fix unsupported command handling A request with a valid PLDM type but an unregistered command currently results in std::out_of_range from the command handler lookup. Unsupported commands are protocol-level errors and should return a PLDM completion code instead of propagating a C++ exception. Replace the throwing command lookup with a guarded lookup and return PLDM_ERROR_UNSUPPORTED_PLDM_CMD when a command is not registered. Update the registration test to verify that unsupported commands return the expected completion code rather than throwing an exception. Tested: - meson test -C build pldmd_registration_test --print-errorlogs Change-Id: Ia85d86fd4d22f7510e8ee52876f31643470eee70 Signed-off-by: Meghana Vangapandu <meghanav@ami.com>
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.
To build and run PLDM, you need the following dependencies:
MesonNinjaAlternatively, source an OpenBMC ARM/x86 SDK.
To build the PLDM project, follow these steps:
meson setup build && meson compile -C build
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.
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
rm /etc/default/pldmd systemctl restart pldmd
For complete documentation on the functionality and usage of this repository, please refer to the docs folder.