Lines Matching full:ipmi

34 namespace ipmi
40 } // namespace ipmi
41 extern const ipmi::sensor::InvObjectIDMap invSensors;
59 using namespace ipmi::fru;
65 using SELEntry = ipmi::sel::SELEventRecordFormat;
86 return std::string(ipmi::sel::logBasePath) + "/" + std::to_string(id);
95 ipmi::sel::GetSELEntryResponse record{};
96 record = ipmi::sel::convertLogEntrytoSEL(p);
166 bus, interfacesAdded(ipmi::sel::logWatchPath),
172 bus, interfacesRemoved(ipmi::sel::logWatchPath),
181 argN(0, ipmi::sel::logEntryIntf),
189 ipmi::sel::ObjectPaths paths;
192 ipmi::sel::readLoggingObjectPaths(paths);
220 * @returns IPMI completion code plus response data
229 ipmi::RspType<uint8_t, // SEL revision.
246 uint32_t addTimeStamp = ipmi::sel::invalidTimeStamp;
261 (ipmi::sel::getEntryTimeStamp(objPath).count()));
271 constexpr uint8_t selVersion = ipmi::sel::selVersion;
273 constexpr uint32_t eraseTimeStamp = ipmi::sel::invalidTimeStamp;
276 return ipmi::responseSuccess(
278 ipmi::sel::operationSupport::getSelAllocationInfo,
279 ipmi::sel::operationSupport::reserveSel,
280 ipmi::sel::operationSupport::partialAddSelEntry,
281 ipmi::sel::operationSupport::deleteSel, reserved,
282 ipmi::sel::operationSupport::overflow);
285 ipmi::RspType<uint16_t, // Next Record ID
295 return ipmi::responseInvalidReservationId();
307 return ipmi::responseSensorInvalid();
313 if (selRecordID == ipmi::sel::firstEntry)
317 else if (selRecordID == ipmi::sel::lastEntry)
335 return ipmi::responseSensorInvalid();
339 ipmi::sel::GetSELEntryResponse record{0, iter->second};
344 record.nextRecordID = ipmi::sel::lastEntry;
353 if (readLength == ipmi::sel::entireRecord)
360 if (offset >= ipmi::sel::selRecordSize ||
361 readLength > ipmi::sel::selRecordSize)
363 return ipmi::responseInvalidFieldRequest();
366 auto diff = ipmi::sel::selRecordSize - offset;
370 const ipmi::sel::SELEventRecordFormat* evt = &record.event;
376 return ipmi::responseSuccess(nextRecordID, buffer);
384 * @returns ipmi completion code plus response data
387 ipmi::RspType<uint16_t // deleted record ID
395 return ipmi::responseInvalidReservationId();
398 // Per the IPMI spec, need to cancel the reservation when a SEL entry is
410 return ipmi::responseSensorInvalid();
416 if (selRecordID == ipmi::sel::firstEntry)
420 else if (selRecordID == ipmi::sel::lastEntry)
432 return ipmi::responseSensorInvalid();
441 service = ipmi::getService(bus, ipmi::sel::logDeleteIntf, objPath);
446 return ipmi::responseUnspecifiedError();
450 ipmi::sel::logDeleteIntf, "Delete");
457 return ipmi::responseUnspecifiedError();
460 return ipmi::responseSuccess(delRecordID);
469 * @returns ipmi completion code plus response data
473 ipmi::RspType<uint8_t // erase status
481 return ipmi::responseInvalidFieldRequest();
486 return ipmi::responseInvalidReservationId();
493 if (eraseOperation == ipmi::sel::getEraseStatus)
495 return ipmi::responseSuccess(
496 static_cast<uint8_t>(ipmi::sel::eraseComplete));
500 if (eraseOperation != ipmi::sel::initiateErase)
502 return ipmi::responseInvalidFieldRequest();
505 // Per the IPMI spec, need to cancel any reservation when the SEL is cleared
509 auto service = ipmi::getService(bus, ipmi::sel::logIntf, ipmi::sel::logObj);
511 bus.new_method_call(service.c_str(), ipmi::sel::logObj,
512 ipmi::sel::logIntf, ipmi::sel::logDeleteAllMethod);
520 return ipmi::responseUnspecifiedError();
523 return ipmi::responseSuccess(
524 static_cast<uint8_t>(ipmi::sel::eraseComplete));
528 * @returns IPMI completion code plus response data
531 ipmi::RspType<uint32_t> // current time
541 auto service = ipmi::getService(bus, TIME_INTERFACE, BMC_TIME_PATH);
542 auto propValue = ipmi::getDbusProperty(
549 return ipmi::responseUnspecifiedError();
554 return ipmi::responseUnspecifiedError();
560 // Time is really long int but IPMI wants just uint32. This works okay until
563 return ipmi::responseSuccess(
570 * @returns IPMI completion code
572 ipmi::RspType<> ipmiStorageSetSelTime(uint32_t selDeviceTime)
581 ipmi::getDbusProperty(bus, SystemdTimeService, SystemdTimePath,
585 return ipmi::responseCommandNotAvailable();
588 auto service = ipmi::getService(bus, TIME_INTERFACE, BMC_TIME_PATH);
601 return ipmi::responseUnspecifiedError();
606 return ipmi::responseUnspecifiedError();
609 return ipmi::responseSuccess();
613 * @returns IPMI completion code plus response data
616 ipmi::RspType<int16_t> ipmiStorageGetSelTimeUtcOffset()
629 return ipmi::responseSuccess(timeEquation);
633 * @returns IPMI completion code plus response data
636 ipmi::RspType<uint16_t> ipmiStorageReserveSel()
638 return ipmi::responseSuccess(reserveSel());
656 * @returns ipmi completion code plus response data
659 ipmi::RspType<uint16_t // recordID of the Added SEL entry
686 auto selDataStr = ipmi::sel::toHexStr(eventData);
705 return ipmi::responseSuccess(recordID);
708 bool isFruPresent(ipmi::Context::ptr& ctx, const std::string& fruPath)
710 using namespace ipmi::fru;
718 ec = ipmi::getDbusProperty(ctx, service, invObjPath + fruPath,
726 ipmi::ObjectValueTree managedObjects;
743 * @returns IPMI completion code plus response data
747 ipmi::RspType<uint16_t, // FRU Inventory area size in bytes,
750 ipmiStorageGetFruInvAreaInfo(ipmi::Context::ptr ctx, uint8_t fruID)
755 return ipmi::responseSensorInvalid();
761 return ipmi::responseSensorInvalid();
766 return ipmi::responseSuccess(
773 return ipmi::responseUnspecifiedError();
782 * @return IPMI completion code plus response data
786 ipmi::RspType<uint8_t, // count returned
793 return ipmi::responseInvalidFieldRequest();
799 return ipmi::responseSensorInvalid();
809 return ipmi::responseParmOutOfRange();
826 return ipmi::responseSuccess(returnCount, fruData);
831 return ipmi::responseUnspecifiedError();
835 ipmi::RspType<uint8_t, // SDR version
851 ipmi::sensor::EntityInfoMapContainer::getContainer()
854 ipmi::sensor::sensors.size() + frus.size() + entityRecords.size();
856 return ipmi::responseSuccess(sdrVersion, records, freeSpace,
872 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
873 ipmi::storage::cmdGetSelInfo, ipmi::Privilege::User,
877 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
878 ipmi::storage::cmdGetSelTimeUtcOffset,
879 ipmi::Privilege::User,
883 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
884 ipmi::storage::cmdGetSelEntry, ipmi::Privilege::User,
888 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
889 ipmi::storage::cmdDeleteSelEntry,
890 ipmi::Privilege::Operator, deleteSELEntry);
893 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
894 ipmi::storage::cmdAddSelEntry,
895 ipmi::Privilege::Operator, ipmiStorageAddSEL);
898 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
899 ipmi::storage::cmdClearSel, ipmi::Privilege::Operator,
903 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
904 ipmi::storage::cmdGetFruInventoryAreaInfo,
905 ipmi::Privilege::User, ipmiStorageGetFruInvAreaInfo);
908 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
909 ipmi::storage::cmdReadFruData,
910 ipmi::Privilege::Operator, ipmiStorageReadFruData);
915 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
916 ipmi::storage::cmdGetSdrRepositoryInfo,
917 ipmi::Privilege::User, ipmiGetRepositoryInfo);
920 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
921 ipmi::storage::cmdReserveSdrRepository,
922 ipmi::Privilege::User, ipmiSensorReserveSdr);
925 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
926 ipmi::storage::cmdGetSdr, ipmi::Privilege::User,
934 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
935 ipmi::storage::cmdReserveSel, ipmi::Privilege::User,
939 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
940 ipmi::storage::cmdGetSelTime, ipmi::Privilege::User,
944 ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnStorage,
945 ipmi::storage::cmdSetSelTime,
946 ipmi::Privilege::Operator, ipmiStorageSetSelTime);
948 ipmi::fru::registerCallbackHandler();