/* * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & * AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #include "oemcommands.hpp" #include #include #include void registerBootstrapCredentialsOemCommands() __attribute__((constructor)); namespace ipmi { ipmi::RspType ipmiGetUsbVendorIdProductId(uint8_t type) { constexpr uint8_t descriptorVendorId = 1; constexpr uint8_t descriptorProductId = 2; // IPMI OEM USB Linux Gadget info constexpr uint16_t usbVendorId = 0x0525; constexpr uint16_t usbProductId = 0xA4A2; if (type == descriptorVendorId) { return ipmi::responseSuccess(static_cast(usbVendorId >> 8), static_cast(usbVendorId & 0xFF)); } else if (type == descriptorProductId) { return ipmi::responseSuccess(static_cast(usbProductId >> 8), static_cast(usbProductId & 0xFF)); } return ipmi::responseInvalidFieldRequest(); } ipmi::RspType ipmiGetUsbSerialNumber() { static constexpr uint8_t usbSerialNumber = 0x00; ipmi::message::Payload usbSerialNumberPayload; usbSerialNumberPayload.pack(usbSerialNumber); return ipmi::responseSuccess(usbSerialNumberPayload); } } // namespace ipmi void registerBootstrapCredentialsOemCommands() { ipmi::registerHandler( ipmi::prioOemBase, ipmi::groupNvidia, ipmi::bootstrap_credentials_oem::cmdGetUsbVendorIdProductId, ipmi::Privilege::Admin, ipmi::ipmiGetUsbVendorIdProductId); ipmi::registerHandler( ipmi::prioOemBase, ipmi::groupNvidia, ipmi::bootstrap_credentials_oem::cmdGetUsbSerialNumber, ipmi::Privilege::Admin, ipmi::ipmiGetUsbSerialNumber); }