types

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 9, 2026 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	IPMB_LUN_BMC   LUN = 0x00 // BMC commands and Event Request Messages
	IPMB_LUN_OEM_1 LUN = 0x01 // OEM LUN 1
	IPMB_LUN_SMS   LUN = 0x10 // SMS Message LUN (Intended for messages to System Management Software)
	IPMB_LUN_OEM_2 LUN = 0x11 // OEM LUN 2

	// the least significant bit
	// 0b (ID is a slave address)
	// 1b (ID is a Software ID)
	BMC_SA             uint8 = 0x20 // BMC's responder address
	RemoteConsole_SWID uint8 = 0x81 // Remote Console Software ID
)

7.2 BMC IPMB LUNs

View Source
const (
	StandardCipherSuite uint8 = 0xc0
	OEMCipherSuite      uint8 = 0xc1

	CipherAlgMask       uint8 = 0x3f // [5:0]=111111b
	CipherAlgTagBitMask uint8 = 0xc0 // [7:6]=11b

	CipherAlgTagBitAuthMask       uint8 = 0x00 // [7:6]=00b
	CipherAlgTagBitIntegrityMask  uint8 = 0x40 // [7:6]=01b
	CipherAlgTagBitEncryptionMask uint8 = 0x80 // [7:6]=10b

	LIST_ALGORITHMS_BY_CIPHER_SUITE uint8 = 0x80
)
View Source
const (
	DCMICapParamSelector_SupportedDCMICapabilities               = DCMICapParamSelector(0x01)
	DCMICapParamSelector_MandatoryPlatformAttributes             = DCMICapParamSelector(0x02)
	DCMICapParamSelector_OptionalPlatformAttributes              = DCMICapParamSelector(0x03)
	DCMICapParamSelector_ManageabilityAccessAttributes           = DCMICapParamSelector(0x04)
	DCMICapParamSelector_EnhancedSystemPowerStatisticsAttributes = DCMICapParamSelector(0x05)
)
View Source
const (
	FRUFormatVersion     uint8 = 0x01
	FRUAreaFieldsEndMark uint8 = 0xc1
	FRUCommonHeaderSize  uint8 = 8
	// FRUMultiRecordFormatVersion is the default MultiRecord format version
	// (fru§16.2.3: shall be 02h unless otherwise specified).
	FRUMultiRecordFormatVersion uint8 = 0x02
)
View Source
const (
	LanIPv6NDSLAACTimingConfigMode_NotSupported LanIPv6DHCPv6TimingConfigMode  = 0
	LanIPv6NDSLAACTimingConfigMode_Global       LanIPv6NDSLAACTimingConfigMode = 1
	LanIPv6NDSLAACTimingConfigMode_PerInterface LanIPv6NDSLAACTimingConfigMode = 2
)
View Source
const (
	OEM_UNKNOWN                      = 0
	OEM_DEBUG                        = 0xFFFFFE /* Hoping IANA won't hit this soon */
	OEM_RESERVED                     = 0x0FFFFF /* As per IPMI 2.0 specification */
	OEM_IBM_2                        = 2        /* 2 for [IBM] */
	OEM_HP                           = 11
	OEM_SUN                          = 42
	OEM_NOKIA                        = 94
	OEM_BULL                         = 107
	OEM_HITACHI_116                  = 116
	OEM_NEC                          = 119
	OEM_TOSHIBA                      = 186
	OEM_ERICSSON                     = 193
	OEM_INTEL                        = 343
	OEM_TATUNG                       = 373
	OEM_HITACHI_399                  = 399
	OEM_DELL                         = 674
	OEM_HUAWEI                       = 2011
	OEM_LMC                          = 2168
	OEM_ASUSTEK                      = 2623
	OEM_RADISYS                      = 4337
	OEM_BROADCOM                     = 4413
	OEM_IBM_4769                     = 4769 /* 4769 for [IBM Corporation] */
	OEM_MAGNUM                       = 5593
	OEM_TYAN                         = 6653
	OEM_QUANTA                       = 7244
	OEM_VIKING                       = 9237
	OEM_ADVANTECH                    = 10297
	OEM_FUJITSU_SIEMENS              = 10368
	OEM_AVOCENT                      = 10418
	OEM_PEPPERCON                    = 10437
	OEM_SUPERMICRO                   = 10876
	OEM_OSA                          = 11102
	OEM_GOOGLE                       = 11129
	OEM_PICMG                        = 12634
	OEM_RARITAN                      = 13742
	OEM_KONTRON                      = 15000
	OEM_PPS                          = 16394
	OEM_IBM_20301                    = 20301 /* 20301 for [IBM eServer X] */
	OEM_AMI                          = 20974
	OEM_FOXCONN                      = 22238
	OEM_ADLINK_24339                 = 24339 /* 24339 for [ADLINK TECHNOLOGY INC.] */
	OEM_H3C                          = 25506
	OEM_NOKIA_28458                  = 28458
	OEM_NOKIA_SOLUTIONS_AND_NETWORKS = 28458
	OEM_VITA                         = 33196
	OEM_INSPUR                       = 37945
	OEM_TENCENT                      = 41475
	OEM_BYTEDANCE                    = 46045
	OEM_SUPERMICRO_47488             = 47488
	OEM_YADRO                        = 49769
)

cSpell: disable

View Source
const (
	CryptAlg_None        CryptAlg = 0x00 // Mandatory
	CryptAlg_AES_CBC_128 CryptAlg = 0x01 // Mandatory
	CryptAlg_xRC4_128    CryptAlg = 0x02 // Optional
	CryptAlg_xRC4_40     CryptAlg = 0x03 // Optional

	Encryption_AES_CBS_128_BlockSize uint8 = 0x10
)
View Source
const (
	RmcpVersion uint8 = 0x06

	RMCP_TYPE_MASK = 0x80
	RMCP_TYPE_NORM = 0x00
	RMCP_TYPE_ACK  = 0x01
)
View Source
const (
	MessageACKBit    uint8 = 0x80
	MessageNormalBit uint8 = 0x00
)
View Source
const (
	MessageClassASF  = 6
	MessageClassIPMI = 7
	MessageClassOEM  = 8
)
View Source
const (
	SensorThresholdStatus_OK  = "ok"
	SensorThresholdStatus_LNC = "lnc"
	SensorThresholdStatus_LCR = "lcr"
	SensorThresholdStatus_LNR = "lnr"
	SensorThresholdStatus_UNC = "unc"
	SensorThresholdStatus_UCR = "ucr"
	SensorThresholdStatus_UNR = "unr"
)
View Source
const (
	// SensorStatusOK means okay (the sensor is present and operating correctly)
	SensorStatusOK = "OK"

	// SensorStatusNoSensor means no sensor (corresponding reading will say disabled or Not Readable)
	SensorStatusNoSensor = "N/A"

	// SensorStatusNonCritical means non-critical error (lower or upper)
	SensorStatusNonCritical = "NC"

	// SensorStatusCritical means critical error (lower or upper)
	SensorStatusCritical = "CR"

	// SensorStatusNonRecoverable means non-recoverable error (lower or upper)
	SensorStatusNonRecoverable = "NR"
)
View Source
const (
	SessionHeader20SizeMax int = 18
	SessionHeader20SizeMin int = 12

	SessionHeader15SizeMax int = 26
	SessionHeader15SizeMin int = 10
)
View Source
const (

	// Eh = retrieve information for channel this request was issued on
	ChannelNumberSelf uint8 = 0x0e
)

Group Extensions

View Source
const (
	IPMIRequesterSequenceMax uint8 = 0x3f // RequesterSequence only occupy 6 bits
)
View Source
const SDRCommandSetVersion uint8 = 0x51

SDRCommandSetVersion is the SDR command-set version returned by Get SDR Repository Info (§33.9) and stored in SDR record headers (§43).

View Source
const SDRRecordHeaderSize int = 5
View Source
const SensorNumberReserved = 0xff
View Source
const TimeFormat = time.RFC3339

Variables

View Source
var (
	ErrUnpackedDataTooShort         = errors.New("unpacked data is too short")
	ErrDCMIGroupExtensionIDMismatch = errors.New("DCMI group extension ID mismatch")
)
View Source
var (
	// a faked command for RAKP messages
	CommandNone = Command{}
	// a faked command for SOL payload packets
	CommandSOLPayload = Command{Name: "SOL Payload"}

	// IPM Device Global Commands
	CommandGetDeviceID                        = Command{ID: 0x01, NetFn: NetFnAppRequest, Name: "Get Device ID"}
	CommandColdReset                          = Command{ID: 0x02, NetFn: NetFnAppRequest, Name: "Cold Reset"}
	CommandWarmReset                          = Command{ID: 0x03, NetFn: NetFnAppRequest, Name: "Warm Reset"}
	CommandGetSelfTestResults                 = Command{ID: 0x04, NetFn: NetFnAppRequest, Name: "Get Self Test Results"}
	CommandManufacturingTestOn                = Command{ID: 0x05, NetFn: NetFnAppRequest, Name: "Manufacturing Test On"}
	CommandSetACPIPowerState                  = Command{ID: 0x06, NetFn: NetFnAppRequest, Name: "Set ACPI Power State"}
	CommandGetACPIPowerState                  = Command{ID: 0x07, NetFn: NetFnAppRequest, Name: "Get ACPI Power State"}
	CommandGetDeviceGUID                      = Command{ID: 0x08, NetFn: NetFnAppRequest, Name: "Get Device GUID"}
	CommandGetNetFnSupport                    = Command{ID: 0x09, NetFn: NetFnAppRequest, Name: "Get NetFn Support"}
	CommandGetCommandSupport                  = Command{ID: 0x0a, NetFn: NetFnAppRequest, Name: "Get Command Support"}
	CommandGetCommandSubfunctionSupport       = Command{ID: 0x0b, NetFn: NetFnAppRequest, Name: "Get Command Sub-function Support"}
	CommandGetConfigurableCommands            = Command{ID: 0x0c, NetFn: NetFnAppRequest, Name: "Get Configurable Commands"}
	CommandGetConfigurableCommandSubfunctions = Command{ID: 0x0d, NetFn: NetFnAppRequest, Name: "Get Configurable Command Sub-functions"} // 0Eh - 0Fh reserved
	CommandSetCommandEnables                  = Command{ID: 0x60, NetFn: NetFnAppRequest, Name: "Set Command Enables"}
	CommandGetCommandEnables                  = Command{ID: 0x61, NetFn: NetFnAppRequest, Name: "Get Command Enables"}
	CommandSetCommandSubfunctionEnables       = Command{ID: 0x62, NetFn: NetFnAppRequest, Name: "Set Command Sub-function Enables"}
	CommandGetCommandSubfunctionEnables       = Command{ID: 0x63, NetFn: NetFnAppRequest, Name: "Get Command Sub-function Enables"}
	CommandGetOEMNetFnIanaSupport             = Command{ID: 0x64, NetFn: NetFnAppRequest, Name: "Get OEM NetFn IANA Support"}

	// BMC Watchdog Timer Commands
	CommandResetWatchdogTimer = Command{ID: 0x22, NetFn: NetFnAppRequest, Name: "Reset Watchdog Timer"}
	CommandSetWatchdogTimer   = Command{ID: 0x24, NetFn: NetFnAppRequest, Name: "Set Watchdog Timer"}
	CommandGetWatchdogTimer   = Command{ID: 0x25, NetFn: NetFnAppRequest, Name: "Get Watchdog Timer"}

	// BMC Device and Messaging Commands
	CommandSetBMCGlobalEnables            = Command{ID: 0x2e, NetFn: NetFnAppRequest, Name: "Set BMC Global Enables"}
	CommandGetBMCGlobalEnables            = Command{ID: 0x2f, NetFn: NetFnAppRequest, Name: "Get BMC Global Enables"}
	CommandClearMessageFlags              = Command{ID: 0x30, NetFn: NetFnAppRequest, Name: "Clear Message Flags"}
	CommandGetMessageFlags                = Command{ID: 0x31, NetFn: NetFnAppRequest, Name: "Get Message Flags"}
	CommandEnableMessageChannelReceive    = Command{ID: 0x32, NetFn: NetFnAppRequest, Name: "Enable Message Channel Receive"}
	CommandGetMessage                     = Command{ID: 0x33, NetFn: NetFnAppRequest, Name: "Get Message"}
	CommandSendMessage                    = Command{ID: 0x34, NetFn: NetFnAppRequest, Name: "Send Message"}
	CommandReadEventMessageBuffer         = Command{ID: 0x35, NetFn: NetFnAppRequest, Name: "Read Event Message Buffer"}
	CommandGetBTInterfaceCapabilities     = Command{ID: 0x36, NetFn: NetFnAppRequest, Name: "Get BT Interface Capabilities"}
	CommandGetSystemGUID                  = Command{ID: 0x37, NetFn: NetFnAppRequest, Name: "Get System GUID"}
	CommandSetSystemInfoParam             = Command{ID: 0x58, NetFn: NetFnAppRequest, Name: "Set System Info Param"}
	CommandGetSystemInfoParam             = Command{ID: 0x59, NetFn: NetFnAppRequest, Name: "Get System Info Param"}
	CommandGetChannelAuthCapabilities     = Command{ID: 0x38, NetFn: NetFnAppRequest, Name: "Get Channel Authentication Capabilities"}
	CommandGetSessionChallenge            = Command{ID: 0x39, NetFn: NetFnAppRequest, Name: "Get Session Challenge"}
	CommandActivateSession                = Command{ID: 0x3a, NetFn: NetFnAppRequest, Name: "Activate Session"}
	CommandSetSessionPrivilegeLevel       = Command{ID: 0x3b, NetFn: NetFnAppRequest, Name: "Set Session Privilege Level"}
	CommandCloseSession                   = Command{ID: 0x3c, NetFn: NetFnAppRequest, Name: "Close Session"}
	CommandGetSessionInfo                 = Command{ID: 0x3d, NetFn: NetFnAppRequest, Name: "Get Session Info"} // 3e unassigned
	CommandGetAuthCode                    = Command{ID: 0x3f, NetFn: NetFnAppRequest, Name: "Get AuthCode"}
	CommandSetChannelAccess               = Command{ID: 0x40, NetFn: NetFnAppRequest, Name: "Set Channel Access"}
	CommandGetChannelAccess               = Command{ID: 0x41, NetFn: NetFnAppRequest, Name: "Get Channel Access"}
	CommandGetChannelInfo                 = Command{ID: 0x42, NetFn: NetFnAppRequest, Name: "Get Channel Info Command"}
	CommandSetUserAccess                  = Command{ID: 0x43, NetFn: NetFnAppRequest, Name: "Set User Access Command"}
	CommandGetUserAccess                  = Command{ID: 0x44, NetFn: NetFnAppRequest, Name: "Get User Access Command"}
	CommandSetUsername                    = Command{ID: 0x45, NetFn: NetFnAppRequest, Name: "Set User Name"}
	CommandGetUsername                    = Command{ID: 0x46, NetFn: NetFnAppRequest, Name: "Get User Name Command"}
	CommandSetUserPassword                = Command{ID: 0x47, NetFn: NetFnAppRequest, Name: "Set User Password Command"}
	CommandActivatePayload                = Command{ID: 0x48, NetFn: NetFnAppRequest, Name: "Activate Payload"}
	CommandDeactivatePayload              = Command{ID: 0x49, NetFn: NetFnAppRequest, Name: "Deactivate Payload"}
	CommandGetPayloadActivationStatus     = Command{ID: 0x4a, NetFn: NetFnAppRequest, Name: "Get Payload Activation Status"}
	CommandGetPayloadInstanceInfo         = Command{ID: 0x4b, NetFn: NetFnAppRequest, Name: "Get Payload Instance Info"}
	CommandSetUserPayloadAccess           = Command{ID: 0x4c, NetFn: NetFnAppRequest, Name: "Set User Payload Access"}
	CommandGetUserPayloadAccess           = Command{ID: 0x4d, NetFn: NetFnAppRequest, Name: "Get User Payload Access"}
	CommandGetChannelPayloadSupport       = Command{ID: 0x4e, NetFn: NetFnAppRequest, Name: "Get Channel Payload Support"}
	CommandGetChannelPayloadVersion       = Command{ID: 0x4f, NetFn: NetFnAppRequest, Name: "Get Channel Payload Version"}
	CommandGetChannelOEMPayloadInfo       = Command{ID: 0x50, NetFn: NetFnAppRequest, Name: "Get Channel OEM Payload Info"} // 51 unassigned
	CommandMasterWriteRead                = Command{ID: 0x52, NetFn: NetFnAppRequest, Name: "Master Write-Read"}            // 53 unassigned
	CommandGetChannelCipherSuites         = Command{ID: 0x54, NetFn: NetFnAppRequest, Name: "Get Channel Cipher Suites"}
	CommandSuspendResumePayloadEncryption = Command{ID: 0x55, NetFn: NetFnAppRequest, Name: "Suspend/Resume Payload Encryption"}
	CommandSetChannelSecurityKeys         = Command{ID: 0x56, NetFn: NetFnAppRequest, Name: "Set Channel Security Keys"}
	CommandGetSystemInterfaceCapabilities = Command{ID: 0x57, NetFn: NetFnAppRequest, Name: "Get System Interface Capabilities"}

	// Chassis Device Commands
	CommandGetChassisCapabilities = Command{ID: 0x00, NetFn: NetFnChassisRequest, Name: "Get Chassis Capabilities"}
	CommandGetChassisStatus       = Command{ID: 0x01, NetFn: NetFnChassisRequest, Name: "Get Chassis Status"}
	CommandChassisControl         = Command{ID: 0x02, NetFn: NetFnChassisRequest, Name: "Chassis Control"}
	CommandChassisReset           = Command{ID: 0x03, NetFn: NetFnChassisRequest, Name: "Chassis Reset"}
	CommandChassisIdentify        = Command{ID: 0x04, NetFn: NetFnChassisRequest, Name: "Chassis Identify"}
	CommandSetChassisCapabilities = Command{ID: 0x05, NetFn: NetFnChassisRequest, Name: "Set Chassis Capabilities"}
	CommandSetPowerRestorePolicy  = Command{ID: 0x06, NetFn: NetFnChassisRequest, Name: "Set Power Restore Policy"}
	CommandGetSystemRestartCause  = Command{ID: 0x07, NetFn: NetFnChassisRequest, Name: "Get System Restart Cause"}
	CommandSetSystemBootOptions   = Command{ID: 0x08, NetFn: NetFnChassisRequest, Name: "Set System Boot Options"}
	CommandGetSystemBootOptions   = Command{ID: 0x09, NetFn: NetFnChassisRequest, Name: "Get System Boot Options"}
	CommandSetFrontPanelEnables   = Command{ID: 0x0a, NetFn: NetFnChassisRequest, Name: "Set Front Panel Button Enables"}
	CommandSetPowerCycleInterval  = Command{ID: 0x0b, NetFn: NetFnChassisRequest, Name: "Set Power Cycle Interval"} // 0ch -0eh unassigned
	CommandGetPOHCounter          = Command{ID: 0x0f, NetFn: NetFnChassisRequest, Name: "Get POH Counter"}

	// Event Commands
	CommandSetEventReceiver     = Command{ID: 0x00, NetFn: NetFnSensorEventRequest, Name: "Set Event Receiver"}
	CommandGetEventReceiver     = Command{ID: 0x01, NetFn: NetFnSensorEventRequest, Name: "Get Event Receiver"}
	CommandPlatformEventMessage = Command{ID: 0x02, NetFn: NetFnSensorEventRequest, Name: "Platform Event (Event Message)"} // 03h -0fh unassigned

	// PEF and Alerting Commands
	CommandGetPEFCapabilities      = Command{ID: 0x10, NetFn: NetFnSensorEventRequest, Name: "Get PEF Capabilities"}
	CommandArmPEFPostponeTimer     = Command{ID: 0x11, NetFn: NetFnSensorEventRequest, Name: "Arm PEF Postpone Timer"}
	CommandSetPEFConfigParam       = Command{ID: 0x12, NetFn: NetFnSensorEventRequest, Name: "Set PEF Configuration Param"}
	CommandGetPEFConfigParam       = Command{ID: 0x13, NetFn: NetFnSensorEventRequest, Name: "Get PEF Configuration Param"}
	CommandSetLastProcessedEventId = Command{ID: 0x14, NetFn: NetFnSensorEventRequest, Name: "Set Last Processed Event ID"}
	CommandGetLastProcessedEventId = Command{ID: 0x15, NetFn: NetFnSensorEventRequest, Name: "Get Last Processed Event ID"}
	CommandAlertImmediate          = Command{ID: 0x16, NetFn: NetFnSensorEventRequest, Name: "Alert Immediate"}
	CommandPETAcknowledge          = Command{ID: 0x17, NetFn: NetFnSensorEventRequest, Name: "PET Acknowledge"}

	// Sensor Device Commands
	CommandGetDeviceSDRInfo               = Command{ID: 0x20, NetFn: NetFnSensorEventRequest, Name: "Get Device SDR Info"}
	CommandGetDeviceSDR                   = Command{ID: 0x21, NetFn: NetFnSensorEventRequest, Name: "Get Device SDR"}
	CommandReserveDeviceSDRRepo           = Command{ID: 0x22, NetFn: NetFnSensorEventRequest, Name: "Reserve Device SDR Repository"}
	CommandGetSensorReadingFactors        = Command{ID: 0x23, NetFn: NetFnSensorEventRequest, Name: "Get Sensor Reading Factors"}
	CommandSetSensorHysteresis            = Command{ID: 0x24, NetFn: NetFnSensorEventRequest, Name: "Set Sensor Hysteresis"}
	CommandGetSensorHysteresis            = Command{ID: 0x25, NetFn: NetFnSensorEventRequest, Name: "Get Sensor Hysteresis"}
	CommandSetSensorThresholds            = Command{ID: 0x26, NetFn: NetFnSensorEventRequest, Name: "Set Sensor Threshold"}
	CommandGetSensorThresholds            = Command{ID: 0x27, NetFn: NetFnSensorEventRequest, Name: "Get Sensor Threshold"}
	CommandSetSensorEventEnable           = Command{ID: 0x28, NetFn: NetFnSensorEventRequest, Name: "Set Sensor Event Enable"}
	CommandGetSensorEventEnable           = Command{ID: 0x29, NetFn: NetFnSensorEventRequest, Name: "Get Sensor Event Enable"}
	CommandRearmSensorEvents              = Command{ID: 0x2a, NetFn: NetFnSensorEventRequest, Name: "Re-arm Sensor Events"}
	CommandGetSensorEventStatus           = Command{ID: 0x2b, NetFn: NetFnSensorEventRequest, Name: "Get Sensor Event Status"} // no 2c
	CommandGetSensorReading               = Command{ID: 0x2d, NetFn: NetFnSensorEventRequest, Name: "Get Sensor Reading"}
	CommandSetSensorType                  = Command{ID: 0x2e, NetFn: NetFnSensorEventRequest, Name: "Set Sensor Type"}
	CommandGetSensorType                  = Command{ID: 0x2f, NetFn: NetFnSensorEventRequest, Name: "Get Sensor Type"}
	CommandSetSensorReadingAndEventStatus = Command{ID: 0x30, NetFn: NetFnSensorEventRequest, Name: "Set Sensor Reading And Event Status"}

	// FRU Device Commands
	CommandGetFRUInventoryAreaInfo = Command{ID: 0x10, NetFn: NetFnStorageRequest, Name: "Get FRU Inventory Area Info"}
	CommandReadFRUData             = Command{ID: 0x11, NetFn: NetFnStorageRequest, Name: "Read FRU Data"}
	CommandWriteFRUData            = Command{ID: 0x12, NetFn: NetFnStorageRequest, Name: "Write FRU Data"}

	// SDR Device Commands
	CommandGetSDRRepoInfo         = Command{ID: 0x20, NetFn: NetFnStorageRequest, Name: "Get SDR Repository Info"}
	CommandGetSDRRepoAllocInfo    = Command{ID: 0x21, NetFn: NetFnStorageRequest, Name: "Get SDR Repository Allocation Info"}
	CommandReserveSDRRepo         = Command{ID: 0x22, NetFn: NetFnStorageRequest, Name: "Reserve SDR Repository"}
	CommandGetSDR                 = Command{ID: 0x23, NetFn: NetFnStorageRequest, Name: "Get SDR"}
	CommandAddSDR                 = Command{ID: 0x24, NetFn: NetFnStorageRequest, Name: "Add SDR"}
	CommandPartialAddSDR          = Command{ID: 0x25, NetFn: NetFnStorageRequest, Name: "Partial Add SDR"}
	CommandDeleteSDR              = Command{ID: 0x26, NetFn: NetFnStorageRequest, Name: "Delete SDR"}
	CommandClearSDRRepo           = Command{ID: 0x27, NetFn: NetFnStorageRequest, Name: "Clear SDR Repository"}
	CommandGetSDRRepoTime         = Command{ID: 0x28, NetFn: NetFnStorageRequest, Name: "Get SDR Repository Time"}
	CommandSetSDRRepoTime         = Command{ID: 0x29, NetFn: NetFnStorageRequest, Name: "Set SDR Repository Time"}
	CommandEnterSDRRepoUpdateMode = Command{ID: 0x2a, NetFn: NetFnStorageRequest, Name: "Enter SDR Repository Update Mode"}
	CommandExitSDRRepoUpdateMode  = Command{ID: 0x2b, NetFn: NetFnStorageRequest, Name: "Exit SDR Repository Update Mode"}
	CommandRunInitializationAgent = Command{ID: 0x2c, NetFn: NetFnStorageRequest, Name: "Run Initialization Agent"}

	// SEL Device Commands
	CommandGetSELInfo          = Command{ID: 0x40, NetFn: NetFnStorageRequest, Name: "Get SEL Info"}
	CommandGetSELAllocInfo     = Command{ID: 0x41, NetFn: NetFnStorageRequest, Name: "Get SEL Allocation Info"}
	CommandReserveSEL          = Command{ID: 0x42, NetFn: NetFnStorageRequest, Name: "Reserve SEL"}
	CommandGetSELEntry         = Command{ID: 0x43, NetFn: NetFnStorageRequest, Name: "Get SEL Entry"}
	CommandAddSELEntry         = Command{ID: 0x44, NetFn: NetFnStorageRequest, Name: "Add SEL Entry"}
	CommandPartialAddSELEntry  = Command{ID: 0x45, NetFn: NetFnStorageRequest, Name: "Partial Add SEL Entry"}
	CommandDeleteSELEntry      = Command{ID: 0x46, NetFn: NetFnStorageRequest, Name: "Delete SEL Entry"}
	CommandClearSEL            = Command{ID: 0x47, NetFn: NetFnStorageRequest, Name: "Clear SEL"}
	CommandGetSELTime          = Command{ID: 0x48, NetFn: NetFnStorageRequest, Name: "Get SEL Time"}
	CommandSetSELTime          = Command{ID: 0x49, NetFn: NetFnStorageRequest, Name: "Set SEL Time"}
	CommandGetAuxLogStatus     = Command{ID: 0x5a, NetFn: NetFnStorageRequest, Name: "Get Auxiliary Log Status"}
	CommandSetAuxLogStatus     = Command{ID: 0x5b, NetFn: NetFnStorageRequest, Name: "Set Auxiliary Log Status"}
	CommandGetSELTimeUTCOffset = Command{ID: 0x5c, NetFn: NetFnStorageRequest, Name: "Get SEL Time UTC Offset"}
	CommandSetSELTimeUTCOffset = Command{ID: 0x5d, NetFn: NetFnStorageRequest, Name: "Set SEL Time UTC Offset"}

	// LAN Device Commands
	CommandSetLanConfigParam = Command{ID: 0x01, NetFn: NetFnTransportRequest, Name: "Set LAN Configuration Param"}
	CommandGetLanConfigParam = Command{ID: 0x02, NetFn: NetFnTransportRequest, Name: "Get LAN Configuration Param"}
	CommandSuspendARPs       = Command{ID: 0x03, NetFn: NetFnTransportRequest, Name: "Suspend BMC ARPs"}
	CommandGetIPStatistics   = Command{ID: 0x04, NetFn: NetFnTransportRequest, Name: "Get IP/UDP/RMCP Statistics"}

	// Serial/Modem Device Commands
	CommandSetSerialConfig        = Command{ID: 0x10, NetFn: NetFnTransportRequest, Name: "Set Serial/Modem Configuration"}
	CommandGetSerialConfig        = Command{ID: 0x11, NetFn: NetFnTransportRequest, Name: "Get Serial/Modem Configuration"}
	CommandSetSerialMux           = Command{ID: 0x12, NetFn: NetFnTransportRequest, Name: "Set Serial/Modem Mux"}
	CommandGetTapResponseCodes    = Command{ID: 0x13, NetFn: NetFnTransportRequest, Name: "Get TAP Response Codes"}
	CommandSetPPPTransmitData     = Command{ID: 0x14, NetFn: NetFnTransportRequest, Name: "Set PPP UDP Proxy Transmit Data"}
	CommandGetPPPTransmitData     = Command{ID: 0x15, NetFn: NetFnTransportRequest, Name: "Get PPP UDP Proxy Transmit Data"}
	CommandSendPPPPacket          = Command{ID: 0x16, NetFn: NetFnTransportRequest, Name: "Send PPP UDP Proxy Packet"}
	CommandGetPPPReceiveData      = Command{ID: 0x17, NetFn: NetFnTransportRequest, Name: "Get PPP UDP Proxy Receive Data"}
	CommandSerialConnectionActive = Command{ID: 0x18, NetFn: NetFnTransportRequest, Name: "Serial/Modem Connection Active"}
	CommandCallback               = Command{ID: 0x19, NetFn: NetFnTransportRequest, Name: "Callback"}
	CommandSetUserCallbackOptions = Command{ID: 0x1a, NetFn: NetFnTransportRequest, Name: "Set User Callback Options"}
	CommandGetUserCallbackOptions = Command{ID: 0x1b, NetFn: NetFnTransportRequest, Name: "Get User Callback Options"}
	CommandSetSerialRoutingMux    = Command{ID: 0x1c, NetFn: NetFnTransportRequest, Name: "Set Serial Routing Mux"}
	CommandSOLActivating          = Command{ID: 0x20, NetFn: NetFnTransportRequest, Name: "SOL Activating"}
	CommandSetSOLConfigParam      = Command{ID: 0x21, NetFn: NetFnTransportRequest, Name: "Set SOL Configuration Param"}
	CommandGetSOLConfigParam      = Command{ID: 0x22, NetFn: NetFnTransportRequest, Name: "Get SOL Configuration Param"}

	// Command Forwarding Commands
	CommandForwarded       = Command{ID: 0x30, NetFn: NetFnTransportRequest, Name: "Forwarded Command"}
	CommandSetForwarded    = Command{ID: 0x31, NetFn: NetFnTransportRequest, Name: "Set Forwarded Commands"}
	CommandGetForwarded    = Command{ID: 0x32, NetFn: NetFnTransportRequest, Name: "Get Forwarded Commands"}
	CommandEnableForwarded = Command{ID: 0x33, NetFn: NetFnTransportRequest, Name: "Enable Forwarded Commands"}

	// Bridge Management Commands (ICMB)
	CommandGetBridgeState        = Command{ID: 0x00, NetFn: NetFnBridgeRequest, Name: "Get Bridge State"}
	CommandSetBridgeState        = Command{ID: 0x01, NetFn: NetFnBridgeRequest, Name: "Set Bridge State"}
	CommandGetICMBAddress        = Command{ID: 0x02, NetFn: NetFnBridgeRequest, Name: "Get ICMB Address"}
	CommandSetICMBAddress        = Command{ID: 0x03, NetFn: NetFnBridgeRequest, Name: "Set ICMB Address"}
	CommandSetBridgeProxyAddress = Command{ID: 0x04, NetFn: NetFnBridgeRequest, Name: "Set Bridge ProxyAddress"}
	CommandGetBridgeStatistics   = Command{ID: 0x05, NetFn: NetFnBridgeRequest, Name: "Get Bridge Statistics"}
	CommandGetICMBCapabilities   = Command{ID: 0x06, NetFn: NetFnBridgeRequest, Name: "Get ICMB Capabilities"}
	CommandClearBridgeStatistics = Command{ID: 0x08, NetFn: NetFnBridgeRequest, Name: "Clear Bridge Statistics"}
	CommandGetBridgeProxyAddress = Command{ID: 0x09, NetFn: NetFnBridgeRequest, Name: "Get Bridge Proxy Address"}
	CommandGetICMBConnectorInfo  = Command{ID: 0x0a, NetFn: NetFnBridgeRequest, Name: "Get ICMB Connector Info"}
	CommandGetICMBConnectionID   = Command{ID: 0x0b, NetFn: NetFnBridgeRequest, Name: "Get ICMB Connection ID"}
	CommandSendICMBConnectionID  = Command{ID: 0x0c, NetFn: NetFnBridgeRequest, Name: "Send ICMB Connection ID"}

	// Discovery Commands (ICMB)
	CommandPrepareForDiscovery = Command{ID: 0x10, NetFn: NetFnBridgeRequest, Name: "Prepare For Discovery"}
	CommandGetAddresses        = Command{ID: 0x11, NetFn: NetFnBridgeRequest, Name: "Get Addresses"}
	CommandSetDiscovered       = Command{ID: 0x12, NetFn: NetFnBridgeRequest, Name: "Set Discovered"}
	CommandGetChassisDeviceId  = Command{ID: 0x13, NetFn: NetFnBridgeRequest, Name: "Get Chassis DeviceId"}
	CommandSetChassisDeviceId  = Command{ID: 0x14, NetFn: NetFnBridgeRequest, Name: "Set Chassis DeviceId"}

	// Bridging Commands (ICMB)
	CommandBridgeRequest = Command{ID: 0x20, NetFn: NetFnBridgeRequest, Name: "Bridge Request"}
	CommandBridgeMessage = Command{ID: 0x21, NetFn: NetFnBridgeRequest, Name: "Bridge Message"}

	// Event Commands (ICMB)
	CommandGetEventCount          = Command{ID: 0x30, NetFn: NetFnBridgeRequest, Name: "Get Event Count"}
	CommandSetEventDestination    = Command{ID: 0x31, NetFn: NetFnBridgeRequest, Name: "Set Event Destination"}
	CommandSetEventReceptionState = Command{ID: 0x32, NetFn: NetFnBridgeRequest, Name: "Set Event Reception State"}
	CommandSendICMBEventMessage   = Command{ID: 0x33, NetFn: NetFnBridgeRequest, Name: "Send ICMB Event Message"}
	CommandGetEventDestination    = Command{ID: 0x34, NetFn: NetFnBridgeRequest, Name: "Get Event Destination"}
	CommandGetEventReceptionState = Command{ID: 0x35, NetFn: NetFnBridgeRequest, Name: "Get Event Reception State"}

	// Other Bridge Commands
	CommandErrorReport = Command{ID: 0xff, NetFn: NetFnBridgeRequest, Name: "Error Report"}

	// Intel DCMI extensions (https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/dcmi-v1-5-rev-spec.pdf)
	CommandGetDCMICapParam                 = Command{ID: 0x01, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Cap Param"}
	CommandGetDCMIPowerReading             = Command{ID: 0x02, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Power Reading"}
	CommandGetDCMIPowerLimit               = Command{ID: 0x03, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Power Limit"}
	CommandSetDCMIPowerLimit               = Command{ID: 0x04, NetFn: NetFnGroupExtensionRequest, Name: "Set DCMI Power Limit"}
	CommandActivateDCMIPowerLimit          = Command{ID: 0x05, NetFn: NetFnGroupExtensionRequest, Name: "Activate/Deactivate DCMI Power Limit"}
	CommandGetDCMIAssetTag                 = Command{ID: 0x06, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Asset Tag"}
	CommandGetDCMISensorInfo               = Command{ID: 0x07, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Sensor Info"}
	CommandSetDCMIAssetTag                 = Command{ID: 0x08, NetFn: NetFnGroupExtensionRequest, Name: "Set DCMI Asset Tag"}
	CommandGetDCMIMgmtControllerIdentifier = Command{ID: 0x09, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Management Controller Identifier String"}
	CommandSetDCMIMgmtControllerIdentifier = Command{ID: 0x0A, NetFn: NetFnGroupExtensionRequest, Name: "Set DCMI Management Controller Identifier String"}
	CommandSetDCMIThermalLimit             = Command{ID: 0x0B, NetFn: NetFnGroupExtensionRequest, Name: "Set DCMI Thermal Limit"}
	CommandGetDCMIThermalLimit             = Command{ID: 0x0C, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Thermal Limit"}
	CommandGetDCMITemperatureReadings      = Command{ID: 0x10, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Temperature Readings"}
	CommandSetDCMIConfigParam              = Command{ID: 0x12, NetFn: NetFnGroupExtensionRequest, Name: "Set DCMI Configuration Param"}
	CommandGetDCMIConfigParam              = Command{ID: 0x13, NetFn: NetFnGroupExtensionRequest, Name: "Get DCMI Configuration Param"}

	// Vendor Specific Commands
	CommandGetSupermicroBiosVersion = Command{ID: 0xAC, NetFn: NetFnOEMSupermicroRequest, Name: "Get Supermicro BIOS Version"}
)

Appendix G - Command Assignments Command Number Assignments (Appendix G, table G-1)

View Source
var (
	SensorEvent_UNC_High_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UNC,
		Assert:        true,
		High:          true,
	}

	SensorEvent_UNC_Low_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UNC,
		Assert:        true,
		High:          false,
	}

	SensorEvent_LNR_High_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LNR,
		Assert:        true,
		High:          true,
	}

	SensorEvent_LNR_Low_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LNR,
		Assert:        true,
		High:          false,
	}

	SensorEvent_LCR_High_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LCR,
		Assert:        true,
		High:          true,
	}

	SensorEvent_LCR_Low_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LCR,
		Assert:        true,
		High:          false,
	}

	SensorEvent_LNC_High_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LNC,
		Assert:        true,
		High:          true,
	}

	SensorEvent_LNC_Low_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LNC,
		Assert:        true,
		High:          false,
	}

	SensorEvent_UNR_High_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UNR,
		Assert:        true,
		High:          true,
	}

	SensorEvent_UNR_Low_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UNR,
		Assert:        true,
		High:          false,
	}

	SensorEvent_UCR_High_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UCR,
		Assert:        true,
		High:          true,
	}

	SensorEvent_UCR_Low_Assert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UCR,
		Assert:        true,
		High:          false,
	}

	SensorEvent_State_14_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       14,
	}

	SensorEvent_State_13_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       13,
	}

	SensorEvent_State_12_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       12,
	}

	SensorEvent_State_11_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       11,
	}

	SensorEvent_State_10_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       10,
	}

	SensorEvent_State_9_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       9,
	}

	SensorEvent_State_8_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       8,
	}

	SensorEvent_State_7_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       7,
	}

	SensorEvent_State_6_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       6,
	}

	SensorEvent_State_5_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       5,
	}

	SensorEvent_State_4_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       4,
	}

	SensorEvent_State_3_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       3,
	}

	SensorEvent_State_2_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       2,
	}

	SensorEvent_State_1_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       1,
	}

	SensorEvent_State_0_Assert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      true,
		State:       0,
	}

	SensorEvent_UNC_High_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UNC,
		Assert:        false,
		High:          true,
	}

	SensorEvent_UNC_Low_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UNC,
		Assert:        false,
		High:          true,
	}

	SensorEvent_LNR_High_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LNR,
		Assert:        false,
		High:          true,
	}

	SensorEvent_LNR_Low_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LNR,
		Assert:        false,
		High:          false,
	}

	SensorEvent_LCR_High_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LCR,
		Assert:        false,
		High:          true,
	}

	SensorEvent_LCR_Low_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LCR,
		Assert:        false,
		High:          false,
	}

	SensorEvent_LNC_High_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LNC,
		Assert:        false,
		High:          true,
	}

	SensorEvent_LNC_Low_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_LNC,
		Assert:        false,
		High:          false,
	}

	SensorEvent_UNR_High_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UNR,
		Assert:        false,
		High:          true,
	}

	SensorEvent_UNR_Low_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UNR,
		Assert:        false,
		High:          false,
	}

	SensorEvent_UCR_High_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UCR,
		Assert:        false,
		High:          true,
	}

	SensorEvent_UCR_Low_Deassert = SensorEvent{
		SensorClass:   SensorClassThreshold,
		ThresholdType: SensorThresholdType_UCR,
		Assert:        false,
		High:          false,
	}

	SensorEvent_State_14_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       14,
	}

	SensorEvent_State_13_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       13,
	}

	SensorEvent_State_12_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       12,
	}

	SensorEvent_State_11_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       11,
	}

	SensorEvent_State_10_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       10,
	}

	SensorEvent_State_9_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       9,
	}

	SensorEvent_State_8_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       8,
	}

	SensorEvent_State_7_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       7,
	}

	SensorEvent_State_6_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       6,
	}

	SensorEvent_State_5_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       5,
	}

	SensorEvent_State_4_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       4,
	}

	SensorEvent_State_3_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       3,
	}

	SensorEvent_State_2_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       2,
	}

	SensorEvent_State_1_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       1,
	}

	SensorEvent_State_0_Deassert = SensorEvent{
		SensorClass: SensorClassDiscrete,
		Assert:      false,
		State:       0,
	}
)
View Source
var GenericEvents = map[EventReadingType]map[uint8]Event{
	EventReadingTypeThreshold: {
		0x00: {
			EventName: "Lower Non-critical - going low",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "Lower Non-critical - going high",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x02: {
			EventName: "Lower Critical - going low",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x03: {
			EventName: "Lower Critical - going high",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x04: {
			EventName: "Lower Non-recoverable - going low",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x5: {
			EventName: "Lower Non-recoverable - going high",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x06: {
			EventName: "Upper Non-critical - going low",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x07: {
			EventName: "Upper Non-critical - going high",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x08: {
			EventName: "Upper Critical - going low",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x09: {
			EventName: "Upper Critical - going high",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x0a: {
			EventName: "Upper Non-recoverable - going low",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x0b: {
			EventName: "Upper Non-recoverable - going high",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
	},
	EventReadingTypeTransitionState: {
		0x00: {
			EventName: "Transition to Idle",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityInfo,
				SensorTypeSystemEvent: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityInfo,
				SensorTypeSystemEvent: EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "Transition to Active",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityInfo,
				SensorTypeSystemEvent: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityInfo,
				SensorTypeSystemEvent: EventSeverityInfo,
			},
		},
		0x02: {
			EventName: "Transition to Busy",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityInfo,
				SensorTypeSystemEvent: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityInfo,
				SensorTypeSystemEvent: EventSeverityInfo,
			},
		},
	},
	EventReadingTypeState: {
		0x00: {
			EventName: "State Deasserted",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:               EventSeverityInfo,
				SensorTypeSystemEvent:            EventSeverityInfo,
				SensorTypeButtonSwitch:           EventSeverityInfo,
				SensorTypeModuleBoard:            EventSeverityInfo,
				SensorTypeBootError:              EventSeverityInfo,
				SensorTypeOSStopShutdown:         EventSeverityInfo,
				SensorTypePlatformAlert:          EventSeverityInfo,
				SensorTypeTemperature:            EventSeverityInfo,
				SensorTypeVoltage:                EventSeverityInfo,
				SensorTypeFan:                    EventSeverityInfo,
				SensorTypeProcessor:              EventSeverityInfo,
				SensorTypePowerSupply:            EventSeverityInfo,
				SensorTypePowerUnit:              EventSeverityInfo,
				SensorTypeMemory:                 EventSeverityInfo,
				SensorTypeDriveSlot:              EventSeverityWarning,
				SensorTypePostMemoryResize:       EventSeverityInfo,
				SensorTypeSystemFirmwareProgress: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:               EventSeverityInfo,
				SensorTypeSystemEvent:            EventSeverityInfo,
				SensorTypeButtonSwitch:           EventSeverityInfo,
				SensorTypeModuleBoard:            EventSeverityInfo,
				SensorTypeBootError:              EventSeverityInfo,
				SensorTypeOSStopShutdown:         EventSeverityInfo,
				SensorTypePlatformAlert:          EventSeverityInfo,
				SensorTypeTemperature:            EventSeverityInfo,
				SensorTypeVoltage:                EventSeverityInfo,
				SensorTypeFan:                    EventSeverityInfo,
				SensorTypeProcessor:              EventSeverityInfo,
				SensorTypePowerSupply:            EventSeverityInfo,
				SensorTypePowerUnit:              EventSeverityInfo,
				SensorTypeMemory:                 EventSeverityInfo,
				SensorTypeDriveSlot:              EventSeverityWarning,
				SensorTypePostMemoryResize:       EventSeverityInfo,
				SensorTypeSystemFirmwareProgress: EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "State Asserted",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:               EventSeverityInfo,
				SensorTypeSystemEvent:            EventSeverityWarning,
				SensorTypeButtonSwitch:           EventSeverityInfo,
				SensorTypeModuleBoard:            EventSeverityCritical,
				SensorTypeBootError:              EventSeverityCritical,
				SensorTypeOSStopShutdown:         EventSeverityCritical,
				SensorTypePlatformAlert:          EventSeverityCritical,
				SensorTypeTemperature:            EventSeverityWarning,
				SensorTypeVoltage:                EventSeverityWarning,
				SensorTypeFan:                    EventSeverityWarning,
				SensorTypeProcessor:              EventSeverityCritical,
				SensorTypePowerSupply:            EventSeverityWarning,
				SensorTypePowerUnit:              EventSeverityWarning,
				SensorTypeMemory:                 EventSeverityCritical,
				SensorTypeDriveSlot:              EventSeverityInfo,
				SensorTypePostMemoryResize:       EventSeverityWarning,
				SensorTypeSystemFirmwareProgress: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:               EventSeverityInfo,
				SensorTypeSystemEvent:            EventSeverityWarning,
				SensorTypeButtonSwitch:           EventSeverityInfo,
				SensorTypeModuleBoard:            EventSeverityCritical,
				SensorTypeBootError:              EventSeverityCritical,
				SensorTypeOSStopShutdown:         EventSeverityCritical,
				SensorTypePlatformAlert:          EventSeverityCritical,
				SensorTypeTemperature:            EventSeverityWarning,
				SensorTypeVoltage:                EventSeverityWarning,
				SensorTypeFan:                    EventSeverityWarning,
				SensorTypeProcessor:              EventSeverityCritical,
				SensorTypePowerSupply:            EventSeverityWarning,
				SensorTypePowerUnit:              EventSeverityWarning,
				SensorTypeMemory:                 EventSeverityCritical,
				SensorTypeDriveSlot:              EventSeverityInfo,
				SensorTypePostMemoryResize:       EventSeverityWarning,
				SensorTypeSystemFirmwareProgress: EventSeverityWarning,
			},
		},
	},
	EventReadingTypePredictiveFailure: {
		0x00: {
			EventName: "Predictive Failure de-asserted",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:  EventSeverityInfo,
				SensorTypeDriveSlot: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:  EventSeverityInfo,
				SensorTypeDriveSlot: EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "Predictive Failure asserted",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:  EventSeverityCritical,
				SensorTypeDriveSlot: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:  EventSeverityCritical,
				SensorTypeDriveSlot: EventSeverityCritical,
			},
		},
	},
	EventReadingTypeLimit: {
		0x00: {
			EventName: "Limit Not Exceeded",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityInfo,
				SensorTypeTemperature: EventSeverityInfo,
				SensorTypeVoltage:     EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityInfo,
				SensorTypeTemperature: EventSeverityInfo,
				SensorTypeVoltage:     EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "Limit Exceeded",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityCritical,
				SensorTypeTemperature: EventSeverityCritical,
				SensorTypeVoltage:     EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved:    EventSeverityCritical,
				SensorTypeTemperature: EventSeverityCritical,
				SensorTypeVoltage:     EventSeverityCritical,
			},
		},
	},
	EventReadingTypePerformance: {
		0x00: {
			EventName: "Performance Met",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
				SensorTypeVoltage:  EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
				SensorTypeVoltage:  EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "Performance Lags",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
				SensorTypeVoltage:  EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
				SensorTypeVoltage:  EventSeverityCritical,
			},
		},
	},
	EventReadingTypeTransitionSeverity: {
		0x00: {
			EventName: "transition to OK",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "transition to Non-Critical from OK",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x02: {
			EventName: "transition to Critical from less severe",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x03: {
			EventName: "transition to Non-recoverable from less severe",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x04: {
			EventName: "transition to Non-Critical from more severe",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x05: {
			EventName: "transition to Critical from Non-recoverable",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x06: {
			EventName: "transition to Non-recoverable",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x07: {
			EventName: "Monitor",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x08: {
			EventName: "Informational",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
	},
	EventReadingTypeDevicePresent: {
		0x00: {
			EventName: "Device Removed / Device Absent",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x01: {
			EventName: "Device Inserted / Device Present",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
	},
	EventReadingTypeDeviceEnabled: {
		0x00: {
			EventName: "Device Disabled",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x01: {
			EventName: "Device Enabled",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
	},
	EventReadingTypeTransitionAvailability: {
		0x00: {
			EventName: "transition to Running",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "transition to In Test",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x02: {
			EventName: "transition to Power Off",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x03: {
			EventName: "transition to On Line",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x04: {
			EventName: "transition to Off Line",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x05: {
			EventName: "transition to Off Duty",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x06: {
			EventName: "transition to Degraded",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
		0x07: {
			EventName: "transition to Power Save",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x08: {
			EventName: "Install Error",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
		},
	},
	EventReadingTypeRedundancy: {
		0x00: {
			EventName: "Fully Redundant",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "Redundancy Lost",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x02: {
			EventName: "Redundancy Degraded",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x03: {
			EventName: "Non-redundant (Sufficient Resources from Redundant)",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x04: {
			EventName: "Non-redundant (Sufficient Resources from Insufficient Resources)",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x05: {
			EventName: "Non-redundant (Insufficient Resources)",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityCritical,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x06: {
			EventName: "Redundancy Degraded from Fully Redundant",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
		0x07: {
			EventName: "Redundancy Degraded from Non-redundant",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityWarning,
			},
		},
	},
	EventReadingTypeACPIPowerState: {
		0x00: {
			EventName: "D0 Power State",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x01: {
			EventName: "D1 Power State",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x02: {
			EventName: "D2 Power State",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
		0x03: {
			EventName: "D3 Power State",
			AssertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
			DeassertionSeverityMap: map[SensorType]EventSeverity{
				SensorTypeReserved: EventSeverityInfo,
			},
		},
	},
}

Table 42-2, Generic Event/Reading Type Codes Including Generic threshold-based events (0x01) and Generic discrete-based events (0x02 - 0x0c)

map[EventReadingType]: map[Offset]Event

The severity is copied from freeipmi/libfreeipmi/interpret/ipmi-interpret-config-sel.c

View Source
var SensorSpecificEvents = map[SensorType]map[uint8]Event{
	SensorTypeReserved:    {},
	SensorTypeTemperature: {},
	SensorTypeVoltage:     {},
	SensorTypeCurrent:     {},
	SensorTypeFan:         {},
	SensorTypePhysicalSecurity: {
		0x00: {
			EventName:           "General Chassis Intrusion",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Drive Bay intrusion",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "I/O Card area intrusion",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Processor area intrusion",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x04: {
			EventName:           "LAN Leash Lost (system is unplugged from LAN)",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x05: {
			EventName:           "Unauthorized dock",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x06: {
			EventName:           "FAN area intrusion",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypePlatformSecurity: {
		0x00: {
			EventName:           "Secure Mode (Front Panel Lockout) Violation attempt",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Pre-boot Password Violation - user password",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "Pre-boot Password Violation attempt - setup password",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Pre-boot Password Violation - network boot password",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x04: {
			EventName:           "Other pre-boot Password Violation",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x05: {
			EventName:           "Out-of-band Access Password Violation",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeProcessor: {
		0x00: {
			EventName:           "IERR",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Thermal Trip",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "FRB1/BIST failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "FRB2/Hang in POST failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x04: {
			EventName:           "FRB3/Processor Startup/Initialization failure (CPU didn't start)",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x05: {
			EventName:           "Configuration Error",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x06: {
			EventName:           "SM BIOS 'Uncorrectable CPU-complex Error'",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x07: {
			EventName:           "Processor Presence detected",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x08: {
			EventName:           "Processor disabled",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x09: {
			EventName:           "Terminator Presence Detected",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x0a: {
			EventName:           "Processor Automatically Throttled",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x0b: {
			EventName:           "Machine Check Exception (Uncorrectable)",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x0c: {
			EventName:           "Correctable Machine Check Error",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
	},
	SensorTypePowerSupply: {
		0x00: {
			EventName:           "Presence detected",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "Power Supply Failure detected",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "Predictive Failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Power Supply input lost (AC/DC)",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x04: {
			EventName:           "Power Supply input lost or out-of-range",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x05: {
			EventName:           "Power Supply input out-of-range, but present",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x06: {
			EventName:           "Configuration error",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x07: {
			EventName:           "Power Supply Inactive (in standby state)",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
	},
	SensorTypePowerUnit: {
		0x00: {
			EventName:           "Power Off / Power Dow",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "Power Cycle",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x02: {
			EventName:           "240VA Power Down",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x03: {
			EventName:           "Interlock Power Down",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x04: {
			EventName:           "AC lost / Power input lost ",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x05: {
			EventName:           "Soft Power Control Failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x06: {
			EventName:           "Power Unit Failure detected",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x07: {
			EventName:           "Predictive Failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeCollingDevice: {},

	SensorTypeOtherUnitsbased: {},
	SensorTypeMemory: {
		0x00: {
			EventName:           "Correctable ECC / other correctable memory error",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x01: {
			EventName:           "Uncorrectable ECC / other uncorrectable memory error",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "Parity",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Memory Scrub Failed (stuck bit)",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x04: {
			EventName:           "Memory Device Disabled",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x05: {
			EventName:           "Correctable ECC / other correctable memory error logging limit reached",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x06: {
			EventName:           "Presence detected",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x07: {
			EventName:           "Configuration error",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x08: {
			EventName:           "Spare",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x09: {
			EventName:           "Memory Automatically Throttled",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x0a: {
			EventName:           "Critical Overtemperature",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeDriveSlot: {
		0x00: {
			EventName:           "Drive Presence",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "Drive Fault",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "Predictive Failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Hot Spare",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x04: {
			EventName:           "Consistency Check / Parity Check in progress",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x05: {
			EventName:           "In Critical Array",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x06: {
			EventName:           "In Failed Array",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x07: {
			EventName:           "Rebuild/Remap in progress",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x08: {
			EventName:           "Rebuild/Remap Aborted (was not completed normally)",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypePostMemoryResize: {},
	SensorTypeSystemFirmwareProgress: {
		0x00: {
			EventName:           "System Firmware Error (POST Error)",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "System Firmware Hang",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "System Firmware Progress",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
	},
	SensorTypeEventLoggingDisabled: {
		0x00: {
			EventName:           "Correctable Memory Error Logging Disabled",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Event 'Type' Logging Disabled",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "Log Area Reset/Cleared",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x03: {
			EventName:           "All Event Logging Disabled",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x04: {
			EventName:           "SEL Full",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x05: {
			EventName:           "SEL Almost Full",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x06: {
			EventName:           "Correctable Machine Check Error Logging Disabled",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeWatchdog1: {
		0x00: {
			EventName: "BIOS Watchdog Reset",
		},
		0x01: {
			EventName: "OS Watchdog Reset",
		},
		0x02: {
			EventName: "OS Watchdog Shut Down",
		},
		0x03: {
			EventName: "OS Watchdog Power Down",
		},
		0x04: {
			EventName: "OS Watchdog Power Cycle",
		},
		0x05: {
			EventName: "OS Watchdog NMI / Diagnostic Interrupt",
		},
		0x06: {
			EventName: "OS Watchdog Expired, status only",
		},
		0x07: {
			EventName: "OS Watchdog pre-timeout Interrupt, non-NMI",
		},
	},
	SensorTypeSystemEvent: {
		0x00: {
			EventName:           "System Reconfigured",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x01: {
			EventName:           "OEM System Boot Event",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x02: {
			EventName:           "Undetermined system hardware failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Entry added to Auxiliary Log",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x04: {
			EventName:           "PEF Action",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x05: {
			EventName:           "Timestamp Clock Synch",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
	},
	SensorTypeCriticalInterrupt: {
		0x00: {
			EventName:           "Front Panel NMI / Diagnostic Interrupt",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Bus Timeout",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "I/O channel check NMI",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Software NMI",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x04: {
			EventName:           "PCI PERR",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x05: {
			EventName:           "PCI SERR",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x06: {
			EventName:           "EISA Fail Safe Timeout",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x07: {
			EventName:           "Bus Correctable Error",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x08: {
			EventName:           "Bus Uncorrectable Error",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x09: {
			EventName:           "Fatal NMI",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x0a: {
			EventName:           "Bus Fatal Error",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x0b: {
			EventName:           "Bus Degraded",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
	},
	SensorTypeButtonSwitch: {
		0x00: {
			EventName:           "Power Button pressed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "Sleep Button pressed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x02: {
			EventName:           "Reset Button pressed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x03: {
			EventName:           "FRU latch open",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x04: {
			EventName:           "FRU service request button",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
	},
	SensorTypeModuleBoard:                {},
	SensorTypeMicrocontrollerCoprocessor: {},
	SensorTypeAddinCard:                  {},
	SensorTypeChassis:                    {},
	SensorTypeChipSet: {
		0x00: {
			EventName:           "Soft Power Control Failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Thermal Trip",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeOtherFRU: {},
	SensorTypeCableInterconnect: {
		0x00: {
			EventName:           "Cable/Interconnect is connected",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "Configuration Error - Incorrect cable connected / Incorrect interconnection",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeTerminator: {},
	SensorTypeSystemBootRestartInitiated: {
		0x00: {
			EventName:           "Initiated by power up",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "Initiated by hard reset",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x02: {
			EventName:           "Initiated by warm reset",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x03: {
			EventName:           "User requested PXE boot",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x04: {
			EventName:           "Automatic boot to diagnostic",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x05: {
			EventName:           "OS / run-time software initiated hard reset",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x06: {
			EventName:           "OS / run-time software initiated warm reset",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x07: {
			EventName:           "System Restart",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
	},
	SensorTypeBootError: {
		0x00: {
			EventName:           "No bootable media",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Non-bootable diskette left in drive",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "PXE Server not found",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Invalid boot sector",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x04: {
			EventName:           "Timeout waiting for user selection of boot source",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
	},
	SensorTypeBaseOSBootInstallationStatus: {
		0x00: {
			EventName:           "A: boot completed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "C: boot completed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x02: {
			EventName:           "PXE boot completed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x03: {
			EventName:           "Diagnostic boot completed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x04: {
			EventName:           "CD-ROM boot completed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x05: {
			EventName:           "ROM boot completed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x06: {
			EventName:           "boot completed - boot device not specified",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x07: {
			EventName:           "Base OS/Hypervisor Installation started",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x08: {
			EventName:           "Base OS/Hypervisor Installation completed",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x09: {
			EventName:           "Base OS/Hypervisor Installation aborted",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x0a: {
			EventName:           "Base OS/Hypervisor Installation failed",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeOSStopShutdown: {
		0x00: {
			EventName:           "Critical stop during OS load / initialization",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Run-time Critical Stop",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "OS Graceful Stop",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x03: {
			EventName:           "OS Graceful Shutdown",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x04: {
			EventName:           "Soft Shutdown initiated by PEF",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x05: {
			EventName:           "Agent Not Responding",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeSlotConnector: {
		0x00: {
			EventName:           "Fault Status asserted",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "Identify Status asserted",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x02: {
			EventName:           "Slot / Connector Device installed/attached",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x03: {
			EventName:           "Slot / Connector Ready for Device Installation",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x04: {
			EventName:           "Slot/Connector Ready for Device Removal",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x05: {
			EventName:           "Slot Power is Off",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x06: {
			EventName:           "Slot / Connector Device Removal Request",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x07: {
			EventName:           "Interlock asserted",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x08: {
			EventName:           "Slot is Disabled",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x09: {
			EventName:           "Slot holds spare device",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
	},
	SensorTypeSystemACPIPowerState: {
		0x00: {
			EventName:           "S0 / G0 (working)",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "S1 (sleeping with system h/w & processor context maintained)",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x02: {
			EventName:           "S2 (sleeping, processor context lost)",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x03: {
			EventName:           "S3 (sleeping, processor & h/w context lost, memory retained)",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x04: {
			EventName:           "S4 (non-volatile sleep / suspend-to disk)",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x05: {
			EventName:           "S5 / G2 (soft-off)",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x06: {
			EventName:           "S4 / S5 soft-off, particular S4 / S5 state cannot be determined",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x07: {
			EventName:           "G3 / Mechanical Off",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x08: {
			EventName:           "Sleeping in an S1, S2, or S3 states",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x09: {
			EventName:           "G1 sleeping",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x0a: {
			EventName:           "S5 entered by override",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x0b: {
			EventName:           "Legacy ON state",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x0c: {
			EventName:           "Legacy OFF state",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x0e: {
			EventName:           "Unknown",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeWatchdog2: {
		0x00: {
			EventName:           "Timer expired, status only (no action, no interrupt)",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x01: {
			EventName:           "Hard Reset",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "Power Down",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Power Cycle",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x08: {
			EventName:           "Timer interrupt",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
	},
	SensorTypePlatformAlert: {
		0x00: {
			EventName:           "platform generated page",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "platform generated LAN alert",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x02: {
			EventName:           "Platform Event Trap generated",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x03: {
			EventName:           "platform generated SNMP trap",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
	},
	SensorTypeEntityPresence: {
		0x00: {
			EventName:           "Entity Present",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "Entity Absent",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "Entity Disable",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeMonitorASIC: {},
	SensorTypeLAN: {
		0x00: {
			EventName:           "LAN Heartbeat Lost",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x01: {
			EventName:           "LAN Heartbeat",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
	},
	SensorTypeManagementSubsystemHealth: {
		0x00: {
			EventName:           "sensor access degraded or unavailable",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "controller access degraded or unavailable",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "management controller off-line",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "management controller unavailable",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x04: {
			EventName:           "Sensor failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x05: {
			EventName:           "FRU failure",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeBattery: {
		0x00: {
			EventName:           "battery low (predictive failure)",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x01: {
			EventName:           "battery failed",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "battery presence detected",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
	},
	SensorTypeSessionAudit: {
		0x00: {
			EventName:           "Session Activated",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x01: {
			EventName:           "Session Deactivated",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x02: {
			EventName:           "Invalid Username or Password",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x03: {
			EventName:           "Invalid password disable",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
	SensorTypeVersionChange: {
		0x00: {
			EventName:           "Hardware change detected with associated Entity",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x01: {
			EventName:           "Firmware or software change detected with associated Entity",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x02: {
			EventName:           "Hardware incompatibility detected with associated Entity",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x03: {
			EventName:           "Firmware or software incompatibility detected with associated Entity",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x04: {
			EventName:           "Entity is of an invalid or unsupported hardware version",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x05: {
			EventName:           "Entity contains an invalid or unsupported firmware or software version",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x06: {
			EventName:           "Hardware Change detected with associated Entity was successful",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x07: {
			EventName:           "Software or F/W Change detected with associated Entity was successful",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
	},
	SensorTypeFRUState: {
		0x00: {
			EventName:           "FRU Not Installed",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x01: {
			EventName:           "FRU Inactive (in standby or 'hot spare' state)",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
		0x02: {
			EventName:           "FRU Activation Requested",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x03: {
			EventName:           "FRU Activation In Progress",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x04: {
			EventName:           "FRU Active",
			AssertionSeverity:   EventSeverityInfo,
			DeassertionSeverity: EventSeverityInfo,
		},
		0x05: {
			EventName:           "FRU Deactivation Requested",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x06: {
			EventName:           "FRU Deactivation In Progress",
			AssertionSeverity:   EventSeverityWarning,
			DeassertionSeverity: EventSeverityWarning,
		},
		0x07: {
			EventName:           "FRU Communication Lost",
			AssertionSeverity:   EventSeverityCritical,
			DeassertionSeverity: EventSeverityCritical,
		},
	},
}

42.2 Sensor Type Codes and Data Sensor Specific Events SensorType, Offset

Functions

func AllCC

func AllCC(cmd Command) map[uint8]string

AllCC returns a new map of generic completion codes merged with any command-specific codes defined for cmd. Prefer StrCC when only one code needs a name.

func AnalogValue

func AnalogValue(raw uint8, format SensorAnalogUnitFormat) int32

The raw analog data is unpacked as an unsigned integer. But whether it is a positive number (>0) or negative number (<0) is determined by the "analog data format" field (SensorUnit.AnalogDataFormat)

func Array16

func Array16(s []byte) [16]byte

func BCDUint8

func BCDUint8(i uint8) uint8

8421 BCD bcdUint8 decodes BCD encoded integer to normal unsigned integer.

func CheckDCMIGroupExenstionMatch

func CheckDCMIGroupExenstionMatch(grpExt uint8) error

func ClearBit0

func ClearBit0(b uint8) uint8

func ClearBit1

func ClearBit1(b uint8) uint8

func ClearBit2

func ClearBit2(b uint8) uint8

func ClearBit3

func ClearBit3(b uint8) uint8

func ClearBit4

func ClearBit4(b uint8) uint8

func ClearBit5

func ClearBit5(b uint8) uint8

func ClearBit6

func ClearBit6(b uint8) uint8

func ClearBit7

func ClearBit7(b uint8) uint8

func CommandSpecificCC

func CommandSpecificCC(cmd Command) map[uint8]string

CommandSpecificCC returns the command-specific completion-code name map for cmd. Returns nil when the command defines none. The returned map is shared package state; callers must treat it as read-only.

func ConvertReading

func ConvertReading(raw uint8, analogDataFormat SensorAnalogUnitFormat, factors ReadingFactors, linearizationFunc LinearizationFunc) float64

ConvertReading converts raw sensor reading or raw sensor threshold value to real value in the desired units for the sensor.

see: 36.3 Sensor Reading Conversion Formula

INPUT: raw (unsigned)
  -- APPLY: analogDataFormat
    --> GOT: analog (signed)
      -- APPLY: factors/linearization
        --> GOT: converted (float64)

func ConvertSensorHysteresis

func ConvertSensorHysteresis(raw uint8, analogDataFormat SensorAnalogUnitFormat, factors ReadingFactors, linearizationFunc LinearizationFunc) float64

ConvertSensorHysteresis converts raw sensor hysteresis value to real value in the desired units for the sensor.

see: 36.3 Sensor Reading Conversion Formula

func ConvertSensorTolerance

func ConvertSensorTolerance(raw uint8, analogDataFormat SensorAnalogUnitFormat, factors ReadingFactors, linearizationFunc LinearizationFunc) float64

ConvertSensorTolerance converts raw sensor tolerance value to real value in the desired units for the sensor.

see: 36.4.1 Tolerance

func ErrDCMIGroupExtensionIDMismatchWith

func ErrDCMIGroupExtensionIDMismatchWith(expected uint8, actual uint8) error

func ErrNotEnoughDataWith

func ErrNotEnoughDataWith(msg string, actual int, expected int) error

func ErrUnpackedDataTooShortWith

func ErrUnpackedDataTooShortWith(actual int, expected int) error

func FRUFieldString

func FRUFieldString(tl TypeLength, raw []byte) string

func FormatBool

func FormatBool(b bool, trueStr string, falseStr string) string

func FormatEventFilters

func FormatEventFilters(eventFilters []*PEFEventFilter) string

func FormatGUIDDetails

func FormatGUIDDetails(guid [16]byte) string

func FormatPEFAlertPolicyTable

func FormatPEFAlertPolicyTable(alertPolicies []*PEFAlertPolicy) string

func FormatSDRs

func FormatSDRs(records []*SDR) string

FormatSDRs returns a table formatted string for print.

func FormatSDRsStream

func FormatSDRsStream(seq iter.Seq[*Result[SDR]]) error

func FormatSDRsStream_FRU

func FormatSDRsStream_FRU(seq iter.Seq[*Result[SDR]]) error

func FormatSDRs_FRU

func FormatSDRs_FRU(records []*SDR) string

Format SDRs of FRU record type

func FormatSELs

func FormatSELs(records []*SEL, sdrMap SDRMapBySensorNumber) string

FormatSELs print sel records in table format. The second sdrMap is optional. If the sdrMap is not nil, it will also print sensor number, entity id and instance, and asserted discrete states. The sdrMap can be fetched by GetSDRsMap method.

func FormatSELsStream

func FormatSELsStream(seq iter.Seq[*Result[SEL]], sdrMap SDRMapBySensorNumber) error

func FormatSensors

func FormatSensors(extended bool, sensors ...*Sensor) string

FormatSensors return a string of table printed for sensors

func FormatSensorsStream

func FormatSensorsStream(extended bool, seq iter.Seq[*Result[Sensor]]) error

func GetCipherSuiteAlgorithms

func GetCipherSuiteAlgorithms(cipherSuiteID CipherSuiteID) (authAlg AuthAlg, integrity IntegrityAlg, encryptionAlg CryptAlg, ok bool)

getCipherSuiteAlgorithms returns AuthAlg, IntegrityAlg and CryptAlg of the specified cipherSuiteID.

func IntegrityPadLen

func IntegrityPadLen(sessionHeaderLen, payloadLen int) int

IntegrityPadLen returns the number of 0xFF Integrity Pad bytes needed so that (session header || payload || pad || Pad Length || Next Header) is a multiple of 4 bytes before the AuthCode field (v2.0§13.28.4 / Table 13-8).

func IsBit0Set

func IsBit0Set(b uint8) bool

func IsBit1Set

func IsBit1Set(b uint8) bool

func IsBit2Set

func IsBit2Set(b uint8) bool

func IsBit3Set

func IsBit3Set(b uint8) bool

func IsBit4Set

func IsBit4Set(b uint8) bool

func IsBit5Set

func IsBit5Set(b uint8) bool

func IsBit6Set

func IsBit6Set(b uint8) bool

func IsBit7Set

func IsBit7Set(b uint8) bool

func IsNilBootOptionParameter

func IsNilBootOptionParameter(param BootOptionParameter) bool

func IsNilDCMICapParameter

func IsNilDCMICapParameter(param DCMICapParameter) bool

func IsNilDCMIConfigParameter

func IsNilDCMIConfigParameter(param DCMIConfigParameter) bool

func IsNilLanConfigParameter

func IsNilLanConfigParameter(param LanConfigParameter) bool

func IsNilPEFConfigParameter

func IsNilPEFConfigParameter(param PEFConfigParameter) bool

func IsNilSOLConfigParameter

func IsNilSOLConfigParameter(param SOLConfigParameter) bool

func IsNilSystemInfoParamete

func IsNilSystemInfoParamete(param SystemInfoParameter) bool

func OneSComplement

func OneSComplement(i uint32, bitSize uint8) int32

onesComplement returns the signed integer of the input number encoded with 1's complement. The lowest significant 'bitSize' bits of the input number i is considered.

func OneSComplementEncode

func OneSComplementEncode(i int32, bitSize uint8) uint32

func PackBytes

func PackBytes(v []byte, msg []byte, off int) (int, error)

func PackCompactSensor

func PackCompactSensor(opts CompactSensorPackOpts) []byte

PackCompactSensor builds a Type 02h Compact Sensor wire record per §43.2. The layout matches [parseSDRCompactSensor].

func PackFRU

func PackFRU(cfg FRUPackConfig) ([]byte, error)

PackFRU serialises a FRU inventory area per Platform Management FRU v1.0.

func PackFRUInventory

func PackFRUInventory(fru *FRU) ([]byte, error)

PackFRUInventory serialises a parsed FRU to wire bytes per Platform Management FRU v1.0.

func PackMCLocator

func PackMCLocator(opts MCLocatorPackOpts) []byte

PackMCLocator builds a Type 12h Management Controller Device Locator wire record per §43.9. The layout matches [parseSDRManagementControllerDeviceLocator].

func PackMultiRecords

func PackMultiRecords(records []*FRUMultiRecord) []byte

PackMultiRecords concatenates encoded multi-record entries (fru§16). The last non-nil record is forced to EndOfList=1 (fru§16.2.2); earlier records are packed with EndOfList=0 so the area terminates correctly.

func PackSDR

func PackSDR(sdr *SDR) ([]byte, error)

PackSDR serializes a parsed SDR back to wire bytes per v2.0§43.

func PackUint8

func PackUint8(i uint8, msg []byte, off int) (int, error)

packUint8 fills an uint8 value (i) into byte slice (msg) at the index of (offset)

func PackUint16

func PackUint16(i uint16, msg []byte, off int) (int, error)

func PackUint16L

func PackUint16L(i uint16, msg []byte, off int) (int, error)

func PackUint24

func PackUint24(i uint32, msg []byte, off int) (int, error)

func PackUint24L

func PackUint24L(i uint32, msg []byte, off int) (int, error)

func PackUint32

func PackUint32(i uint32, msg []byte, off int) (int, error)

func PackUint32L

func PackUint32L(i uint32, msg []byte, off int) (int, error)

func PackUint48

func PackUint48(i uint64, msg []byte, off int) (int, error)

func PackUint48L

func PackUint48L(i uint64, msg []byte, off int) (int, error)

func PackUint64

func PackUint64(i uint64, msg []byte, off int) (int, error)

func PackUint64L

func PackUint64L(i uint64, msg []byte, off int) (int, error)

func PadBytes

func PadBytes(s string, width int, pad byte) []byte

padBytes will padding the origin "s" string to fixed "width" length, with "pad" as the padding byte.

func ParseGUID

func ParseGUID(data []byte, guidMode GUIDMode) (*uuid.UUID, error)

ParseGUID parses the raw guid data with the specified encoding mode. Different GUIDMode would interpret the 16-byte data into different layout of uuid.

see: https://github.com/ipmitool/ipmitool/issues/25

func ParseTimestamp

func ParseTimestamp(timestamp uint32) time.Time

37 Timestamp Format

func RandomBytes

func RandomBytes(n int) []byte

func RenderTable

func RenderTable(headers []string, rows []map[string]string) string

RenderTable formats a table from a slice of rows. The Headers is a slice of strings, the order of the headers is the order of the columns in the table. Each row is represented as a map, the keys of the map are the headers of the table.

func RenderTableStream

func RenderTableStream(headers []string, rowSeq iter.Seq[map[string]string]) error

func SetBit0

func SetBit0(b uint8) uint8

func SetBit1

func SetBit1(b uint8) uint8

func SetBit2

func SetBit2(b uint8) uint8

func SetBit3

func SetBit3(b uint8) uint8

func SetBit4

func SetBit4(b uint8) uint8

func SetBit5

func SetBit5(b uint8) uint8

func SetBit6

func SetBit6(b uint8) uint8

func SetBit7

func SetBit7(b uint8) uint8

func SetOrClearBit0

func SetOrClearBit0(b uint8, cond bool) uint8

func SetOrClearBit1

func SetOrClearBit1(b uint8, cond bool) uint8

func SetOrClearBit2

func SetOrClearBit2(b uint8, cond bool) uint8

func SetOrClearBit3

func SetOrClearBit3(b uint8, cond bool) uint8

func SetOrClearBit4

func SetOrClearBit4(b uint8, cond bool) uint8

func SetOrClearBit5

func SetOrClearBit5(b uint8, cond bool) uint8

func SetOrClearBit6

func SetOrClearBit6(b uint8, cond bool) uint8

func SetOrClearBit7

func SetOrClearBit7(b uint8, cond bool) uint8

func SplitSDRDump

func SplitSDRDump(data []byte) map[uint16][]byte

SplitSDRDump splits concatenated SDR repository bytes into individual records.

func StrCC

func StrCC(cmd Command, ccode uint8) string

StrCC returns the description of ccode for cmd: command-specific name when defined, otherwise the generic name, otherwise hex.

func TwoSComplement

func TwoSComplement(i uint32, bitSize uint8) int32

twosComplement returns the signed integer of the input number encoded with 2's complement. The lowest significant 'bitSize' bits of the input number i is considered.

func TwoSComplementEncode

func TwoSComplementEncode(i int32, bitSize uint8) uint32

func UnpackBytes

func UnpackBytes(msg []byte, off int, length int) ([]byte, int, error)

func UnpackBytesMost

func UnpackBytesMost(msg []byte, off int, length int) ([]byte, int, error)

unpackBytesMost unpacks most length of bytes from msg starting from off index. It stops when reaching the msg end or reaching the most length. This functions never failed, it always return nil error. The caller should check the length of the returned out byte

func UnpackUint8

func UnpackUint8(msg []byte, off int) (uint8, int, error)

func UnpackUint16

func UnpackUint16(msg []byte, off int) (uint16, int, error)

func UnpackUint16L

func UnpackUint16L(msg []byte, off int) (uint16, int, error)

func UnpackUint24

func UnpackUint24(msg []byte, off int) (uint32, int, error)

func UnpackUint24L

func UnpackUint24L(msg []byte, off int) (uint32, int, error)

func UnpackUint32

func UnpackUint32(msg []byte, off int) (uint32, int, error)

func UnpackUint32L

func UnpackUint32L(msg []byte, off int) (uint32, int, error)

func UnpackUint48

func UnpackUint48(msg []byte, off int) (uint64, int, error)

func UnpackUint48L

func UnpackUint48L(msg []byte, off int) (uint64, int, error)

func UnpackUint64

func UnpackUint64(msg []byte, off int) (uint64, int, error)

func UnpackUint64L

func UnpackUint64L(msg []byte, off int) (uint64, int, error)

Types

type ASF

type ASF struct {
	IANA        uint32 // 4542
	MessageType uint8

	// 0-FEh, generated by remote console. This is an RMCP version of a sequence number.
	// Values 0-254 (0-FEh) are used for RMCP request/response messages.
	// 255 indicates the message is unidirectional and not part of a request/response pair.
	MessageTag uint8

	DataLength uint8 // 00h

	Data []byte
}

func (*ASF) Pack

func (asf *ASF) Pack() []byte

func (*ASF) Unpack

func (asf *ASF) Unpack(msg []byte) error

type AuthAlg

type AuthAlg uint8

13.28

const (
	AuthAlg_None        AuthAlg = 0x00 // Mandatory
	AuthAlg_HMAC_SHA1   AuthAlg = 0x01 // Mandatory
	AuthAlg_HMAC_MD5    AuthAlg = 0x02 // Optional
	AuthAlg_HMAC_SHA256 AuthAlg = 0x03 // Optional
)

func (AuthAlg) String

func (authAlg AuthAlg) String() string

type AuthType

type AuthType uint8
const (
	AuthTypeNone     AuthType = 0x00
	AuthTypeMD2      AuthType = 0x01
	AuthTypeMD5      AuthType = 0x02
	AuthTypePassword AuthType = 0x04
	AuthTypeOEM      AuthType = 0x05
	AuthTypeRMCPPlus AuthType = 0x06
)

type AuthTypesEnabled

type AuthTypesEnabled struct {
	OEM      bool
	Password bool
	MD5      bool
	MD2      bool
	None     bool
}

func (AuthTypesEnabled) String

func (authTypeEnabled AuthTypesEnabled) String() string

type BIOSBootType

type BIOSBootType bool
const (
	BIOSBootTypeLegacy BIOSBootType = false // PC compatible boot (legacy)
	BIOSBootTypeEFI    BIOSBootType = true  // Extensible Firmware Interface Boot (EFI)
)

func (BIOSBootType) String

func (t BIOSBootType) String() string

type BIOSMuxControl

type BIOSMuxControl uint8

func (BIOSMuxControl) String

func (b BIOSMuxControl) String() string

type BIOSVerbosity

type BIOSVerbosity uint8 // only 2 bits, occupied 0-3
const (
	BIOSVerbosityDefault BIOSVerbosity = 0
	BIOSVerbosityQuiet   BIOSVerbosity = 1
	BIOSVerbosityVerbose BIOSVerbosity = 2
)

func (BIOSVerbosity) String

func (v BIOSVerbosity) String() string

type BoardType

type BoardType uint8

func (BoardType) String

func (boardType BoardType) String() string

type BootDeviceSelector

type BootDeviceSelector uint8 // only 4 bits occupied
const (
	BootDeviceSelectorNoOverride               BootDeviceSelector = 0x00
	BootDeviceSelectorForcePXE                 BootDeviceSelector = 0x01
	BootDeviceSelectorForceHardDrive           BootDeviceSelector = 0x02
	BootDeviceSelectorForceHardDriveSafe       BootDeviceSelector = 0x03
	BootDeviceSelectorForceDiagnosticPartition BootDeviceSelector = 0x04
	BootDeviceSelectorForceCDROM               BootDeviceSelector = 0x05
	BootDeviceSelectorForceBIOSSetup           BootDeviceSelector = 0x06
	BootDeviceSelectorForceRemoteFloppy        BootDeviceSelector = 0x07
	BootDeviceSelectorForceRemoteCDROM         BootDeviceSelector = 0x08
	BootDeviceSelectorForceRemoteMedia         BootDeviceSelector = 0x09
	BootDeviceSelectorForceRemoteHardDrive     BootDeviceSelector = 0x0b
	BootDeviceSelectorForceFloppy              BootDeviceSelector = 0x0f
)

func (BootDeviceSelector) String

func (s BootDeviceSelector) String() string

type BootInfoAcknowledgeBy

type BootInfoAcknowledgeBy uint8
const (
	BootInfoAcknowledgeByBIOSPOST           BootInfoAcknowledgeBy = 1 << 0
	BootInfoAcknowledgeByOSLoader           BootInfoAcknowledgeBy = 1 << 1
	BootInfoAcknowledgeByOSServicePartition BootInfoAcknowledgeBy = 1 << 2
	BootInfoAcknowledgeBySMS                BootInfoAcknowledgeBy = 1 << 3
	BootInfoAcknowledgeByOEM                BootInfoAcknowledgeBy = 1 << 4
)

type BootOptionParamSelector

type BootOptionParamSelector uint8 //  only 7 bits occupied, 0-127
const (
	BootOptionParamSelector_SetInProgress            BootOptionParamSelector = 0x00
	BootOptionParamSelector_ServicePartitionSelector BootOptionParamSelector = 0x01
	BootOptionParamSelector_ServicePartitionScan     BootOptionParamSelector = 0x02
	BootOptionParamSelector_BMCBootFlagValidBitClear BootOptionParamSelector = 0x03
	BootOptionParamSelector_BootInfoAcknowledge      BootOptionParamSelector = 0x04
	BootOptionParamSelector_BootFlags                BootOptionParamSelector = 0x05
	BootOptionParamSelector_BootInitiatorInfo        BootOptionParamSelector = 0x06
	BootOptionParamSelector_BootInitiatorMailbox     BootOptionParamSelector = 0x07
)

func (BootOptionParamSelector) String

func (bop BootOptionParamSelector) String() string

type BootOptionParam_BMCBootFlagValidBitClear

type BootOptionParam_BMCBootFlagValidBitClear struct {
	DontClearOnResetPEFOrPowerCyclePEF      bool // corresponding to restart cause: 0x08, 0x09
	DontClearOnCommandReceivedTimeout       bool // corresponding to restart cause: 0x01
	DontClearOnWatchdogTimeout              bool // corresponding to restart cause: 0x04
	DontClearOnResetPushButtonOrSoftReset   bool // corresponding to restart cause: 0x02, 0x0a
	DontClearOnPowerUpPushButtonOrWakeEvent bool // corresponding to restart cause: 0x03, 0x0b
}

func (*BootOptionParam_BMCBootFlagValidBitClear) BootOptionParameter

func (p *BootOptionParam_BMCBootFlagValidBitClear) BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)

func (*BootOptionParam_BMCBootFlagValidBitClear) Format

func (*BootOptionParam_BMCBootFlagValidBitClear) Pack

func (*BootOptionParam_BMCBootFlagValidBitClear) Unpack

func (p *BootOptionParam_BMCBootFlagValidBitClear) Unpack(parameterData []byte) error

type BootOptionParam_BootFlags

type BootOptionParam_BootFlags struct {
	// 1b = boot flags valid.
	// The bit should be set to indicate that valid flag data is present.
	// This bit may be automatically cleared based on the boot flag valid bit clearing parameter, above.
	BootFlagsValid bool
	// 0b = options apply to next boot only.
	// 1b = options requested to be persistent for all future boots (i.e. requests BIOS to change its boot settings)
	Persist bool
	// 0b = "PC compatible" boot (legacy)
	// 1b = Extensible Firmware Interface Boot (EFI)
	BIOSBootType BIOSBootType

	CMOSClear          bool
	LockKeyboard       bool
	BootDeviceSelector BootDeviceSelector // 4 bits
	ScreenBlank        bool
	LockoutResetButton bool

	LockoutPowerOff           bool
	BIOSVerbosity             BIOSVerbosity
	ForceProgressEventTraps   bool
	BypassUserPassword        bool
	LockoutSleepButton        bool
	ConsoleRedirectionControl ConsoleRedirectionControl // only 2 bits

	BIOSSharedModeOverride bool
	BIOSMuxControl         BIOSMuxControl // only 3 bits

	DeviceInstanceSelector uint8 // only 5 bits
}

func (*BootOptionParam_BootFlags) BootOptionParameter

func (p *BootOptionParam_BootFlags) BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)

func (*BootOptionParam_BootFlags) Format

func (p *BootOptionParam_BootFlags) Format() string

func (*BootOptionParam_BootFlags) OptionsHelp

func (bootFlags *BootOptionParam_BootFlags) OptionsHelp() string

func (*BootOptionParam_BootFlags) Pack

func (p *BootOptionParam_BootFlags) Pack() []byte

func (*BootOptionParam_BootFlags) ParseFromOptions

func (bootFlags *BootOptionParam_BootFlags) ParseFromOptions(options []string) error

func (*BootOptionParam_BootFlags) ParseFromOptionsStr

func (bootFlags *BootOptionParam_BootFlags) ParseFromOptionsStr(optionsStr string) error

func (*BootOptionParam_BootFlags) Unpack

func (p *BootOptionParam_BootFlags) Unpack(parameterData []byte) error

type BootOptionParam_BootInfoAcknowledge

type BootOptionParam_BootInfoAcknowledge struct {
	// The boot initiator should typically write FFh to this parameter prior to initiating the boot.
	// The boot initiator may write 0 s if it wants to intentionally direct a given party to ignore the
	// boot info.
	// This field is automatically initialized to 00h when the management controller if first powered up or reset.
	ByOEM                bool
	BySMS                bool
	ByOSServicePartition bool
	ByOSLoader           bool
	ByBIOSPOST           bool
}

func (*BootOptionParam_BootInfoAcknowledge) BootOptionParameter

func (p *BootOptionParam_BootInfoAcknowledge) BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)

func (*BootOptionParam_BootInfoAcknowledge) Format

func (*BootOptionParam_BootInfoAcknowledge) Pack

func (*BootOptionParam_BootInfoAcknowledge) Unpack

func (p *BootOptionParam_BootInfoAcknowledge) Unpack(parameterData []byte) error

type BootOptionParam_BootInitiatorInfo

type BootOptionParam_BootInitiatorInfo struct {
	ChannelNumber     uint8
	SessionID         uint32
	BootInfoTimestamp time.Time
}

func (*BootOptionParam_BootInitiatorInfo) BootOptionParameter

func (p *BootOptionParam_BootInitiatorInfo) BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)

func (*BootOptionParam_BootInitiatorInfo) Format

func (*BootOptionParam_BootInitiatorInfo) Pack

func (*BootOptionParam_BootInitiatorInfo) Unpack

func (p *BootOptionParam_BootInitiatorInfo) Unpack(parameterData []byte) error

type BootOptionParam_BootInitiatorMailbox

type BootOptionParam_BootInitiatorMailbox struct {
	SetSelector uint8
	BlockData   []byte
}

func (*BootOptionParam_BootInitiatorMailbox) BootOptionParameter

func (p *BootOptionParam_BootInitiatorMailbox) BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)

func (*BootOptionParam_BootInitiatorMailbox) Format

func (*BootOptionParam_BootInitiatorMailbox) Pack

func (*BootOptionParam_BootInitiatorMailbox) Unpack

func (p *BootOptionParam_BootInitiatorMailbox) Unpack(parameterData []byte) error

type BootOptionParam_ServicePartitionScan

type BootOptionParam_ServicePartitionScan struct {
	// data 1 [7:2] - reserved
	//  - [1] - 1b = Request BIOS to scan for specified service partition.
	//               BIOS clears this bit after the requested scan has been performed.
	//  - [0] - 1b = Service Partition discovered.
	//               BIOS sets this bit to indicate it has discovered the specified service partition.
	//               The bit retains the value from the last scan.
	//               Therefore, to get up-to-date status of the discovery state, a scan may need to be requested.
	RequestBIOSScan            bool
	ServicePartitionDiscovered bool
}

func (*BootOptionParam_ServicePartitionScan) BootOptionParameter

func (p *BootOptionParam_ServicePartitionScan) BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)

func (BootOptionParam_ServicePartitionScan) Format

func (*BootOptionParam_ServicePartitionScan) Pack

func (*BootOptionParam_ServicePartitionScan) Unpack

func (p *BootOptionParam_ServicePartitionScan) Unpack(paramData []byte) error

type BootOptionParam_ServicePartitionSelector

type BootOptionParam_ServicePartitionSelector struct {
	Selector uint8
}

This value is used to select which service partition BIOS should boot using.

func (*BootOptionParam_ServicePartitionSelector) BootOptionParameter

func (p *BootOptionParam_ServicePartitionSelector) BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)

func (*BootOptionParam_ServicePartitionSelector) Format

func (*BootOptionParam_ServicePartitionSelector) Pack

func (*BootOptionParam_ServicePartitionSelector) Unpack

func (p *BootOptionParam_ServicePartitionSelector) Unpack(paramData []byte) error

type BootOptionParam_SetInProgress

type BootOptionParam_SetInProgress struct {
	Value SetInProgressState
}

func (*BootOptionParam_SetInProgress) BootOptionParameter

func (p *BootOptionParam_SetInProgress) BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)

func (*BootOptionParam_SetInProgress) Format

func (*BootOptionParam_SetInProgress) Pack

func (p *BootOptionParam_SetInProgress) Pack() []byte

func (*BootOptionParam_SetInProgress) Unpack

func (p *BootOptionParam_SetInProgress) Unpack(paramData []byte) error

type BootOptionParameter

type BootOptionParameter interface {
	BootOptionParameter() (paramSelector BootOptionParamSelector, setSelector uint8, blockSelector uint8)
	Parameter
}

type BootOptionsParams

type BootOptionsParams struct {
	SetInProgress            *BootOptionParam_SetInProgress
	ServicePartitionSelector *BootOptionParam_ServicePartitionSelector
	ServicePartitionScan     *BootOptionParam_ServicePartitionScan
	BMCBootFlagValidBitClear *BootOptionParam_BMCBootFlagValidBitClear
	BootInfoAcknowledge      *BootOptionParam_BootInfoAcknowledge
	BootFlags                *BootOptionParam_BootFlags
	BootInitiatorInfo        *BootOptionParam_BootInitiatorInfo
	BootInitiatorMailbox     *BootOptionParam_BootInitiatorMailbox
}

Table 28-14, Boot Option Parameters

func (*BootOptionsParams) Format

func (bootOptionsParams *BootOptionsParams) Format() string

type Channel

type Channel uint8

6.3 Channel Numbers Only the channel number assignments for the primary IPMB and the System Interface are fixed, the assignment of other channel numbers can vary on a per-platform basis

const (
	ChannelPrimaryIPMB Channel = 0x0
	ChannelSystem      Channel = 0xf
)

type ChannelAccessMode

type ChannelAccessMode uint8

6.6 Channel Access Modes

const (
	ChannelAccessMode_Disabled        ChannelAccessMode = 0
	ChannelAccessMode_PrebootOnly     ChannelAccessMode = 1
	ChannelAccessMode_AlwaysAvailable ChannelAccessMode = 2
	ChannelAccessMode_Shared          ChannelAccessMode = 3
)

func (ChannelAccessMode) String

func (mode ChannelAccessMode) String() string

type ChannelAccessOption

type ChannelAccessOption uint8

see: Table 22-28, Get Channel Access Command

const (
	ChannelAccessOption_NoChange    ChannelAccessOption = 0
	ChannelAccessOption_NonVolatile ChannelAccessOption = 1 // get non-volatile Channel Access
	ChannelAccessOption_Volatile    ChannelAccessOption = 2 // get present volatile (active) setting of Channel Access
)

type ChannelInfo

type ChannelInfo struct {
	TransmitSupported bool // false means  receive message queue access only
	MessageReceiveLUN uint8
	ChannelProtocol   uint8
}

type ChannelMedium

type ChannelMedium uint8

6.5 Channel Medium Type

const (
	ChannelMediumIPMB            ChannelMedium = 0x01
	ChannelMediumICMBv10         ChannelMedium = 0x02
	ChannelMediumICMBv09         ChannelMedium = 0x03
	ChannelMediumLAN             ChannelMedium = 0x04
	ChannelMediumSerial          ChannelMedium = 0x05
	ChannelMediumOtherLAN        ChannelMedium = 0x06
	ChannelMediumSMBus           ChannelMedium = 0x07
	ChannelMediumSMBusv10        ChannelMedium = 0x08
	ChannelMediumSMBusv20        ChannelMedium = 0x09
	ChannelMediumUSBv1           ChannelMedium = 0x0a
	ChannelMediumUSBv2           ChannelMedium = 0x0b
	ChannelMediumSystemInterface ChannelMedium = 0x0c
)

func (ChannelMedium) String

func (cp ChannelMedium) String() string

type ChannelPrivilegeOption

type ChannelPrivilegeOption uint8
const (
	ChannelPrivilegeOption_NoChange    ChannelPrivilegeOption = 0
	ChannelPrivilegeOption_NonVolatile ChannelPrivilegeOption = 1
	ChannelPrivilegeOption_Volatile    ChannelPrivilegeOption = 2
)

type ChannelProtocol

type ChannelProtocol uint8

6.4 Channel Protocol Type

const (
	ChannelProtocolIPMB  ChannelProtocol = 0x01
	ChannelProtocolICMB  ChannelProtocol = 0x02 // 03 reserved
	ChannelProtocolSMBus ChannelProtocol = 0x04
	ChannelProtocolKCS   ChannelProtocol = 0x05
	ChannelProtocolSMIC  ChannelProtocol = 0x06
	ChannelProtocolBTv10 ChannelProtocol = 0x07
	ChannelProtocolBTv15 ChannelProtocol = 0x08
	ChannelProtocolTMode ChannelProtocol = 0x09
	ChannelProtocolOEM1  ChannelProtocol = 0x1c
	ChannelProtocolOEM2  ChannelProtocol = 0x1d
	ChannelProtocolOEM3  ChannelProtocol = 0x1e
	ChannelProtocolOEM4  ChannelProtocol = 0x1f
)

func (ChannelProtocol) String

func (cp ChannelProtocol) String() string

type ChassisSecurityStatus

type ChassisSecurityStatus uint8

func (ChassisSecurityStatus) String

func (chassisSecurityStatus ChassisSecurityStatus) String() string

type ChassisState

type ChassisState uint8

func (ChassisState) String

func (chassisState ChassisState) String() string

type ChassisType

type ChassisType uint8

func (ChassisType) String

func (chassisType ChassisType) String() string

type CipherSuiteID

type CipherSuiteID uint8

22.15.2 Cipher Suite IDs

const (
	CipherSuiteID0        CipherSuiteID = 0
	CipherSuiteID1        CipherSuiteID = 1
	CipherSuiteID2        CipherSuiteID = 2
	CipherSuiteID3        CipherSuiteID = 3
	CipherSuiteID4        CipherSuiteID = 4
	CipherSuiteID5        CipherSuiteID = 5
	CipherSuiteID6        CipherSuiteID = 6
	CipherSuiteID7        CipherSuiteID = 7
	CipherSuiteID8        CipherSuiteID = 8
	CipherSuiteID9        CipherSuiteID = 9
	CipherSuiteID10       CipherSuiteID = 10
	CipherSuiteID11       CipherSuiteID = 11
	CipherSuiteID12       CipherSuiteID = 12
	CipherSuiteID13       CipherSuiteID = 13
	CipherSuiteID14       CipherSuiteID = 14
	CipherSuiteID15       CipherSuiteID = 15
	CipherSuiteID16       CipherSuiteID = 16
	CipherSuiteID17       CipherSuiteID = 17
	CipherSuiteID18       CipherSuiteID = 18
	CipherSuiteID19       CipherSuiteID = 19
	CipherSuiteIDReserved CipherSuiteID = 0xff
)

func SortCipherSuites

func SortCipherSuites(cipherSuites []CipherSuiteID) []CipherSuiteID

sortCipherSuites return cipher suites in order of preference. the cipher suite not in the PreferredCiphers list would be excluded.

type CipherSuiteRecord

type CipherSuiteRecord struct {
	// If StartOfRecord is C0h, indicating that the Start Of Record byte is followed by an Cipher Suite ID
	// If StartOfRecord is C1h, indicating that the Start Of Record byte is followed  by a OEM Cipher Suite ID plus OEM IANA
	StartOfRecord uint8

	// a numeric way of identifying the Cipher Suite on the platform
	CipherSuitID CipherSuiteID
	OEMIanaID    uint32 // Least significant byte first. 3-byte IANA for the OEM or body that defined the Cipher Suite.

	// an authentication algorithm number is required for all Cipher Suites.
	// It is possible that a given Cipher Suite may not specify use of an integrity or confidentiality algorithm.
	AuthAlg       uint8   // Tag bits: [7:6]=00b
	IntegrityAlgs []uint8 // Tag bits: [7:6]=01b
	CryptAlgs     []uint8 // Tag bits: [7:6]=10b
}

22.15.1 Cipher Suite Records The size of a CipherSuiteRecord is

type Command

type Command struct {
	ID    uint8
	NetFn NetFn
	Name  string
}

Command is the field in an IPMI message

func (Command) Key

func (c Command) Key() CommandKey

Key returns the Name-independent identity of c for map lookups.

type CommandKey

type CommandKey struct {
	NetFn NetFn
	ID    uint8
}

CommandKey is the wire identity of a command: request NetFn + command ID. Name is intentionally excluded so lookups match regardless of whether the caller has a named table entry or a raw {NetFn, ID} pair from the wire.

type CommunityString

type CommunityString [18]byte

func NewCommunityString

func NewCommunityString(s string) CommunityString

func (CommunityString) String

func (c CommunityString) String() string

type CompactSensorPackOpts

type CompactSensorPackOpts struct {
	RecordID     uint16
	SensorNumber uint8
	SensorType   uint8 // e.g. SensorTypeTemperature (0x01)
	EntityID     uint8 // e.g. 0x07 system board
	Name         string
}

CompactSensorPackOpts configures PackCompactSensor.

type CompletionCode

type CompletionCode uint8
const (
	CodeOK                                   CompletionCode = 0x00 // 00h: Command Completed Normally.
	CodeNormal                                              = CodeOK
	CodeNodeBusy                             CompletionCode = 0xC0 // C0h: Node Busy.
	CodeInvalidCommand                       CompletionCode = 0xC1 // C1h: Invalid Command.
	CodeInvalidCommandForLUN                 CompletionCode = 0xC2 // C2h: Command invalid for given LUN.
	CodeProcessTimeout                       CompletionCode = 0xC3 // C3h: Timeout while processing command.
	CodeOutOfSpace                           CompletionCode = 0xC4 // C4h: Out of space.
	CodeReservationCanceled                  CompletionCode = 0xC5 // C5h: Reservation Canceled or Invalid Reservation ID.
	CodeRequestDataTruncated                 CompletionCode = 0xC6 // C6h: Request data truncated.
	CodeRequestDataLengthInvalid             CompletionCode = 0xC7 // C7h: Request data length invalid.
	CodeRequestDataLengthLimitExceeded       CompletionCode = 0xC8 // C8h: Request data field length limit exceeded.
	CodeParameterOutOfRange                  CompletionCode = 0xC9 // C9h: Parameter out of range.
	CodeCannotReturnRequestedDataBytes       CompletionCode = 0xCA // CAh: Cannot return number of requested data bytes.
	CodeRequestedDataNotPresent              CompletionCode = 0xCB // CBh: Requested Sensor, data, or record not present.
	CodeRequestDataFieldInvalid              CompletionCode = 0xCC // CCh: Invalid data field in Request.
	CodeIllegalCommand                       CompletionCode = 0xCD // CDh: Command illegal for specified sensor or record type.
	CodeCannotProvideResponse                CompletionCode = 0xCE // CEh: Command response could not be provided.
	CodeCannotExecuteDuplicatedRequest       CompletionCode = 0xCF // CFh: Cannot execute duplicated request.
	CodeCannotProvideResponseSDRRInUpdate    CompletionCode = 0xD0 // D0h: SDR Repository in update mode.
	CodeCannotProvideResponseFirmwareUpdate  CompletionCode = 0xD1 // D1h: Device in firmware update mode.
	CodeCannotProvideResponseBMCInitialize   CompletionCode = 0xD2 // D2h: BMC initialization in progress.
	CodeDestinationUnavailable               CompletionCode = 0xD3 // D3h: Destination unavailable.
	CodeInsufficientPrivilege                CompletionCode = 0xD4 // D4h: Cannot execute command due to insufficient privilege level or other security-based restriction.
	CodeCannotExecuteCommandSecurityRestrict                = CodeInsufficientPrivilege
	CodeNotSupported                         CompletionCode = 0xD5 // D5h: Cannot execute command. Command, or request parameter(s), not supported in present state.
	CodeCannotExecuteCommandNotSupported                    = CodeNotSupported
	CodeSubFnDisabled                        CompletionCode = 0xD6 // D6h: Cannot execute command. Parameter is illegal because command sub-function has been disabled or is unavailable.
	CodeCannotExecuteCommandSubFnDisabled                   = CodeSubFnDisabled
	CodeUnspecifiedError                     CompletionCode = 0xFF // FFh: Unspecified error.

	// COMMAND-SPECIFIC CODES 80h-BEh — defined per-command in the relevant command specification sections.
	//
	// CodeParameterNotSupported (80h) is defined for Set/Get System Boot Options
	// (v2.0§28.12 / §28.13) and other config-parameter commands (e.g. §22.14a/b
	// Set/Get System Info Parameters) when the parameter selector is not implemented.
	CodeParameterNotSupported CompletionCode = 0x80
)

IPMI v2.0 Rev 1.1, section 5.2 Table 5-2, Completion Codes.

IPMI v2.0 is backward-compatible with v1.5 for all completion codes. The only differences from v1.5 Rev 1.2 Table 5-2 are:

  • D4h (modified): expanded from "Insufficient privilege level" to include "or other security-based restriction (e.g. disabled for firmware firewall)"
  • D6h (new): "Cannot execute command. Parameter is illegal because command sub-function has been disabled or is unavailable"

Completion Code ranges:

  • 00h, C0h-FFh: Generic completion codes
  • 01h-7Eh: Device-specific (OEM) codes
  • 80h-BEh: Standard command-specific codes (per-command definitions)
  • All other: Reserved

func (CompletionCode) Error

func (cc CompletionCode) Error() string

Error makes CompletionCode implement the error interface.

func (CompletionCode) String

func (cc CompletionCode) String() string

String return description of generic completion code. Prefer StrCC when the command is known so that command-specific codes (80h-BEh) resolve to names.

type ConsoleRedirectionControl

type ConsoleRedirectionControl uint8
const (
	ConsoleRedirectionControl_Default ConsoleRedirectionControl = 0
	ConsoleRedirectionControl_Skip    ConsoleRedirectionControl = 1
	ConsoleRedirectionControl_Enable  ConsoleRedirectionControl = 2
)

func (ConsoleRedirectionControl) String

func (c ConsoleRedirectionControl) String() string

type CryptAlg

type CryptAlg uint8

13.28.5 Confidentiality (Encryption) Algorithms AES is more secure than RC4 RC4 is cryptographically broken and should not be used for secure applications.

func (CryptAlg) String

func (cryptAlg CryptAlg) String() string

type DCMICapParamSelector

type DCMICapParamSelector uint8

func (DCMICapParamSelector) String

func (dcmiCapParamSelector DCMICapParamSelector) String() string

type DCMICapParam_EnhancedSystemPowerStatisticsAttributes

type DCMICapParam_EnhancedSystemPowerStatisticsAttributes struct {
	RollingCount                 uint8
	RollingAverageTimePeriodsSec []int
}

func (*DCMICapParam_EnhancedSystemPowerStatisticsAttributes) DCMICapParameter

func (*DCMICapParam_EnhancedSystemPowerStatisticsAttributes) Format

func (*DCMICapParam_EnhancedSystemPowerStatisticsAttributes) Pack

func (*DCMICapParam_EnhancedSystemPowerStatisticsAttributes) Unpack

type DCMICapParam_ManageabilityAccessAttributes

type DCMICapParam_ManageabilityAccessAttributes struct {
	PrimaryLANChannelNumber   uint8
	SecondaryLANChannelNumber uint8
	SerialChannelNumber       uint8
}

func (*DCMICapParam_ManageabilityAccessAttributes) DCMICapParameter

func (*DCMICapParam_ManageabilityAccessAttributes) Format

func (*DCMICapParam_ManageabilityAccessAttributes) Pack

func (*DCMICapParam_ManageabilityAccessAttributes) Unpack

func (param *DCMICapParam_ManageabilityAccessAttributes) Unpack(paramData []byte) error

type DCMICapParam_MandatoryPlatformAttributes

type DCMICapParam_MandatoryPlatformAttributes struct {
	SELAutoRolloverEnabled           bool
	EntireSELFlushUponRollOver       bool
	RecordLevelSELFlushUponRollOver  bool
	SELEntriesCount                  uint16 //only 12 bits, [11-0] Number of SEL entries (Maximum 4096)
	TemperatrureSamplingFrequencySec uint8
}

func (*DCMICapParam_MandatoryPlatformAttributes) DCMICapParameter

func (*DCMICapParam_MandatoryPlatformAttributes) Format

func (*DCMICapParam_MandatoryPlatformAttributes) Pack

func (*DCMICapParam_MandatoryPlatformAttributes) Unpack

func (param *DCMICapParam_MandatoryPlatformAttributes) Unpack(paramData []byte) error

type DCMICapParam_OptionalPlatformAttributes

type DCMICapParam_OptionalPlatformAttributes struct {
	PowerMgmtDeviceSlaveAddr         uint8
	PewerMgmtControllerChannelNumber uint8
	DeviceRevision                   uint8
}

func (*DCMICapParam_OptionalPlatformAttributes) DCMICapParameter

func (*DCMICapParam_OptionalPlatformAttributes) Format

func (*DCMICapParam_OptionalPlatformAttributes) Pack

func (*DCMICapParam_OptionalPlatformAttributes) Unpack

func (param *DCMICapParam_OptionalPlatformAttributes) Unpack(paramData []byte) error

type DCMICapParam_SupportedDCMICapabilities

type DCMICapParam_SupportedDCMICapabilities struct {
	SupportPowerManagement bool
	SupportInBandKCS       bool
	SupportOutOfBandSerial bool
	SupportOutOfBandLAN    bool
}

func (*DCMICapParam_SupportedDCMICapabilities) DCMICapParameter

func (*DCMICapParam_SupportedDCMICapabilities) Format

func (*DCMICapParam_SupportedDCMICapabilities) Pack

func (*DCMICapParam_SupportedDCMICapabilities) Unpack

func (param *DCMICapParam_SupportedDCMICapabilities) Unpack(paramData []byte) error

type DCMICapParameter

type DCMICapParameter interface {
	DCMICapParameter() DCMICapParamSelector
	Parameter
}

type DCMICapParams

type DCMICapParams struct {
	SupportedDCMICapabilities               *DCMICapParam_SupportedDCMICapabilities
	MandatoryPlatformAttributes             *DCMICapParam_MandatoryPlatformAttributes
	OptionalPlatformAttributes              *DCMICapParam_OptionalPlatformAttributes
	ManageabilityAccessAttributes           *DCMICapParam_ManageabilityAccessAttributes
	EnhancedSystemPowerStatisticsAttributes *DCMICapParam_EnhancedSystemPowerStatisticsAttributes
}

func (*DCMICapParams) Format

func (dcmiCapParams *DCMICapParams) Format() string

type DCMIConfigParamSelector

type DCMIConfigParamSelector uint8
const (
	DCMIConfigParamSelector_ActivateDHCP           DCMIConfigParamSelector = 0x01
	DCMIConfigParamSelector_DiscoveryConfiguration DCMIConfigParamSelector = 0x02
	DCMIConfigParamSelector_DHCPTiming1            DCMIConfigParamSelector = 0x03
	DCMIConfigParamSelector_DHCPTiming2            DCMIConfigParamSelector = 0x04
	DCMIConfigParamSelector_DHCPTiming3            DCMIConfigParamSelector = 0x05
)

func (DCMIConfigParamSelector) String

func (paramSelector DCMIConfigParamSelector) String() string

type DCMIConfigParam_ActivateDHCP

type DCMIConfigParam_ActivateDHCP struct {
	// Writing 01h to this parameter will trigger DHCP protocol restart using the latest parameter
	// settings, if DHCP is enabled. This can be used to ensure that the other DHCP configuration
	// parameters take effect immediately. Otherwise, the parameters may not take effect until the
	// next time the protocol restarts or a protocol timeout or lease expiration occurs. This is not a
	// non-volatile setting. It is only used to trigger a restart of the DHCP protocol.
	//
	// This parameter shall always return 0x00 when read.
	Activate bool
}

func (*DCMIConfigParam_ActivateDHCP) DCMIConfigParameter

func (param *DCMIConfigParam_ActivateDHCP) DCMIConfigParameter() (paramSelector DCMIConfigParamSelector, setSelector uint8)

func (*DCMIConfigParam_ActivateDHCP) Format

func (param *DCMIConfigParam_ActivateDHCP) Format() string

func (*DCMIConfigParam_ActivateDHCP) Pack

func (param *DCMIConfigParam_ActivateDHCP) Pack() []byte

func (*DCMIConfigParam_ActivateDHCP) Unpack

func (param *DCMIConfigParam_ActivateDHCP) Unpack(paramData []byte) error

type DCMIConfigParam_DHCPTiming1

type DCMIConfigParam_DHCPTiming1 struct {
	// This parameter sets the amount of time between the first attempt to reach a server and the
	// second attempt to reach a server.
	//
	// Each time a message is sent the timeout interval between messages is incremented by
	// twice the current interval multiplied by a pseudo random number between zero and one
	// if random back-off is enabled, or multiplied by one if random back-off is disabled.
	//
	// The recommended default is four seconds
	InitialTimeoutIntervalSec uint8
}

func (*DCMIConfigParam_DHCPTiming1) DCMIConfigParameter

func (param *DCMIConfigParam_DHCPTiming1) DCMIConfigParameter() (paramSelector DCMIConfigParamSelector, setSelector uint8)

func (*DCMIConfigParam_DHCPTiming1) Format

func (param *DCMIConfigParam_DHCPTiming1) Format() string

func (*DCMIConfigParam_DHCPTiming1) Pack

func (param *DCMIConfigParam_DHCPTiming1) Pack() []byte

func (*DCMIConfigParam_DHCPTiming1) Unpack

func (param *DCMIConfigParam_DHCPTiming1) Unpack(paramData []byte) error

type DCMIConfigParam_DHCPTiming2

type DCMIConfigParam_DHCPTiming2 struct {
	// This parameter determines the amount of time that must pass between the time that the
	// client initially tries to determine its address and the time that it decides that it cannot contact
	// a server. If the last lease is expired, the client will restart the protocol after the defined retry
	// interval. The recommended default timeout is two minutes. After server contact timeout, the
	// client must wait for Server Contact Retry Interval before attempting to contact the server
	// again.
	ServerContactTimeoutIntervalSec uint8
}

func (*DCMIConfigParam_DHCPTiming2) DCMIConfigParameter

func (param *DCMIConfigParam_DHCPTiming2) DCMIConfigParameter() (paramSelector DCMIConfigParamSelector, setSelector uint8)

func (*DCMIConfigParam_DHCPTiming2) Format

func (param *DCMIConfigParam_DHCPTiming2) Format() string

func (*DCMIConfigParam_DHCPTiming2) Pack

func (param *DCMIConfigParam_DHCPTiming2) Pack() []byte

func (*DCMIConfigParam_DHCPTiming2) Unpack

func (param *DCMIConfigParam_DHCPTiming2) Unpack(paramData []byte) error

type DCMIConfigParam_DHCPTiming3

type DCMIConfigParam_DHCPTiming3 struct {
	// This is the period between DHCP retries after Server contact timeout interval expires. This
	// parameter determines the time that must pass after the client has determined that there is no
	// DHCP server present before it tries again to contact a DHCP server.
	//
	// The recommended default timeout is sixty-four seconds
	ServerContactRetryIntervalSec uint8
}

func (*DCMIConfigParam_DHCPTiming3) DCMIConfigParameter

func (param *DCMIConfigParam_DHCPTiming3) DCMIConfigParameter() (paramSelector DCMIConfigParamSelector, setSelector uint8)

func (*DCMIConfigParam_DHCPTiming3) Format

func (param *DCMIConfigParam_DHCPTiming3) Format() string

func (*DCMIConfigParam_DHCPTiming3) Pack

func (param *DCMIConfigParam_DHCPTiming3) Pack() []byte

func (*DCMIConfigParam_DHCPTiming3) Unpack

func (param *DCMIConfigParam_DHCPTiming3) Unpack(paramData []byte) error

type DCMIConfigParam_DiscoveryConfiguration

type DCMIConfigParam_DiscoveryConfiguration struct {
	RandomBackoffEnabled     bool
	IncludeDHCPOption60And43 bool
	IncludeDHCPOption12      bool
}

func (*DCMIConfigParam_DiscoveryConfiguration) DCMIConfigParameter

func (param *DCMIConfigParam_DiscoveryConfiguration) DCMIConfigParameter() (paramSelector DCMIConfigParamSelector, setSelector uint8)

func (*DCMIConfigParam_DiscoveryConfiguration) Format

func (*DCMIConfigParam_DiscoveryConfiguration) Pack

func (*DCMIConfigParam_DiscoveryConfiguration) Unpack

func (param *DCMIConfigParam_DiscoveryConfiguration) Unpack(paramData []byte) error

type DCMIConfigParameter

type DCMIConfigParameter interface {
	DCMIConfigParameter() (paramSelector DCMIConfigParamSelector, setSelector uint8)
	Parameter
}

type DCMIConfigParams

type DCMIConfigParams struct {
	ActivateDHCP           *DCMIConfigParam_ActivateDHCP
	DiscoveryConfiguration *DCMIConfigParam_DiscoveryConfiguration
	DHCPTiming1            *DCMIConfigParam_DHCPTiming1
	DHCPTiming2            *DCMIConfigParam_DHCPTiming2
	DHCPTiming3            *DCMIConfigParam_DHCPTiming3
}

func (*DCMIConfigParams) Format

func (dcmiConfigParams *DCMIConfigParams) Format() string

type DCMIExceptionAction

type DCMIExceptionAction uint8

[DCMI specification v1.5]: 6.6.3 Set Power Limit Exception Actions, taken if the Power Limit is exceeded and cannot be controlled within the Correction Time Limit

const (
	DCMIExceptionAction_NoAction          DCMIExceptionAction = 0x00
	DCMIExceptionAction_PowerOffAndLogSEL DCMIExceptionAction = 0x01
	DCMIExceptionAction_LogSEL            DCMIExceptionAction = 0x11
)

func (DCMIExceptionAction) String

func (a DCMIExceptionAction) String() string

type DeviceType

type DeviceType uint16

43.13 Device Type Codes DeviceType codes are used to identify different types of devices on an IPMB, PCI Management Bus, or Private Management Bus connection to an IPMI management controller

func (DeviceType) String

func (d DeviceType) String() string

type EntityID

type EntityID uint8

43.14 Entity IDs 39. Using Entity IDs EntityID can be seen as Entity Type

1. An Entity ID is a standardized numeric code that is used in SDRs to identify the types of physical entities or FRUs in the system.

2. The Entity ID is associated with an Entity Instance value that is used to indicate the particular instance of an entity

3. The SDR for a sensor includes Entity ID and Entity Instance fields that identify the entity associated with the sensor.

func (EntityID) String

func (e EntityID) String() string

type EntityInstance

type EntityInstance uint8

see: 39.1 System- and Device-relative Entity Instance Values

Entity Instance values in the system-relative range are required to be unique for all entities with the same Entity ID in the system.

Device-relative Entity Instance values are only required to be unique among all entities that have the same Entity ID within a given device (management controller).

For example, management controller A and B could both have FAN entities that have an Entity Instance value of 60h.

EntityInstance only occupy 7 bits, range is 0x00 ~ 0x7f

func (EntityInstance) Type

func (e EntityInstance) Type() string

type Event

type Event struct {
	EventName string
	EventDesc string

	// for generic event, different sensor type may means different severity
	AssertionSeverityMap   map[SensorType]EventSeverity
	DeassertionSeverityMap map[SensorType]EventSeverity

	// for sensor specific event, severity is certain.
	AssertionSeverity   EventSeverity
	DeassertionSeverity EventSeverity

	ED2 map[uint8]string // EventData2
	ED3 map[uint8]string // EventData3
}

type EventData

type EventData struct {
	EventData1 uint8
	EventData2 uint8
	EventData3 uint8
}

29.7 Event Data Field Formats

func (*EventData) EventReadingOffset

func (ed *EventData) EventReadingOffset() uint8

29.7 Event Data Field Formats Event Data 1 [3:0] - for threshold sensors: Offset from Event/Reading Code for threshold event. for discrete sensors: Offset from Event/Reading Code for discrete event state (corresponding 15 possible discrete events)

func (*EventData) String

func (ed *EventData) String() string

type EventDir

type EventDir bool

Event direction, true for deassertion, false for assertion.

see: 32.1 SEL Event Records Table (Byte 13)

const (
	EventDirDeassertion EventDir = true
	EventDirAssertion   EventDir = false
)

func (EventDir) String

func (d EventDir) String() string

type EventReadingType

type EventReadingType uint8

41.2 Event/Reading Type Code 42.1 Event/Reading Type Codes

const (
	// Unspecified
	EventReadingTypeUnspecified EventReadingType = 0x00

	// Threshold
	EventReadingTypeThreshold EventReadingType = 0x01

	// Generic
	EventReadingTypeTransitionState        EventReadingType = 0x02
	EventReadingTypeState                  EventReadingType = 0x03
	EventReadingTypePredictiveFailure      EventReadingType = 0x04
	EventReadingTypeLimit                  EventReadingType = 0x05
	EventReadingTypePerformance            EventReadingType = 0x06
	EventReadingTypeTransitionSeverity     EventReadingType = 0x07
	EventReadingTypeDevicePresent          EventReadingType = 0x08
	EventReadingTypeDeviceEnabled          EventReadingType = 0x09
	EventReadingTypeTransitionAvailability EventReadingType = 0x0a
	EventReadingTypeRedundancy             EventReadingType = 0x0b
	EventReadingTypeACPIPowerState         EventReadingType = 0x0c
	EventReadingTypeSensorSpecific         EventReadingType = 0x6f

	// OEM
	EventReadingTypeOEMMin EventReadingType = 0x70
	EventReadingTypeOEMMax EventReadingType = 0x7f
)

func (EventReadingType) Event

func (typ EventReadingType) Event(sensorType SensorType, eventData EventData) *Event

Event return the predefined Event description struct.

func (EventReadingType) EventForOffset

func (typ EventReadingType) EventForOffset(sensorType SensorType, eventOffset uint8) *Event

func (EventReadingType) EventSeverity

func (typ EventReadingType) EventSeverity(sensorType SensorType, eventData EventData, eventDir EventDir) EventSeverity

EventSeverity return the severity for the event. Todo, refactor

func (EventReadingType) EventString

func (typ EventReadingType) EventString(sensorType SensorType, eventData EventData) string

EventString returns description of the event

func (EventReadingType) IsThreshold

func (typ EventReadingType) IsThreshold() bool

func (EventReadingType) SensorClass

func (typ EventReadingType) SensorClass() SensorClass

func (EventReadingType) String

func (typ EventReadingType) String() string

type EventSeverity

type EventSeverity string
const (
	EventSeverityInfo     EventSeverity = "Info"
	EventSeverityOK       EventSeverity = "OK"
	EventSeverityWarning  EventSeverity = "Warning"
	EventSeverityCritical EventSeverity = "Critical"
	EventSeverityDegraded EventSeverity = "Degraded"
	EventSeverityNonFatal EventSeverity = "Non-fatal"
)

type FRU

type FRU struct {
	DeviceID               uint8
	DeviceName             string
	DeviceNotPresent       bool
	DeviceNotPresentReason string

	CommonHeader    *FRUCommonHeader
	InternalUseArea *FRUInternalUseArea
	ChassisInfoArea *FRUChassisInfoArea
	BoardInfoArea   *FRUBoardInfoArea
	ProductInfoArea *FRUProductInfoArea
	MultiRecords    []*FRUMultiRecord
}

func ParseFRU

func ParseFRU(data []byte) (*FRU, error)

ParseFRU parses raw FRU inventory bytes into a FRU struct.

func (*FRU) Present

func (fru *FRU) Present() bool

func (*FRU) String

func (fru *FRU) String() string

type FRUBoardInfoArea

type FRUBoardInfoArea struct {
	FormatVersion          uint8
	Length8B               uint8
	LanguageCode           uint8
	MfgDateTime            time.Time
	ManufacturerTypeLength TypeLength
	Manufacturer           []byte
	ProductNameTypeLength  TypeLength
	ProductName            []byte
	SerialNumberTypeLength TypeLength
	SerialNumber           []byte
	PartNumberTypeLength   TypeLength
	PartNumber             []byte
	FRUFileIDTypeLength    TypeLength
	FRUFileID              []byte
	Custom                 []FRUField
	Unused                 []byte
	Checksum               uint8
}

FRUBoardInfoArea provides Serial Number, Part Number, and other information about the board that the FRU Information Device is located on. The name 'Board Info Area' is somewhat a misnomer, because the usage is not restricted to just circuit boards. This area is also typically used to provide FRU information for any replaceable entities, boards, or sub-assemblies that are not sold as standalone products separate from other components. For example, individual boards from a board set, or a sub-chassis or backplane that's part of a larger chassis.1

see: fru§11. Board Info Area Format

func (*FRUBoardInfoArea) Pack

func (a *FRUBoardInfoArea) Pack() []byte

Pack encodes the Board Info Area per fru§11.

func (*FRUBoardInfoArea) Unpack

func (fruBoard *FRUBoardInfoArea) Unpack(msg []byte) error

type FRUChassisInfoArea

type FRUChassisInfoArea struct {
	FormatVersion          uint8
	Length8B               uint8
	ChassisType            ChassisType
	PartNumberTypeLength   TypeLength
	PartNumber             []byte
	SerialNumberTypeLength TypeLength
	SerialNumber           []byte
	Custom                 []FRUField
	Unused                 []byte
	Checksum               uint8
}

FRUChassisInfoArea is used to hold Serial Number, Part Number, and other information about the system chassis. A system can have multiple FRU Information Devices within a chassis, but only one device should provide the Chassis Info Area.

see: fru§10. Chassis Info Area Format

func (*FRUChassisInfoArea) Pack

func (a *FRUChassisInfoArea) Pack() []byte

Pack encodes the Chassis Info Area per fru§10.

func (*FRUChassisInfoArea) Unpack

func (fruChassis *FRUChassisInfoArea) Unpack(msg []byte) error

type FRUCommonHeader

type FRUCommonHeader struct {
	FormatVersion        uint8
	InternalOffset8B     uint8
	ChassisOffset8B      uint8
	BoardOffset8B        uint8
	ProductOffset8B      uint8
	MultiRecordsOffset8B uint8
	Checksum             uint8
}

FRUCommonHeader is mandatory for all FRU Information Device implementations. It holds version information for the overall information format specification and offsets to the other information areas.

The other areas may or may not be present based on the application of the device. The offset unit in wire is in multiples of 8 bytes, offset value 0x0 indicates that this area is not present.

ref: fru§8. Common Header Format

func (*FRUCommonHeader) Pack

func (s *FRUCommonHeader) Pack() []byte

func (*FRUCommonHeader) String

func (s *FRUCommonHeader) String() string

func (*FRUCommonHeader) Unpack

func (s *FRUCommonHeader) Unpack(msg []byte) error

func (*FRUCommonHeader) Valid

func (s *FRUCommonHeader) Valid() bool

type FRUField

type FRUField struct {
	TypeLength TypeLength
	Data       []byte
}

FRUField is one Type/Length-encoded FRU string field (fru§13). Data holds the raw bytes that follow the type/length byte on the wire.

func (FRUField) Pack

func (f FRUField) Pack() []byte

Pack serialises the field as type/length + raw data (fru§13).

func (FRUField) String

func (f FRUField) String() string

String decodes Data according to TypeLength for display.

type FRUInternalUseArea

type FRUInternalUseArea struct {
	FormatVersion uint8
	Data          []byte
}

FRUInternalUseArea provides private, implementation-specific information storage for other devices that exist on the same FRU as the FRU Information Device.

The Internal Use Area is usually used to provide private non-volatile storage for a management controller.

see: fru§9. Internal Use Area Format

func (*FRUInternalUseArea) Pack

func (a *FRUInternalUseArea) Pack() []byte

Pack encodes the Internal Use Area per fru§9.

func (*FRUInternalUseArea) Unpack

func (a *FRUInternalUseArea) Unpack(msg []byte) error

Unpack decodes an Internal Use Area per fru§9. msg is the full area slice bounded by common-header offsets; byte 0 is the format version and bytes 1..end are implementation-specific data.

type FRULocation

type FRULocation string

38. Accessing FRU Devices

FRU devices can located in three different types of location.

const (
	// FRU Location: FRU Device behind a management controller
	//
	// only logical FRU Device can be accessed via FRU commands to mgmt controller
	//
	// Access Method:
	// Read/Write FRU Data commands to management controller providing access to the FRU Device.
	//
	// Use Read/WriteFRUData command to access FRU.
	// DeviceAccessAddress (Slave Address of IPMB)
	// FRUDeviceID_SlaveAddress
	FRULocation_MgmtController FRULocation = "on management controller"

	// FRU Location: SEEPROM On private bus behind a management controller
	//
	// Access Method:
	// Master Write-Read command to management controller that provides access to the private bus.
	//
	// Use MasterWriteRead command to access FRU.
	// DeviceAccessAddress (Slave Address of IPMB)
	// PrivateBusID
	// FRUDeviceID_SlaveAddress (Slave Address of SEEPROM on the Private Bus)
	FRULocation_PrivateBus FRULocation = "on private bus"

	// FRU Location : SEEPROM Device directly on IPMB
	//
	// Access Method:
	// Master Write-Read command through BMC from system software, or access via other interface
	// providing low-level I2C access to the IPMB.
	//
	// Use MasterWriteRead command to access FRU.
	// FRUDeviceID_SlaveAddress (slave address Of SEEPROM on the IPMB)
	FRULocation_IPMB FRULocation = "directly on IPMB"
)

type FRUMultiRecord

type FRUMultiRecord struct {
	RecordType FRURecordType // used to identify the information contained in the record

	EndOfList bool // indicates if this record is the last record in the MultiRecord area

	// Record Format version (=2h unless otherwise specified)
	// This field is used to identify the revision level of information stored in this area.
	// This number will start at zero for each new area. If changes need to be made to the record,
	// e.g. fields added/removed, the version number will be increased to reflect the change.
	FormatVersion uint8

	// RecordLength indicates the number of bytes of data in the record. This byte can also be used to find the
	// next area in the list. If the "End of List" bit is zero, the length can be added the starting offset of the current
	// Record Data to get the offset of the next Record Header. This field allows for 0 to 255 bytes of data for
	// each record.
	RecordLength uint8

	RecordChecksum uint8
	HeaderChecksum uint8

	RecordData []byte
}

The MultiRecord Info Area provides a region that holds one or more records where the type and format of the information is specified in the individual headers for the records.

see: fru§16. MultiRecord Area

func (*FRUMultiRecord) Pack

func (r *FRUMultiRecord) Pack() []byte

Pack encodes a MultiRecord entry per fru§16.1 / fru§16.2. A zero FormatVersion defaults to FRUMultiRecordFormatVersion (fru§16.2.3).

func (*FRUMultiRecord) Unpack

func (fruMultiRecord *FRUMultiRecord) Unpack(msg []byte) error

type FRUPackBoard

type FRUPackBoard struct {
	MfgDate    time.Time
	Mfg        string
	Product    string
	Serial     string
	PartNumber string
}

FRUPackBoard holds board info area fields for PackFRU (FRU/11).

type FRUPackChassis

type FRUPackChassis struct {
	Type       uint8
	PartNumber string
	Serial     string
}

FRUPackChassis holds chassis info area fields for PackFRU (FRU/10).

type FRUPackConfig

type FRUPackConfig struct {
	Chassis *FRUPackChassis
	Board   *FRUPackBoard
	Product *FRUPackProduct
}

FRUPackConfig describes fields for PackFRU.

type FRUPackProduct

type FRUPackProduct struct {
	Manufacturer string
	Name         string
	PartModel    string
	Version      string
	Serial       string
}

FRUPackProduct holds product info area fields for PackFRU (FRU/12).

type FRUProductInfoArea

type FRUProductInfoArea struct {
	FormatVersion          uint8
	Length8B               uint8
	LanguageCode           uint8
	ManufacturerTypeLength TypeLength
	Manufacturer           []byte
	NameTypeLength         TypeLength
	Name                   []byte
	PartModelTypeLength    TypeLength
	PartModel              []byte
	VersionTypeLength      TypeLength
	Version                []byte
	SerialNumberTypeLength TypeLength
	SerialNumber           []byte
	AssetTagTypeLength     TypeLength
	AssetTag               []byte
	FRUFileIDTypeLength    TypeLength
	FRUFileID              []byte
	Custom                 []FRUField
	Unused                 []byte
	Checksum               uint8
}

The Product Info Area is present if the FRU itself is a separate product. This is typically seen when the FRU is an add-in card, sub-assembly, or a power supply from a separate vendor, etc. When this area is provided in the FRU Information Device that contains the Chassis Info Area, the product info is for the overall system, as initially manufactured.

see: fru§12. Product Info Area Format

func (*FRUProductInfoArea) Pack

func (a *FRUProductInfoArea) Pack() []byte

Pack encodes the Product Info Area per fru§12.

func (*FRUProductInfoArea) Unpack

func (fruProduct *FRUProductInfoArea) Unpack(msg []byte) error

type FRURecordType

type FRURecordType uint8

func (FRURecordType) String

func (t FRURecordType) String() string

type FRURecordTypeBaseCompatibility

type FRURecordTypeBaseCompatibility struct {
	ManufacturerID         uint32
	EntityID               EntityID
	CompatibilityBase      uint8
	CompatibilityCodeStart uint8
	CodeRangeMask          uint8
}

FRU: 18.5 Base Compatibility Record (Record Type 0x04)

func (*FRURecordTypeBaseCompatibility) Pack

Pack encodes record type 0x04 per fru§18.5.

func (*FRURecordTypeBaseCompatibility) Unpack

func (f *FRURecordTypeBaseCompatibility) Unpack(msg []byte) error

type FRURecordTypeDCLoad

type FRURecordTypeDCLoad struct {
	OutputNumber            uint8
	NominalVoltage10mV      int16
	MinTolerableVoltage10mV int16
	MaxTolerableVoltage10mV int16
	RippleNoise1mV          uint16
	MinCurrentLoad1mA       uint16
	MaxCurrentLoad1mA       uint16
}

FRU: 18.3 DC Load (Record Type 0x02)

func (*FRURecordTypeDCLoad) Pack

func (o *FRURecordTypeDCLoad) Pack() []byte

Pack encodes record type 0x02 per fru§18.3.

func (*FRURecordTypeDCLoad) Unpack

func (output *FRURecordTypeDCLoad) Unpack(msg []byte) error

type FRURecordTypeDCOutput

type FRURecordTypeDCOutput struct {
	//  if the power supply provides this output even when the power supply is switched off.
	OutputWhenOff bool

	OutputNumber uint8

	// Expected voltage from the power supply. Value is a signed short given in 10 millivolt increments.
	// 额定电压 毫 - 伏特
	NominalVoltage10mV int16

	MaxNegativeVoltage10mV int16

	MaxPositiveVoltage10mV int16

	RippleNoise1mV uint16

	// 毫 - 安培
	MinCurrentDraw1mA uint16

	MaxCurrentDraw1mA uint16
}

FRU: 18.2 DC Output (Record Type 0x01)

func (*FRURecordTypeDCOutput) Pack

func (o *FRURecordTypeDCOutput) Pack() []byte

Pack encodes record type 0x01 per fru§18.2.

func (*FRURecordTypeDCOutput) Unpack

func (output *FRURecordTypeDCOutput) Unpack(msg []byte) error

type FRURecordTypeExtendedCompatibilityRecord

type FRURecordTypeExtendedCompatibilityRecord struct {
	ManufacturerID         uint32
	EntityID               EntityID
	CompatibilityBase      uint8
	CompatibilityCodeStart uint8
	CodeRangeMask          uint8
}

FRU: 18.6 Extended Compatibility Record (Record Type 0x05)

func (*FRURecordTypeExtendedCompatibilityRecord) Pack

Pack encodes record type 0x05 per fru§18.6.

func (*FRURecordTypeExtendedCompatibilityRecord) Unpack

type FRURecordTypeExtendedDCLoad

type FRURecordTypeExtendedDCLoad struct {
	IsCurrentUnit100mA bool // current units: true = 100 mA , false = 10 mA
	OutputNumber       uint8
	NominalVoltage10mV int16
	MinVoltage10mV     int16
	MaxVoltage10mV     int16
	RippleNoise1mV     int16
	MinCurrentLoad     uint16 // units is determined by IsCurrentUnit100mA field
	MaxCurrentLoad     uint16 // units is determined by IsCurrentUnit100mA field
}

FRU: 18.3a Extended DC Load (Record Type 0x0A)

func (*FRURecordTypeExtendedDCLoad) Pack

func (f *FRURecordTypeExtendedDCLoad) Pack() []byte

Pack encodes record type 0x0A per fru§18.3a.

func (*FRURecordTypeExtendedDCLoad) Unpack

func (f *FRURecordTypeExtendedDCLoad) Unpack(msg []byte) error

type FRURecordTypeExtendedDCOutput

type FRURecordTypeExtendedDCOutput struct {
	//  if the power supply provides this output even when the power supply is switched off.
	OutputWhenOff bool

	// This record can be used to support power supplies with outputs that exceed 65.535 Amps.
	// 0b = 10 mA
	// 1b = 100 mA
	CurrentUnits100 bool

	OutputNumber uint8

	// Expected voltage from the power supply. Value is a signed short given in 10 millivolt increments.
	// 毫 - 伏特
	NominalVoltage10mV int16

	MaxNegativeVoltage10mV int16

	MaxPositiveVoltage10mV int16

	RippleNoise uint16

	// The unit is determined by CurrentUnits100 field.
	MinCurrentDraw uint16
	MaxCurrentDraw uint16
}

FRU: 18.2a Extended DC Output (Record Type 0x09)

func (*FRURecordTypeExtendedDCOutput) Pack

func (o *FRURecordTypeExtendedDCOutput) Pack() []byte

Pack encodes record type 0x09 per fru§18.2a.

func (*FRURecordTypeExtendedDCOutput) Unpack

func (output *FRURecordTypeExtendedDCOutput) Unpack(msg []byte) error

type FRURecordTypeManagementAccess

type FRURecordTypeManagementAccess struct {
	SubRecordType ManagementAccessSubRecordType
	Data          []byte // the size is MultiRecord.TypeLength.Length() - 1
}

FRU: 18.4 Management Access Record (Record Type 0x03)

func (*FRURecordTypeManagementAccess) Pack

func (r *FRURecordTypeManagementAccess) Pack() []byte

Pack encodes record type 0x03 per fru§18.4.

func (*FRURecordTypeManagementAccess) Unpack

func (f *FRURecordTypeManagementAccess) Unpack(msg []byte) error

type FRURecordTypeOEM

type FRURecordTypeOEM struct {
	ManufacturerID uint32
	Data           []byte
}

FRU: 18.7 OEM Record (Record Types 0xC0-0xFF)

func (*FRURecordTypeOEM) Pack

func (r *FRURecordTypeOEM) Pack() []byte

Pack encodes OEM multi-record types 0xC0–0xFF per fru§18.7.

func (*FRURecordTypeOEM) Unpack

func (f *FRURecordTypeOEM) Unpack(msg []byte) error

type FRURecordTypePowerSupply

type FRURecordTypePowerSupply struct {
	// This field allows for Power Supplies with capacities from 0 to 4095 watts.
	OverallCapacity uint16
	// The highest instantaneous VA value that this supply draws during operation (other than during Inrush). In integer units. FFFFh if not specified.
	PeakVA uint16
	// Maximum inrush of current, in Amps, into the power supply. FFh if not specified.
	InrushCurrent uint8 // 涌入电流
	// Number of milliseconds before power supply loading enters non-startup operating range. Set to 0 if no inrush current specified.
	InrushIntervalMilliSecond uint8
	// This specifies the low end of acceptable voltage into the power supply. The units are 10mV.
	LowEndInputVoltageRange1 uint16
	// This specifies the high end of acceptable voltage into the power supply. The units are 10mV.
	HighEndInputVoltageRange1 uint16
	// This specifies the low end of acceptable voltage into the power supply. This field would be used if the power supply did not support auto-switch. Range 1 would define the 110V range, while range 2 would be used for 220V. The units are 10mV.
	LowEndInputVoltageRange2 uint16
	// This specifies the high end of acceptable voltage into the power supply. This field would be used if the power supply did not support auto-switch. Range 1 would define the 110V range, while range 2 would be used for 220V. The units are 10mV.
	HighEndInputVoltageRange2 uint16
	// This specifies the low end of acceptable frequency range into the power supply. Use 00h if supply accepts a DC input.
	LowEndInputFrequencyRange uint8
	// This specifies the high end of acceptable frequency range into the power supply. Use 00h for both Low End and High End frequency range if supply only takes a DC input.
	HighEndInputFrequencyRange uint8
	// Minimum number of milliseconds the power supply can hold up POWERGOOD (and maintain valid DC output) after input power is lost.
	InputDropoutToleranceMilliSecond uint8

	HotSwapSupport        bool
	AutoSwitch            bool
	PowerFactorCorrection bool
	PredictiveFailSupport bool

	// the number of seconds peak wattage can be sustained (0-15 seconds)
	PeakWattageHoldupSecond uint8
	// the peak wattage the power supply can produce during this time period
	PeakCapacity uint16

	CombinedWattageVoltage1 uint8 // bit 7:4 - Voltage 1
	CombinedWattageVoltage2 uint8 // bit 3:0 - Voltage 2

	TotalCombinedWattage uint16

	// This field serves two purposes.
	// It clarifies what type of predictive fail the power supply supports
	// (pass/fail signal or the tachometer output of the power supply fan)
	// and indicates the predictive failing point for tach outputs.
	// This field should be written as zero and ignored if the
	// predictive failure pin of the power supply is not supported.
	//
	//  0x00 Predictive fail pin indicates pass/fail
	//  0x01 - 0xFF Lower threshold to indicate predictive failure (Rotations per second)
	PredictiveFailTachometerLowerThreshold uint8 // RPS
}

fru: 18.1 Power Supply Information (Record Type 0x00)

type GUIDMode

type GUIDMode uint8

GUIDMode is the way how to decode the 16 bytes GUID

const (
	GUIDModeRFC4122 GUIDMode = iota
	GUIDModeIPMI
	GUIDModeSMBIOS
)

func (GUIDMode) String

func (guidMode GUIDMode) String() string

type GeneratorID

type GeneratorID uint16

GeneratorID is 2 bytes. the LSB represents: Slave Address (for IPMB) or Software ID (for system software); the MSB represents: Channel Number / LUN (for IPMB) or always 0 (for system software)

In some scenario, the GeneratorID is used as 1 byte, because for IPMB, the Slave Address and LUN info are carried in IPMI Request/Response Messages; and for system software, the MSB is always 0, so only LSB is need.

32.1 SEL Event Records

Byte 1
[7:1] - 7-bit Slave Address, or 7-bit system software ID
[0] 0b = IPMB Slave Address, 1b = system software ID

Byte 2
[7:4] - Channel number. Channel that event message was received over. 0h if the
event message was received via the system interface, primary IPMB, or
internally generated by the BMC. (New for IPMI v1.5. These bits were reserved
in IPMI v1.0)
[3:2] - reserved. Write as 00b.
[1:0] - IPMB device LUN if byte 1 holds Slave Address. 00b otherwise
const (
	GeneratorBMC             GeneratorID = 0x0020
	GeneratorBIOSPOST        GeneratorID = 0x0001
	GeneratorBIOSSMIHandler  GeneratorID = 0x0033
	GeneratorIntelNMFirmware GeneratorID = 0x002c // Node Manager
	GeneratorIntelMEFirmware GeneratorID = 0x602c // Management Engine

	// With Microsoft Windows Server* 2003 R2 and later versions, an Intelligent Platform Management Interface (IPMI) driver was added.
	// This added the capability of logging some operating system events to the SEL.
	GeneratorMicrosoftOS GeneratorID = 0x0041

	// The **Open IPMI driver** supports the ability to put semi-custom and custom events in the system event log if a panic occurs.
	GeneratorLinuxKernelPanic GeneratorID = 0x0021
)

func (GeneratorID) ChannelNumber

func (g GeneratorID) ChannelNumber() uint8

func (GeneratorID) LUN

func (g GeneratorID) LUN() uint8

func (GeneratorID) OwnerID

func (g GeneratorID) OwnerID() uint8

func (GeneratorID) OwnerIsSystemSoftware

func (g GeneratorID) OwnerIsSystemSoftware() bool

OwnerIsSystemSoftware returns true if the owner is a system software, false means the owner is a IPMB slave address

func (GeneratorID) String

func (g GeneratorID) String() string

type I2CAddress7Bit

type I2CAddress7Bit uint8

see: https://community.infineon.com/t5/Knowledge-Base-Articles/Difference-between-7-bit-vs-8-bit-I2C-addressing/ta-p/798072

I2CAddress7Bit is a 7-bit I2C address, the bit 0 to bit 6 take effect, bit 7 is always 0.

eg: `var a I2CAddress7Bit = 0x35`

  • 0 011 0101 = 0x35
  • 7 654 3210 bit position

func (I2CAddress7Bit) To8BitForRead

func (a I2CAddress7Bit) To8BitForRead() I2CAddress8Bit

To8BitForRead convert 7-bit I2C address to 8-bit I2C address, bit 1 to bit 7 for I2C address, bit 0 set to 1

func (I2CAddress7Bit) To8BitForWrite

func (a I2CAddress7Bit) To8BitForWrite() I2CAddress8Bit

To8BitForWrite convert 7-bit I2C address to 8-bit I2C address, bit 1 to bit 7 for I2C address, bit 0 set to 0

type I2CAddress8Bit

type I2CAddress8Bit uint8

I2CAddress8Bit represents 8-bit I2C address, the 7-bit I2CAddress occupies bit 1 to bit 7, bit 0 indicates for write or read.

eg: `var a I2CAddress8Bit = 0x6A`

  • 0110 101 0 = 0x6A (for write)
  • 0110 101 1 = 0x6B (for read)
  • 7654 321 0 bit position

func (I2CAddress8Bit) To7Bit

func (a I2CAddress8Bit) To7Bit() I2CAddress7Bit

type IPMIRequest

type IPMIRequest struct {
	// SlaveAddress or SoftwareID
	// Responder's Slave Address. 1 byte.
	// LS bit is 0 for Slave Addresses and 1 for Software IDs.
	// Upper 7-bits hold Slave Address or Software ID, respectively.
	// This byte is always 20h when the BMC is the responder.
	ResponderAddr uint8 // SlaveAddress or SoftwareID

	// The lower 2-bits of the netFn byte identify the logical unit number, which provides further sub-addressing within the target node.
	NetFn        NetFn // (even) / rsLUN
	ResponderLUN uint8 // lower 2 bits

	// Checksum1 is filled by calling ComputeChecksum method
	Checksum1 uint8

	// SlaveAddress or SoftwareID
	// Requester's Address. 1 byte.
	// LS bit is 0 for Slave Addresses and 1 for Software IDs.
	// Upper 7-bits hold Slave Address or Software ID, respectively.
	// This byte is always 20h when the BMC is the requester.
	RequesterAddr uint8 // rqSA

	RequesterSequence uint8 // rqSeq, occupies the highest 6 bits, (so should left shift 2 bits)
	RequesterLUN      uint8 // rqLUN, occupies the lowest 2 bits

	Command uint8 // Command ID

	// Command Request Body Data defined by each command.
	CommandData []byte // optional, 0 or more

	// Checksum2 is filled by calling ComputeChecksum method
	Checksum2 uint8
}

13.8 IPMI LAN Message Format

func (*IPMIRequest) ComputeChecksum

func (req *IPMIRequest) ComputeChecksum()

func (*IPMIRequest) Pack

func (req *IPMIRequest) Pack() []byte

type IPMIResponse

type IPMIResponse struct {
	// Requester's Address. 1 byte.
	// LS bit is 0 for Slave Addresses and 1 for Software IDs.
	// Upper 7-bits hold Slave Address or Software ID, respectively.
	// This byte is always 20h when the BMC is the requester.
	RequesterAddr uint8 // SlaveAddress or SoftwareID

	// Network Function code
	// The lower 2-bits of the netFn byte identify the logical unit number, which provides further sub-addressing within the target node.
	NetFn NetFn // (odd) higher 6 bits
	// Requester's LUN
	RequestLUN uint8 // lower 2 bits

	// 8-bit checksum algorithm: Initialize checksum to 0.
	// For each byte, checksum = (checksum + byte) modulo 256.
	// Then checksum = - checksum.
	// When the checksum and the bytes are added together, modulo 256, the result should be 0.
	Checksum1 uint8

	// Responder's Slave Address. 1 byte.
	// LS bit is 0 for Slave Addresses and 1 for Software IDs.
	// Upper 7-bits hold Slave Address or Software ID, respectively.
	// This byte is always 20h when the BMC is the responder.
	ResponderAddr uint8 // SlaveAddress or SoftwareID

	// Sequence number. This field is used to verify that a response is for a particular instance of a request.
	// Refer to the IPMB specification for additional information on use and operation of the Seq field.
	RequesterSequence uint8 // higher 6 bits
	ResponderLUN      uint8 // lower 2 bits

	Command uint8

	// Completion code returned in the response to indicated success/failure status of the request.
	CompletionCode uint8

	// Response Data
	Data []byte // optional

	Checksum2 uint8
}

IPMIResponse represent IPMI PayloadType msg response

func (*IPMIResponse) Unpack

func (res *IPMIResponse) Unpack(msg []byte) error

type IntegrityAlg

type IntegrityAlg uint8

13.28.4

const (
	IntegrityAlg_None            IntegrityAlg = 0x00 // Mandatory
	IntegrityAlg_HMAC_SHA1_96    IntegrityAlg = 0x01 // Mandatory
	IntegrityAlg_HMAC_MD5_128    IntegrityAlg = 0x02 // Optional
	IntegrityAlg_MD5_128         IntegrityAlg = 0x03 // Optional
	IntegrityAlg_HMAC_SHA256_128 IntegrityAlg = 0x04 // Optional
)

func (IntegrityAlg) String

func (integrityAlg IntegrityAlg) String() string

type LUN

type LUN uint8

type LanConfig

type LanConfig struct {
	SetInProgress                 SetInProgressState                   // #0, Read Only
	AuthTypeSupport               LanConfigParam_AuthTypeSupport       // #1
	AuthTypeEnables               LanConfigParam_AuthTypeEnables       // #2
	IP                            net.IP                               // #3
	IPSource                      LanIPAddressSource                   // #4
	MAC                           net.HardwareAddr                     // #5, can be Read Only.
	SubnetMask                    net.IP                               // #6
	IPv4HeaderParams              LanConfigParam_IPv4HeaderParams      // #7
	PrimaryRMCPPort               uint16                               // #8
	SecondaryRMCPPort             uint16                               // #9
	ARPControl                    LanConfigParam_ARPControl            // #10
	GratuitousARPIntervalMilliSec uint32                               // #11
	DefaultGatewayIP              net.IP                               // #12
	DefaultGatewayMAC             net.HardwareAddr                     // #13
	BackupGatewayIP               net.IP                               // #14
	BackupGatewayMAC              net.HardwareAddr                     // #15
	CommunityString               CommunityString                      // #16
	AlertDestinationsCount        uint8                                // #17, Read Only
	VLANEnabled                   bool                                 // #20
	VLANID                        uint16                               // #20
	VLANPriority                  uint8                                // #21
	CipherSuitesSupport           uint8                                // #22, Read Only
	CipherSuitesID                LanConfigParam_CipherSuitesID        // #23, Read Only
	CipherSuitesPrivLevel         LanConfigParam_CipherSuitesPrivLevel // #24
	BadPasswordThreshold          LanConfigParam_BadPasswordThreshold  // #26
}

func (*LanConfig) Format

func (lanConfig *LanConfig) Format() string

type LanConfigParamSelector

type LanConfigParamSelector uint8

Table 23-4, LAN Configuration Parameters Parameter selector

const (
	LanConfigParamSelector_SetInProgress                     LanConfigParamSelector = 0
	LanConfigParamSelector_AuthTypeSupport                   LanConfigParamSelector = 1 // read only
	LanConfigParamSelector_AuthTypeEnables                   LanConfigParamSelector = 2
	LanConfigParamSelector_IP                                LanConfigParamSelector = 3
	LanConfigParamSelector_IPSource                          LanConfigParamSelector = 4
	LanConfigParamSelector_MAC                               LanConfigParamSelector = 5 // can be read only
	LanConfigParamSelector_SubnetMask                        LanConfigParamSelector = 6
	LanConfigParamSelector_IPv4HeaderParams                  LanConfigParamSelector = 7
	LanConfigParamSelector_PrimaryRMCPPort                   LanConfigParamSelector = 8
	LanConfigParamSelector_SecondaryRMCPPort                 LanConfigParamSelector = 9
	LanConfigParamSelector_ARPControl                        LanConfigParamSelector = 10
	LanConfigParamSelector_GratuitousARPInterval             LanConfigParamSelector = 11
	LanConfigParamSelector_DefaultGatewayIP                  LanConfigParamSelector = 12
	LanConfigParamSelector_DefaultGatewayMAC                 LanConfigParamSelector = 13
	LanConfigParamSelector_BackupGatewayIP                   LanConfigParamSelector = 14
	LanConfigParamSelector_BackupGatewayMAC                  LanConfigParamSelector = 15
	LanConfigParamSelector_CommunityString                   LanConfigParamSelector = 16
	LanConfigParamSelector_AlertDestinationsCount            LanConfigParamSelector = 17 // read only
	LanConfigParamSelector_AlertDestinationType              LanConfigParamSelector = 18
	LanConfigParamSelector_AlertDestinationAddress           LanConfigParamSelector = 19
	LanConfigParamSelector_VLANID                            LanConfigParamSelector = 20
	LanConfigParamSelector_VLANPriority                      LanConfigParamSelector = 21
	LanConfigParamSelector_CipherSuitesSupport               LanConfigParamSelector = 22 // read only
	LanConfigParamSelector_CipherSuitesID                    LanConfigParamSelector = 23 // read only
	LanConfigParamSelector_CipherSuitesPrivLevel             LanConfigParamSelector = 24
	LanConfigParamSelector_AlertDestinationVLAN              LanConfigParamSelector = 25 // can be read only
	LanConfigParamSelector_BadPasswordThreshold              LanConfigParamSelector = 26
	LanConfigParamSelector_IPv6Support                       LanConfigParamSelector = 50 // read only
	LanConfigParamSelector_IPv6Enables                       LanConfigParamSelector = 51
	LanConfigParamSelector_IPv6StaticTrafficClass            LanConfigParamSelector = 52
	LanConfigParamSelector_IPv6StaticHopLimit                LanConfigParamSelector = 53
	LanConfigParamSelector_IPv6FlowLabel                     LanConfigParamSelector = 54
	LanConfigParamSelector_IPv6Status                        LanConfigParamSelector = 55 // read only
	LanConfigParamSelector_IPv6StaticAddress                 LanConfigParamSelector = 56
	LanConfigParamSelector_IPv6DHCPv6StaticDUIDCount         LanConfigParamSelector = 57 // read only
	LanConfigParamSelector_IPv6DHCPv6StaticDUID              LanConfigParamSelector = 58
	LanConfigParamSelector_IPv6DynamicAddress                LanConfigParamSelector = 59 // read only
	LanConfigParamSelector_IPv6DHCPv6DynamicDUIDCount        LanConfigParamSelector = 60 // read only
	LanConfigParamSelector_IPv6DHCPv6DynamicDUID             LanConfigParamSelector = 61
	LanConfigParamSelector_IPv6DHCPv6TimingConfigSupport     LanConfigParamSelector = 62 // read only
	LanConfigParamSelector_IPv6DHCPv6TimingConfig            LanConfigParamSelector = 63
	LanConfigParamSelector_IPv6RouterAddressConfigControl    LanConfigParamSelector = 64
	LanConfigParamSelector_IPv6StaticRouter1IP               LanConfigParamSelector = 65
	LanConfigParamSelector_IPv6StaticRouter1MAC              LanConfigParamSelector = 66
	LanConfigParamSelector_IPv6StaticRouter1PrefixLength     LanConfigParamSelector = 67
	LanConfigParamSelector_IPv6StaticRouter1PrefixValue      LanConfigParamSelector = 68
	LanConfigParamSelector_IPv6StaticRouter2IP               LanConfigParamSelector = 69
	LanConfigParamSelector_IPv6StaticRouter2MAC              LanConfigParamSelector = 70
	LanConfigParamSelector_IPv6StaticRouter2PrefixLength     LanConfigParamSelector = 71
	LanConfigParamSelector_IPv6StaticRouter2PrefixValue      LanConfigParamSelector = 72
	LanConfigParamSelector_IPv6DynamicRouterInfoCount        LanConfigParamSelector = 73 // read only
	LanConfigParamSelector_IPv6DynamicRouterInfoIP           LanConfigParamSelector = 74 // read only
	LanConfigParamSelector_IPv6DynamicRouterInfoMAC          LanConfigParamSelector = 75 // read only
	LanConfigParamSelector_IPv6DynamicRouterInfoPrefixLength LanConfigParamSelector = 76 // read only
	LanConfigParamSelector_IPv6DynamicRouterInfoPrefixValue  LanConfigParamSelector = 77 // read only
	LanConfigParamSelector_IPv6DynamicRouterReceivedHopLimit LanConfigParamSelector = 78 // read only
	LanConfigParamSelector_IPv6NDSLAACTimingConfigSupport    LanConfigParamSelector = 79 // read only, IPv6 Neighbor	Discovery / SLAAC
	LanConfigParamSelector_IPv6NDSLAACTimingConfig           LanConfigParamSelector = 80
)

func (LanConfigParamSelector) String

func (lanConfigParam LanConfigParamSelector) String() string

type LanConfigParam_ARPControl

type LanConfigParam_ARPControl struct {
	ARPResponseEnabled   bool
	GratuitousARPEnabled bool
}

func (*LanConfigParam_ARPControl) Format

func (param *LanConfigParam_ARPControl) Format() string

func (*LanConfigParam_ARPControl) LanConfigParameter

func (param *LanConfigParam_ARPControl) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_ARPControl) Pack

func (param *LanConfigParam_ARPControl) Pack() []byte

func (*LanConfigParam_ARPControl) Unpack

func (param *LanConfigParam_ARPControl) Unpack(data []byte) error

type LanConfigParam_AlertDestinationAddress

type LanConfigParam_AlertDestinationAddress struct {
	SetSelector uint8

	IsIPv6 bool

	//  - 0b = use default gateway first, then backup gateway
	//         (Note: older implementations (errata 4 or earlier) may only send to the default gateway.)
	//  - 1b = use backup gateway
	UseBackupGateway bool

	IPv4 net.IP
	MAC  net.HardwareAddr

	IPv6 net.IP
}

func (*LanConfigParam_AlertDestinationAddress) Format

func (*LanConfigParam_AlertDestinationAddress) LanConfigParameter

func (param *LanConfigParam_AlertDestinationAddress) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_AlertDestinationAddress) Pack

func (*LanConfigParam_AlertDestinationAddress) Unpack

func (param *LanConfigParam_AlertDestinationAddress) Unpack(data []byte) error

type LanConfigParam_AlertDestinationType

type LanConfigParam_AlertDestinationType struct {
	// Destination selector, 0 based.
	// Destination 0 is always present as a volatile destination that is used with the Alert Immediate command.
	SetSelector uint8

	// Alert Acknowledge
	//  - 0b = Unacknowledged.
	//         Alert is assumed successful if transmission occurs without error.
	//         This value is also used with Callback numbers.
	//  - 1b = Acknowledged.
	//         Alert is assumed successful only if acknowledged is returned.
	//         Note, some alert types, such as Dial Page, do not support an acknowledge
	AlertAcknowledged bool

	// Destination Type
	//  - 000b = PET Trap destination
	//  - 001b - 101b = reserved
	//  - 110b = OEM 1
	//  - 111b = OEM 2
	DestinationType uint8

	// Alert Acknowledge Timeout / Retry Interval, in seconds, 0-based (i.e. minimum
	// timeout = 1 second)
	AlertAcknowledgeTimeout uint8

	// Number of times to retry alert to given destination.
	Retries uint8
}

func (*LanConfigParam_AlertDestinationType) Format

func (*LanConfigParam_AlertDestinationType) LanConfigParameter

func (param *LanConfigParam_AlertDestinationType) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_AlertDestinationType) Pack

func (param *LanConfigParam_AlertDestinationType) Pack() []byte

func (*LanConfigParam_AlertDestinationType) Unpack

func (param *LanConfigParam_AlertDestinationType) Unpack(data []byte) error

type LanConfigParam_AlertDestinationVLAN

type LanConfigParam_AlertDestinationVLAN struct {
	// data 1 - Set Selector = Destination Selector.
	//  - [7:4] - reserved
	//  - [3:0] - Destination selector.
	// Destination 0 is always present as a volatile destination that is used with the Alert Immediate command.
	SetSelector uint8

	// Address Format.
	// VLAN ID is used with this destination
	//  - 0h = VLAN ID not used with this destination
	//  - 1h = 802.1q VLAN TAG
	Enabled bool

	// data 3-4 - VLAN TAG
	//  - [7:0] - VLAN ID, least-significant byte
	//  - [11:8] - VLAN ID, most-significant nibble
	//  - [12] - CFI (Canonical Format Indicator. Set to 0b)
	//  - [15:13] - User priority (000b, typical)
	VLANID   uint16
	CFI      bool
	Priority uint8
}

func (*LanConfigParam_AlertDestinationVLAN) Format

func (*LanConfigParam_AlertDestinationVLAN) LanConfigParameter

func (param *LanConfigParam_AlertDestinationVLAN) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_AlertDestinationVLAN) Pack

func (param *LanConfigParam_AlertDestinationVLAN) Pack() []byte

func (*LanConfigParam_AlertDestinationVLAN) Unpack

func (param *LanConfigParam_AlertDestinationVLAN) Unpack(data []byte) error

type LanConfigParam_AlertDestinationsCount

type LanConfigParam_AlertDestinationsCount struct {
	// [7:4] - reserved.
	// [3:0] - Number LAN Destinations. A count of 0h indicates LAN Alerting is not supported.
	// This value is number of non-volatile destinations.
	Count uint8
}

Number of LAN Alert Destinations supported on this channel. (Read Only).

At least one set of non-volatile destination information is required if LAN alerting is supported.

Additional non-volatile destination parameters can optionally be provided for supporting an alert 'call down' list policy.

A maximum of fifteen (1h to Fh) non-volatile destinations are supported in this specification. Destination 0 is always present as a volatile destination that is used with the Alert Immediate command.

func (*LanConfigParam_AlertDestinationsCount) Format

func (*LanConfigParam_AlertDestinationsCount) LanConfigParameter

func (param *LanConfigParam_AlertDestinationsCount) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_AlertDestinationsCount) Pack

func (*LanConfigParam_AlertDestinationsCount) Unpack

func (param *LanConfigParam_AlertDestinationsCount) Unpack(data []byte) error

type LanConfigParam_AuthTypeEnables

type LanConfigParam_AuthTypeEnables struct {
	Callback *AuthTypesEnabled
	User     *AuthTypesEnabled
	Operator *AuthTypesEnabled
	Admin    *AuthTypesEnabled
	OEM      *AuthTypesEnabled
}

func (*LanConfigParam_AuthTypeEnables) Format

func (param *LanConfigParam_AuthTypeEnables) Format() string

func (*LanConfigParam_AuthTypeEnables) LanConfigParameter

func (param *LanConfigParam_AuthTypeEnables) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_AuthTypeEnables) Pack

func (param *LanConfigParam_AuthTypeEnables) Pack() []byte

func (*LanConfigParam_AuthTypeEnables) Unpack

func (param *LanConfigParam_AuthTypeEnables) Unpack(data []byte) error

type LanConfigParam_AuthTypeSupport

type LanConfigParam_AuthTypeSupport struct {
	OEM      bool
	Password bool
	MD5      bool
	MD2      bool
	None     bool
}

func (*LanConfigParam_AuthTypeSupport) Format

func (param *LanConfigParam_AuthTypeSupport) Format() string

func (*LanConfigParam_AuthTypeSupport) LanConfigParameter

func (param *LanConfigParam_AuthTypeSupport) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_AuthTypeSupport) Pack

func (param *LanConfigParam_AuthTypeSupport) Pack() []byte

func (*LanConfigParam_AuthTypeSupport) Unpack

func (param *LanConfigParam_AuthTypeSupport) Unpack(data []byte) error

type LanConfigParam_BackupGatewayIP

type LanConfigParam_BackupGatewayIP struct {
	IP net.IP
}

func (*LanConfigParam_BackupGatewayIP) Format

func (param *LanConfigParam_BackupGatewayIP) Format() string

func (*LanConfigParam_BackupGatewayIP) LanConfigParameter

func (param *LanConfigParam_BackupGatewayIP) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_BackupGatewayIP) Pack

func (param *LanConfigParam_BackupGatewayIP) Pack() []byte

func (*LanConfigParam_BackupGatewayIP) Unpack

func (param *LanConfigParam_BackupGatewayIP) Unpack(data []byte) error

type LanConfigParam_BackupGatewayMAC

type LanConfigParam_BackupGatewayMAC struct {
	MAC net.HardwareAddr
}

func (*LanConfigParam_BackupGatewayMAC) Format

func (param *LanConfigParam_BackupGatewayMAC) Format() string

func (*LanConfigParam_BackupGatewayMAC) LanConfigParameter

func (param *LanConfigParam_BackupGatewayMAC) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_BackupGatewayMAC) Pack

func (param *LanConfigParam_BackupGatewayMAC) Pack() []byte

func (*LanConfigParam_BackupGatewayMAC) Unpack

func (param *LanConfigParam_BackupGatewayMAC) Unpack(data []byte) error

type LanConfigParam_BadPasswordThreshold

type LanConfigParam_BadPasswordThreshold struct {
	// Generate Session Audit Event
	//  - 0b = do not generate an event message when the user is disabled.
	//  - 1b = generate a Session Audit sensor "Invalid password disable" event message.
	GenerateSessionAuditEvent bool

	// Bad Password Threshold number
	Threshold uint8

	// Attempt Count Reset Interval.
	// The raw data occupies 2 bytes, and the unit is in tens of seconds.
	//
	// 0 means the Attempt Count Reset Interval is disabled.
	// The count of bad password attempts is retained as long as
	// the BMC remains powered and is not reinitialized.
	AttemptCountResetIntervalSec uint32

	// User Lockout Interval
	// The raw data occupies 2 bytes, and the unit is in tens of seconds.
	//
	// 0 means the User Lockout Interval is disabled.
	// If a user was automatically disabled due to the Bad Password threshold,
	// the user will remain disabled until re-enabled via the Set User Access command.
	UserLockoutIntervalSec uint32
}

func (*LanConfigParam_BadPasswordThreshold) Format

func (*LanConfigParam_BadPasswordThreshold) LanConfigParameter

func (param *LanConfigParam_BadPasswordThreshold) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_BadPasswordThreshold) Pack

func (param *LanConfigParam_BadPasswordThreshold) Pack() []byte

func (*LanConfigParam_BadPasswordThreshold) Unpack

func (param *LanConfigParam_BadPasswordThreshold) Unpack(data []byte) error

type LanConfigParam_CipherSuitesID

type LanConfigParam_CipherSuitesID struct {
	IDs [16]CipherSuiteID
}

func (*LanConfigParam_CipherSuitesID) Format

func (param *LanConfigParam_CipherSuitesID) Format() string

func (*LanConfigParam_CipherSuitesID) LanConfigParameter

func (param *LanConfigParam_CipherSuitesID) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_CipherSuitesID) Pack

func (param *LanConfigParam_CipherSuitesID) Pack() []byte

func (*LanConfigParam_CipherSuitesID) Unpack

func (param *LanConfigParam_CipherSuitesID) Unpack(data []byte) error

type LanConfigParam_CipherSuitesPrivLevel

type LanConfigParam_CipherSuitesPrivLevel struct {
	PrivLevels [16]PrivilegeLevel
}

func (*LanConfigParam_CipherSuitesPrivLevel) Format

func (*LanConfigParam_CipherSuitesPrivLevel) LanConfigParameter

func (param *LanConfigParam_CipherSuitesPrivLevel) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_CipherSuitesPrivLevel) Pack

func (*LanConfigParam_CipherSuitesPrivLevel) Unpack

func (param *LanConfigParam_CipherSuitesPrivLevel) Unpack(data []byte) error

type LanConfigParam_CipherSuitesSupport

type LanConfigParam_CipherSuitesSupport struct {
	// Cipher Suite Entry count. Number of Cipher Suite entries, 1-based, 10h max.
	Count uint8
}

func (*LanConfigParam_CipherSuitesSupport) Format

func (*LanConfigParam_CipherSuitesSupport) LanConfigParameter

func (param *LanConfigParam_CipherSuitesSupport) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_CipherSuitesSupport) Pack

func (param *LanConfigParam_CipherSuitesSupport) Pack() []byte

func (*LanConfigParam_CipherSuitesSupport) Unpack

func (param *LanConfigParam_CipherSuitesSupport) Unpack(data []byte) error

type LanConfigParam_CommunityString

type LanConfigParam_CommunityString struct {
	CommunityString CommunityString
}

func (*LanConfigParam_CommunityString) Format

func (param *LanConfigParam_CommunityString) Format() string

func (*LanConfigParam_CommunityString) LanConfigParameter

func (param *LanConfigParam_CommunityString) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_CommunityString) Pack

func (param *LanConfigParam_CommunityString) Pack() []byte

func (*LanConfigParam_CommunityString) Unpack

func (param *LanConfigParam_CommunityString) Unpack(data []byte) error

type LanConfigParam_DefaultGatewayIP

type LanConfigParam_DefaultGatewayIP struct {
	IP net.IP
}

func (*LanConfigParam_DefaultGatewayIP) Format

func (param *LanConfigParam_DefaultGatewayIP) Format() string

func (*LanConfigParam_DefaultGatewayIP) LanConfigParameter

func (param *LanConfigParam_DefaultGatewayIP) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_DefaultGatewayIP) Pack

func (param *LanConfigParam_DefaultGatewayIP) Pack() []byte

func (*LanConfigParam_DefaultGatewayIP) Unpack

func (param *LanConfigParam_DefaultGatewayIP) Unpack(data []byte) error

type LanConfigParam_DefaultGatewayMAC

type LanConfigParam_DefaultGatewayMAC struct {
	MAC net.HardwareAddr
}

func (*LanConfigParam_DefaultGatewayMAC) Format

func (param *LanConfigParam_DefaultGatewayMAC) Format() string

func (*LanConfigParam_DefaultGatewayMAC) LanConfigParameter

func (param *LanConfigParam_DefaultGatewayMAC) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_DefaultGatewayMAC) Pack

func (param *LanConfigParam_DefaultGatewayMAC) Pack() []byte

func (*LanConfigParam_DefaultGatewayMAC) Unpack

func (param *LanConfigParam_DefaultGatewayMAC) Unpack(data []byte) error

type LanConfigParam_GratuitousARPInterval

type LanConfigParam_GratuitousARPInterval struct {
	// Gratuitous ARP interval in 500 millisecond increments. 0-based.
	MilliSec uint32
}

func (*LanConfigParam_GratuitousARPInterval) Format

func (*LanConfigParam_GratuitousARPInterval) LanConfigParameter

func (param *LanConfigParam_GratuitousARPInterval) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_GratuitousARPInterval) Pack

func (*LanConfigParam_GratuitousARPInterval) Unpack

func (param *LanConfigParam_GratuitousARPInterval) Unpack(data []byte) error

type LanConfigParam_IP

type LanConfigParam_IP struct {
	IP net.IP
}

func (*LanConfigParam_IP) Format

func (param *LanConfigParam_IP) Format() string

func (*LanConfigParam_IP) LanConfigParameter

func (param *LanConfigParam_IP) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IP) Pack

func (param *LanConfigParam_IP) Pack() []byte

func (*LanConfigParam_IP) Unpack

func (param *LanConfigParam_IP) Unpack(data []byte) error

type LanConfigParam_IPSource

type LanConfigParam_IPSource struct {
	Source LanIPAddressSource
}

func (*LanConfigParam_IPSource) Format

func (param *LanConfigParam_IPSource) Format() string

func (*LanConfigParam_IPSource) LanConfigParameter

func (param *LanConfigParam_IPSource) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPSource) Pack

func (param *LanConfigParam_IPSource) Pack() []byte

func (*LanConfigParam_IPSource) Unpack

func (param *LanConfigParam_IPSource) Unpack(data []byte) error

type LanConfigParam_IPv4HeaderParams

type LanConfigParam_IPv4HeaderParams struct {
	// data 1 - Time-to-live. 1-based. (Default = 40h)
	// Value for time-to-live parameter in IP Header for RMCP packets and PET Traps
	// transmitted from this channel.
	TTL uint8

	// data 2
	//  - [7:5] - Flags. Sets value of bit 1 in the Flags field in the IP Header for packets transmitted
	//    by this channel. (Default = 010b  don't fragment)
	//  - [4:0] - reserved
	Flags uint8

	// data 3
	//  - [7:5] - Precedence (Default = 000b)
	Precedence uint8

	// data 3
	//  - [4:1] - Type of Service (Default = 1000b, 'minimize delay')
	//  - [0] - reserved
	TOS uint8
}

func (*LanConfigParam_IPv4HeaderParams) Format

func (param *LanConfigParam_IPv4HeaderParams) Format() string

func (*LanConfigParam_IPv4HeaderParams) LanConfigParameter

func (param *LanConfigParam_IPv4HeaderParams) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv4HeaderParams) Pack

func (param *LanConfigParam_IPv4HeaderParams) Pack() []byte

func (*LanConfigParam_IPv4HeaderParams) Unpack

func (param *LanConfigParam_IPv4HeaderParams) Unpack(data []byte) error

type LanConfigParam_IPv6DHCPv6DynamicDUID

type LanConfigParam_IPv6DHCPv6DynamicDUID struct {
	SetSelector   uint8
	BlockSelector uint8

	DUID [16]byte
}

func (*LanConfigParam_IPv6DHCPv6DynamicDUID) Format

func (*LanConfigParam_IPv6DHCPv6DynamicDUID) LanConfigParameter

func (param *LanConfigParam_IPv6DHCPv6DynamicDUID) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DHCPv6DynamicDUID) Pack

func (*LanConfigParam_IPv6DHCPv6DynamicDUID) Unpack

func (param *LanConfigParam_IPv6DHCPv6DynamicDUID) Unpack(data []byte) error

type LanConfigParam_IPv6DHCPv6DynamicDUIDCount

type LanConfigParam_IPv6DHCPv6DynamicDUIDCount struct {
	// The maximum number of 16-byte blocks that can be used for storing each DUID via
	// the IPv6 DHCPv6 Static DUIDs parameter. 1-based. Returns 0 if IPv6 Static Address
	// configuration is not supported.
	Max uint8
}

func (*LanConfigParam_IPv6DHCPv6DynamicDUIDCount) Format

func (*LanConfigParam_IPv6DHCPv6DynamicDUIDCount) LanConfigParameter

func (param *LanConfigParam_IPv6DHCPv6DynamicDUIDCount) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DHCPv6DynamicDUIDCount) Pack

func (*LanConfigParam_IPv6DHCPv6DynamicDUIDCount) Unpack

type LanConfigParam_IPv6DHCPv6StaticDUID

type LanConfigParam_IPv6DHCPv6StaticDUID struct {
	SetSelector   uint8
	BlockSelector uint8

	DUID [16]byte
}

func (*LanConfigParam_IPv6DHCPv6StaticDUID) Format

func (*LanConfigParam_IPv6DHCPv6StaticDUID) LanConfigParameter

func (param *LanConfigParam_IPv6DHCPv6StaticDUID) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DHCPv6StaticDUID) Pack

func (param *LanConfigParam_IPv6DHCPv6StaticDUID) Pack() []byte

func (*LanConfigParam_IPv6DHCPv6StaticDUID) Unpack

func (param *LanConfigParam_IPv6DHCPv6StaticDUID) Unpack(data []byte) error

type LanConfigParam_IPv6DHCPv6StaticDUIDCount

type LanConfigParam_IPv6DHCPv6StaticDUIDCount struct {
	// The maximum number of 16-byte blocks that can be used for storing each DUID via
	// the IPv6 DHCPv6 Static DUIDs parameter. 1-based. Returns 0 if IPv6 Static Address
	// configuration is not supported.
	Max uint8
}

func (*LanConfigParam_IPv6DHCPv6StaticDUIDCount) Format

func (*LanConfigParam_IPv6DHCPv6StaticDUIDCount) LanConfigParameter

func (param *LanConfigParam_IPv6DHCPv6StaticDUIDCount) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DHCPv6StaticDUIDCount) Pack

func (*LanConfigParam_IPv6DHCPv6StaticDUIDCount) Unpack

func (param *LanConfigParam_IPv6DHCPv6StaticDUIDCount) Unpack(data []byte) error

type LanConfigParam_IPv6DHCPv6TimingConfig

type LanConfigParam_IPv6DHCPv6TimingConfig struct {
	SetSelector   uint8
	BlockSelector uint8
}

func (*LanConfigParam_IPv6DHCPv6TimingConfig) Format

func (*LanConfigParam_IPv6DHCPv6TimingConfig) LanConfigParameter

func (param *LanConfigParam_IPv6DHCPv6TimingConfig) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DHCPv6TimingConfig) Pack

func (*LanConfigParam_IPv6DHCPv6TimingConfig) Unpack

func (param *LanConfigParam_IPv6DHCPv6TimingConfig) Unpack(data []byte) error

type LanConfigParam_IPv6DHCPv6TimingConfigSupport

type LanConfigParam_IPv6DHCPv6TimingConfigSupport struct {
	Mode LanIPv6DHCPv6TimingConfigMode
}

func (*LanConfigParam_IPv6DHCPv6TimingConfigSupport) Format

func (*LanConfigParam_IPv6DHCPv6TimingConfigSupport) LanConfigParameter

func (param *LanConfigParam_IPv6DHCPv6TimingConfigSupport) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DHCPv6TimingConfigSupport) Pack

func (*LanConfigParam_IPv6DHCPv6TimingConfigSupport) Unpack

type LanConfigParam_IPv6DynamicAddress

type LanConfigParam_IPv6DynamicAddress struct {
	SetSelector uint8

	Enabled bool
	Source  LanIPv6DynamicAddressSource

	IPv6 net.IP

	PrefixLength uint8

	Status LanIPv6AddressStatus
}

func (*LanConfigParam_IPv6DynamicAddress) Format

func (param *LanConfigParam_IPv6DynamicAddress) Format() string

func (*LanConfigParam_IPv6DynamicAddress) LanConfigParameter

func (param *LanConfigParam_IPv6DynamicAddress) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DynamicAddress) Pack

func (param *LanConfigParam_IPv6DynamicAddress) Pack() []byte

func (*LanConfigParam_IPv6DynamicAddress) Unpack

func (param *LanConfigParam_IPv6DynamicAddress) Unpack(data []byte) error

type LanConfigParam_IPv6DynamicRouterInfoIP

type LanConfigParam_IPv6DynamicRouterInfoIP struct {
	SetSelector uint8
	IPv6        net.IP
}

func (*LanConfigParam_IPv6DynamicRouterInfoIP) Format

func (*LanConfigParam_IPv6DynamicRouterInfoIP) LanConfigParameter

func (param *LanConfigParam_IPv6DynamicRouterInfoIP) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DynamicRouterInfoIP) Pack

func (*LanConfigParam_IPv6DynamicRouterInfoIP) Unpack

func (param *LanConfigParam_IPv6DynamicRouterInfoIP) Unpack(data []byte) error

type LanConfigParam_IPv6DynamicRouterInfoMAC

type LanConfigParam_IPv6DynamicRouterInfoMAC struct {
	SetSelector uint8
	MAC         net.HardwareAddr
}

func (*LanConfigParam_IPv6DynamicRouterInfoMAC) Format

func (*LanConfigParam_IPv6DynamicRouterInfoMAC) LanConfigParameter

func (param *LanConfigParam_IPv6DynamicRouterInfoMAC) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DynamicRouterInfoMAC) Pack

func (*LanConfigParam_IPv6DynamicRouterInfoMAC) Unpack

func (param *LanConfigParam_IPv6DynamicRouterInfoMAC) Unpack(data []byte) error

type LanConfigParam_IPv6DynamicRouterInfoPrefixLength

type LanConfigParam_IPv6DynamicRouterInfoPrefixLength struct {
	SetSelector  uint8
	PrefixLength uint8
}

func (*LanConfigParam_IPv6DynamicRouterInfoPrefixLength) Format

func (*LanConfigParam_IPv6DynamicRouterInfoPrefixLength) LanConfigParameter

func (param *LanConfigParam_IPv6DynamicRouterInfoPrefixLength) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DynamicRouterInfoPrefixLength) Pack

func (*LanConfigParam_IPv6DynamicRouterInfoPrefixLength) Unpack

type LanConfigParam_IPv6DynamicRouterInfoPrefixValue

type LanConfigParam_IPv6DynamicRouterInfoPrefixValue struct {
	SetSelector uint8
	PrefixValue [16]byte
}

func (*LanConfigParam_IPv6DynamicRouterInfoPrefixValue) Format

func (*LanConfigParam_IPv6DynamicRouterInfoPrefixValue) LanConfigParameter

func (param *LanConfigParam_IPv6DynamicRouterInfoPrefixValue) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DynamicRouterInfoPrefixValue) Pack

func (*LanConfigParam_IPv6DynamicRouterInfoPrefixValue) Unpack

type LanConfigParam_IPv6DynamicRouterInfoSets

type LanConfigParam_IPv6DynamicRouterInfoSets struct {
	// Number of dynamic Router Address information entries
	Count uint8
}

func (*LanConfigParam_IPv6DynamicRouterInfoSets) Format

func (*LanConfigParam_IPv6DynamicRouterInfoSets) LanConfigParameter

func (param *LanConfigParam_IPv6DynamicRouterInfoSets) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DynamicRouterInfoSets) Pack

func (*LanConfigParam_IPv6DynamicRouterInfoSets) Unpack

func (param *LanConfigParam_IPv6DynamicRouterInfoSets) Unpack(data []byte) error

type LanConfigParam_IPv6DynamicRouterReceivedHopLimit

type LanConfigParam_IPv6DynamicRouterReceivedHopLimit struct {
	HopLimit uint8
}

func (*LanConfigParam_IPv6DynamicRouterReceivedHopLimit) Format

func (*LanConfigParam_IPv6DynamicRouterReceivedHopLimit) LanConfigParameter

func (param *LanConfigParam_IPv6DynamicRouterReceivedHopLimit) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6DynamicRouterReceivedHopLimit) Pack

func (*LanConfigParam_IPv6DynamicRouterReceivedHopLimit) Unpack

type LanConfigParam_IPv6Enables

type LanConfigParam_IPv6Enables struct {
	EnableMode LanIPv6EnableMode
}

func (*LanConfigParam_IPv6Enables) Format

func (param *LanConfigParam_IPv6Enables) Format() string

func (*LanConfigParam_IPv6Enables) LanConfigParameter

func (param *LanConfigParam_IPv6Enables) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6Enables) Pack

func (param *LanConfigParam_IPv6Enables) Pack() []byte

func (*LanConfigParam_IPv6Enables) Unpack

func (param *LanConfigParam_IPv6Enables) Unpack(data []byte) error

type LanConfigParam_IPv6FlowLabel

type LanConfigParam_IPv6FlowLabel struct {
	// Flow Label, 20-bits, right justified, MS Byte first. Default = 0.
	//
	// Three bytes.
	//
	// If this configuration parameter is not supported, the Flow Label shall be set to 0 per [RFC2460].
	// Bits [23:20] = reserved - set to 0b.
	// see: https://datatracker.ietf.org/doc/html/rfc2460#page-25
	FlowLabel uint32
}

func (*LanConfigParam_IPv6FlowLabel) Format

func (param *LanConfigParam_IPv6FlowLabel) Format() string

func (*LanConfigParam_IPv6FlowLabel) LanConfigParameter

func (param *LanConfigParam_IPv6FlowLabel) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6FlowLabel) Pack

func (param *LanConfigParam_IPv6FlowLabel) Pack() []byte

func (*LanConfigParam_IPv6FlowLabel) Unpack

func (param *LanConfigParam_IPv6FlowLabel) Unpack(data []byte) error

type LanConfigParam_IPv6NDSLAACTimingConfig

type LanConfigParam_IPv6NDSLAACTimingConfig struct {
	SetSelector   uint8
	BlockSelector uint8
}

func (*LanConfigParam_IPv6NDSLAACTimingConfig) Format

func (*LanConfigParam_IPv6NDSLAACTimingConfig) LanConfigParameter

func (param *LanConfigParam_IPv6NDSLAACTimingConfig) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6NDSLAACTimingConfig) Pack

func (*LanConfigParam_IPv6NDSLAACTimingConfig) Unpack

func (param *LanConfigParam_IPv6NDSLAACTimingConfig) Unpack(data []byte) error

type LanConfigParam_IPv6NDSLAACTimingConfigSupport

type LanConfigParam_IPv6NDSLAACTimingConfigSupport struct {
	Mode LanIPv6NDSLAACTimingConfigMode
}

func (*LanConfigParam_IPv6NDSLAACTimingConfigSupport) Format

func (*LanConfigParam_IPv6NDSLAACTimingConfigSupport) LanConfigParameter

func (param *LanConfigParam_IPv6NDSLAACTimingConfigSupport) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6NDSLAACTimingConfigSupport) Pack

func (*LanConfigParam_IPv6NDSLAACTimingConfigSupport) Unpack

type LanConfigParam_IPv6RouterAddressConfigControl

type LanConfigParam_IPv6RouterAddressConfigControl struct {
	// enable dynamic router address configuration via router advertisement messages.
	EnableDynamic bool

	// enable static router address
	EnableStatic bool
}

func (*LanConfigParam_IPv6RouterAddressConfigControl) Format

func (*LanConfigParam_IPv6RouterAddressConfigControl) LanConfigParameter

func (param *LanConfigParam_IPv6RouterAddressConfigControl) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6RouterAddressConfigControl) Pack

func (*LanConfigParam_IPv6RouterAddressConfigControl) Unpack

type LanConfigParam_IPv6StaticAddress

type LanConfigParam_IPv6StaticAddress struct {
	SetSelector uint8

	// Address Enabled
	//  - [7]- enable=1/disable=0
	Enabled bool

	// Address Source
	// [3:0]- source/type
	//  - 0h = Static
	//  - All other = reserved
	Source LanIPv6StaticAddressSource

	IPv6 net.IP

	PrefixLength uint8

	Status LanIPv6AddressStatus
}

func (*LanConfigParam_IPv6StaticAddress) Format

func (param *LanConfigParam_IPv6StaticAddress) Format() string

func (*LanConfigParam_IPv6StaticAddress) LanConfigParameter

func (param *LanConfigParam_IPv6StaticAddress) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticAddress) Pack

func (param *LanConfigParam_IPv6StaticAddress) Pack() []byte

func (*LanConfigParam_IPv6StaticAddress) Unpack

func (param *LanConfigParam_IPv6StaticAddress) Unpack(data []byte) error

type LanConfigParam_IPv6StaticHopLimit

type LanConfigParam_IPv6StaticHopLimit struct {
	HopLimit uint8
}

func (*LanConfigParam_IPv6StaticHopLimit) Format

func (param *LanConfigParam_IPv6StaticHopLimit) Format() string

func (*LanConfigParam_IPv6StaticHopLimit) LanConfigParameter

func (param *LanConfigParam_IPv6StaticHopLimit) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticHopLimit) Pack

func (param *LanConfigParam_IPv6StaticHopLimit) Pack() []byte

func (*LanConfigParam_IPv6StaticHopLimit) Unpack

func (param *LanConfigParam_IPv6StaticHopLimit) Unpack(data []byte) error

type LanConfigParam_IPv6StaticRouter1IP

type LanConfigParam_IPv6StaticRouter1IP struct {
	IPv6 net.IP
}

func (*LanConfigParam_IPv6StaticRouter1IP) Format

func (*LanConfigParam_IPv6StaticRouter1IP) LanConfigParameter

func (param *LanConfigParam_IPv6StaticRouter1IP) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticRouter1IP) Pack

func (param *LanConfigParam_IPv6StaticRouter1IP) Pack() []byte

func (*LanConfigParam_IPv6StaticRouter1IP) Unpack

func (param *LanConfigParam_IPv6StaticRouter1IP) Unpack(data []byte) error

type LanConfigParam_IPv6StaticRouter1MAC

type LanConfigParam_IPv6StaticRouter1MAC struct {
	MAC net.HardwareAddr
}

func (*LanConfigParam_IPv6StaticRouter1MAC) Format

func (*LanConfigParam_IPv6StaticRouter1MAC) LanConfigParameter

func (param *LanConfigParam_IPv6StaticRouter1MAC) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticRouter1MAC) Pack

func (param *LanConfigParam_IPv6StaticRouter1MAC) Pack() []byte

func (*LanConfigParam_IPv6StaticRouter1MAC) Unpack

func (param *LanConfigParam_IPv6StaticRouter1MAC) Unpack(data []byte) error

type LanConfigParam_IPv6StaticRouter1PrefixLength

type LanConfigParam_IPv6StaticRouter1PrefixLength struct {
	PrefixLength uint8
}

func (*LanConfigParam_IPv6StaticRouter1PrefixLength) Format

func (*LanConfigParam_IPv6StaticRouter1PrefixLength) LanConfigParameter

func (param *LanConfigParam_IPv6StaticRouter1PrefixLength) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticRouter1PrefixLength) Pack

func (*LanConfigParam_IPv6StaticRouter1PrefixLength) Unpack

type LanConfigParam_IPv6StaticRouter1PrefixValue

type LanConfigParam_IPv6StaticRouter1PrefixValue struct {
	PrefixValue [16]byte
}

func (*LanConfigParam_IPv6StaticRouter1PrefixValue) Format

func (*LanConfigParam_IPv6StaticRouter1PrefixValue) LanConfigParameter

func (param *LanConfigParam_IPv6StaticRouter1PrefixValue) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticRouter1PrefixValue) Pack

func (*LanConfigParam_IPv6StaticRouter1PrefixValue) Unpack

type LanConfigParam_IPv6StaticRouter2IP

type LanConfigParam_IPv6StaticRouter2IP struct {
	IPv6 net.IP
}

func (*LanConfigParam_IPv6StaticRouter2IP) Format

func (*LanConfigParam_IPv6StaticRouter2IP) LanConfigParameter

func (param *LanConfigParam_IPv6StaticRouter2IP) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticRouter2IP) Pack

func (param *LanConfigParam_IPv6StaticRouter2IP) Pack() []byte

func (*LanConfigParam_IPv6StaticRouter2IP) Unpack

func (param *LanConfigParam_IPv6StaticRouter2IP) Unpack(data []byte) error

type LanConfigParam_IPv6StaticRouter2MAC

type LanConfigParam_IPv6StaticRouter2MAC struct {
	MAC net.HardwareAddr
}

func (*LanConfigParam_IPv6StaticRouter2MAC) Format

func (*LanConfigParam_IPv6StaticRouter2MAC) LanConfigParameter

func (param *LanConfigParam_IPv6StaticRouter2MAC) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticRouter2MAC) Pack

func (param *LanConfigParam_IPv6StaticRouter2MAC) Pack() []byte

func (*LanConfigParam_IPv6StaticRouter2MAC) Unpack

func (param *LanConfigParam_IPv6StaticRouter2MAC) Unpack(data []byte) error

type LanConfigParam_IPv6StaticRouter2PrefixLength

type LanConfigParam_IPv6StaticRouter2PrefixLength struct {
	PrefixLength uint8
}

func (*LanConfigParam_IPv6StaticRouter2PrefixLength) Format

func (*LanConfigParam_IPv6StaticRouter2PrefixLength) LanConfigParameter

func (param *LanConfigParam_IPv6StaticRouter2PrefixLength) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticRouter2PrefixLength) Pack

func (*LanConfigParam_IPv6StaticRouter2PrefixLength) Unpack

type LanConfigParam_IPv6StaticRouter2PrefixValue

type LanConfigParam_IPv6StaticRouter2PrefixValue struct {
	PrefixValue [16]byte
}

func (*LanConfigParam_IPv6StaticRouter2PrefixValue) Format

func (*LanConfigParam_IPv6StaticRouter2PrefixValue) LanConfigParameter

func (param *LanConfigParam_IPv6StaticRouter2PrefixValue) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticRouter2PrefixValue) Pack

func (*LanConfigParam_IPv6StaticRouter2PrefixValue) Unpack

type LanConfigParam_IPv6StaticTrafficClass

type LanConfigParam_IPv6StaticTrafficClass struct {
	TrafficClass uint8
}

func (*LanConfigParam_IPv6StaticTrafficClass) Format

func (*LanConfigParam_IPv6StaticTrafficClass) LanConfigParameter

func (param *LanConfigParam_IPv6StaticTrafficClass) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6StaticTrafficClass) Pack

func (*LanConfigParam_IPv6StaticTrafficClass) Unpack

func (param *LanConfigParam_IPv6StaticTrafficClass) Unpack(data []byte) error

type LanConfigParam_IPv6Status

type LanConfigParam_IPv6Status struct {
	// Maximum number of static IPv6 addresses for establishing connections to the BMC.
	// Note: in some implementations this may exceed the number of simultaneous sessions supported on
	// the channel. 0 indicates that static address configuration is not available.
	StaticAddressMax uint8

	// Maximum number of Dynamic (SLAAC/ DHCPv6) IPv6 addresses that can be obtained for
	// establishing connections to the BMC.
	// Same caveat as StaticAddressMax: may exceed simultaneous sessions on the channel.
	// 0 = Dynamic addressing is not supported by the BMC.
	DynamicAddressMax uint8

	// data 3: -
	//  - [7:2] - reserved
	//  - [1] - 1b = SLAAC addressing is supported by the BMC
	//  - [0] - 1b = DHCPv6 addressing is supported by the BMC (optional)
	SupportSLAACAddressing  bool
	SupportDHCPv6Addressing bool
}

func (*LanConfigParam_IPv6Status) Format

func (param *LanConfigParam_IPv6Status) Format() string

func (*LanConfigParam_IPv6Status) LanConfigParameter

func (param *LanConfigParam_IPv6Status) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6Status) Pack

func (param *LanConfigParam_IPv6Status) Pack() []byte

func (*LanConfigParam_IPv6Status) Unpack

func (param *LanConfigParam_IPv6Status) Unpack(data []byte) error

type LanConfigParam_IPv6Support

type LanConfigParam_IPv6Support struct {
	// Implementation supports IPv6 Destination Addresses for LAN Alerting.
	SupportIPv6AlertDestination bool
	// Implementation can be configured to use both IPv4 and IPv6 addresses simultaneously
	CanUseBothIPv4AndIPv6 bool
	// Implementation can be configured to use IPv6 addresses only.
	CanUseIPv6Only bool
}

func (*LanConfigParam_IPv6Support) Format

func (param *LanConfigParam_IPv6Support) Format() string

func (*LanConfigParam_IPv6Support) LanConfigParameter

func (param *LanConfigParam_IPv6Support) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_IPv6Support) Pack

func (param *LanConfigParam_IPv6Support) Pack() []byte

func (*LanConfigParam_IPv6Support) Unpack

func (param *LanConfigParam_IPv6Support) Unpack(data []byte) error

type LanConfigParam_MAC

type LanConfigParam_MAC struct {
	MAC net.HardwareAddr
}

func (*LanConfigParam_MAC) Format

func (param *LanConfigParam_MAC) Format() string

func (*LanConfigParam_MAC) LanConfigParameter

func (param *LanConfigParam_MAC) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_MAC) Pack

func (param *LanConfigParam_MAC) Pack() []byte

func (*LanConfigParam_MAC) Unpack

func (param *LanConfigParam_MAC) Unpack(data []byte) error

type LanConfigParam_PrimaryRMCPPort

type LanConfigParam_PrimaryRMCPPort struct {
	Port uint16
}

func (*LanConfigParam_PrimaryRMCPPort) Format

func (param *LanConfigParam_PrimaryRMCPPort) Format() string

func (*LanConfigParam_PrimaryRMCPPort) LanConfigParameter

func (param *LanConfigParam_PrimaryRMCPPort) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_PrimaryRMCPPort) Pack

func (param *LanConfigParam_PrimaryRMCPPort) Pack() []byte

func (*LanConfigParam_PrimaryRMCPPort) Unpack

func (param *LanConfigParam_PrimaryRMCPPort) Unpack(data []byte) error

type LanConfigParam_SecondaryRMCPPort

type LanConfigParam_SecondaryRMCPPort struct {
	Port uint16
}

func (*LanConfigParam_SecondaryRMCPPort) Format

func (param *LanConfigParam_SecondaryRMCPPort) Format() string

func (*LanConfigParam_SecondaryRMCPPort) LanConfigParameter

func (param *LanConfigParam_SecondaryRMCPPort) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_SecondaryRMCPPort) Pack

func (param *LanConfigParam_SecondaryRMCPPort) Pack() []byte

func (*LanConfigParam_SecondaryRMCPPort) Unpack

func (param *LanConfigParam_SecondaryRMCPPort) Unpack(data []byte) error

type LanConfigParam_SetInProgress

type LanConfigParam_SetInProgress struct {
	Value SetInProgressState
}

func (*LanConfigParam_SetInProgress) Format

func (param *LanConfigParam_SetInProgress) Format() string

func (*LanConfigParam_SetInProgress) LanConfigParameter

func (param *LanConfigParam_SetInProgress) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_SetInProgress) Pack

func (param *LanConfigParam_SetInProgress) Pack() []byte

func (*LanConfigParam_SetInProgress) Unpack

func (param *LanConfigParam_SetInProgress) Unpack(data []byte) error

type LanConfigParam_SubnetMask

type LanConfigParam_SubnetMask struct {
	SubnetMask net.IP
}

func (*LanConfigParam_SubnetMask) Format

func (param *LanConfigParam_SubnetMask) Format() string

func (*LanConfigParam_SubnetMask) LanConfigParameter

func (param *LanConfigParam_SubnetMask) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_SubnetMask) Pack

func (param *LanConfigParam_SubnetMask) Pack() []byte

func (*LanConfigParam_SubnetMask) Unpack

func (param *LanConfigParam_SubnetMask) Unpack(data []byte) error

type LanConfigParam_VLANID

type LanConfigParam_VLANID struct {
	Enabled bool
	ID      uint16
}

func (*LanConfigParam_VLANID) Format

func (param *LanConfigParam_VLANID) Format() string

func (*LanConfigParam_VLANID) LanConfigParameter

func (param *LanConfigParam_VLANID) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_VLANID) Pack

func (param *LanConfigParam_VLANID) Pack() []byte

func (*LanConfigParam_VLANID) Unpack

func (param *LanConfigParam_VLANID) Unpack(data []byte) error

type LanConfigParam_VLANPriority

type LanConfigParam_VLANPriority struct {
	Priority uint8
}

func (*LanConfigParam_VLANPriority) Format

func (param *LanConfigParam_VLANPriority) Format() string

func (*LanConfigParam_VLANPriority) LanConfigParameter

func (param *LanConfigParam_VLANPriority) LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*LanConfigParam_VLANPriority) Pack

func (param *LanConfigParam_VLANPriority) Pack() []byte

func (*LanConfigParam_VLANPriority) Unpack

func (param *LanConfigParam_VLANPriority) Unpack(data []byte) error

type LanConfigParameter

type LanConfigParameter interface {
	LanConfigParameter() (paramSelector LanConfigParamSelector, setSelector uint8, blockSelector uint8)
	Parameter
}

type LanConfigParams

type LanConfigParams struct {
	SetInProgress                     *LanConfigParam_SetInProgress                       // #0, Read Only
	AuthTypeSupport                   *LanConfigParam_AuthTypeSupport                     // #1
	AuthTypeEnables                   *LanConfigParam_AuthTypeEnables                     // #2
	IP                                *LanConfigParam_IP                                  // #3
	IPSource                          *LanConfigParam_IPSource                            // #4
	MAC                               *LanConfigParam_MAC                                 // #5, can be Read Only. An implementation can either allow this parameter to be settable, or it can be implemented as Read Only.
	SubnetMask                        *LanConfigParam_SubnetMask                          // #6
	IPv4HeaderParams                  *LanConfigParam_IPv4HeaderParams                    // #7
	PrimaryRMCPPort                   *LanConfigParam_PrimaryRMCPPort                     // #8
	SecondaryRMCPPort                 *LanConfigParam_SecondaryRMCPPort                   // #9
	ARPControl                        *LanConfigParam_ARPControl                          // #10
	GratuitousARPInterval             *LanConfigParam_GratuitousARPInterval               // #11
	DefaultGatewayIP                  *LanConfigParam_DefaultGatewayIP                    // #12
	DefaultGatewayMAC                 *LanConfigParam_DefaultGatewayMAC                   // #13
	BackupGatewayIP                   *LanConfigParam_BackupGatewayIP                     // #14
	BackupGatewayMAC                  *LanConfigParam_BackupGatewayMAC                    // #15
	CommunityString                   *LanConfigParam_CommunityString                     // #16
	AlertDestinationsCount            *LanConfigParam_AlertDestinationsCount              // #17, Read Only
	AlertDestinationTypes             []*LanConfigParam_AlertDestinationType              // #18
	AlertDestinationAddresses         []*LanConfigParam_AlertDestinationAddress           // #19
	VLANID                            *LanConfigParam_VLANID                              // #20
	VLANPriority                      *LanConfigParam_VLANPriority                        // #21
	CipherSuitesSupport               *LanConfigParam_CipherSuitesSupport                 // #22, Read Only
	CipherSuitesID                    *LanConfigParam_CipherSuitesID                      // #23, Read Only
	CipherSuitesPrivLevel             *LanConfigParam_CipherSuitesPrivLevel               // #24
	AlertDestinationVLANs             []*LanConfigParam_AlertDestinationVLAN              // #25, can be READ ONLY
	BadPasswordThreshold              *LanConfigParam_BadPasswordThreshold                // #26
	IPv6Support                       *LanConfigParam_IPv6Support                         // #50, Read Only
	IPv6Enables                       *LanConfigParam_IPv6Enables                         // #51
	IPv6StaticTrafficClass            *LanConfigParam_IPv6StaticTrafficClass              // #52
	IPv6StaticHopLimit                *LanConfigParam_IPv6StaticHopLimit                  // #53
	IPv6FlowLabel                     *LanConfigParam_IPv6FlowLabel                       // #54
	IPv6Status                        *LanConfigParam_IPv6Status                          // #55, Read Only
	IPv6StaticAddresses               []*LanConfigParam_IPv6StaticAddress                 // #56
	IPv6DHCPv6StaticDUIDCount         *LanConfigParam_IPv6DHCPv6StaticDUIDCount           // #57, Read Only
	IPv6DHCPv6StaticDUIDs             []*LanConfigParam_IPv6DHCPv6StaticDUID              // #58
	IPv6DynamicAddresses              []*LanConfigParam_IPv6DynamicAddress                // #59, Read Only
	IPv6DHCPv6DynamicDUIDCount        *LanConfigParam_IPv6DHCPv6DynamicDUIDCount          // #60, Read Only
	IPv6DHCPv6DynamicDUIDs            []*LanConfigParam_IPv6DHCPv6DynamicDUID             // #61
	IPv6DHCPv6TimingConfigSupport     *LanConfigParam_IPv6DHCPv6TimingConfigSupport       // #62, Read Only
	IPv6DHCPv6TimingConfig            []*LanConfigParam_IPv6DHCPv6TimingConfig            // #63
	IPv6RouterAddressConfigControl    *LanConfigParam_IPv6RouterAddressConfigControl      // #64
	IPv6StaticRouter1IP               *LanConfigParam_IPv6StaticRouter1IP                 // #65
	IPv6StaticRouter1MAC              *LanConfigParam_IPv6StaticRouter1MAC                // #66
	IPv6StaticRouter1PrefixLength     *LanConfigParam_IPv6StaticRouter1PrefixLength       // #67
	IPv6StaticRouter1PrefixValue      *LanConfigParam_IPv6StaticRouter1PrefixValue        // #68
	IPv6StaticRouter2IP               *LanConfigParam_IPv6StaticRouter2IP                 // #69
	IPv6StaticRouter2MAC              *LanConfigParam_IPv6StaticRouter2MAC                // #70
	IPv6StaticRouter2PrefixLength     *LanConfigParam_IPv6StaticRouter2PrefixLength       // #71
	IPv6StaticRouter2PrefixValue      *LanConfigParam_IPv6StaticRouter2PrefixValue        // #72
	IPv6DynamicRouterInfoSets         *LanConfigParam_IPv6DynamicRouterInfoSets           // #73, Read Only
	IPv6DynamicRouterInfoIP           []*LanConfigParam_IPv6DynamicRouterInfoIP           // #74
	IPv6DynamicRouterInfoMAC          []*LanConfigParam_IPv6DynamicRouterInfoMAC          // #75
	IPv6DynamicRouterInfoPrefixLength []*LanConfigParam_IPv6DynamicRouterInfoPrefixLength // #76
	IPv6DynamicRouterInfoPrefixValue  []*LanConfigParam_IPv6DynamicRouterInfoPrefixValue  // #77
	IPv6DynamicRouterReceivedHopLimit *LanConfigParam_IPv6DynamicRouterReceivedHopLimit   // #78
	IPv6NDSLAACTimingConfigSupport    *LanConfigParam_IPv6NDSLAACTimingConfigSupport      // #79, Read Only
	IPv6NDSLAACTimingConfig           []*LanConfigParam_IPv6NDSLAACTimingConfig           // #80
}

func (*LanConfigParams) Format

func (lanConfigParams *LanConfigParams) Format() string

func (*LanConfigParams) ToLanConfig

func (lanConfigParams *LanConfigParams) ToLanConfig() *LanConfig

type LanIPAddressSource

type LanIPAddressSource uint8

see: LanConfigParameter_IPAddressSource (#4)

const (
	IPAddressSourceUnspecified LanIPAddressSource = 0x00
	IPAddressSourceStatic      LanIPAddressSource = 0x01
	IPAddressSourceDHCP        LanIPAddressSource = 0x02
	IPAddressSourceBIOS        LanIPAddressSource = 0x03
	IPAddressSourceOther       LanIPAddressSource = 0x04
)

func (LanIPAddressSource) String

func (i LanIPAddressSource) String() string

type LanIPv6AddressStatus

type LanIPv6AddressStatus uint8

Address Status (Read-only parameter)

  • 00h = Active (in-use)
  • 01h = Disabled
  • 02h = Pending (currently undergoing DAD [duplicate address detection], optional)
  • 03h = Failed (duplicate address found, optional)
  • 04h = Deprecated (preferred timer has expired, optional)
  • 05h = Invalid (validity timer has expired, optional)
  • All other = reserved
const (
	LanIPv6AddressStatus_Active     LanIPv6AddressStatus = 0
	LanIPv6AddressStatus_Disabled   LanIPv6AddressStatus = 1
	LanIPv6AddressStatus_Pending    LanIPv6AddressStatus = 2
	LanIPv6AddressStatus_Failed     LanIPv6AddressStatus = 3
	LanIPv6AddressStatus_Deprecated LanIPv6AddressStatus = 4
	LanIPv6AddressStatus_Invalid    LanIPv6AddressStatus = 5
)

func (LanIPv6AddressStatus) String

func (addressStatus LanIPv6AddressStatus) String() string

type LanIPv6DHCPv6TimingConfigMode

type LanIPv6DHCPv6TimingConfigMode uint8

DHCPv6 Timing Configuration Mode

  • 00b = `Not Supported` DHCPv6 timing configuration per IPMI is not supported.
  • 01b = `Global` Timing configuration applies across all interfaces (IAs) that use dynamic addressing and have DHCPv6 is enabled.
  • 10b = `Per Interface` Timing is configurable for each interface and used when DHCPv6 is enabled for the given interface (IA).
  • 11b = reserved
const (
	LanIPv6DHCPv6TimingConfigMode_NotSupported LanIPv6DHCPv6TimingConfigMode = 0
	LanIPv6DHCPv6TimingConfigMode_Global       LanIPv6DHCPv6TimingConfigMode = 1
	LanIPv6DHCPv6TimingConfigMode_PerInterface LanIPv6DHCPv6TimingConfigMode = 2
)

func (LanIPv6DHCPv6TimingConfigMode) String

func (mode LanIPv6DHCPv6TimingConfigMode) String() string

type LanIPv6DynamicAddressSource

type LanIPv6DynamicAddressSource uint8

Address source/type

  • 0 - Reserved
  • 1 - SLAAC (StateLess Address Auto Configuration)
  • 2 - DHCPv6 (optional)
  • Other - reserved
const (
	LanIPv6AddressSource_SLAAC  LanIPv6DynamicAddressSource = 1
	LanIPv6AddressSource_DHCPv6 LanIPv6DynamicAddressSource = 2
)

func (LanIPv6DynamicAddressSource) String

func (addressSource LanIPv6DynamicAddressSource) String() string

type LanIPv6EnableMode

type LanIPv6EnableMode uint8
const (
	// 00h = IPv6 addressing disabled.
	LanIPv6EnableMode_IPv6Disabled LanIPv6EnableMode = 0
	// 01h = Enable IPv6 addressing only. IPv4 addressing is disabled.
	LanIPv6EnableMode_IPv6Only LanIPv6EnableMode = 1
	// 02h = Enable IPv6 and IPv4 addressing simultaneously.
	LanIPv6EnableMode_IPv4AndIPv6 LanIPv6EnableMode = 2
)

func (LanIPv6EnableMode) String

func (enableMode LanIPv6EnableMode) String() string

type LanIPv6NDSLAACTimingConfigMode

type LanIPv6NDSLAACTimingConfigMode uint8

func (LanIPv6NDSLAACTimingConfigMode) String

func (mode LanIPv6NDSLAACTimingConfigMode) String() string

type LanIPv6StaticAddressSource

type LanIPv6StaticAddressSource uint8

IPv6 Static Address Source

  • 0h = Static
  • All other = reserved
const (
	LanIPv6StaticAddressSource_Static LanIPv6StaticAddressSource = 0
)

func (LanIPv6StaticAddressSource) String

func (addressSource LanIPv6StaticAddressSource) String() string

type LinearizationFunc

type LinearizationFunc uint8

LinearizationFunc is linearization function used in "Sensor Reading Conversion Formula" 线性化函数

const (
	LinearizationFunc_Linear LinearizationFunc = 0x00
	LinearizationFunc_LN     LinearizationFunc = 0x01
	LinearizationFunc_LOG10  LinearizationFunc = 0x02
	LinearizationFunc_LOG2   LinearizationFunc = 0x03
	LinearizationFunc_E      LinearizationFunc = 0x04
	LinearizationFunc_EXP10  LinearizationFunc = 0x05
	LinearizationFunc_EXP2   LinearizationFunc = 0x06
	LinearizationFunc_1X     LinearizationFunc = 0x07
	LinearizationFunc_SQR    LinearizationFunc = 0x08
	LinearizationFunc_CUBE   LinearizationFunc = 0x09
	LinearizationFunc_SQRT   LinearizationFunc = 0x0a
	LinearizationFunc_CBRT   LinearizationFunc = 0x0b

	// 70h = non-linear.
	// 71h-7Fh = non-linear OEM
	LinearizationFunc_NonLinear LinearizationFunc = 0x70
)

func (LinearizationFunc) Apply

func (l LinearizationFunc) Apply(x float64) float64

Apply applies linearization func (itself) to the input value and returns the result.

func (LinearizationFunc) IsNonLinear

func (l LinearizationFunc) IsNonLinear() bool

func (LinearizationFunc) String

func (l LinearizationFunc) String() string

type MCLocatorPackOpts

type MCLocatorPackOpts struct {
	RecordID           uint16
	DeviceSlaveAddress uint8 // default 0x20 (BMC system software)
	DeviceSupport      uint8 // default 0x08 (FRU Inventory Device)
	EntityID           uint8 // default 0x07 (system board)
	EntityInstance     uint8
	Name               string // optional MC ID string (max 16 bytes)
}

MCLocatorPackOpts configures PackMCLocator. The defaults match a single local BMC with FRU inventory (§43.9 Type 12h), suitable for ipmitool fru list without seeding sensor SDR records.

type ManagementAccessSubRecordType

type ManagementAccessSubRecordType uint8

func (ManagementAccessSubRecordType) String

type Mask

type Mask struct {
	Threshold Mask_Thresholds
	Discrete  Mask_Discrete
}

For non-threshold-based sensors, Mask holds:

  • Assertion Event Mask
  • Deassertion Event Mask
  • Discrete Reading Mask

For threshold-based sensors, Mask holds:

  • Lower Threshold Reading Mask
  • Upper Threshold Reading Mask
  • Settable Threshold Mask, Readable Threshold Mask

Used in Full and Compact SDR

func (*Mask) ParseAssertLower

func (mask *Mask) ParseAssertLower(b uint16)

ParseAssertLower fill:

  • Assertion Event Mask
  • Lower Threshold Reading Mask
  • Threshold Assertion Event Mask

func (*Mask) ParseDeassertUpper

func (mask *Mask) ParseDeassertUpper(b uint16)

func (*Mask) ParseReading

func (mask *Mask) ParseReading(b uint16)

func (*Mask) ReadableThresholds

func (mask *Mask) ReadableThresholds() SensorThresholdTypes

ReadableThresholds returns all readable thresholds for the sensor.

func (*Mask) SettableThresholds

func (mask *Mask) SettableThresholds() SensorThresholdTypes

func (*Mask) StatusReturnedThresholds

func (mask *Mask) StatusReturnedThresholds() SensorThresholdTypes

StatusReturnedThresholds returns all supported thresholds comparison status via the Get Sensor Reading command.

func (*Mask) SupportedThresholdEvents

func (mask *Mask) SupportedThresholdEvents() SensorEvents

type Mask_Discrete

type Mask_Discrete struct {
	// Assertion Event Mask for non-threshold based sensors, true means assertion event can be generated for this state
	Assert Mask_DiscreteEvent
	// Deassertion Event Mask for non-threshold based sensors, true means deassertion event can be generated for this state
	Deassert Mask_DiscreteEvent
	// Reading Mask for non-threshold based sensors, true means discrete state can be returned by this sensor
	Reading Mask_DiscreteEvent
}

type Mask_DiscreteEvent

type Mask_DiscreteEvent struct {
	State_0  bool
	State_1  bool
	State_2  bool
	State_3  bool
	State_4  bool
	State_5  bool
	State_6  bool
	State_7  bool
	State_8  bool
	State_9  bool
	State_10 bool
	State_11 bool
	State_12 bool
	State_13 bool
	State_14 bool
}

func (Mask_DiscreteEvent) TrueEvents

func (mask Mask_DiscreteEvent) TrueEvents() []uint8

type Mask_Threshold

type Mask_Threshold struct {
	StatusReturned bool // Indicates whether this threshold comparison status is returned via the Get Sensor Reading command.
	Settable       bool
	Readable       bool
	High_Assert    bool
	Low_Assert     bool
	High_Deassert  bool
	Low_Deassert   bool
}

Mask_Threshold holds masks for a specific threshold type.

type Mask_Thresholds

type Mask_Thresholds struct {
	LNR Mask_Threshold
	LCR Mask_Threshold
	LNC Mask_Threshold
	UNR Mask_Threshold
	UCR Mask_Threshold
	UNC Mask_Threshold
}

Mask_Thresholds holds masks for all threshold types.

func (*Mask_Thresholds) IsThresholdReadable

func (mask *Mask_Thresholds) IsThresholdReadable(thresholdType SensorThresholdType) bool

type MessageClass

type MessageClass uint8

func (MessageClass) NormalACKFlag

func (mc MessageClass) NormalACKFlag() bool

type MessageType

type MessageType uint8
const (
	MessageTypeUndefined MessageType = 0x00
	MessageTypePing      MessageType = 0x80
	MessageTypeRMCPACK   MessageType = (0x80 | 6)
	MessageTypeASF       MessageType = (0x00 | 6)
	MessageTypeIPMI      MessageType = (0x00 | 7)
	MessageTypeOEM       MessageType = (0x00 | 8)
)

type NetFn

type NetFn uint8

NetFn is Network Function

const (
	NetFnChassisRequest      NetFn = 0x00
	NetFnChassisResponse     NetFn = 0x01
	NetFnBridgeRequest       NetFn = 0x02
	NetFnBridgeResponse      NetFn = 0x03
	NetFnSensorEventRequest  NetFn = 0x04
	NetFnSensorEventResponse NetFn = 0x05
	NetFnAppRequest          NetFn = 0x06
	NetFnAppResponse         NetFn = 0x07
	NetFnFirmwareRequest     NetFn = 0x08
	NetFnFirmwareResponse    NetFn = 0x09
	NetFnStorageRequest      NetFn = 0x0a
	NetFnStorageResponse     NetFn = 0x0b
	NetFnTransportRequest    NetFn = 0x0c
	NetFnTransportResponse   NetFn = 0x0d

	NetFnGroupExtensionRequest  NetFn = 0x2c
	NetFnGroupExtensionResponse NetFn = 0x2d
	NetFnOEMGroupRequest        NetFn = 0x2e
	NetFnOEMGroupResponse       NetFn = 0x2f

	NetFnOEMSupermicroRequest NetFn = 0x30
)

Network Function Codes, section 5.1 Table 5 Even NetFn values are used for requests to the BMC, and odd NetFn values are returned in responses from the BMC.

six-bit field identifying the function, so total 64 NetFn (32 NetFn pairs)

type OEM

type OEM uint32

OEM represents Manufacturer ID, that is IANA Private Enterprise Number

func (OEM) String

func (oem OEM) String() string

type PEFAlertPolicy

type PEFAlertPolicy struct {
	// [7:4] - policy number. 1 based. 0000b = reserved.
	PolicyNumber uint8
	// PolicyState (enabled or disabled)
	//
	// [3] - 0b = this entry is disabled. Skip to next entry in policy, if any.
	//       1b = this entry is enabled.
	PolicyState bool
	// [2:0] - policy
	PolicyAction PEFAlertPolicyAction

	// [7:4] = ChannelNumber Number.
	ChannelNumber uint8
	// [3:0] = Destination selector.
	Destination uint8

	// [7] - Event-specific Alert String
	//   1b = Alert String look-up is event specific. The following Alert String Set / Selector sub-
	//        field is interpreted as an Alert String Set Number that is used in conjunction with
	//        the Event Filter Number to lookup the Alert String from the PEF Configuration Parameters.
	//   0b = Alert String is not event specific. The following Alert String Set / Selector sub-field
	//        is interpreted as an Alert String Selector that provides a direct pointer to the
	//        desired Alert String from the PEF Configuration Parameters.
	IsEventSpecific bool
	// [6:0] - Alert String Set / Selector.
	// This value identifies one or more Alert Strings in the Alert String table.
	//   - When used as an Alert String Set Number (IsEventSpecific = true), it is used in conjunction with the Event Filter Number to uniquely identify an Alert String.
	//   - When used as an Alert String Selector (IsEventSpecific = false), it directly selects an Alert String from the PEF Configuration Parameters.
	AlertStringKey uint8
}

17.11 Alert Policy Table

func (*PEFAlertPolicy) Format

func (entry *PEFAlertPolicy) Format() string

func (*PEFAlertPolicy) Pack

func (entry *PEFAlertPolicy) Pack() []byte

func (*PEFAlertPolicy) Unpack

func (entry *PEFAlertPolicy) Unpack(data []byte) error

type PEFAlertPolicyAction

type PEFAlertPolicyAction uint8
const (
	// always send alert to this destination.
	PEFAlertPolicyAction_Always PEFAlertPolicyAction = 0

	// if alert to previous destination was successful, do not send alert to this destination.
	// Proceed to next entry in this policy set.
	PEFAlertPolicyAction_ProceedNext PEFAlertPolicyAction = 1

	// if alert to previous destination was successful, do not send alert to this destination.
	// Do not process any more entries in this policy set.
	PEFAlertPolicyAction_NoProceed PEFAlertPolicyAction = 2

	// if alert to previous destination was successful, do not send alert to this destination.
	// Proceed to next entry in this policy set that is to a different channel.
	PEFAlertPolicyAction_ProceedNextDifferentChannel PEFAlertPolicyAction = 3

	// if alert to previous destination was successful, do not send alert to this destination.
	// Proceed to next entry in this policy set that is to a different destination type.
	PEFAlertPolicyAction_ProceedNextDifferentDestination PEFAlertPolicyAction = 4
)

func (PEFAlertPolicyAction) ShortString

func (action PEFAlertPolicyAction) ShortString() string

func (PEFAlertPolicyAction) String

func (action PEFAlertPolicyAction) String() string

type PEFConfigParamSelector

type PEFConfigParamSelector uint8
const (
	PEFConfigParamSelector_SetInProgress       PEFConfigParamSelector = 0x00
	PEFConfigParamSelector_Control             PEFConfigParamSelector = 0x01
	PEFConfigParamSelector_ActionGlobalControl PEFConfigParamSelector = 0x02
	PEFConfigParamSelector_StartupDelay        PEFConfigParamSelector = 0x03
	PEFConfigParamSelector_AlertStartDelay     PEFConfigParamSelector = 0x04
	PEFConfigParamSelector_EventFiltersCount   PEFConfigParamSelector = 0x05
	PEFConfigParamSelector_EventFilter         PEFConfigParamSelector = 0x06
	PEFConfigParamSelector_EventFilterData1    PEFConfigParamSelector = 0x07
	PEFConfigParamSelector_AlertPoliciesCount  PEFConfigParamSelector = 0x08
	PEFConfigParamSelector_AlertPolicy         PEFConfigParamSelector = 0x09
	PEFConfigParamSelector_SystemGUID          PEFConfigParamSelector = 0x0a
	PEFConfigParamSelector_AlertStringsCount   PEFConfigParamSelector = 0x0b
	PEFConfigParamSelector_AlertStringKey      PEFConfigParamSelector = 0x0c
	PEFConfigParamSelector_AlertString         PEFConfigParamSelector = 0x0d
	PEFConfigParamSelector_GroupControlsCount  PEFConfigParamSelector = 0x0e
	PEFConfigParamSelector_GroupControl        PEFConfigParamSelector = 0x0f
)

func (PEFConfigParamSelector) String

func (p PEFConfigParamSelector) String() string

type PEFConfigParam_ActionGlobalControl

type PEFConfigParam_ActionGlobalControl struct {
	DiagnosticInterruptEnabled bool
	OEMActionEnabled           bool
	PowerCycleActionEnabled    bool
	ResetActionEnabled         bool
	PowerDownActionEnabled     bool
	AlertActionEnabled         bool
}

func (*PEFConfigParam_ActionGlobalControl) Format

func (*PEFConfigParam_ActionGlobalControl) PEFConfigParameter

func (param *PEFConfigParam_ActionGlobalControl) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_ActionGlobalControl) Pack

func (param *PEFConfigParam_ActionGlobalControl) Pack() []byte

func (*PEFConfigParam_ActionGlobalControl) Unpack

func (param *PEFConfigParam_ActionGlobalControl) Unpack(data []byte) error

type PEFConfigParam_AlertPoliciesCount

type PEFConfigParam_AlertPoliciesCount struct {
	Value uint8
}

Number of alert policy entries supported. 1-based. This parameter does not need to be supported if Alerting is not supported.

func (*PEFConfigParam_AlertPoliciesCount) Format

func (param *PEFConfigParam_AlertPoliciesCount) Format() string

func (*PEFConfigParam_AlertPoliciesCount) PEFConfigParameter

func (param *PEFConfigParam_AlertPoliciesCount) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_AlertPoliciesCount) Pack

func (param *PEFConfigParam_AlertPoliciesCount) Pack() []byte

func (*PEFConfigParam_AlertPoliciesCount) Unpack

func (param *PEFConfigParam_AlertPoliciesCount) Unpack(data []byte) error

type PEFConfigParam_AlertPolicy

type PEFConfigParam_AlertPolicy struct {
	// Set Selector = entry number
	//  - [7] - reserved
	//  - [6:0] - alert policy entry number. 1-based.
	SetSelector uint8

	Policy *PEFAlertPolicy
}

func (*PEFConfigParam_AlertPolicy) Format

func (param *PEFConfigParam_AlertPolicy) Format() string

func (*PEFConfigParam_AlertPolicy) PEFConfigParameter

func (param *PEFConfigParam_AlertPolicy) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_AlertPolicy) Pack

func (param *PEFConfigParam_AlertPolicy) Pack() []byte

func (*PEFConfigParam_AlertPolicy) Unpack

func (param *PEFConfigParam_AlertPolicy) Unpack(data []byte) error

type PEFConfigParam_AlertStartupDelay

type PEFConfigParam_AlertStartupDelay struct {
	DelaySec uint8
}

func (*PEFConfigParam_AlertStartupDelay) Format

func (param *PEFConfigParam_AlertStartupDelay) Format() string

func (*PEFConfigParam_AlertStartupDelay) PEFConfigParameter

func (param *PEFConfigParam_AlertStartupDelay) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_AlertStartupDelay) Pack

func (param *PEFConfigParam_AlertStartupDelay) Pack() []byte

func (*PEFConfigParam_AlertStartupDelay) Unpack

func (param *PEFConfigParam_AlertStartupDelay) Unpack(data []byte) error

type PEFConfigParam_AlertString

type PEFConfigParam_AlertString struct {
	// Set Selector = string selector.
	//   - 0 = selects volatile string
	//   - 01h-7Fh = non-volatile string selectors
	SetSelector uint8

	// Block Selector = string block number to set, 1 based. Blocks are 16 bytes.
	BlockSelector uint8

	// String data. Null terminated 8-bit ASCII string. 16-bytes max. per block.
	StringData []byte
}

func (*PEFConfigParam_AlertString) Format

func (param *PEFConfigParam_AlertString) Format() string

func (*PEFConfigParam_AlertString) PEFConfigParameter

func (param *PEFConfigParam_AlertString) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_AlertString) Pack

func (param *PEFConfigParam_AlertString) Pack() []byte

func (*PEFConfigParam_AlertString) Unpack

func (param *PEFConfigParam_AlertString) Unpack(data []byte) error

type PEFConfigParam_AlertStringKey

type PEFConfigParam_AlertStringKey struct {
	// Set Selector = Alert string selector.
	//   - 0 = selects volatile string parameters
	//   - 01h-7Fh = non-volatile string selectors
	SetSelector uint8

	// [6:0] - Filter number. 1-based. 00h = unspecified.
	FilterNumber uint8

	// [6:0] - Set number for string. 1-based. 00h = unspecified.
	AlertStringSet uint8
}

Sets the keys used to look up Alert String data in PEF. This parameter does not need to be supported if Alerting is not supported.

Its purpose is to get the AlertStringSelector from combination of the (Event) FilterNumber and AlertStringSet.

func (*PEFConfigParam_AlertStringKey) Format

func (param *PEFConfigParam_AlertStringKey) Format() string

func (*PEFConfigParam_AlertStringKey) PEFConfigParameter

func (param *PEFConfigParam_AlertStringKey) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_AlertStringKey) Pack

func (param *PEFConfigParam_AlertStringKey) Pack() []byte

func (*PEFConfigParam_AlertStringKey) Unpack

func (param *PEFConfigParam_AlertStringKey) Unpack(data []byte) error

type PEFConfigParam_AlertStringsCount

type PEFConfigParam_AlertStringsCount struct {
	Value uint8
}

Number of alert strings supported in addition to Alert String 0. 1-based. This parameter does not need to be supported if Alerting is not supported.

func (*PEFConfigParam_AlertStringsCount) Format

func (param *PEFConfigParam_AlertStringsCount) Format() string

func (*PEFConfigParam_AlertStringsCount) PEFConfigParameter

func (param *PEFConfigParam_AlertStringsCount) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_AlertStringsCount) Pack

func (param *PEFConfigParam_AlertStringsCount) Pack() []byte

func (*PEFConfigParam_AlertStringsCount) Unpack

func (param *PEFConfigParam_AlertStringsCount) Unpack(data []byte) error

type PEFConfigParam_Control

type PEFConfigParam_Control struct {
	EnablePEFAlertStartupDelay bool
	EnablePEFStartupDelay      bool
	EnableEventMessage         bool
	EnablePEF                  bool
}

func (*PEFConfigParam_Control) Format

func (param *PEFConfigParam_Control) Format() string

func (*PEFConfigParam_Control) PEFConfigParameter

func (param *PEFConfigParam_Control) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_Control) Pack

func (param *PEFConfigParam_Control) Pack() []byte

func (*PEFConfigParam_Control) Unpack

func (param *PEFConfigParam_Control) Unpack(data []byte) error

type PEFConfigParam_EventFilter

type PEFConfigParam_EventFilter struct {
	// Set Selector = filter number. 1-based. 00h = reserved.
	SetSelector uint8

	Filter *PEFEventFilter
}

func (*PEFConfigParam_EventFilter) Format

func (param *PEFConfigParam_EventFilter) Format() string

func (*PEFConfigParam_EventFilter) PEFConfigParameter

func (param *PEFConfigParam_EventFilter) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_EventFilter) Pack

func (param *PEFConfigParam_EventFilter) Pack() []byte

func (*PEFConfigParam_EventFilter) Unpack

func (param *PEFConfigParam_EventFilter) Unpack(data []byte) error

type PEFConfigParam_EventFilterData1

type PEFConfigParam_EventFilterData1 struct {
	// Set Selector = filter number
	SetSelector uint8

	// [7] - 1b = enable filter
	//       0b = disable filter
	FilterEnabled bool
	// [6:5] - 11b = reserved
	//         10b = manufacturer pre-configured filter. The filter entry has been
	//               configured by the system integrator and should not be altered by software.
	//               Software is allowed to enable or disable the filter, however.
	//         01b = reserved
	//         00b = software configurable filter. The filter entry is available for
	//               configuration by system management software.
	FilterType PEFEventFilterType
}

This parameter provides an aliased access to the first byte of the event filter data. This is provided to simplify the act of enabling and disabling individual filters by avoiding the need to do a read-modify-write of the entire filter data.

func (*PEFConfigParam_EventFilterData1) Format

func (param *PEFConfigParam_EventFilterData1) Format() string

func (*PEFConfigParam_EventFilterData1) PEFConfigParameter

func (param *PEFConfigParam_EventFilterData1) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_EventFilterData1) Pack

func (param *PEFConfigParam_EventFilterData1) Pack() []byte

func (*PEFConfigParam_EventFilterData1) Unpack

func (param *PEFConfigParam_EventFilterData1) Unpack(data []byte) error

type PEFConfigParam_EventFiltersCount

type PEFConfigParam_EventFiltersCount struct {
	Value uint8
}

Number of event filters supported. 1-based. This parameter does not need to be supported if Alerting is not supported.

func (*PEFConfigParam_EventFiltersCount) Format

func (param *PEFConfigParam_EventFiltersCount) Format() string

func (*PEFConfigParam_EventFiltersCount) PEFConfigParameter

func (param *PEFConfigParam_EventFiltersCount) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_EventFiltersCount) Pack

func (param *PEFConfigParam_EventFiltersCount) Pack() []byte

func (*PEFConfigParam_EventFiltersCount) Unpack

func (param *PEFConfigParam_EventFiltersCount) Unpack(data []byte) error

type PEFConfigParam_GroupControl

type PEFConfigParam_GroupControl struct {
	// Set Selector (Entry Selector) = group control table entry selector.
	SetSelector uint8

	ForceControlOperation bool
	DelayedControl        bool
	ChannelNumber         uint8

	GroupID0              uint8
	MemberID0             uint8
	DisableMemberID0Check bool

	GroupID1              uint8
	MemberID1             uint8
	DisableMemberID1Check bool

	GroupID2              uint8
	MemberID2             uint8
	DisableMemberID2Check bool

	GroupID3              uint8
	MemberID3             uint8
	DisableMemberID3Check bool

	RetryCount uint8

	Operation uint8
}

func (*PEFConfigParam_GroupControl) Format

func (param *PEFConfigParam_GroupControl) Format() string

func (*PEFConfigParam_GroupControl) PEFConfigParameter

func (param *PEFConfigParam_GroupControl) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_GroupControl) Pack

func (param *PEFConfigParam_GroupControl) Pack() []byte

func (*PEFConfigParam_GroupControl) Unpack

func (param *PEFConfigParam_GroupControl) Unpack(data []byte) error

type PEFConfigParam_GroupControlsCount

type PEFConfigParam_GroupControlsCount struct {
	Value uint8
}

func (*PEFConfigParam_GroupControlsCount) Format

func (param *PEFConfigParam_GroupControlsCount) Format() string

func (*PEFConfigParam_GroupControlsCount) PEFConfigParameter

func (param *PEFConfigParam_GroupControlsCount) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_GroupControlsCount) Pack

func (param *PEFConfigParam_GroupControlsCount) Pack() []byte

func (*PEFConfigParam_GroupControlsCount) Unpack

func (param *PEFConfigParam_GroupControlsCount) Unpack(data []byte) error

type PEFConfigParam_SetInProgress

type PEFConfigParam_SetInProgress struct {
	Value SetInProgressState
}

func (*PEFConfigParam_SetInProgress) Format

func (param *PEFConfigParam_SetInProgress) Format() string

func (*PEFConfigParam_SetInProgress) PEFConfigParameter

func (param *PEFConfigParam_SetInProgress) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_SetInProgress) Pack

func (param *PEFConfigParam_SetInProgress) Pack() []byte

func (*PEFConfigParam_SetInProgress) Unpack

func (param *PEFConfigParam_SetInProgress) Unpack(data []byte) error

type PEFConfigParam_StartupDelay

type PEFConfigParam_StartupDelay struct {
	DelaySec uint8
}

func (*PEFConfigParam_StartupDelay) Format

func (param *PEFConfigParam_StartupDelay) Format() string

func (*PEFConfigParam_StartupDelay) PEFConfigParameter

func (param *PEFConfigParam_StartupDelay) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_StartupDelay) Pack

func (param *PEFConfigParam_StartupDelay) Pack() []byte

func (*PEFConfigParam_StartupDelay) Unpack

func (param *PEFConfigParam_StartupDelay) Unpack(data []byte) error

type PEFConfigParam_SystemGUID

type PEFConfigParam_SystemGUID struct {
	// Used to fill in the GUID field in a PET Trap.
	//   [7:1] - reserved
	//   [0]
	//    1b = BMC uses following value in PET Trap.
	//    0b = BMC ignores following value and uses value returned from Get System GUID command instead.
	UseGUID bool
	GUID    [16]byte
}

func (*PEFConfigParam_SystemGUID) Format

func (param *PEFConfigParam_SystemGUID) Format() string

func (*PEFConfigParam_SystemGUID) PEFConfigParameter

func (param *PEFConfigParam_SystemGUID) PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*PEFConfigParam_SystemGUID) Pack

func (param *PEFConfigParam_SystemGUID) Pack() []byte

func (*PEFConfigParam_SystemGUID) Unpack

func (param *PEFConfigParam_SystemGUID) Unpack(configData []byte) error

type PEFConfigParameter

type PEFConfigParameter interface {
	PEFConfigParameter() (paramSelector PEFConfigParamSelector, setSelector uint8, blockSelector uint8)
	Parameter
}

type PEFConfigParams

type PEFConfigParams struct {
	SetInProgress       *PEFConfigParam_SetInProgress
	Control             *PEFConfigParam_Control
	ActionGlobalControl *PEFConfigParam_ActionGlobalControl
	StartupDelay        *PEFConfigParam_StartupDelay
	AlertStartupDelay   *PEFConfigParam_AlertStartupDelay
	EventFiltersCount   *PEFConfigParam_EventFiltersCount
	EventFilters        []*PEFConfigParam_EventFilter
	EventFiltersData1   []*PEFConfigParam_EventFilterData1
	AlertPoliciesCount  *PEFConfigParam_AlertPoliciesCount
	AlertPolicies       []*PEFConfigParam_AlertPolicy
	SystemGUID          *PEFConfigParam_SystemGUID
	AlertStringsCount   *PEFConfigParam_AlertStringsCount
	AlertStringKeys     []*PEFConfigParam_AlertStringKey
	AlertStrings        []*PEFConfigParam_AlertString
	GroupControlsCount  *PEFConfigParam_GroupControlsCount
	GroupControls       []*PEFConfigParam_GroupControl
}

func (*PEFConfigParams) Format

func (pefConfigParams *PEFConfigParams) Format() string

type PEFEventFilter

type PEFEventFilter struct {
	// Filter Configuration
	//
	// FilterState (enabled or disabled)
	// [4:0] - reserved
	//
	// [7] - 1b = enable filter
	//       0b = disable filter
	FilterState bool
	// [6:5] - 11b = reserved
	//         10b = manufacturer pre-configured filter. The filter entry has been
	//               configured by the system integrator and should not be altered by software.
	//               Software is allowed to enable or disable the filter, however.
	//         01b = reserved
	//         00b = software configurable filter. The filter entry is available for
	//               configuration by system management software.
	FilterType PEFEventFilterType

	// 17.6 PEF Actions
	// All actions are optional for an implementation, with the exception of Alert
	// which is mandatory if alerting is supported for one or more channels.
	// The BMC will return 0b for unsupported actions.
	// Software can test for which actions are supported by writing 1's to the
	// specified fields and  reading back the result.
	// (Note that reserved bits must be written with 0's)
	ActionGroupControlOperation bool
	ActionDiagnosticInterrupt   bool
	ActionOEM                   bool
	ActionPowerCycle            bool
	ActionReset                 bool
	ActionPowerOff              bool

	// Either Event filter Action should be enabled or Power action should be present as channel alert is enabled.
	ActionAlert bool // Relates with AlertPolicyNumber

	// Used to select an alerting policy set from the Alert Policy Table.
	// The Alert Policy Table holds different policies that configure the order in which different alert destinations and alerting media are tried.
	//   [6:4] - group control selector (1-based). Selects entry from group control table (see PEF Group Control Table, §17.8).
	GroupControlSelector uint8
	//   [3:0] - policy number. Value is "don't care" if (ActionAlert=false) Alert is not selected in the Event Filter Action.
	AlertPolicyNumber uint8

	EventSeverity PEFEventSeverity

	GeneratorID GeneratorID

	SensorType SensorType

	SensorNumber SensorNumber

	EventReadingType EventReadingType

	EventData1EventOffsetMask uint16

	EventData1ANDMask uint8
	// Used to indicate whether each bit position's comparison is an exact comparison or not.
	EventData1Compare1 uint8
	EventData1Compare2 uint8

	EventData2ANDMask  uint8
	EventData2Compare1 uint8
	EventData2Compare2 uint8

	EventData3ANDMask  uint8
	EventData3Compare1 uint8
	EventData3Compare2 uint8
}

17.7 Event Filter Table

func (*PEFEventFilter) Format

func (entry *PEFEventFilter) Format() string

func (*PEFEventFilter) Pack

func (entry *PEFEventFilter) Pack() []byte

func (*PEFEventFilter) Unpack

func (entry *PEFEventFilter) Unpack(data []byte) error

type PEFEventFilterType

type PEFEventFilterType uint8

PEFEventFilterType:

  • manufacturer pre-configured filter. The filter entry has been configured by the system integrator and should not be altered by software. Software is allowed to enable or disable the filter, however.
  • software configurable filter. The filter entry is available for configuration by system management software.
const (
	PEFEventFilterType_Configurable  PEFEventFilterType = 0x00
	PEFEventFilterType_PreConfigured PEFEventFilterType = 0x01
)

func (PEFEventFilterType) String

func (filterType PEFEventFilterType) String() string

type PEFEventSeverity

type PEFEventSeverity uint8
const (
	PEFEventSeverityUnspecified    PEFEventSeverity = 0x00
	PEFEventSeverityMonitor        PEFEventSeverity = 0x01
	PEFEventSeverityInformation    PEFEventSeverity = 0x02
	PEFEventSeverityOK             PEFEventSeverity = 0x04
	PEFEventSeverityNonCritical    PEFEventSeverity = 0x08 // aka Warning
	PEFEventSeverityCritical       PEFEventSeverity = 0x10
	PEFEventSeverityNonRecoverable PEFEventSeverity = 0x20
)

func (PEFEventSeverity) String

func (severity PEFEventSeverity) String() string

type Parameter

type Parameter interface {
	Pack() []byte
	Unpack(paramData []byte) error
	Format() string
}

type PayloadType

type PayloadType uint8

13.27.3 The Get Channel Payload Support command returns which standard payload type numbers and OEM payload type handles are available on a given channel of a BMC.

const (
	PayloadTypeIPMI PayloadType = 0x00
	PayloadTypeSOL  PayloadType = 0x01
	PayloadTypeOEM  PayloadType = 0x02

	PayloadTypeRmcpOpenSessionRequest  PayloadType = 0x10
	PayloadTypeRmcpOpenSessionResponse PayloadType = 0x11
	PayloadTypeRAKPMessage1            PayloadType = 0x12
	PayloadTypeRAKPMessage2            PayloadType = 0x13
	PayloadTypeRAKPMessage3            PayloadType = 0x14
	PayloadTypeRAKPMessage4            PayloadType = 0x15

	PayloadTypeOEM0 PayloadType = 0x20
	PayloadTypeOEM1 PayloadType = 0x21
	PayloadTypeOEM2 PayloadType = 0x22
	PayloadTypeOEM3 PayloadType = 0x23
	PayloadTypeOEM4 PayloadType = 0x24
	PayloadTypeOEM5 PayloadType = 0x25
	PayloadTypeOEM6 PayloadType = 0x26
	PayloadTypeOEM7 PayloadType = 0x27
)

func (PayloadType) String

func (pt PayloadType) String() string

type PrivilegeLevel

type PrivilegeLevel uint8

6.8 Channel Privilege Levels

  • The `SetChannelAccess` command is used to set the maximum privilege level limit for a channel.
  • The `SetSessionPrivilegeLevel` Command is used to request the ability to perform operations at a particular privilege level.
  • The `SetSessionPrivilegeLevel` command can only be used to set privilege levels that are less than or equal to the privilege level limit for the entire channel, regardless of the privilege level of the user.
const (
	PrivilegeLevelUnspecified   PrivilegeLevel = 0x00
	PrivilegeLevelCallback      PrivilegeLevel = 0x01
	PrivilegeLevelUser          PrivilegeLevel = 0x02
	PrivilegeLevelOperator      PrivilegeLevel = 0x03
	PrivilegeLevelAdministrator PrivilegeLevel = 0x04
	PrivilegeLevelOEM           PrivilegeLevel = 0x05
)

func (PrivilegeLevel) Short

func (l PrivilegeLevel) Short() string

func (PrivilegeLevel) String

func (l PrivilegeLevel) String() string

func (PrivilegeLevel) Symbol

func (l PrivilegeLevel) Symbol() string

type ReadingFactors

type ReadingFactors struct {
	M int16 // 10 bits used

	// in +/- ½ raw counts
	Tolerance uint8 // 6 bits used

	B int16 // 10 bits used

	// Unsigned, 10-bit Basic Sensor Accuracy in 1/100 percent scaled up by unsigned Accuracy exponent.
	Accuracy uint16 // 10 bits, unsigned

	Accuracy_Exp uint8 // 2 bits, unsigned

	// [7:4] - R (result) exponent 4 bits, 2's complement, signed
	// [3:0] - B exponent 4 bits, 2's complement, signed
	R_Exp int8 // 4 bits, signed, also called K2
	B_Exp int8 // 4 bits, signed, also called K1
}

ReadingFactors is used in "Sensor Reading Conversion Formula" Only Full SDR defines reading factors. see: 36.3 Sensor Reading Conversion Formula

func (ReadingFactors) String

func (f ReadingFactors) String() string

type Request

type Request interface {
	// Pack encodes the object to data bytes
	Pack() []byte
	// Command return the IPMI command info (NetFn/Cmd).
	Command() Command
}

type Response

type Response interface {
	// Unpack decodes the object from data bytes
	Unpack(data []byte) error
	// Format return a formatted human friendly string
	Format() string
}

type ResponseError

type ResponseError struct {
	// contains filtered or unexported fields
}

ResponseError encapsulate the CompletionCode of IPMI Response Msg alongside with error description.

func IsResponseError

func IsResponseError(err error) (respErr *ResponseError, ok bool)

func NewResponseError

func NewResponseError(cc CompletionCode, description string) *ResponseError

NewResponseError creates a ResponseError with the given completion code and description.

func (*ResponseError) CompletionCode

func (e *ResponseError) CompletionCode() CompletionCode

func (*ResponseError) Error

func (e *ResponseError) Error() string

Error implements the error interface

type Result

type Result[T any] struct {
	Ok  *T
	Err error
}

type Rmcp

type Rmcp struct {
	// Multi-byte fields in RMCP/ASF fields are specified as being transmitted in "Network Byte Order" - meaning most-significant byte first.
	// RMCP and ASF-specified fields are therefore transferred **most-significant byte first**.
	RmcpHeader *RmcpHeader

	// Multi-byte fields in RMCP/ASF fields are specified as being transmitted in "Network Byte Order"
	ASF *ASF

	// The IPMI convention is to transfer multi-byte numeric fields least-significant Byte first. Therefore, unless otherwise specified:
	// Data in the IPMI Session Header and IPMI Message fields are transmitted **least-significant byte first**.
	Session15 *Session15
	Session20 *Session20
}

Rmcp holds the data that will be send over UDP

func (*Rmcp) Pack

func (r *Rmcp) Pack() []byte

func (*Rmcp) Unpack

func (r *Rmcp) Unpack(msg []byte) error

type RmcpAckMessage

type RmcpAckMessage struct {
	// Copied from received message
	Version uint8

	// Copied from received message
	SequenceNumber uint8

	// [7] - Set to 1 to indicate ACK packet
	// [6:0] - Copied from received message.
	ACKFlag      bool
	MessageClass MessageClass // Can be IPMI Messages, ASF, OEM
}

13.2.1 RMCP ACK Messages

type RmcpHeader

type RmcpHeader struct {
	// 06h = RMCP Version 1.0
	// IPMI-over-LAN uses version 1 of the RMCP protocol and packet format
	Version uint8

	// RMCP Messages with class=IPMI should be sent with an RMCP Sequence Number of FFh
	// to indicate that an RMCP ACK message should not be generated by the message receiver.
	SequenceNumber uint8

	// This field identifies the format of the messages that follow this header.
	// All messages of class ASF (6) conform to the formats defined in this
	// specification and can be extended via an OEM IANA.
	// Bit 7 RMCP ACK
	// 0 - Normal RMCP message
	// 1 - RMCP ACK message
	ACKFlag bool
	// Bit 6:5 Reserved
	// Bit 4:0 Message Class
	// 0-5 = Reserved
	// 6 = ASF
	// 7 = IPMI
	// 8 = OEM defined
	// all other = Reserved
	MessageClass MessageClass // Can be IPMI Messages, ASF, OEM
}

RmcpHeader represents RMCP Message Header 13.1.3

func NewRmcpHeader

func NewRmcpHeader() *RmcpHeader

func NewRmcpHeaderASF

func NewRmcpHeaderASF() *RmcpHeader

func (*RmcpHeader) MessageType

func (r *RmcpHeader) MessageType() MessageType

the ACK/Normal Bit and the Message Class combine to identify the type of message under RMCP

func (*RmcpHeader) Pack

func (r *RmcpHeader) Pack() []byte

func (*RmcpHeader) Unpack

func (r *RmcpHeader) Unpack(msg []byte) error

type RmcpStatusCode

type RmcpStatusCode uint8

13.24 RMCP+ and RAKP Message Status Codes

const (
	RmcpStatusCodeNoErrors                   RmcpStatusCode = 0x00
	RmcpStatusCodeNoResToCreateSess          RmcpStatusCode = 0x01
	RmcpStatusCodeInvalidSessionID           RmcpStatusCode = 0x02
	RmcpStatusCodeInvalidPayloadType         RmcpStatusCode = 0x03
	RmcpStatusCodeInvalidAuthAlg             RmcpStatusCode = 0x04
	RmcpStatusCodeInvalidIntegrityAlg        RmcpStatusCode = 0x05
	RmcpStatusCodeNoMatchingAuthPayload      RmcpStatusCode = 0x06
	RmcpStatusCodeNoMatchingIntegrityPayload RmcpStatusCode = 0x07
	RmcpStatusCodeInactiveSessionID          RmcpStatusCode = 0x08
	RmcpStatusCodeInvalidRole                RmcpStatusCode = 0x09
	RmcpStatusCodeUnauthorizedRoleOfPriLevel RmcpStatusCode = 0x0a
	RmcpStatusCodeNoResToCreateSessAtRole    RmcpStatusCode = 0x0b
	RmcpStatusCodeInvalidNameLength          RmcpStatusCode = 0x0c
	RmcpStatusCodeUnauthorizedName           RmcpStatusCode = 0x0d
	RmcpStatusCodeUnauthorizedGUID           RmcpStatusCode = 0x0e
	RmcpStatusCodeInvalidIntegrityCheckValue RmcpStatusCode = 0x0f
	RmcpStatusCodeInvalidConfidentAlg        RmcpStatusCode = 0x10
	RmcpStatusCodeNoCipherSuiteMatch         RmcpStatusCode = 0x11
	RmcpStatusCodeIllegalParameter           RmcpStatusCode = 0x12
)

func (RmcpStatusCode) String

func (c RmcpStatusCode) String() string

type RmcpStatusError

type RmcpStatusError struct {
	// contains filtered or unexported fields
}

RmcpStatusError reports a non-zero RMCP+ Open Session or RAKP status code.

func NewRmcpStatusError

func NewRmcpStatusError(statusCode RmcpStatusCode) *RmcpStatusError

NewRmcpStatusError creates an error for a non-zero RMCP+ status code.

func (*RmcpStatusError) Error

func (e *RmcpStatusError) Error() string

func (*RmcpStatusError) StatusCode

func (e *RmcpStatusError) StatusCode() RmcpStatusCode

StatusCode returns the RMCP+ status code reported by the BMC.

type SDR

type SDR struct {
	// NextRecordID should be filled by ParseSDR.
	NextRecordID uint16

	RecordHeader *SDRHeader

	Full                        *SDRFull
	Compact                     *SDRCompact
	EventOnly                   *SDREventOnly
	EntityAssociation           *SDREntityAssociation
	DeviceRelative              *SDRDeviceRelative
	GenericDeviceLocator        *SDRGenericDeviceLocator
	FRUDeviceLocator            *SDRFRUDeviceLocator
	MgmtControllerDeviceLocator *SDRMgmtControllerDeviceLocator
	MgmtControllerConfirmation  *SDRMgmtControllerConfirmation
	BMCChannelInfo              *SDRBMCChannelInfo
	OEM                         *SDROEM
	Reserved                    *SDRReserved
}

43. Sensor Data Record Formats

func ParseSDR

func ParseSDR(data []byte, nextRecordID uint16) (*SDR, error)

func (*SDR) HasAnalogReading

func (sdr *SDR) HasAnalogReading() bool

Determine if sensor has an analog reading

func (*SDR) SensorName

func (sdr *SDR) SensorName() string

func (*SDR) SensorNumber

func (sdr *SDR) SensorNumber() SensorNumber

Not all SDRs have a sensor number. Only Full/Compact/EventOnly SDRs have a sensor number.

func (*SDR) String

func (sdr *SDR) String() string

type SDRBMCChannelInfo

type SDRBMCChannelInfo struct {
	Channel0 ChannelInfo
	Channel1 ChannelInfo
	Channel2 ChannelInfo
	Channel3 ChannelInfo
	Channel4 ChannelInfo
	Channel5 ChannelInfo
	Channel6 ChannelInfo
	Channel7 ChannelInfo

	MessagingInterruptType uint8

	EventMessageBufferInterruptType uint8
}

43.11 SDR Type 14h - BMC Message Channel Info Record

func (*SDRBMCChannelInfo) Pack

func (s *SDRBMCChannelInfo) Pack(recordID uint16) []byte

Pack encodes a Type 14h BMC Message Channel Info record per v2.0§43.11.

type SDRCompact

type SDRCompact struct {
	GeneratorID  GeneratorID
	SensorNumber SensorNumber

	SensorEntityID       EntityID
	SensorEntityInstance EntityInstance
	// 0b = treat entity as a physical entity per Entity ID table
	// 1b = treat entity as a logical container entity. For example, if this bit is set,
	// and the Entity ID is "Processor", the container entity would be considered
	// to represent a logical "Processor Group" rather than a physical processor.
	// This bit is typically used in conjunction with an Entity Association record.
	SensorEntityIsLogical bool

	SensorInitialization SensorInitialization

	SensorCapabilities SensorCapabilities

	SensorType             SensorType
	SensorEventReadingType EventReadingType

	Mask Mask

	SensorUnit SensorUnit

	// SensorValue is not stored in SDR intrinsically, this field is set by `enhanceSDR`
	// It is fetched by IPMI command GetSensorReading and aligned/converted to SensorUnit based.
	SensorValue float64

	// SensorStatus is not stored in SDR intrinsically, this field is set by `enhanceSDR`
	SensorStatus string

	// Sensor Record Sharing / Sensor Direction (v2.0§43.2 Table 43-2, bytes 24–25).
	// Packed as a 2-byte bitfield; see packSensorRecordSharing.
	SensorDirection                uint8 // [7:6] of byte 1: 00b=unspecified, 01b=input, 10b=output
	IDStringInstanceModifierType   uint8 // [5:4] of byte 1: 00b=numeric, 01b=alpha
	ShareCount                     uint8 // [3:0] of byte 1
	EntityInstanceSharing          bool  // bit 7 of byte 2
	IDStringInstanceModifierOffset uint8 // [6:0] of byte 2

	// Positive hysteresis is defined as the unsigned number of counts that are
	// subtracted from the raw threshold values to create the "re-arm" point for all
	// positive-going thresholds on the sensor. 0 indicates that there is no hysteresis on
	// positive-going thresholds for this sensor. Hysteresis values are given as raw
	// counts. That is, to find the degree of hysteresis in units, the value must be
	// converted using the "y=Mx+B" formula.
	//
	// compact SDR can have pos/neg hysteresis, but they cannot be analog!
	PositiveHysteresisRaw uint8

	// Negative hysteresis is defined as the unsigned number of counts that are added
	// to the raw threshold value to create the "re-arm" point for all negative-going
	// thresholds on the sensor. 0 indicates that there is no hysteresis on negative-going
	// thresholds for this sensor.
	//
	// compact SDR can have pos/neg hysteresis, but they cannot be analog!
	NegativeHysteresisRaw uint8

	IDStringTypeLength TypeLength // Sensor ID String Type/Length Code
	IDStringBytes      []byte     // Sensor ID String bytes.
}

43.2 SDR Type 02h, Compact Sensor Record

The Compact sensor record saves space, but has limitations in the sensors it can describe.

func (*SDRCompact) NegativeHysteresis

func (record *SDRCompact) NegativeHysteresis() (raw uint8, valid bool)

func (*SDRCompact) Pack

func (s *SDRCompact) Pack(recordID uint16) []byte

Pack encodes a Type 02h Compact Sensor record per v2.0§43.2.

func (*SDRCompact) PositiveHysteresis

func (record *SDRCompact) PositiveHysteresis() (raw uint8, valid bool)

func (*SDRCompact) String

func (compact *SDRCompact) String() string

type SDRDeviceRelative

type SDRDeviceRelative struct {
	ContainerEntityID            uint8
	ContainerEntityInstance      uint8
	ContainerEntityDeviceAddress uint8
	ContainerEntityDeviceChannel uint8

	// [7] - 0b = contained entities specified as list
	//       1b = contained entities specified as range
	ContainedEntitiesAsRange bool
	// [6] - Record Link
	//       0b = no linked Entity Association records
	//       1b = linked Entity Association records exist
	LinkedEntityAssociationExist bool
	// [5] - 0b = Container entity and contained entities can be assumed absent
	//            if presence sensor for container entity cannot be accessed.
	//            This value is also used if the entity does not have a presence sensor.
	//       1b = Presence sensor should always be accessible. Software should consider
	//            it an error if the presence sensor associated with the container entity
	//            is not accessible. If a presence sensor is accessible, then the
	//            presence sensor can still report that the container entity is absent.
	PresenceSensorAlwaysAccessible bool

	ContainedEntity1DeviceAddress uint8
	ContainedEntity1DeviceChannel uint8
	ContainedEntity1ID            uint8
	ContainedEntity1Instance      uint8

	ContainedEntity2DeviceAddress uint8
	ContainedEntity2DeviceChannel uint8
	ContainedEntity2ID            uint8
	ContainedEntity2Instance      uint8

	ContainedEntity3DeviceAddress uint8
	ContainedEntity3DeviceChannel uint8
	ContainedEntity3ID            uint8
	ContainedEntity3Instance      uint8

	ContainedEntity4DeviceAddress uint8
	ContainedEntity4DeviceChannel uint8
	ContainedEntity4ID            uint8
	ContainedEntity4Instance      uint8
}

43.5 SDR Type 09h - Device-relative Entity Association Record

func (*SDRDeviceRelative) Pack

func (s *SDRDeviceRelative) Pack(recordID uint16) []byte

Pack encodes a Type 09h Device-relative Entity Association record per v2.0§43.5.

type SDREntityAssociation

type SDREntityAssociation struct {
	ContainerEntityID       uint8
	ContainerEntityInstance uint8

	// [7] - 0b = contained entities specified as list
	//       1b = contained entities specified as range
	ContainedEntitiesAsRange bool
	// [6] - Record Link
	//       0b = no linked Entity Association records
	//       1b = linked Entity Association records exist
	LinkedEntityAssociationExist bool
	// [5] - 0b = Container entity and contained entities can be assumed absent
	//            if presence sensor for container entity cannot be accessed.
	//            This value is also used if the entity does not have a presence sensor.
	//       1b = Presence sensor should always be accessible. Software should consider
	//            it an error if the presence sensor associated with the container entity
	//            is not accessible. If a presence sensor is accessible, then the
	//            presence sensor can still report that the container entity is absent.
	PresenceSensorAlwaysAccessible bool

	ContainedEntity1ID       uint8
	ContainedEntity1Instance uint8

	ContainedEntity2ID       uint8
	ContainedEntity2Instance uint8
	ContainedEntity3ID       uint8
	ContainedEntity3Instance uint8
	ContainedEntity4ID       uint8
	ContainedEntity4Instance uint8
}

43.4 SDR Type 08h - Entity Association Record

func (*SDREntityAssociation) Pack

func (s *SDREntityAssociation) Pack(recordID uint16) []byte

Pack encodes a Type 08h Entity Association record per v2.0§43.4.

type SDREventOnly

type SDREventOnly struct {
	GeneratorID  GeneratorID
	SensorNumber SensorNumber // Unique number identifying the sensor behind a given slave address and LUN. Code FFh reserved.

	SensorEntityID       EntityID
	SensorEntityInstance EntityInstance
	// 0b = treat entity as a physical entity per Entity ID table
	// 1b = treat entity as a logical container entity. For example, if this bit is set,
	// and the Entity ID is "Processor", the container entity would be considered
	// to represent a logical "Processor Group" rather than a physical processor.
	// This bit is typically used in conjunction with an Entity Association record.
	SensorEntityIsLogical bool

	SensorType             SensorType
	SensorEventReadingType EventReadingType

	// Sensor Record Sharing / Sensor Direction (v2.0§43.3 Table 43-3, bytes 13–14).
	// Packed as a 2-byte bitfield; see packSensorRecordSharing.
	SensorDirection                uint8 // [7:6] of byte 1
	IDStringInstanceModifierType   uint8 // [5:4] of byte 1: 00b=numeric, 01b=alpha
	ShareCount                     uint8 // [3:0] of byte 1
	EntityInstanceSharing          bool  // bit 7 of byte 2
	IDStringInstanceModifierOffset uint8 // [6:0] of byte 2

	OEM uint8 // byte 16; reserved for OEM use (v2.0§43.3)

	IDStringTypeLength TypeLength
	IDStringBytes      []byte
}

43.3 SDR Type 03h, Event-Only Record

func (*SDREventOnly) Pack

func (s *SDREventOnly) Pack(recordID uint16) []byte

Pack encodes a Type 03h Event-only Sensor record per v2.0§43.3.

func (*SDREventOnly) String

func (eventOnly *SDREventOnly) String() string

type SDRFRUDeviceLocator

type SDRFRUDeviceLocator struct {

	// [7:1] - Slave address of controller used to access device. 0000000b if device is directly on IPMB.
	// This field indicates whether the device is on a private bus or not.
	DeviceAccessAddress uint8

	// FRU Device ID / Device Slave Address
	//
	// For Logical FRU DEVICE (accessed via FRU commands to mgmt. controller):
	// [7:0] - Number identifying FRU device within given IPM Controller. FFh = reserved.
	// The primary FRU device for a management controller is always device #0 at
	// LUN 00b. The primary FRU device is not reported via this FRU Device Locator
	// record - its presence is identified via the Device Capabilities field in the
	// Management Controller Device Locator record.
	//
	// For non-intelligent FRU device:
	// [7:1] - 7-bit I2C Slave Address
	// This is relative to the bus the device is on.
	// For devices on the IPMB, this is the slave address of the device on the IPMB.
	// For devices on a private bus, this is the slave address of the device on the private bus.
	// [0] - reserved
	FRUDeviceID_SlaveAddress uint8

	// [7] - logical/physical FRU device
	//   0b = device is not a logical FRU Device (a physical device, that is a non-intelligent device)
	//   1b = device is logical FRU Device (accessed via FRU commands to mgmt. controller)
	IsLogicalFRUDevice bool

	// [4:3] - LUN for Read/Write FRU Data Command or Master Write-Read command.
	AccessLUN uint8

	// [2:0] - Private bus ID if bus = Private.
	//   000b if device directly on IPMB, or device is a logical FRU Device.
	//
	// three bits, total eight bus ids, 000 ~ 111, (0 ~ 7)
	PrivateBusID uint8

	// [7:4] - Channel number for management controller used to access device.
	//   000b if device directly on the primary IPMB, or if controller is on the primary IPMB.
	//   Msbit for channel number is kept in next byte.
	//   (For IPMI v1.5. This byte position  was reserved for IPMI v1.0.)
	//
	// [3:0] - reserved
	ChannelNumber uint8

	DeviceType         DeviceType
	DeviceTypeModifier uint8

	FRUEntityID       uint8
	FRUEntityInstance uint8

	DeviceIDTypeLength TypeLength
	DeviceIDBytes      []byte // Short ID string for the FRU Device
}

43.8 SDR Type 11h - FRU Device Locator Record 38. Accessing FRU Devices

func (*SDRFRUDeviceLocator) Location

func (sdrFRU *SDRFRUDeviceLocator) Location() FRULocation

Table 38-1, FRU Device Locator Field Usage

func (*SDRFRUDeviceLocator) Pack

func (s *SDRFRUDeviceLocator) Pack(recordID uint16) []byte

Pack encodes a Type 11h FRU Device Locator record per v2.0§43.8.

type SDRFull

type SDRFull struct {
	GeneratorID  GeneratorID
	SensorNumber SensorNumber

	// Indicates the physical entity that the sensor is monitoring or is otherwise
	// associated with the sensor.
	SensorEntityID       EntityID
	SensorEntityInstance EntityInstance

	// For example, if this bit is set, and the Entity ID is "Processor",
	// the container entity would be considered to represent a logical "Processor Group" rather than a physical processor.
	//
	// This bit is typically used in conjunction with an Entity Association full.
	//
	//  0b = treat entity as a physical entity per Entity ID table
	//  1b = treat entity as a logical container entity.
	SensorEntityIsLogical bool

	SensorInitialization SensorInitialization

	SensorCapabilities SensorCapabilities

	SensorType             SensorType
	SensorEventReadingType EventReadingType

	Mask Mask

	SensorUnit SensorUnit

	// Note, SensorValue is not stored in SDR intrinsically, this field is set by `enhanceSDR`
	// It is fetched by IPMI command GetSensorReading and aligned/converted to SensorUnit based.
	SensorValue float64

	// Note, SensorStatus is not stored in SDR intrinsically, this field is set by `enhanceSDR`
	SensorStatus string

	EntityInstanceSharing uint8

	// LinearizationFunc is the Linearization func. (L of the Sensor Reading Conversion Formula)
	//
	// [6:0] - enum (linear, ln, log10, log2, e, exp10, exp2, 1/x, sqr(x), cube(x), sqrt(x),
	// cube-1 (x) )
	// - 70h = non-linear.
	// 71h-7Fh = non-linear, OEM defined.
	LinearizationFunc LinearizationFunc

	ReadingFactors

	// Sensor Direction. Indicates whether the sensor is monitoring an input or
	// output relative to the given Entity. E.g. if the sensor is monitoring a
	// current, this can be used to specify whether it is an input voltage or an
	// output voltage.
	// 00b = unspecified / not applicable
	// 01b = input
	// 10b = output
	// 11b = reserved
	SensorDirection uint8

	NominalReadingSpecified bool
	NormalMaxSpecified      bool
	NormalMinSpecified      bool

	// 额定值, 标称值
	// Given as a raw value. Must be converted to units-based value using the y=Mx+B
	// formula. 1's or 2's complement signed or unsigned per flag bits in Sensor Units 1
	//
	// Only meaningful when NominalReadingSpecified is true
	NominalReadingRaw uint8

	// 最大正常值
	// Only meaningful when NormalMaxSpecified is true
	NormalMaxRaw uint8

	// 最小正常值
	// Only meaningful when NormalMinSpecified is true
	NormalMinRaw uint8

	// Given as a raw value. Must be converted to units-based value based on using the
	// y=Mx+B formula. Signed or unsigned per "signed" bit in sensor flags. Normally
	// "FFh" for an 8-bit unsigned sensor, but can be a lesser value if the sensor has a
	// restricted range. If max. reading cannot be pre-specified this value should be set
	// to max value, based on data format, (e.g. FFh for an unsigned sensor, 7Fh for 2's
	// complement, etc.)
	SensorMaxReadingRaw uint8

	// Given as a raw value. Must be converted to units-based value using the "y=Mx+B"
	// formula. Signed or unsigned per "signed" bit in sensor flags. If min. reading
	// cannot be pre-specified this value should be set to min value, based on data
	// format, (e.g. 00h for an unsigned sensor, 80h for 2's complement, etc.)
	SensorMinReadingRaw uint8

	// Given as raw value.
	UNR_Raw uint8
	UCR_Raw uint8
	UNC_Raw uint8

	LNR_Raw uint8
	LCR_Raw uint8
	LNC_Raw uint8

	// Positive hysteresis is defined as the unsigned number of counts that are
	// subtracted from the raw threshold values to create the "re-arm" point for all
	// positive-going thresholds on the sensor. 0 indicates that there is no hysteresis on
	// positive-going thresholds for this sensor. Hysteresis values are given as raw
	// counts. That is, to find the degree of hysteresis in units, the value must be
	// converted using the "y=Mx+B" formula.
	//
	// 正向迟滞量
	PositiveHysteresisRaw uint8

	// Negative hysteresis is defined as the unsigned number of counts that are added
	// to the raw threshold value to create the "re-arm" point for all negative-going
	// thresholds on the sensor. 0 indicates that there is no hysteresis on negative-going
	// thresholds for this sensor.
	//
	// 负向迟滞量
	NegativeHysteresisRaw uint8

	IDStringTypeLength TypeLength
	IDStringBytes      []byte
}

43.1 SDRFull Type 01h, Full Sensor Record

The Full Sensor Record can be used to describe any type of sensor.

func (*SDRFull) ConvertReading

func (full *SDRFull) ConvertReading(raw uint8) float64

ConvertReading converts raw sensor reading or raw sensor threshold value to real value in the desired units for the sensor.

func (*SDRFull) ConvertSensorHysteresis

func (full *SDRFull) ConvertSensorHysteresis(raw uint8) float64

ConvertSensorHysteresis converts raw sensor hysteresis value to real value in the desired units for the sensor.

func (*SDRFull) ConvertSensorTolerance

func (full *SDRFull) ConvertSensorTolerance(raw uint8) float64

ConvertSensorTolerance converts raw sensor tolerance value to real value in the desired units for the sensor.

func (*SDRFull) HasAnalogReading

func (full *SDRFull) HasAnalogReading() bool

func (*SDRFull) HysteresisStr

func (full *SDRFull) HysteresisStr(raw uint8) string

func (*SDRFull) Pack

func (s *SDRFull) Pack(recordID uint16) []byte

Pack encodes a Type 01h Full Sensor record per §43.1.

func (*SDRFull) ReadingMaxStr

func (full *SDRFull) ReadingMaxStr() string

func (*SDRFull) ReadingMinStr

func (full *SDRFull) ReadingMinStr() string

func (*SDRFull) ReadingStr

func (full *SDRFull) ReadingStr(raw uint8, valid bool) string

func (*SDRFull) SensorThreshold

func (full *SDRFull) SensorThreshold(thresholdType SensorThresholdType) SensorThreshold

SensorThreshold return SensorThreshold for a specified threshold type.

func (*SDRFull) String

func (full *SDRFull) String() string

func (*SDRFull) ThresholdValueStr

func (full *SDRFull) ThresholdValueStr(thresholdType SensorThresholdType) string

ThresholdValueStr formats a threshold value for specified threshold type. If the threshold is not readable, return "not readable".

type SDRGenericDeviceLocator

type SDRGenericDeviceLocator struct {
	DeviceAccessAddress uint8 // Slave address of management controller used to access device. 0000000b if device is directly on IPMB
	DeviceSlaveAddress  uint8
	ChannelNumber       uint8 // Channel number for management controller used to access device
	AccessLUN           uint8 // LUN for Master Write-Read command. 00b if device is non-intelligent device directly on IPMB.
	PrivateBusID        uint8 // Private bus ID if bus = Private. 000b if device directly on IPMB

	AddressSpan        uint8
	DeviceType         uint8
	DeviceTypeModifier uint8
	EntityID           uint8
	EntityInstance     uint8

	DeviceIDTypeLength TypeLength
	DeviceIDString     []byte // Short ID string for the device
}

43.7 SDR Type 10h - Generic Device Locator Record This record is used to store the location and type information for devices on the IPMB or management controller private busses that are neither IPMI FRU devices nor IPMI management controllers.

These devices can either be common non-intelligent I2C devices, special management ASICs, or proprietary controllers.

IPMI FRU Devices and Management Controllers are located via the FRU Device Locator and Management Controller Device Locator records described in following sections.

func (*SDRGenericDeviceLocator) Pack

func (s *SDRGenericDeviceLocator) Pack(recordID uint16) []byte

Pack encodes a Type 10h Generic Device Locator record per v2.0§43.7.

type SDRHeader

type SDRHeader struct {
	RecordID     uint16
	SDRVersion   uint8         // The version number of the SDR specification.
	RecordType   SDRRecordType // A number representing the type of the record. E.g. 01h = 8-bit Sensor with Thresholds.
	RecordLength uint8         // Number of bytes of data following the Record Length field.
}

func ParseSDRHeader

func ParseSDRHeader(data []byte) (*SDRHeader, error)

ParseSDR parses raw SDR record data to SDR struct. This function is normally used after getting GetSDRResponse or GetDeviceSDRResponse to interpret the raw SDR record data in the response. ParseSDRHeader parses the fixed 5-byte SDR record header (v2.0§43).

type SDRMapBySensorNumber

type SDRMapBySensorNumber map[GeneratorID]map[SensorNumber]*SDR

type SDRMgmtControllerConfirmation

type SDRMgmtControllerConfirmation struct {
	DeviceSlaveAddress uint8 // 7-bit I2C Slave Address[1] of device on IPMB.
	DeviceID           uint8
	ChannelNumber      uint8
	DeviceRevision     uint8

	FirmwareMajorRevision uint8 // [6:0] - Major Firmware Revision, binary encoded.
	FirmwareMinorRevision uint8 // Minor Firmware Revision. BCD encoded.

	// IPMI Version from Get Device ID command. Holds IPMI Command Specification
	// Version. BCD encoded. 00h = reserved. Bits 7:4 hold the Least Significant digit of the
	// revision, while bits 3:0 hold the Most Significant bits. E.g. a value of 01h indicates
	// revision 1.0
	MajorIPMIVersion uint8
	MinorIPMIVersion uint8

	ManufacturerID uint32 // 3 bytes only
	ProductID      uint16
	DeviceGUID     []byte // 16 bytes
}

43.10 SDR Type 13h - Management Controller Confirmation Record

func (*SDRMgmtControllerConfirmation) Pack

func (s *SDRMgmtControllerConfirmation) Pack(recordID uint16) []byte

Pack encodes a Type 13h MC Confirmation record per v2.0§43.10.

type SDRMgmtControllerDeviceLocator

type SDRMgmtControllerDeviceLocator struct {
	DeviceSlaveAddress uint8 // 7-bit I2C Slave Address[1] of device on channel
	ChannelNumber      uint8

	ACPISystemPowerStateNotificationRequired bool
	ACPIDevicePowerStateNotificationRequired bool
	ControllerLogsInitializationAgentErrors  bool
	LogInitializationAgentErrors             bool

	DeviceCap_ChassisDevice      bool // device functions as chassis device
	DeviceCap_Bridge             bool // Controller responds to Bridge NetFn command
	DeviceCap_IPMBEventGenerator bool // device generates event messages on IPMB
	DeviceCap_IPMBEventReceiver  bool // device accepts event messages from IPMB
	DeviceCap_FRUInventoryDevice bool // accepts FRU commands to FRU Device #0 at LUN 00b
	DeviceCap_SELDevice          bool // provides interface to SEL
	DeviceCap_SDRRepoDevice      bool // For BMC, indicates BMC provides interface to	1b = SDR Repository. For other controller, indicates controller accepts Device SDR commands
	DeviceCap_SensorDevice       bool // device accepts sensor commands

	EntityID       uint8
	EntityInstance uint8

	DeviceIDTypeLength TypeLength
	DeviceIDBytes      []byte
}

43.9 SDR Type 12h - Management Controller Device Locator Record

func (*SDRMgmtControllerDeviceLocator) Pack

func (s *SDRMgmtControllerDeviceLocator) Pack(recordID uint16) []byte

Pack encodes a Type 12h MC Device Locator record per v2.0§43.9.

type SDROEM

type SDROEM struct {
	ManufacturerID uint32 // 3 bytes only
	OEMData        []byte
}

43.12 SDR Type C0h - OEM Record

func (*SDROEM) Pack

func (s *SDROEM) Pack(recordID uint16) []byte

Pack encodes a Type C0h OEM record per v2.0§43.12.

type SDRRecordType

type SDRRecordType uint8

43. Sensor Data Record Formats SDRRecordType is a number representing the type of the record.

const (
	SDRRecordTypeFullSensor                        SDRRecordType = 0x01
	SDRRecordTypeCompactSensor                     SDRRecordType = 0x02
	SDRRecordTypeEventOnly                         SDRRecordType = 0x03
	SDRRecordTypeEntityAssociation                 SDRRecordType = 0x08
	SDRRecordTypeDeviceRelativeEntityAssociation   SDRRecordType = 0x09
	SDRRecordTypeGenericLocator                    SDRRecordType = 0x10
	SDRRecordTypeFRUDeviceLocator                  SDRRecordType = 0x11
	SDRRecordTypeManagementControllerDeviceLocator SDRRecordType = 0x12
	SDRRecordTypeManagementControllerConfirmation  SDRRecordType = 0x13
	SDRRecordTypeBMCMessageChannelInfo             SDRRecordType = 0x14
	SDRRecordTypeOEM                               SDRRecordType = 0xc0
)

func (SDRRecordType) String

func (sdrRecordType SDRRecordType) String() string

type SDRReserved

type SDRReserved struct {
}

43.6 SDR Type 0Ah:0Fh - Reserved Records

type SEL

type SEL struct {
	// SEL Record IDs 0000h and FFFFh are reserved for functional use and are not legal ID values.
	// Record IDs are handles. They are not required to be sequential or consecutive.
	// Applications should not assume that SEL Record IDs will follow any particular numeric ordering.
	RecordID   uint16
	RecordType SELRecordType

	Standard          *SELStandard
	OEMTimestamped    *SELOEMTimestamped
	OEMNonTimestamped *SELOEMNonTimestamped
}

32. SEL Record Formats

func ParseSEL

func ParseSEL(msg []byte) (*SEL, error)

func (*SEL) Pack

func (sel *SEL) Pack() []byte

type SELOEMNonTimestamped

type SELOEMNonTimestamped struct {
	OEM [13]byte
}

func (*SELOEMNonTimestamped) Pack

func (oemNonTimestamped *SELOEMNonTimestamped) Pack() []byte

type SELOEMTimestamped

type SELOEMTimestamped struct {
	Timestamp      time.Time // Time when event was logged. uint32 LS byte first.
	ManufacturerID uint32    // only 3 bytes
	OEMDefined     [6]byte
}

32.2 OEM SEL Record - Type C0h-DFh

func (*SELOEMTimestamped) Pack

func (oemTimestamped *SELOEMTimestamped) Pack() []byte

type SELRecordType

type SELRecordType uint8

31.6.1 SEL Record Type Ranges

func (SELRecordType) Range

func (typ SELRecordType) Range() SELRecordTypeRange

The SELRecordType can be categorized into 3 ranges according to the SELRecordType value.

  • 00h - BFh -> standard
  • C0h - DFh -> timestamped OEM
  • E0h - FFh -> none-timestamped OEM

func (SELRecordType) String

func (typ SELRecordType) String() string

type SELRecordTypeRange

type SELRecordTypeRange string
const (
	// Range reserved for standard SEL Record Types.
	// As of this writing, only type 02h is defined.
	// Records are automatically timestamped unless otherwise indicated
	// 00h - BFh
	SELRecordTypeRangeStandard SELRecordTypeRange = "standard"

	// 32.2 OEM SEL Record - Type C0h-DFh
	// Range reserved for timestamped OEM SEL records.
	// These records are automatically timestamped by the SEL Device
	// C0h - DFh
	SELRecordTypeRangeTimestampedOEM SELRecordTypeRange = "timestamped OEM"

	// 32.3 OEM SEL Record - Type E0h-FFh
	// Range reserved for non-timestamped OEM SEL records.
	// The SEL Device does not automatically timestamp these records.
	// The four bytes passed in the byte locations for the timestamp will be directly entered into the SEL.
	// E0h - FFh
	SELRecordTypeRangeNonTimestampedOEM SELRecordTypeRange = "non-timestamped OEM"
)

type SELStandard

type SELStandard struct {
	Timestamp    time.Time    // Time when event was logged. uint32 LS byte first.
	GeneratorID  GeneratorID  // RqSA & LUN if event was generated from IPMB. Software ID if event was generated from system software.
	EvMRev       uint8        // Event Message Revision (format version)
	SensorType   SensorType   // Sensor Type Code for sensor that generated the event
	SensorNumber SensorNumber // Number of sensor that generated the event

	EventDir         EventDir         // Event Direction. [7] -0b = Assertion event. 1b = Deassertion event.
	EventReadingType EventReadingType // Type of trigger for the event. [6:0] - Event Type Code

	// 29.7 Event Data Field Formats
	//
	// The sensor class determines the corresponding Event Data format.
	// The sensor class can be extracted from EventReadingType.
	EventData EventData
}

32.1 SEL Standard Event Records

func (*SELStandard) EventSeverity

func (sel *SELStandard) EventSeverity() EventSeverity

func (*SELStandard) EventString

func (sel *SELStandard) EventString() string

EventString return string description of the event.

func (*SELStandard) Pack

func (standard *SELStandard) Pack() []byte

type SOLConfigParamSelector

type SOLConfigParamSelector uint8
const (
	SOLConfigParamSelector_SetInProgress      SOLConfigParamSelector = 0x00
	SOLConfigParamSelector_SOLEnable          SOLConfigParamSelector = 0x01
	SOLConfigParamSelector_SOLAuthentication  SOLConfigParamSelector = 0x02
	SOLConfigParamSelector_Character          SOLConfigParamSelector = 0x03
	SOLConfigParamSelector_SOLRetry           SOLConfigParamSelector = 0x04
	SOLConfigParamSelector_NonVolatileBitRate SOLConfigParamSelector = 0x05
	SOLConfigParamSelector_VolatileBitRate    SOLConfigParamSelector = 0x06
	SOLConfigParamSelector_PayloadChannel     SOLConfigParamSelector = 0x07
	SOLConfigParamSelector_PayloadPort        SOLConfigParamSelector = 0x08
)

func (SOLConfigParamSelector) String

func (p SOLConfigParamSelector) String() string

type SOLConfigParam_Character

type SOLConfigParam_Character struct {
	AccumulateInterval5Millis uint8
	SendThreshold             uint8
}

func (*SOLConfigParam_Character) Format

func (p *SOLConfigParam_Character) Format() string

func (*SOLConfigParam_Character) Pack

func (p *SOLConfigParam_Character) Pack() []byte

func (*SOLConfigParam_Character) SOLConfigParameter

func (p *SOLConfigParam_Character) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_Character) Unpack

func (p *SOLConfigParam_Character) Unpack(paramData []byte) error

type SOLConfigParam_NonVolatileBitRate

type SOLConfigParam_NonVolatileBitRate struct {
	BitRate uint8
}

func (*SOLConfigParam_NonVolatileBitRate) Format

func (*SOLConfigParam_NonVolatileBitRate) Pack

func (*SOLConfigParam_NonVolatileBitRate) SOLConfigParameter

func (p *SOLConfigParam_NonVolatileBitRate) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_NonVolatileBitRate) Unpack

func (p *SOLConfigParam_NonVolatileBitRate) Unpack(paramData []byte) error

type SOLConfigParam_PayloadChannel

type SOLConfigParam_PayloadChannel struct {
	ChannelNumber uint8
}

func (*SOLConfigParam_PayloadChannel) Format

func (*SOLConfigParam_PayloadChannel) Pack

func (p *SOLConfigParam_PayloadChannel) Pack() []byte

func (*SOLConfigParam_PayloadChannel) SOLConfigParameter

func (p *SOLConfigParam_PayloadChannel) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_PayloadChannel) Unpack

func (p *SOLConfigParam_PayloadChannel) Unpack(paramData []byte) error

type SOLConfigParam_PayloadPort

type SOLConfigParam_PayloadPort struct {
	Port uint16
}

func (*SOLConfigParam_PayloadPort) Format

func (p *SOLConfigParam_PayloadPort) Format() string

func (*SOLConfigParam_PayloadPort) Pack

func (p *SOLConfigParam_PayloadPort) Pack() []byte

func (*SOLConfigParam_PayloadPort) SOLConfigParameter

func (p *SOLConfigParam_PayloadPort) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_PayloadPort) Unpack

func (p *SOLConfigParam_PayloadPort) Unpack(paramData []byte) error

type SOLConfigParam_SOLAuthentication

type SOLConfigParam_SOLAuthentication struct {
	ForceEncryption     bool
	ForceAuthentication bool
	PrivilegeLevel      uint8
}

func (*SOLConfigParam_SOLAuthentication) Format

func (*SOLConfigParam_SOLAuthentication) Pack

func (*SOLConfigParam_SOLAuthentication) SOLConfigParameter

func (p *SOLConfigParam_SOLAuthentication) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_SOLAuthentication) Unpack

func (p *SOLConfigParam_SOLAuthentication) Unpack(paramData []byte) error

type SOLConfigParam_SOLEnable

type SOLConfigParam_SOLEnable struct {
	EnableSOLPayload bool
}

func (*SOLConfigParam_SOLEnable) Format

func (p *SOLConfigParam_SOLEnable) Format() string

func (*SOLConfigParam_SOLEnable) Pack

func (p *SOLConfigParam_SOLEnable) Pack() []byte

func (*SOLConfigParam_SOLEnable) SOLConfigParameter

func (p *SOLConfigParam_SOLEnable) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_SOLEnable) Unpack

func (p *SOLConfigParam_SOLEnable) Unpack(paramData []byte) error

type SOLConfigParam_SOLRetry

type SOLConfigParam_SOLRetry struct {
	// 1-based. 0 = no retries after packet is transmitted. Packet will be
	// dropped if no ACK/NACK received by time retries expire.
	RetryCount uint8

	RetryInterval10Millis uint8
}

func (*SOLConfigParam_SOLRetry) Format

func (p *SOLConfigParam_SOLRetry) Format() string

func (*SOLConfigParam_SOLRetry) Pack

func (p *SOLConfigParam_SOLRetry) Pack() []byte

func (*SOLConfigParam_SOLRetry) SOLConfigParameter

func (p *SOLConfigParam_SOLRetry) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_SOLRetry) Unpack

func (p *SOLConfigParam_SOLRetry) Unpack(paramData []byte) error

type SOLConfigParam_SetInProgress

type SOLConfigParam_SetInProgress struct {
	Value SetInProgressState
}

func (*SOLConfigParam_SetInProgress) Format

func (*SOLConfigParam_SetInProgress) Pack

func (p *SOLConfigParam_SetInProgress) Pack() []byte

func (*SOLConfigParam_SetInProgress) SOLConfigParameter

func (p *SOLConfigParam_SetInProgress) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_SetInProgress) Unpack

func (p *SOLConfigParam_SetInProgress) Unpack(paramData []byte) error

type SOLConfigParam_VolatileBitRate

type SOLConfigParam_VolatileBitRate struct {
	BitRate uint8
}

func (*SOLConfigParam_VolatileBitRate) Format

func (*SOLConfigParam_VolatileBitRate) Pack

func (*SOLConfigParam_VolatileBitRate) SOLConfigParameter

func (p *SOLConfigParam_VolatileBitRate) SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)

func (*SOLConfigParam_VolatileBitRate) Unpack

func (p *SOLConfigParam_VolatileBitRate) Unpack(paramData []byte) error

type SOLConfigParameter

type SOLConfigParameter interface {
	SOLConfigParameter() (paramSelector SOLConfigParamSelector, setSelector uint8, blockSelector uint8)
	Parameter
}

type SOLConfigParams

type SOLConfigParams struct {
	SetInProgress      *SOLConfigParam_SetInProgress
	SOLEnable          *SOLConfigParam_SOLEnable
	SOLAuthentication  *SOLConfigParam_SOLAuthentication
	Character          *SOLConfigParam_Character
	SOLRetry           *SOLConfigParam_SOLRetry
	NonVolatileBitRate *SOLConfigParam_NonVolatileBitRate
	VolatileBitRate    *SOLConfigParam_VolatileBitRate
	PayloadChannel     *SOLConfigParam_PayloadChannel
	PayloadPort        *SOLConfigParam_PayloadPort
}

func (*SOLConfigParams) Format

func (p *SOLConfigParams) Format() string

type SOLPayloadPacket

type SOLPayloadPacket struct {
	SequenceNumber         uint8
	AckedSequenceNumber    uint8
	AcceptedCharacterCount uint8

	// ControlByte is written to wire byte 3 for outbound console operation bits.
	// For inbound packets, Unpack stores the full BMC status byte.
	ControlByte uint8

	// NACK sets bit 6 in byte 3 when packing and is populated from bit 6 when unpacking.
	NACK bool

	CharacterData []byte
}

SOLPayloadPacket is the IPMI 2.0 SOL payload data format.

func (*SOLPayloadPacket) Pack

func (p *SOLPayloadPacket) Pack() []byte

Pack encodes the SOL payload packet.

func (*SOLPayloadPacket) Unpack

func (p *SOLPayloadPacket) Unpack(msg []byte) error

Unpack decodes the SOL payload packet.

type SOLPayloadRequest

type SOLPayloadRequest struct {
	SOLPayloadPacket
}

SOLPayloadRequest is an RMCP+ session request with payload type SOL.

func (*SOLPayloadRequest) Command

func (r *SOLPayloadRequest) Command() Command

Command returns the pseudo-command metadata for SOL payload packets.

func (*SOLPayloadRequest) Pack

func (r *SOLPayloadRequest) Pack() []byte

Pack encodes the SOL payload request.

type SOLPayloadResponse

type SOLPayloadResponse struct {
	SOLPayloadPacket
}

SOLPayloadResponse is the BMC reply to a SOL payload packet.

func (*SOLPayloadResponse) Format

func (r *SOLPayloadResponse) Format() string

Format returns a human-readable representation.

func (*SOLPayloadResponse) Unpack

func (r *SOLPayloadResponse) Unpack(data []byte) error

Unpack decodes the SOL payload response.

type Sensor

type Sensor struct {
	GeneratorID GeneratorID

	Number uint8
	Name   string

	SDRRecordType    SDRRecordType
	HasAnalogReading bool

	SensorType           SensorType
	EventReadingType     EventReadingType
	SensorUnit           SensorUnit
	SensorInitialization SensorInitialization
	SensorCapabilities   SensorCapabilities

	EntityID       EntityID
	EntityInstance EntityInstance

	NotPresent       bool // update by GetSensorReading (CodeRequestedDataNotPresent)
	ScanningDisabled bool // update by GetSensorReadingResponse
	ReadingAvailable bool // update by GetSensorReadingResponse

	// Raw reading value before conversion
	Raw uint8
	// reading value after conversion
	Value float64

	Threshold struct {
		Mask Mask_Thresholds

		// Threshold Status, updated by GetSensorReadingResponse.ThresholdStatus()
		ThresholdStatus SensorThresholdStatus

		// Only Full SDR
		LinearizationFunc LinearizationFunc

		ReadingFactors

		LNC_Raw uint8
		LCR_Raw uint8
		LNR_Raw uint8
		UNC_Raw uint8
		UCR_Raw uint8
		UNR_Raw uint8

		LNC float64
		LCR float64
		LNR float64
		UNC float64
		UCR float64
		UNR float64

		PositiveHysteresisRaw uint8
		NegativeHysteresisRaw uint8

		PositiveHysteresis float64
		NegativeHysteresis float64
	}

	Discrete struct {
		Mask         Mask_Discrete
		ActiveStates Mask_DiscreteEvent

		// filled by GetSensorReadingResponse
		OptionalData1 uint8
		OptionalData2 uint8
	}

	OccurredEvents []SensorEvent
}

Sensor holds all attribute of a sensor.

func (*Sensor) ConvertReading

func (sensor *Sensor) ConvertReading(raw uint8) float64

ConvertReading converts raw discrete-sensor reading or raw threshold-sensor value to real value in the desired units for the sensor.

This function can also be applied on raw threshold setting (UNR,UCR,UNC,LNC,LCR,LNR) values.

func (*Sensor) ConvertSensorHysteresis

func (sensor *Sensor) ConvertSensorHysteresis(raw uint8) float64

func (*Sensor) ConvertSensorTolerance

func (sensor *Sensor) ConvertSensorTolerance(raw uint8) float64

func (*Sensor) DiscreteActiveEvents

func (sensor *Sensor) DiscreteActiveEvents() []uint8

func (*Sensor) DiscreteActiveEventsString

func (sensor *Sensor) DiscreteActiveEventsString() []string

func (*Sensor) EventString

func (sensor *Sensor) EventString(eventOffset uint8) string

func (*Sensor) HumanStr

func (sensor *Sensor) HumanStr() string

HumanStr returns the human-readable string of the sensor.

func (*Sensor) HysteresisStr

func (sensor *Sensor) HysteresisStr(raw uint8) string

func (*Sensor) IsReadingValid

func (sensor *Sensor) IsReadingValid() bool

func (*Sensor) IsThreshold

func (sensor *Sensor) IsThreshold() bool

IsThreshold returns whether the sensor is threshold sensor class or not.

func (*Sensor) IsThresholdAndReadingValid

func (sensor *Sensor) IsThresholdAndReadingValid() bool

func (*Sensor) IsThresholdReadable

func (sensor *Sensor) IsThresholdReadable(thresholdType SensorThresholdType) bool

func (*Sensor) ReadingStr

func (sensor *Sensor) ReadingStr() string

ReadingStr returns the reading value of the sensor. The reading value is converted and aligned with the sensor unit, but the unit is not included in the string.

func (*Sensor) SensorThreshold

func (sensor *Sensor) SensorThreshold(thresholdType SensorThresholdType) SensorThreshold

SensorThreshold return SensorThreshold for a specified threshold type.

func (*Sensor) Status

func (sensor *Sensor) Status() string

func (*Sensor) String

func (s *Sensor) String() string

func (*Sensor) ThresholdStr

func (sensor *Sensor) ThresholdStr(thresholdType SensorThresholdType) string

type SensorAnalogUnitFormat

type SensorAnalogUnitFormat uint8
const (
	SensorAnalogUnitFormat_Unsigned     SensorAnalogUnitFormat = 0 // unsigned
	SensorAnalogUnitFormat_1sComplement SensorAnalogUnitFormat = 1 // 1's complement (signed)
	SensorAnalogUnitFormat_2sComplement SensorAnalogUnitFormat = 2 // 2's complement (signed)
	SensorAnalogUnitFormat_NotAnalog    SensorAnalogUnitFormat = 3 // does not return analog (numeric) reading
)

func (SensorAnalogUnitFormat) String

func (format SensorAnalogUnitFormat) String() string

type SensorCapabilities

type SensorCapabilities struct {
	// [7] - 1b = ignore sensor if Entity is not present or disabled. 0b = don't ignore sensor
	IgnoreSensorIfNoEntity bool

	// Sensor Auto Re-arm Support
	// Indicates whether the sensor requires manual rearming, or automatically rearms
	// itself when the event clears. 'manual' implies that the get sensor event status and
	// rearm sensor events commands are supported
	// [6] - 0b = no (manual), 1b = yes (auto)
	AutoRearm bool

	HysteresisAccess SensorHysteresisAccess
	ThresholdAccess  SensorThresholdAccess

	EventMessageControl SensorEventMessageControl
}

SensorCapabilities represent the capabilities of the sensor. SDRs of Full/Compact record type has this field.

type SensorClass

type SensorClass string

42.1 Sensors are classified according to the type of readings they provide and/or the type of events they generate.

Three sensor classes: threshold, discrete, oem (oem is a special case of discrete)

A sensor can return either an analog or discrete readings. Sensor events can be discrete or threshold-based. Valid sensorclass string values are: "N/A", "threshold", "discrete", "oem"

const (
	SensorClassNotApplicable SensorClass = "N/A" // 不适用的

	SensorClassThreshold SensorClass = "threshold"

	// 离散 multiple states possible
	// Discrete sensors can contain up to 15 possible states.
	// It is possible for a discrete sensor to have more than one state active at a time
	SensorClassDiscrete SensorClass = "discrete"

	// Special case of discrete where the meaning of the states (offsets) are OEM defined.
	SensorClassOEM SensorClass = "oem"
)

type SensorEvent

type SensorEvent struct {
	SensorClass SensorClass

	ThresholdType SensorThresholdType
	Assert        bool // true -> assertion events; false -> deassertion events
	High          bool // true -> going high; false -> going low

	State uint8 // state 0-14 (total 15 possible states)
}

func (SensorEvent) String

func (e SensorEvent) String() string

type SensorEventFlag

type SensorEventFlag struct {
	SensorEvent_UNC_High_Assert bool
	SensorEvent_UNC_Low_Assert  bool
	SensorEvent_LNR_High_Assert bool
	SensorEvent_LNR_Low_Assert  bool
	SensorEvent_LCR_High_Assert bool
	SensorEvent_LCR_Low_Assert  bool
	SensorEvent_LNC_High_Assert bool
	SensorEvent_LNC_Low_Assert  bool
	SensorEvent_State_7_Assert  bool
	SensorEvent_State_6_Assert  bool
	SensorEvent_State_5_Assert  bool
	SensorEvent_State_4_Assert  bool
	SensorEvent_State_3_Assert  bool
	SensorEvent_State_2_Assert  bool
	SensorEvent_State_1_Assert  bool
	SensorEvent_State_0_Assert  bool

	SensorEvent_UNR_High_Assert bool
	SensorEvent_UNR_Low_Assert  bool
	SensorEvent_UCR_High_Assert bool
	SensorEvent_UCR_Low_Assert  bool
	SensorEvent_State_14_Assert bool
	SensorEvent_State_13_Assert bool
	SensorEvent_State_12_Assert bool
	SensorEvent_State_11_Assert bool
	SensorEvent_State_10_Assert bool
	SensorEvent_State_9_Assert  bool
	SensorEvent_State_8_Assert  bool

	SensorEvent_UNC_High_Deassert bool
	SensorEvent_UNC_Low_Deassert  bool
	SensorEvent_LNR_High_Deassert bool
	SensorEvent_LNR_Low_Deassert  bool
	SensorEvent_LCR_High_Deassert bool
	SensorEvent_LCR_Low_Deassert  bool
	SensorEvent_LNC_High_Deassert bool
	SensorEvent_LNC_Low_Deassert  bool
	SensorEvent_State_7_Deassert  bool
	SensorEvent_State_6_Deassert  bool
	SensorEvent_State_5_Deassert  bool
	SensorEvent_State_4_Deassert  bool
	SensorEvent_State_3_Deassert  bool
	SensorEvent_State_2_Deassert  bool
	SensorEvent_State_1_Deassert  bool
	SensorEvent_State_0_Deassert  bool

	SensorEvent_UNR_High_Deassert bool
	SensorEvent_UNR_Low_Deassert  bool
	SensorEvent_UCR_High_Deassert bool
	SensorEvent_UCR_Low_Deassert  bool
	SensorEvent_State_14_Deassert bool
	SensorEvent_State_13_Deassert bool
	SensorEvent_State_12_Deassert bool
	SensorEvent_State_11_Deassert bool
	SensorEvent_State_10_Deassert bool
	SensorEvent_State_9_Deassert  bool
	SensorEvent_State_8_Deassert  bool
}

SensorEventFlag holds a struct with fields indicating the specified sensor event is set or not. SensorEventFlag was embedded in Sensor related commands.

func (*SensorEventFlag) TrueEvents

func (flag *SensorEventFlag) TrueEvents() []SensorEvent

TrueEvents returns a slice of SensorEvent those are set to true in the SensorEventFlag.

type SensorEventMessageControl

type SensorEventMessageControl uint8

SensorEventMessageControl indicates whether this sensor generates Event Messages, and if so, what type of Event Message control is offered.

const (
	// per threshold/discrete-state event enable/disable control (implies
	// that entire sensor and global disable are also supported)
	SensorEventMessageControl_PerThresholdState SensorEventMessageControl = 0
	// entire sensor only (implies that global disable is also supported)
	SensorEventMessageControl_EntireSensorOnly SensorEventMessageControl = 1
	// global disable only
	SensorEventMessageControl_GlobalDisableOnly SensorEventMessageControl = 2
	// no events from sensor
	SensorEventMessageControl_NoEvents SensorEventMessageControl = 3
)

func (SensorEventMessageControl) String

func (a SensorEventMessageControl) String() string

type SensorEvents

type SensorEvents []SensorEvent

func (SensorEvents) FilterAssert

func (events SensorEvents) FilterAssert() SensorEvents

func (SensorEvents) FilterDeassert

func (events SensorEvents) FilterDeassert() SensorEvents

func (SensorEvents) FilterDiscrete

func (events SensorEvents) FilterDiscrete() SensorEvents

func (SensorEvents) FilterThreshold

func (events SensorEvents) FilterThreshold() SensorEvents

func (SensorEvents) Strings

func (events SensorEvents) Strings() []string

type SensorHysteresisAccess

type SensorHysteresisAccess uint8

SensorHysteresisAccess represents the access mode for the hysteresis value of the sensor.

const (
	// No hysteresis, or hysteresis built-in but not specified
	SensorHysteresisAccess_No SensorHysteresisAccess = 0
	// hysteresis is readable.
	SensorHysteresisAccess_Readable SensorHysteresisAccess = 1
	// hysteresis is readable and settable.
	SensorHysteresisAccess_ReadableSettable SensorHysteresisAccess = 2
	// Fixed, unreadable, hysteresis. Hysteresis fields values implemented in the sensor.
	SensorHysteresisAccess_Fixed SensorHysteresisAccess = 3
)

func (SensorHysteresisAccess) String

func (a SensorHysteresisAccess) String() string

type SensorInitialization

type SensorInitialization struct {
	// 1b = Sensor is settable (Support the Set Sensor Reading And Event Status command)
	// 0b = Sensor is not settable
	//
	// using this bit to report settable sensors is optional.
	// I.e. it is ok to report a settable sensor as 'not settable' in the
	// SDR if it is desired to not report this capability to s/w
	Settable bool

	// 1b = enable scanning
	//
	// this bit=1 implies that the sensor
	// accepts the 'enable/disable scanning' bit in the Set
	// Sensor Event Enable command.
	InitScanning bool

	// 1b = enable events (per Sensor Event Message Control
	// Support bits in Sensor Capabilities field, and per
	// the Event Mask fields, below).
	InitEvents bool

	// 1b = initialize sensor thresholds (per settable threshold mask below).
	InitThresholds bool

	// 1b = initialize sensor hysteresis (per Sensor Hysteresis
	// Support bits in the Sensor Capabilities field, below).
	InitHysteresis bool

	// 1b = initialize Sensor Type and Event / Reading Type code
	InitSensorType bool

	// 0b = event generation disabled, 1b = event generation enabled
	EventGenerationEnabled bool
	// 0b = sensor scanning disabled, 1b = sensor scanning enabled
	SensorScanningEnabled bool
}

SDRs of Full/Compact record type has this field.

type SensorModifierRelation

type SensorModifierRelation uint8
const (
	SensorModifierRelation_None SensorModifierRelation = 0
	SensorModifierRelation_Div  SensorModifierRelation = 1 // Basic Unit / Modifier Unit
	SensorModifierRelation_Mul  SensorModifierRelation = 2 // Basic Unit * Modifier Unit
)

func (SensorModifierRelation) String

func (unit SensorModifierRelation) String() string

type SensorNumber

type SensorNumber uint8

see: Intel System Event Log (SEL) Troubleshooting Guide Rev 3.4 September 2019 section 3.1

type SensorRateUnit

type SensorRateUnit uint8
const (
	SensorRateUnit_None        SensorRateUnit = 0
	SensorRateUnit_PerMicroSec SensorRateUnit = 1
	SensorRateUnit_PerMilliSec SensorRateUnit = 2
	SensorRateUnit_PerSec      SensorRateUnit = 3
	SensorRateUnit_PerMin      SensorRateUnit = 4
	SensorRateUnit_PerHour     SensorRateUnit = 5
	SensorRateUnit_PerDay      SensorRateUnit = 6
	SensorRateUnit_Reserved    SensorRateUnit = 7
)

func (SensorRateUnit) String

func (unit SensorRateUnit) String() string

type SensorStatus

type SensorStatus string

type SensorThreshold

type SensorThreshold struct {
	// type of threshold
	Type SensorThresholdType
	Mask Mask_Threshold
	// threshold raw reading value before conversion
	Raw uint8
}

SensorThreshold holds all values and attributes of a specified threshold type.

type SensorThresholdAccess

type SensorThresholdAccess uint8

SensorThresholdAccess represents the access mode for the threshold value of the sensor.

const (
	// no thresholds.
	SensorThresholdAccess_No SensorThresholdAccess = 0
	// thresholds are readable, per Reading Mask
	SensorThresholdAccess_Readable SensorThresholdAccess = 1
	// thresholds are readable and settable, per Reading Mask and Settable Threshold Mask, respectively.
	SensorThresholdAccess_ReadableSettable SensorThresholdAccess = 2
	// Fixed, unreadable, thresholds.
	// Which thresholds are supported is reflected by the Reading Mask.
	// The threshold value fields report the values that are hard-coded in the sensor.
	SensorThresholdAccess_Fixed SensorThresholdAccess = 3
)

func (SensorThresholdAccess) String

func (a SensorThresholdAccess) String() string

type SensorThresholdStatus

type SensorThresholdStatus string

SensorThresholdStatus are enums for threshold status of sensor.

....UNR status (NonRecoverable) -----------------UNR threshold ....UCR status (Critical) -----------------UCR threshold ....UNC status (NonCritical) -----------------UNC threshold ....OK status (OK) -----------------LNC threshold ....LNC status (NonCritical) -----------------LCR threshold ....LCR status (Critical) -----------------LNR threshold ....LNR status (NonRecoverable)

type SensorThresholdType

type SensorThresholdType string

SensorThresholdType are enums for types of threshold

const (
	SensorThresholdType_LNC SensorThresholdType = "LowerNonCritical"
	SensorThresholdType_LCR SensorThresholdType = "LowerCritical"
	SensorThresholdType_LNR SensorThresholdType = "LowerNonRecoverable"
	SensorThresholdType_UNC SensorThresholdType = "UpperNonCritical"
	SensorThresholdType_UCR SensorThresholdType = "UpperCritical"
	SensorThresholdType_UNR SensorThresholdType = "UpperNonRecoverable"
)

func (SensorThresholdType) Abbr

func (sensorThresholdType SensorThresholdType) Abbr() string

type SensorThresholdTypes

type SensorThresholdTypes []SensorThresholdType

func (SensorThresholdTypes) Strings

func (types SensorThresholdTypes) Strings() []string

type SensorType

type SensorType uint8

41.1 Sensor Type Code 42.2 Sensor Type Codes and Data

const (
	SensorTypeReserved                     SensorType = 0x00
	SensorTypeTemperature                  SensorType = 0x01 // 温度传感器
	SensorTypeVoltage                      SensorType = 0x02 // 电压传感器
	SensorTypeCurrent                      SensorType = 0x03 // 电流传感器
	SensorTypeFan                          SensorType = 0x04 // 风扇传感器
	SensorTypePhysicalSecurity             SensorType = 0x05 // Chassis Intrusion
	SensorTypePlatformSecurity             SensorType = 0x06
	SensorTypeProcessor                    SensorType = 0x07
	SensorTypePowerSupply                  SensorType = 0x08
	SensorTypePowerUnit                    SensorType = 0x09
	SensorTypeCollingDevice                SensorType = 0x0a
	SensorTypeOtherUnitsbased              SensorType = 0x0b
	SensorTypeMemory                       SensorType = 0x0c
	SensorTypeDriveSlot                    SensorType = 0x0d
	SensorTypePostMemoryResize             SensorType = 0x0e
	SensorTypeSystemFirmwareProgress       SensorType = 0x0f
	SensorTypeEventLoggingDisabled         SensorType = 0x10
	SensorTypeWatchdog1                    SensorType = 0x11
	SensorTypeSystemEvent                  SensorType = 0x12
	SensorTypeCriticalInterrupt            SensorType = 0x13
	SensorTypeButtonSwitch                 SensorType = 0x14
	SensorTypeModuleBoard                  SensorType = 0x15
	SensorTypeMicrocontrollerCoprocessor   SensorType = 0x16
	SensorTypeAddinCard                    SensorType = 0x17
	SensorTypeChassis                      SensorType = 0x18
	SensorTypeChipSet                      SensorType = 0x19
	SensorTypeOtherFRU                     SensorType = 0x1a
	SensorTypeCableInterconnect            SensorType = 0x1b
	SensorTypeTerminator                   SensorType = 0x1c
	SensorTypeSystemBootRestartInitiated   SensorType = 0x1d
	SensorTypeBootError                    SensorType = 0x1e
	SensorTypeBaseOSBootInstallationStatus SensorType = 0x1f
	SensorTypeOSStopShutdown               SensorType = 0x20
	SensorTypeSlotConnector                SensorType = 0x21
	SensorTypeSystemACPIPowerState         SensorType = 0x22
	SensorTypeWatchdog2                    SensorType = 0x23
	SensorTypePlatformAlert                SensorType = 0x24
	SensorTypeEntityPresence               SensorType = 0x25
	SensorTypeMonitorASIC                  SensorType = 0x26
	SensorTypeLAN                          SensorType = 0x27
	SensorTypeManagementSubsystemHealth    SensorType = 0x28
	SensorTypeBattery                      SensorType = 0x29
	SensorTypeSessionAudit                 SensorType = 0x2a
	SensorTypeVersionChange                SensorType = 0x2b
	SensorTypeFRUState                     SensorType = 0x2c
)

func SensorTypeFromNameOrNumber

func SensorTypeFromNameOrNumber(sensorTypeNameOrNumber string) (SensorType, error)

func (SensorType) String

func (c SensorType) String() string

type SensorUnit

type SensorUnit struct {
	AnalogDataFormat SensorAnalogUnitFormat
	RateUnit         SensorRateUnit
	ModifierRelation SensorModifierRelation
	Percentage       bool // Percentage 0b = no, 1b = yes

	BaseUnit     SensorUnitType
	ModifierUnit SensorUnitType
}

func (SensorUnit) IsAnalog

func (unit SensorUnit) IsAnalog() bool

func (SensorUnit) String

func (unit SensorUnit) String() string

type SensorUnitType

type SensorUnitType uint8

43.17 Sensor Unit Type Codes

const (
	SensorUnitType_Unspecified        SensorUnitType = 0  // unspecified
	SensorUnitType_DegreesC           SensorUnitType = 1  // degrees C, Celsius, 摄氏度 ℃
	SensorUnitType_DegreesF           SensorUnitType = 2  // degrees F, Fahrenheit, 华氏度
	SensorUnitType_DegreesK           SensorUnitType = 3  // degrees K, Kelvins, 开尔文
	SensorUnitType_Volts              SensorUnitType = 4  // Volts, 伏特(电压单位)
	SensorUnitType_Amps               SensorUnitType = 5  // Amps, 安培数
	SensorUnitType_Watts              SensorUnitType = 6  // Watts, 瓦特(功率单位)
	SensorUnitType_Joules             SensorUnitType = 7  // Joules, 焦耳
	SensorUnitType_Coulombs           SensorUnitType = 8  // Coulombs, 库伦
	SensorUnitType_VA                 SensorUnitType = 9  // VA, 伏安
	SensorUnitType_Nits               SensorUnitType = 10 // Nits, 尼特(光度单位)
	SensorUnitType_Lumen              SensorUnitType = 11 // lumen, 流明(光通量单位)
	SensorUnitType_Lux                SensorUnitType = 12 // lux, 勒克斯(照明单位)
	SensorUnitType_Candela            SensorUnitType = 13 // Candela, 坎,坎德拉(发光强度单位)
	SensorUnitType_KPa                SensorUnitType = 14 // kPa kilopascal, 千帕,千帕斯卡
	SensorUnitType_PSI                SensorUnitType = 15 // PSI
	SensorUnitType_Newton             SensorUnitType = 16 // Newton, 牛顿(力的单位)
	SensorUnitType_CFM                SensorUnitType = 17 // CFM, 风量,cubic feet per minute (cu ft/min)
	SensorUnitType_RPM                SensorUnitType = 18 // RPM, 每分钟转数,Revolutions per minute, is the number of turns in one minute
	SensorUnitType_Hz                 SensorUnitType = 19 // Hz, 赫兹
	SensorUnitType_MicroSecond        SensorUnitType = 20 // microsecond, 微秒
	SensorUnitType_MilliSecond        SensorUnitType = 21 // millisecond, 毫秒
	SensorUnitType_Second             SensorUnitType = 22 // second, 秒
	SensorUnitType_Minute             SensorUnitType = 23 // minute, 分
	SensorUnitType_Hour               SensorUnitType = 24 // hour, 时
	SensorUnitType_Day                SensorUnitType = 25 // day, 日
	SensorUnitType_Week               SensorUnitType = 26 // week, 周
	SensorUnitType_Mil                SensorUnitType = 27 // mil, 毫升;密耳(千分之一寸)
	SensorUnitType_Inches             SensorUnitType = 28 // inches, 英寸(inch 的复数)
	SensorUnitType_Fleet              SensorUnitType = 29 // feet
	SensorUnitType_CuIn               SensorUnitType = 30 // cu in, 立方英寸(cubic inch)
	SensorUnitType_CuFleet            SensorUnitType = 31 // cu feet
	SensorUnitType_MM                 SensorUnitType = 32 // mm, 毫米(millimeter)
	SensorUnitType_CM                 SensorUnitType = 33 // cm, 厘米(centimeter)
	SensorUnitType_M                  SensorUnitType = 34 // m, 米
	SensorUnitType_CuCM               SensorUnitType = 35 // cu cm
	SensorUnitType_Cum                SensorUnitType = 36 // cum
	SensorUnitType_Liters             SensorUnitType = 37 // liters, 公升(容量单位)
	SensorUnitType_FluidOunce         SensorUnitType = 38 // fluid ounce, 液盎司(液体容量单位,等于 fluidounce)
	SensorUnitType_Radians            SensorUnitType = 39 // radians, 弧度(radian 的复数)
	SensorUnitType_vSteradians        SensorUnitType = 40 // steradians, 球面度,立体弧度(立体角国际单位制,等于 sterad)
	SensorUnitType_Revolutions        SensorUnitType = 41 // revolutions, 转数(revolution 的复数形式)
	SensorUnitType_Cycles             SensorUnitType = 42 // cycles, 周期,圈
	SensorUnitType_Gravities          SensorUnitType = 43 // gravities, 重力
	SensorUnitType_Ounce              SensorUnitType = 44 // ounce, 盎司
	SensorUnitType_Pound              SensorUnitType = 45 // pound, 英镑
	SensorUnitType_FootPound          SensorUnitType = 46 // ft-lb, 英尺 - 磅(foot pound)
	SensorUnitType_OzIn               SensorUnitType = 47 // oz-in, 扭力;盎司英寸
	SensorUnitType_Gauss              SensorUnitType = 48 // gauss, 高斯(磁感应或磁场的单位)
	SensorUnitType_Gilberts           SensorUnitType = 49 // gilberts, 吉伯(磁通量的单位)
	SensorUnitType_Henry              SensorUnitType = 50 // henry, 亨利(电感单位)
	SensorUnitType_MilliHenry         SensorUnitType = 51 // millihenry, 毫亨(利)(电感单位)
	SensorUnitType_Farad              SensorUnitType = 52 // farad, 法拉(电容单位)
	SensorUnitType_MicroFarad         SensorUnitType = 53 // microfarad, 微法拉(电容量的实用单位)
	SensorUnitType_Ohms               SensorUnitType = 54 // ohms, 欧姆(Ohm) :电阻的量度单位,欧姆值越大,电阻越大
	SensorUnitType_Siemens            SensorUnitType = 55 // siemens, 西门子,电导单位
	SensorUnitType_Mole               SensorUnitType = 56 // mole, 摩尔 [化学] 克分子(等于 mole)
	SensorUnitType_Becquerel          SensorUnitType = 57 // becquerel, 贝可(放射性活度单位)
	SensorUnitType_PPM                SensorUnitType = 58 // PPM (parts/million), 百万分率,百万分之…(parts per million)
	SensorUnitType_Reserved           SensorUnitType = 59 // reserved
	SensorUnitType_Decibels           SensorUnitType = 60 // Decibels, 分贝(声音强度单位,decibel 的复数)
	SensorUnitType_DbA                SensorUnitType = 61 // DbA, dBA is often used to specify the loudness of the fan used to cool the microprocessor and associated components. Typical dBA ratings are in the neighborhood of 25 dBA, representing 25 A-weighted decibels above the threshold of hearing. This is approximately the loudness of a person whispering in a quiet room.
	SensorUnitType_DbC                SensorUnitType = 62 // DbC
	SensorUnitType_Gray               SensorUnitType = 63 // gray, 核吸收剂量 (Gy)
	SensorUnitType_Sievert            SensorUnitType = 64 // sievert, 希沃特(辐射效果单位,简称希)
	SensorUnitType_ColorTempDegK      SensorUnitType = 65 // color temp deg K, 色温
	SensorUnitType_Bit                SensorUnitType = 66 // bit, 比特(二进位制信息单位)
	SensorUnitType_Kilobit            SensorUnitType = 67 // kilobit, 千比特
	SensorUnitType_Megabit            SensorUnitType = 68 // megabit, 兆比特
	SensorUnitType_Gigabit            SensorUnitType = 69 // gigabit, 吉比特
	SensorUnitType_Byte               SensorUnitType = 70 // byte, 字节
	SensorUnitType_Kilobyte           SensorUnitType = 71 // kilobyte, 千字节
	SensorUnitType_Megabyte           SensorUnitType = 72 // megabyte, 兆字节
	SensorUnitType_Gigabyte           SensorUnitType = 73 // gigabyte, 吉字节
	SensorUnitType_Word               SensorUnitType = 74 // word (data), 字
	SensorUnitType_DWord              SensorUnitType = 75 // dword, 双字
	SensorUnitType_QWord              SensorUnitType = 76 // qword, 四字
	SensorUnitType_Line               SensorUnitType = 77 // line (re. mem. line)
	SensorUnitType_Hit                SensorUnitType = 78 // hit, 命中
	SensorUnitType_Miss               SensorUnitType = 79 // miss, 未击中,未命中
	SensorUnitType_Retry              SensorUnitType = 80 // retry, 重试(次数)
	SensorUnitType_Reset              SensorUnitType = 81 // reset, 重置(次数)
	SensorUnitType_Overrun            SensorUnitType = 82 // overrun) / overflow 满载,溢出(次数)
	SensorUnitType_Underrun           SensorUnitType = 83 // underrun 欠载
	SensorUnitType_Collision          SensorUnitType = 84 // collision, 冲突
	SensorUnitType_Packet             SensorUnitType = 85 // packets, 包,数据包
	SensorUnitType_Message            SensorUnitType = 86 // messages, 消息
	SensorUnitType_Characters         SensorUnitType = 87 // characters, 字符
	SensorUnitType_Error              SensorUnitType = 88 // error, 错误
	SensorUnitType_CorrectableError   SensorUnitType = 89 // correctable error 可校正错误
	SensorUnitType_UncorrectableError SensorUnitType = 90 // uncorrectable error 不可校正错误
	SensorUnitType_FatalError         SensorUnitType = 91 // fatal error, 致命错误,不可恢复的错误
	SensorUnitType_Grams              SensorUnitType = 92 // grams, 克(gram 的复数形式)
)

func (SensorUnitType) String

func (u SensorUnitType) String() string

type Session15

type Session15 struct {
	SessionHeader15 *SessionHeader15

	Payload []byte

	// legacy PAD not needed for IPMI v2.0
	LegacyPAD byte
}

func (*Session15) Pack

func (s *Session15) Pack() []byte

func (*Session15) Unpack

func (s *Session15) Unpack(msg []byte) error

type Session20

type Session20 struct {
	SessionHeader20 *SessionHeader20

	// for encrypted packets, it should contain Confidentiality Header, Encrypted Payload, and Confidentiality Trailer.
	SessionPayload []byte

	// For IPMI v2.0 RMCP+ packets, the IPMI Session Trailer is absent whenever the Session ID is 0000_0000h, or whenever bit 6 in the payload type field indicates the packet is unauthenticated.
	SessionTrailer *SessionTrailer
}

func (*Session20) Pack

func (s *Session20) Pack() []byte

func (*Session20) Unpack

func (s *Session20) Unpack(msg []byte) error

type SessionHeader15

type SessionHeader15 struct {
	// For IPMI 1.5, its value is 00h, 01h, 02h, 04h, 05h
	AuthType AuthType

	// For IPMI v2.0 RMCP+ there are separate sequence numbers tracked for authenticated and unauthenticated packets.
	// 0000_0000h is used for packets that are sent outside of a session.
	Sequence uint32

	SessionID uint32

	// The Authentication Code field in the session header may or may not be present based on the Authentication Type.
	// The authentication code field is absent whenever the Authentication Type is NONE.
	// Whether the authentication code field is present or not when the Authentication Type = OEM is dependent on
	// the OEM identified in the Get Channel Authentication Capabilities command.
	//
	// 16 bytes, not present when Authentication Type set to none
	AuthCode []byte // IPMI 1.5

	// Payload length in bytes. 1-based.
	// IPMI 1.5 should be uint8
	// You should construct SessionHeader after the payload is created, thus you can fill the length here.
	PayloadLength uint8
}

SessionHeader15 for IPMI 1.5 see 22.12, Table 13.

Whether the session header fields are present in a packet is based on whether the channel is specified as supporting multiple sessions or not. In addition, which session fields are present is based on the authentication type. Single-session connections and session-less channels do not include session header fields.

Session header fields are present on all packets where the channel and connection mode is specified as supporting multiple sessions, even if the particular implementation only supports one session.

Note that the command tables do not show the session header fields except for the Get Channel Authentication Capabilities, Get Session Challenge, and Activate Session commands. However, they are still required for all commands on a multi-session connection.

func (*SessionHeader15) Pack

func (h *SessionHeader15) Pack() []byte

func (*SessionHeader15) Unpack

func (h *SessionHeader15) Unpack(msg []byte) error

type SessionHeader20

type SessionHeader20 struct {
	// For IPMI 2.0, its value is always 06h
	AuthType AuthType

	PayloadEncrypted     bool
	PayloadAuthenticated bool
	PayloadType          PayloadType

	// The complete identification of an OEM Payload is given by the combination of a three-byte IANA ID for the OEM, a reserved byte, plus a two-byte OEM Payload ID that is assigned and defined by the given OEM
	OEMIANA      uint32
	OEMPayloadID uint16

	// Should be set to bmcSessionID (generated by bmc, cached by remote console)
	SessionID uint32

	// For IPMI v2.0 RMCP+ there are separate sequence numbers tracked for authenticated and unauthenticated packets.
	// 0000_0000h is used for packets that are sent outside of a session.
	Sequence uint32

	// Payload length in bytes. 1-based.
	// You should construct SessionHeader after the payload is created, thus you can fill the length here.
	// IPMI 2.0 should be uint16
	PayloadLength uint16
}

SessionHeader20 for IPMI 2.0

func (*SessionHeader20) Pack

func (h *SessionHeader20) Pack() []byte

func (*SessionHeader20) Unpack

func (h *SessionHeader20) Unpack(msg []byte) error

type SessionState

type SessionState uint8
const (
	SessionStatePreSession          SessionState = 0x00
	SessionStateOpenSessionSent     SessionState = 0x01
	SessionStateOpenSessionReceived SessionState = 0x02
	SessionStateRakp1Sent           SessionState = 0x03
	SessionStateRakp2Received       SessionState = 0x04
	SessionStateRakp3Sent           SessionState = 0x05
	SessionStateActive              SessionState = 0x06
	SessionStateCloseSent           SessionState = 0x07
)

type SessionTrailer

type SessionTrailer struct {

	// Added as needed to cause the number of bytes in the data range covered by the AuthCode (Integrity Data) field to be a multiple of 4 bytes (DWORD). If present, each Integrity Pad byte is set to FFh.
	IntegrityPAD []byte

	// indicates how many pad bytes were added so that the amount of non-pad data can be determined.
	PadLength uint8

	// Reserved in IPMI v2.0. Set to 07h for RMCP+ packets defined in this specification.
	NextHeader uint8

	// For IPMI v2.0 (RMCP+) if this field is present, then it is calculated according to the Integrity Algorithm that was negotiated during the session open process.
	// This field is absent when the packet is unauthenticated.
	AuthCode []byte // Integrity Data
}

For IPMI v2.0 RMCP+ packets, the IPMI Session Trailer is absent whenever the Session ID is 0000_0000h, or whenever bit 6 in the payload type field indicates the packet is unauthenticated

func (*SessionTrailer) Pack

func (s *SessionTrailer) Pack() []byte

func (*SessionTrailer) Unpack

func (s *SessionTrailer) Unpack(msg []byte, off int, padSize int) (int, error)

type SetInProgressState

type SetInProgressState uint8
const (
	SetInProgress_SetComplete   SetInProgressState = 0x00
	SetInProgress_SetInProgress SetInProgressState = 0x01
	SetInProgress_CommitWrite   SetInProgressState = 0x02
	SetInProgress_Reserved      SetInProgressState = 0x03
)

func (SetInProgressState) String

func (p SetInProgressState) String() string

type SoftwareID

type SoftwareID uint8

5.4 Sensor Owner Identification the "owner" of the sensor. The combination of Sensor Owner ID and Sensor Number uniquely identify a sensor in the system. the Sensor Data Record and SEL information must contain information to identify the "owner" of the sensor.

For management controllers, a Slave Address and LUN identify the owner of a sensor on the IPMB.

For system software, a Software ID identifies the owner of a sensor.

These fields are used in Event Messages, where events from management controllers or the IPMB are identified by an eight-bit field where the upper 7-bits are the Slave Address or System Software ID.

The least significant bit is a 0 if the value represents a Slave Address and a 1 if the value represents a System Software ID. So all Software IDs are odd numbers (because the bit 0 is fixed to 1b), and all slave addresses are even numbers (because bit 0 is fixed to 0b)

5.5 Software IDs (SWIDs)

func (SoftwareID) Type

func (i SoftwareID) Type() SoftwareType

type SoftwareType

type SoftwareType string
const (
	SoftwareTypeBIOS        SoftwareType = "BIOS"
	SoftwareTypeSMIHandler  SoftwareType = "SMI Handler"
	SoftwareTypeSMS         SoftwareType = "System Management Software"
	SoftwareTypeOEM         SoftwareType = "OEM"
	SoftwareTypeRCS         SoftwareType = "Remote Console Software"
	SoftwareTypeTerminalRCS SoftwareType = "Terminal Mode Remote Console Software"
	SoftwareTypeReserved    SoftwareType = "Reserved"
)

type SystemInfo

type SystemInfo struct {
	SetInProgress         SetInProgressState
	SystemFirmwareVersion string
	SystemName            string
	PrimaryOSName         string
	OSName                string
	OSVersion             string
	BMCURL                string
	ManagementURL         string
}

func (*SystemInfo) Format

func (systemInfo *SystemInfo) Format() string

type SystemInfoParamSelector

type SystemInfoParamSelector uint8
const (
	SystemInfoParamSelector_SetInProgress         SystemInfoParamSelector = 0
	SystemInfoParamSelector_SystemFirmwareVersion SystemInfoParamSelector = 1
	SystemInfoParamSelector_SystemName            SystemInfoParamSelector = 2
	SystemInfoParamSelector_PrimaryOSName         SystemInfoParamSelector = 3
	SystemInfoParamSelector_OSName                SystemInfoParamSelector = 4
	SystemInfoParamSelector_OSVersion             SystemInfoParamSelector = 5
	SystemInfoParamSelector_BMCURL                SystemInfoParamSelector = 6
	SystemInfoParamSelector_ManagementURL         SystemInfoParamSelector = 7
)

func (SystemInfoParamSelector) String

func (paramSelector SystemInfoParamSelector) String() string

type SystemInfoParam_BMCURL

type SystemInfoParam_BMCURL struct {
	SetSelector uint8
	BlockData   []byte
}

func (*SystemInfoParam_BMCURL) Format

func (p *SystemInfoParam_BMCURL) Format() string

func (*SystemInfoParam_BMCURL) Pack

func (p *SystemInfoParam_BMCURL) Pack() []byte

func (*SystemInfoParam_BMCURL) SystemInfoParameter

func (p *SystemInfoParam_BMCURL) SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)

func (*SystemInfoParam_BMCURL) Unpack

func (p *SystemInfoParam_BMCURL) Unpack(data []byte) error

type SystemInfoParam_ManagementURL

type SystemInfoParam_ManagementURL struct {
	SetSelector uint8
	BlockData   []byte
}

func (*SystemInfoParam_ManagementURL) Format

func (*SystemInfoParam_ManagementURL) Pack

func (p *SystemInfoParam_ManagementURL) Pack() []byte

func (*SystemInfoParam_ManagementURL) SystemInfoParameter

func (p *SystemInfoParam_ManagementURL) SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)

func (*SystemInfoParam_ManagementURL) Unpack

func (p *SystemInfoParam_ManagementURL) Unpack(data []byte) error

type SystemInfoParam_OSName

type SystemInfoParam_OSName struct {
	SetSelector uint8
	BlockData   []byte
}

func (*SystemInfoParam_OSName) Format

func (p *SystemInfoParam_OSName) Format() string

func (*SystemInfoParam_OSName) Pack

func (p *SystemInfoParam_OSName) Pack() []byte

func (*SystemInfoParam_OSName) SystemInfoParameter

func (p *SystemInfoParam_OSName) SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)

func (*SystemInfoParam_OSName) Unpack

func (p *SystemInfoParam_OSName) Unpack(data []byte) error

type SystemInfoParam_OSVersion

type SystemInfoParam_OSVersion struct {
	SetSelector uint8
	BlockData   []byte
}

func (*SystemInfoParam_OSVersion) Format

func (p *SystemInfoParam_OSVersion) Format() string

func (*SystemInfoParam_OSVersion) Pack

func (p *SystemInfoParam_OSVersion) Pack() []byte

func (*SystemInfoParam_OSVersion) SystemInfoParameter

func (p *SystemInfoParam_OSVersion) SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)

func (*SystemInfoParam_OSVersion) Unpack

func (p *SystemInfoParam_OSVersion) Unpack(data []byte) error

type SystemInfoParam_PrimaryOSName

type SystemInfoParam_PrimaryOSName struct {
	SetSelector uint8
	BlockData   []byte
}

func (*SystemInfoParam_PrimaryOSName) Format

func (*SystemInfoParam_PrimaryOSName) Pack

func (p *SystemInfoParam_PrimaryOSName) Pack() []byte

func (*SystemInfoParam_PrimaryOSName) SystemInfoParameter

func (p *SystemInfoParam_PrimaryOSName) SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)

func (*SystemInfoParam_PrimaryOSName) Unpack

func (p *SystemInfoParam_PrimaryOSName) Unpack(data []byte) error

type SystemInfoParam_SetInProgress

type SystemInfoParam_SetInProgress struct {
	Value SetInProgressState
}

func (*SystemInfoParam_SetInProgress) Format

func (*SystemInfoParam_SetInProgress) Pack

func (p *SystemInfoParam_SetInProgress) Pack() []byte

func (*SystemInfoParam_SetInProgress) SystemInfoParameter

func (p *SystemInfoParam_SetInProgress) SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)

func (*SystemInfoParam_SetInProgress) Unpack

func (p *SystemInfoParam_SetInProgress) Unpack(data []byte) error

type SystemInfoParam_SystemFirmwareVersion

type SystemInfoParam_SystemFirmwareVersion struct {
	SetSelector uint8
	BlockData   []byte
}

func (*SystemInfoParam_SystemFirmwareVersion) Format

func (*SystemInfoParam_SystemFirmwareVersion) Pack

func (*SystemInfoParam_SystemFirmwareVersion) SystemInfoParameter

func (p *SystemInfoParam_SystemFirmwareVersion) SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)

func (*SystemInfoParam_SystemFirmwareVersion) Unpack

type SystemInfoParam_SystemName

type SystemInfoParam_SystemName struct {
	SetSelector uint8
	BlockData   []byte
}

func (*SystemInfoParam_SystemName) Format

func (p *SystemInfoParam_SystemName) Format() string

func (*SystemInfoParam_SystemName) Pack

func (p *SystemInfoParam_SystemName) Pack() []byte

func (*SystemInfoParam_SystemName) SystemInfoParameter

func (p *SystemInfoParam_SystemName) SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)

func (*SystemInfoParam_SystemName) Unpack

func (p *SystemInfoParam_SystemName) Unpack(data []byte) error

type SystemInfoParameter

type SystemInfoParameter interface {
	SystemInfoParameter() (paramSelector SystemInfoParamSelector, setSelector uint8, blockSelector uint8)
	Parameter
}

type SystemInfoParams

type SystemInfoParams struct {
	SetInProgress          *SystemInfoParam_SetInProgress
	SystemFirmwareVersions []*SystemInfoParam_SystemFirmwareVersion
	SystemNames            []*SystemInfoParam_SystemName
	PrimaryOSNames         []*SystemInfoParam_PrimaryOSName
	OSNames                []*SystemInfoParam_OSName
	OSVersions             []*SystemInfoParam_OSVersion
	BMCURLs                []*SystemInfoParam_BMCURL
	ManagementURLs         []*SystemInfoParam_ManagementURL
}

func (*SystemInfoParams) Format

func (systemInfoParams *SystemInfoParams) Format() string

func (*SystemInfoParams) ToSystemInfo

func (systemInfoParams *SystemInfoParams) ToSystemInfo() *SystemInfo

type TypeLength

type TypeLength uint8

43.15 Type/Length Byte Format

7:6 00 = Unicode
         00b define a Unicode string in the IPMI specification,
         whereas they specify a binary field in the Platform Management FRU specification.
    01 = BCD plus (see below)
    10 = 6-bit ASCII, packed
    11 = 8-bit ASCII + Latin 1.
        At least two bytes of data must be present when this type is used.
        Therefore, the length (number of data bytes) will be >1 if data is present,
        0 if data is not present. A length of 1 is reserved.
5 reserved.
    the bit 5 is reserved in the IPMI specification type/length byte,
    where it is part of the length field in the Platform Management FRU specification
4:0 length of following data, in characters.
    00000b indicates 'none following'.
    11111b = reserved.

func (TypeLength) Chars

func (tl TypeLength) Chars(raw []byte) (chars []byte, err error)

Chars decodes the raw bytes to ASCII chars according to the encoding type code of TypeLength

func (TypeLength) Length

func (tl TypeLength) Length() uint8

Length returns the length of bytes occupied that packed the chars. But it is not the length of chars. For BCD plus type, one byte packs two chars.

func (TypeLength) Size

func (tl TypeLength) Size() uint8

Size returns the length of chars.

func (TypeLength) String

func (tl TypeLength) String() string

func (TypeLength) Type

func (tl TypeLength) Type() string

func (TypeLength) TypeCode

func (tl TypeLength) TypeCode() uint8

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL