Lines Matching full:ipmi
85 "/usr/share/ipmi-providers/master_write_read_white_list.json";
110 std::string getActiveSoftwareVersionInfo(ipmi::Context::ptr ctx) in getActiveSoftwareVersionInfo()
113 ipmi::ObjectTree objectTree; in getActiveSoftwareVersionInfo()
117 ipmi::getAllDbusObjects(*ctx->bus, softwareRoot, redundancyIntf); in getActiveSoftwareVersionInfo()
131 ipmi::getService(*ctx->bus, redundancyIntf, softObject.first); in getActiveSoftwareVersionInfo()
133 ipmi::getManagedObjects(*ctx->bus, service, softwareRoot); in getActiveSoftwareVersionInfo()
186 ipmi::DbusObjectInfo bmcObject = in getCurrentBmcState()
187 ipmi::getDbusObject(bus, BMCState::interface); in getCurrentBmcState()
188 auto variant = ipmi::getDbusProperty( in getCurrentBmcState()
226 // Defined in 20.6 of ipmi doc
307 * @return IPMI completion code on success
309 ipmi::RspType<> ipmiSetAcpiPowerState(uint8_t sysAcpiState, in ipmiSetAcpiPowerState()
327 return ipmi::responseParmOutOfRange(); in ipmiSetAcpiPowerState()
348 ipmi::getDbusObject(bus, acpi_state::acpiInterface); in ipmiSetAcpiPowerState()
349 ipmi::setDbusProperty(bus, acpiObject.second, acpiObject.first, in ipmiSetAcpiPowerState()
358 return ipmi::responseUnspecifiedError(); in ipmiSetAcpiPowerState()
375 return ipmi::responseParmOutOfRange(); in ipmiSetAcpiPowerState()
396 ipmi::getDbusObject(bus, acpi_state::acpiInterface); in ipmiSetAcpiPowerState()
397 ipmi::setDbusProperty(bus, acpiObject.second, acpiObject.first, in ipmiSetAcpiPowerState()
406 return ipmi::responseUnspecifiedError(); in ipmiSetAcpiPowerState()
414 return ipmi::responseSuccess(); in ipmiSetAcpiPowerState()
420 * @return IPMI completion code plus response data on success.
424 ipmi::RspType<uint8_t, // acpiSystemPowerState
436 auto acpiObject = ipmi::getDbusObject(bus, acpi_state::acpiInterface); in ipmiGetAcpiPowerState()
438 auto sysACPIVal = ipmi::getDbusProperty( in ipmiGetAcpiPowerState()
445 auto devACPIVal = ipmi::getDbusProperty( in ipmiGetAcpiPowerState()
454 return ipmi::responseUnspecifiedError(); in ipmiGetAcpiPowerState()
457 return ipmi::responseSuccess(sysAcpiState, devAcpiState); in ipmiGetAcpiPowerState()
590 /* @brief: Implement the Get Device ID IPMI command per the IPMI spec
591 * @param[in] ctx - shared_ptr to an IPMI context struct
593 * @returns IPMI completion code plus response data
598 * - IPMI version (0x02 for IPMI 2.0)
604 ipmi::RspType<uint8_t, // Device ID
608 uint8_t, // IPMI version
614 ipmiAppGetDeviceId([[maybe_unused]] ipmi::Context::ptr ctx) in ipmiAppGetDeviceId()
629 const char* filename = "/usr/share/ipmi-providers/dev_id.json"; in ipmiAppGetDeviceId()
668 // IPMI Spec version 2.0 in ipmiAppGetDeviceId()
712 return ipmi::responseUnspecifiedError(); in ipmiAppGetDeviceId()
718 return ipmi::responseUnspecifiedError(); in ipmiAppGetDeviceId()
729 return ipmi::responseSuccess( in ipmiAppGetDeviceId()
734 auto ipmiAppGetSelfTestResults() -> ipmi::RspType<uint8_t, uint8_t> in ipmiAppGetSelfTestResults()
758 return ipmi::responseSuccess(notImplemented, zero); in ipmiAppGetSelfTestResults()
766 // Per IPMI Spec 2.0 need to convert to 16 hex bytes and reverse the byte in rfc4122ToIpmi()
811 -> ipmi::RspType<std::array<uint8_t, uuidBinaryLength>> in ipmiAppGetDeviceGuid()
829 return ipmi::responseSuccess(uuid); in ipmiAppGetDeviceGuid()
833 -> ipmi::RspType<uint8_t, uint8_t, uint8_t, uint8_t, uint8_t> in ipmiAppGetBtCapabilities()
835 // Per IPMI 2.0 spec, the input and output buffer size must be the max in ipmiAppGetBtCapabilities()
843 return ipmi::responseSuccess(nrOutstanding, inputBufferSize, in ipmiAppGetBtCapabilities()
847 auto ipmiAppGetSystemGuid(ipmi::Context::ptr& ctx) in ipmiAppGetSystemGuid()
848 -> ipmi::RspType<std::array<uint8_t, 16>> in ipmiAppGetSystemGuid()
858 boost::system::error_code ec = ipmi::getDbusProperty( in ipmiAppGetSystemGuid()
867 return ipmi::responseUnspecifiedError(); in ipmiAppGetSystemGuid()
872 // convert to IPMI format in ipmiAppGetSystemGuid()
882 return ipmi::responseUnspecifiedError(); in ipmiAppGetSystemGuid()
884 return ipmi::responseSuccess(uuid); in ipmiAppGetSystemGuid()
905 uint8_t sessionState = std::get<uint8_t>(ipmi::getDbusProperty( in setSessionState()
910 ipmi::setDbusProperty( in setSessionState()
913 return ipmi::ccSuccess; in setSessionState()
923 return ipmi::ccUnspecifiedError; in setSessionState()
926 return ipmi::ccInvalidFieldRequest; in setSessionState()
929 ipmi::RspType<> ipmiAppCloseSession(uint32_t reqSessionId, in ipmiAppCloseSession()
939 return ipmi::response(session::ccInvalidSessionId); in ipmiAppCloseSession()
945 return ipmi::response(session::ccInvalidSessionHandle); in ipmiAppCloseSession()
951 return ipmi::response(ipmi::ccInvalidFieldRequest); in ipmiAppCloseSession()
956 ipmi::ObjectTree objectTree = ipmi::getAllDbusObjects( in ipmiAppCloseSession()
974 return ipmi::responseUnspecifiedError(); in ipmiAppCloseSession()
979 return ipmi::response(setSessionState(busp, service, obj)); in ipmiAppCloseSession()
988 return ipmi::responseUnspecifiedError(); in ipmiAppCloseSession()
991 return ipmi::responseInvalidFieldRequest(); in ipmiAppCloseSession()
998 while (ch < ipmi::maxIpmiChannels && in getTotalSessionCount()
1001 ipmi::ChannelInfo chInfo{}; in getTotalSessionCount()
1002 ipmi::getChannelInfo(ch, chInfo); in getTotalSessionCount()
1003 if (static_cast<ipmi::EChannelMediumType>(chInfo.mediumType) == in getTotalSessionCount()
1004 ipmi::EChannelMediumType::lan8032) in getTotalSessionCount()
1029 const ipmi::Context::ptr ctx, const uint8_t sessionIndex, in getSessionInfoRequestData()
1030 ipmi::message::Payload& payload, uint32_t& reqSessionId, in getSessionInfoRequestData()
1036 return ipmi::ccInvalidFieldRequest; in getSessionInfoRequestData()
1043 ipmi::ChannelInfo chInfo; in getSessionInfoRequestData()
1044 ipmi::getChannelInfo(ctx->channel, chInfo); in getSessionInfoRequestData()
1046 if (static_cast<ipmi::EChannelMediumType>(chInfo.mediumType) != in getSessionInfoRequestData()
1047 ipmi::EChannelMediumType::lan8032) in getSessionInfoRequestData()
1049 return ipmi::ccInvalidFieldRequest; in getSessionInfoRequestData()
1054 return ipmi::ccReqDataLenInvalid; in getSessionInfoRequestData()
1069 return ipmi::ccReqDataLenInvalid; in getSessionInfoRequestData()
1084 return ipmi::ccReqDataLenInvalid; in getSessionInfoRequestData()
1096 return ipmi::ccReqDataLenInvalid; in getSessionInfoRequestData()
1100 return ipmi::ccSuccess; in getSessionInfoRequestData()
1103 uint8_t getSessionState(ipmi::Context::ptr ctx, const std::string& service, in getSessionState()
1106 boost::system::error_code ec = ipmi::getDbusProperty( in getSessionState()
1115 return ipmi::ccUnspecifiedError; in getSessionState()
1117 return ipmi::ccSuccess; in getSessionState()
1140 * @param[in] ctx - ipmi::Context pointer for accessing D-Bus
1147 * @return - ipmi::Cc success or error code
1149 ipmi::Cc getSessionDetails(ipmi::Context::ptr ctx, const std::string& service, in getSessionDetails()
1153 ipmi::PropertyMap sessionProps; in getSessionDetails()
1154 boost::system::error_code ec = ipmi::getAllDbusProperties( in getSessionDetails()
1164 return ipmi::ccUnspecifiedError; in getSessionDetails()
1167 sessionState = ipmi::mappedVariant<uint8_t>( in getSessionDetails()
1172 ipmi::mappedVariant<uint8_t>(sessionProps, "SessionHandle", 0); in getSessionDetails()
1174 ipmi::mappedVariant<uint8_t>(sessionProps, "UserID", 0xff); in getSessionDetails()
1177 ipmi::mappedVariant<uint8_t>(sessionProps, "CurrentPrivilege", 0); in getSessionDetails()
1180 ipmi::mappedVariant<uint8_t>(sessionProps, "ChannelNum", 0xff); in getSessionDetails()
1184 ipmi::mappedVariant<uint32_t>(sessionProps, "RemoteIPAddr", 0); in getSessionDetails()
1187 ipmi::mappedVariant<uint16_t>(sessionProps, "RemotePort", 0); in getSessionDetails()
1190 return ipmi::ccSuccess; in getSessionDetails()
1193 ipmi::RspType<uint8_t, // session handle,
1197 ipmiAppGetSessionInfo(ipmi::Context::ptr ctx, uint8_t sessionIndex, in ipmiAppGetSessionInfo()
1198 ipmi::message::Payload& payload) in ipmiAppGetSessionInfo()
1210 return ipmi::response(completionCode); in ipmiAppGetSessionInfo()
1212 ipmi::ObjectTree objectTree; in ipmiAppGetSessionInfo()
1213 boost::system::error_code ec = ipmi::getAllDbusObjects( in ipmiAppGetSessionInfo()
1220 return ipmi::responseUnspecifiedError(); in ipmiAppGetSessionInfo()
1245 return ipmi::responseUnspecifiedError(); in ipmiAppGetSessionInfo()
1254 return ipmi::response(completionCode); in ipmiAppGetSessionInfo()
1271 return ipmi::response(completionCode); in ipmiAppGetSessionInfo()
1281 return ipmi::responseSuccess(activeSessionHandle, totalSessionCount, in ipmiAppGetSessionInfo()
1285 return ipmi::responseInvalidFieldRequest(); in ipmiAppGetSessionInfo()
1288 std::optional<std::string> getSysFWVersion(ipmi::Context::ptr& ctx) in getSysFWVersion()
1297 ipmi::ObjectTree objectTree; in getSysFWVersion()
1299 ipmi::getAllDbusObjects(ctx, softwareRoot, versionIntf, objectTree); in getSysFWVersion()
1309 ipmi::PropertyMap props; in getSysFWVersion()
1310 ec = ipmi::getAllDbusProperties(ctx, service, objPath, versionIntf, in getSysFWVersion()
1318 ipmi::mappedVariant<std::string>(props, "Purpose", "")); in getSysFWVersion()
1326 ipmi::mappedVariant<std::string>(props, "Version", "")); in getSysFWVersion()
1367 namespace ipmi namespace
1380 } // namespace ipmi
1382 ipmi::RspType<uint8_t, // Parameter revision
1385 ipmiAppGetSystemInfo(ipmi::Context::ptr ctx, uint7_t reserved, in ipmiAppGetSystemInfo()
1392 return ipmi::responseInvalidFieldRequest(); in ipmiAppGetSystemInfo()
1396 return ipmi::responseParmNotSupported(); in ipmiAppGetSystemInfo()
1400 return ipmi::responseSuccess(paramRevision, std::nullopt, std::nullopt); in ipmiAppGetSystemInfo()
1405 return ipmi::responseSuccess(paramRevision, transferStatus, in ipmiAppGetSystemInfo()
1411 return ipmi::responseParmNotSupported(); in ipmiAppGetSystemInfo()
1432 return ipmi::responseUnspecifiedError(); in ipmiAppGetSystemInfo()
1445 return ipmi::responseSensorInvalid(); in ipmiAppGetSystemInfo()
1471 return ipmi::responseParmOutOfRange(); in ipmiAppGetSystemInfo()
1478 return ipmi::responseSuccess(paramRevision, setSelector, configData); in ipmiAppGetSystemInfo()
1481 ipmi::RspType<> ipmiAppSetSystemInfo(uint8_t paramSelector, uint8_t data1, in ipmiAppSetSystemInfo()
1487 return ipmi::responseInvalidFieldRequest(); in ipmiAppSetSystemInfo()
1491 return ipmi::responseParmNotSupported(); in ipmiAppSetSystemInfo()
1500 return ipmi::responseSetInProgressActive(); in ipmiAppSetSystemInfo()
1506 return ipmi::responseInvalidFieldRequest(); in ipmiAppSetSystemInfo()
1510 return ipmi::responseSuccess(); in ipmiAppSetSystemInfo()
1515 return ipmi::responseInvalidFieldRequest(); in ipmiAppSetSystemInfo()
1550 return ipmi::responseInvalidFieldRequest(); in ipmiAppSetSystemInfo()
1565 return ipmi::responseParmOutOfRange(); in ipmiAppSetSystemInfo()
1571 return ipmi::responseSuccess(); in ipmiAppSetSystemInfo()
1733 /** @brief implements controller write read IPMI command which can be used for
1743 * @returns IPMI completion code plus response data
1746 ipmi::RspType<std::vector<uint8_t>> ipmiControllerWriteRead( in ipmiControllerWriteRead()
1753 return ipmi::responseInvalidFieldRequest(); in ipmiControllerWriteRead()
1759 return ipmi::responseInvalidFieldRequest(); in ipmiControllerWriteRead()
1769 return ipmi::responseCommandDisabled(); in ipmiControllerWriteRead()
1776 ipmi::Cc ret = ipmi::i2cWriteRead(i2cBus, static_cast<uint8_t>(targetAddr), in ipmiControllerWriteRead()
1778 if (ret != ipmi::ccSuccess) in ipmiControllerWriteRead()
1780 return ipmi::response(ret); in ipmiControllerWriteRead()
1782 return ipmi::responseSuccess(readBuf); in ipmiControllerWriteRead()
1788 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1789 ipmi::app::cmdGetDeviceId, ipmi::Privilege::User, in registerNetFnAppFunctions()
1793 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1794 ipmi::app::cmdGetBtIfaceCapabilities, in registerNetFnAppFunctions()
1795 ipmi::Privilege::User, ipmiAppGetBtCapabilities); in registerNetFnAppFunctions()
1798 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1799 ipmi::app::cmdResetWatchdogTimer, in registerNetFnAppFunctions()
1800 ipmi::Privilege::Operator, ipmiAppResetWatchdogTimer); in registerNetFnAppFunctions()
1802 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1803 ipmi::app::cmdGetSessionInfo, ipmi::Privilege::User, in registerNetFnAppFunctions()
1807 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1808 ipmi::app::cmdSetWatchdogTimer, in registerNetFnAppFunctions()
1809 ipmi::Privilege::Operator, ipmiSetWatchdogTimer); in registerNetFnAppFunctions()
1811 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1812 ipmi::app::cmdCloseSession, ipmi::Privilege::Callback, in registerNetFnAppFunctions()
1816 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1817 ipmi::app::cmdGetWatchdogTimer, ipmi::Privilege::User, in registerNetFnAppFunctions()
1821 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1822 ipmi::app::cmdGetSelfTestResults, in registerNetFnAppFunctions()
1823 ipmi::Privilege::User, ipmiAppGetSelfTestResults); in registerNetFnAppFunctions()
1826 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1827 ipmi::app::cmdGetDeviceGuid, ipmi::Privilege::User, in registerNetFnAppFunctions()
1831 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1832 ipmi::app::cmdSetAcpiPowerState, in registerNetFnAppFunctions()
1833 ipmi::Privilege::Admin, ipmiSetAcpiPowerState); in registerNetFnAppFunctions()
1835 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1836 ipmi::app::cmdGetAcpiPowerState, in registerNetFnAppFunctions()
1837 ipmi::Privilege::User, ipmiGetAcpiPowerState); in registerNetFnAppFunctions()
1844 // admin privilege command, even though IPMI 2.0 specification allows it in registerNetFnAppFunctions()
1846 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1847 ipmi::app::cmdMasterWriteRead, in registerNetFnAppFunctions()
1848 ipmi::Privilege::Admin, ipmiControllerWriteRead); in registerNetFnAppFunctions()
1852 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1853 ipmi::app::cmdGetSystemGuid, ipmi::Privilege::User, in registerNetFnAppFunctions()
1857 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1858 ipmi::app::cmdGetChannelCipherSuites, in registerNetFnAppFunctions()
1859 ipmi::Privilege::None, getChannelCipherSuites); in registerNetFnAppFunctions()
1862 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1863 ipmi::app::cmdGetSystemInfoParameters, in registerNetFnAppFunctions()
1864 ipmi::Privilege::User, ipmiAppGetSystemInfo); in registerNetFnAppFunctions()
1866 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, in registerNetFnAppFunctions()
1867 ipmi::app::cmdSetSystemInfoParameters, in registerNetFnAppFunctions()
1868 ipmi::Privilege::Admin, ipmiAppSetSystemInfo); in registerNetFnAppFunctions()