openMMC
Open Source Modular MMC for AMCs
Loading...
Searching...
No Matches
ipmi.h
Go to the documentation of this file.
1/*
2 * openMMC -- Open Source modular IPM Controller firmware
3 *
4 * Copyright (C) 2015-2016 Henrique Silva <henrique.silva@lnls.br>
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 *
19 * @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+>
20 */
21
34#ifndef IPMI_H_
35#define IPMI_H_
36
37#include "ipmb.h"
38#include "sdr.h"
39
43#define IPMI_MAX_DATA_LEN 24
44
49#define IPMI_APP_DEV_ID 0x00
50
59#define IPMI_APP_DEV_REV 0x80
60
68#define IPMI_APP_DEV_FW_REV_UPPER 0x01
69
75#define IPMI_APP_DEV_FW_REV_LOWER 0x01
76
85#define IPMI_APP_IPMI_VERSION 0x02
86
99#define IPMI_APP_DEV_SUP 0x29
100
106#define IPMI_APP_MANUF_LSB 0x5A
107
113#define IPMI_APP_MANUF_MIDB 0x31
114
120#define IPMI_APP_MANUF_MSB 0x00
121
125#define IPMI_APP_PROD_ID_LSB 0x00
126
130#define IPMI_APP_PROD_ID_MSB 0x00
131
140#define IPMI_EXTENSION_VERSION 0x23
141
149#ifdef MODULE_RTM
150#define MAX_FRU_ID 0x01
151#else
152#define MAX_FRU_ID 0x00
153#endif
154
162#define FRU_DEVICE_ID 0x00
163
174/* Known NetFn codes (even request codes only) */
175#define NETFN_CHASSIS 0x00
176#define NETFN_BRIDGE 0x02
177#define NETFN_SE 0x04
178#define NETFN_APP 0x06
179#define NETFN_FIRMWARE 0x08
180#define NETFN_STORAGE 0x0A
181#define NETFN_TRANSPORT 0x0C
182#define NETFN_GRPEXT 0x2C
183/* Custom extension for UWHEP MMC functions */
184#define NETFN_CUSTOM 0x32
194#define IPMI_GET_CHASSIS_CAPABILITIES_CMD 0x00
195#define IPMI_GET_CHASSIS_STATUS_CMD 0x01
196#define IPMI_CHASSIS_CONTROL_CMD 0x02
197#define IPMI_CHASSIS_RESET_CMD 0x03
198#define IPMI_CHASSIS_IDENTIFY_CMD 0x04
199#define IPMI_SET_CHASSIS_CAPABILITIES_CMD 0x05
200#define IPMI_SET_POWER_RESTORE_POLICY_CMD 0x06
201#define IPMI_GET_SYSTEM_RESTART_CAUSE_CMD 0x07
202#define IPMI_SET_SYSTEM_BOOT_OPTIONS_CMD 0x08
203#define IPMI_GET_SYSTEM_BOOT_OPTIONS_CMD 0x09
204#define IPMI_GET_POH_COUNTER_CMD 0x0F
214#define IPMI_GET_BRIDGE_STATE_CMD 0x00
215#define IPMI_SET_BRIDGE_STATE_CMD 0x01
216#define IPMI_GET_ICMB_ADDRESS_CMD 0x02
217#define IPMI_SET_ICMB_ADDRESS_CMD 0x03
218#define IPMI_SET_BRIDGE_PROXY_ADDRESS_CMD 0x04
219#define IPMI_GET_BRIDGE_STATISTICS_CMD 0x05
220#define IPMI_GET_ICMB_CAPABILITIES_CMD 0x06
221#define IPMI_CLEAR_BRIDGE_STATISTICS_CMD 0x08
222#define IPMI_GET_BRIDGE_PROXY_ADDRESS_CMD 0x09
223#define IPMI_GET_ICMB_CONNECTOR_INFO_CMD 0x0A
224#define IPMI_SET_ICMB_CONNECTOR_INFO_CMD 0x0B
225#define IPMI_SEND_ICMB_CONNECTION_ID_CMD 0x0C
226#define IPMI_PREPARE_FOR_DISCOVERY_CMD 0x10
227#define IPMI_GET_ADDRESSES_CMD 0x11
228#define IPMI_SET_DISCOVERED_CMD 0x12
229#define IPMI_GET_CHASSIS_DEVICE_ID_CMD 0x13
230#define IPMI_SET_CHASSIS_DEVICE_ID_CMD 0x14
231#define IPMI_BRIDGE_REQUEST_CMD 0x20
232#define IPMI_BRIDGE_MESSAGE_CMD 0x21
233#define IPMI_GET_EVENT_COUNT_CMD 0x30
234#define IPMI_SET_EVENT_DESTINATION_CMD 0x31
235#define IPMI_SET_EVENT_RECEPTION_STATE_CMD 0x32
236#define IPMI_SEND_ICMB_EVENT_MESSAGE_CMD 0x33
237#define IPMI_GET_EVENT_DESTIATION_CMD 0x34
238#define IPMI_GET_EVENT_RECEPTION_STATE_CMD 0x35
239#define IPMI_ERROR_REPORT_CMD 0xFF
249#define IPMI_SET_EVENT_RECEIVER_CMD 0x00
250#define IPMI_GET_EVENT_RECEIVER_CMD 0x01
251#define IPMI_PLATFORM_EVENT_CMD 0x02
252#define IPMI_GET_PEF_CAPABILITIES_CMD 0x10
253#define IPMI_ARM_PEF_POSTPONE_TIMER_CMD 0x11
254#define IPMI_SET_PEF_CONFIG_PARMS_CMD 0x12
255#define IPMI_GET_PEF_CONFIG_PARMS_CMD 0x13
256#define IPMI_SET_LAST_PROCESSED_EVENT_ID_CMD 0x14
257#define IPMI_GET_LAST_PROCESSED_EVENT_ID_CMD 0x15
258#define IPMI_ALERT_IMMEDIATE_CMD 0x16
259#define IPMI_PET_ACKNOWLEDGE_CMD 0x17
260#define IPMI_GET_DEVICE_SDR_INFO_CMD 0x20
261#define IPMI_GET_DEVICE_SDR_CMD 0x21
262#define IPMI_RESERVE_DEVICE_SDR_REPOSITORY_CMD 0x22
263#define IPMI_GET_SENSOR_READING_FACTORS_CMD 0x23
264#define IPMI_SET_SENSOR_HYSTERESIS_CMD 0x24
265#define IPMI_GET_SENSOR_HYSTERESIS_CMD 0x25
266#define IPMI_SET_SENSOR_THRESHOLD_CMD 0x26
267#define IPMI_GET_SENSOR_THRESHOLD_CMD 0x27
268#define IPMI_SET_SENSOR_EVENT_ENABLE_CMD 0x28
269#define IPMI_GET_SENSOR_EVENT_ENABLE_CMD 0x29
270#define IPMI_REARM_SENSOR_EVENTS_CMD 0x2A
271#define IPMI_GET_SENSOR_EVENT_STATUS_CMD 0x2B
272#define IPMI_GET_SENSOR_READING_CMD 0x2D
273#define IPMI_SET_SENSOR_TYPE_CMD 0x2E
274#define IPMI_GET_SENSOR_TYPE_CMD 0x2F
284#define IPMI_GET_DEVICE_ID_CMD 0x01
285#define IPMI_BROADCAST_GET_DEVICE_ID_CMD 0x01
286#define IPMI_COLD_RESET_CMD 0x02
287#define IPMI_WARM_RESET_CMD 0x03
288#define IPMI_GET_SELF_TEST_RESULTS_CMD 0x04
289#define IPMI_MANUFACTURING_TEST_ON_CMD 0x05
290#define IPMI_SET_ACPI_POWER_STATE_CMD 0x06
291#define IPMI_GET_ACPI_POWER_STATE_CMD 0x07
292#define IPMI_GET_DEVICE_GUID_CMD 0x08
293#define IPMI_RESET_WATCHDOG_TIMER_CMD 0x22
294#define IPMI_SET_WATCHDOG_TIMER_CMD 0x24
295#define IPMI_GET_WATCHDOG_TIMER_CMD 0x25
296#define IPMI_SET_BMC_GLOBAL_ENABLES_CMD 0x2E
297#define IPMI_GET_BMC_GLOBAL_ENABLES_CMD 0x2F
298#define IPMI_CLEAR_MSG_FLAGS_CMD 0x30
299#define IPMI_GET_MSG_FLAGS_CMD 0x31
300#define IPMI_ENABLE_MESSAGE_CHANNEL_RCV_CMD 0x32
301#define IPMI_GET_MSG_CMD 0x33
302#define IPMI_SEND_MSG_CMD 0x34
303#define IPMI_READ_EVENT_MSG_BUFFER_CMD 0x35
304#define IPMI_GET_BT_INTERFACE_CAPABILITIES_CMD 0x36
305#define IPMI_GET_SYSTEM_GUID_CMD 0x37
306#define IPMI_GET_CHANNEL_AUTH_CAPABILITIES_CMD 0x38
307#define IPMI_GET_SESSION_CHALLENGE_CMD 0x39
308#define IPMI_ACTIVATE_SESSION_CMD 0x3A
309#define IPMI_SET_SESSION_PRIVILEGE_CMD 0x3B
310#define IPMI_CLOSE_SESSION_CMD 0x3C
311#define IPMI_GET_SESSION_INFO_CMD 0x3D
312#define IPMI_GET_AUTHCODE_CMD 0x3F
313#define IPMI_SET_CHANNEL_ACCESS_CMD 0x40
314#define IPMI_GET_CHANNEL_ACCESS_CMD 0x41
315#define IPMI_GET_CHANNEL_INFO_CMD 0x42
316#define IPMI_SET_USER_ACCESS_CMD 0x43
317#define IPMI_GET_USER_ACCESS_CMD 0x44
318#define IPMI_SET_USER_NAME_CMD 0x45
319#define IPMI_GET_USER_NAME_CMD 0x46
320#define IPMI_SET_USER_PASSWORD_CMD 0x47
321#define IPMI_ACTIVATE_PAYLOAD_CMD 0x48
322#define IPMI_DEACTIVATE_PAYLOAD_CMD 0x49
323#define IPMI_GET_PAYLOAD_ACTIVATION_STATUS_CMD 0x4A
324#define IPMI_GET_PAYLOAD_INSTANCE_INFO_CMD 0x4B
325#define IPMI_SET_USER_PAYLOAD_ACCESS_CMD 0x4C
326#define IPMI_GET_USER_PAYLOAD_ACCESS_CMD 0x4D
327#define IPMI_GET_CHANNEL_PAYLOAD_SUPPORT_CMD 0x4E
328#define IPMI_GET_CHANNEL_PAYLOAD_VERSION_CMD 0x4F
329#define IPMI_GET_CHANNEL_OEM_PAYLOAD_INFO_CMD 0x50
330#define IPMI_MASTER_READ_WRITE_CMD 0x52
331#define IPMI_GET_CHANNEL_CIPHER_SUITES_CMD 0x54
332#define IPMI_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_CMD 0x55
333#define IPMI_SET_CHANNEL_SECURITY_KEY_CMD 0x56
334#define IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_CMD 0x57
344#define IPMI_GET_FRU_INVENTORY_AREA_INFO_CMD 0x10
345#define IPMI_READ_FRU_DATA_CMD 0x11
346#define IPMI_WRITE_FRU_DATA_CMD 0x12
347#define IPMI_GET_SDR_REPOSITORY_INFO_CMD 0x20
348#define IPMI_GET_SDR_REPOSITORY_ALLOC_INFO_CMD 0x21
349#define IPMI_RESERVE_SDR_REPOSITORY_CMD 0x22
350#define IPMI_GET_SDR_CMD 0x23
351#define IPMI_ADD_SDR_CMD 0x24
352#define IPMI_PARTIAL_ADD_SDR_CMD 0x25
353#define IPMI_DELETE_SDR_CMD 0x26
354#define IPMI_CLEAR_SDR_REPOSITORY_CMD 0x27
355#define IPMI_GET_SDR_REPOSITORY_TIME_CMD 0x28
356#define IPMI_SET_SDR_REPOSITORY_TIME_CMD 0x29
357#define IPMI_ENTER_SDR_REPOSITORY_UPDATE_CMD 0x2A
358#define IPMI_EXIT_SDR_REPOSITORY_UPDATE_CMD 0x2B
359#define IPMI_RUN_INITIALIZATION_AGENT_CMD 0x2C
360#define IPMI_GET_SEL_INFO_CMD 0x40
361#define IPMI_GET_SEL_ALLOCATION_INFO_CMD 0x41
362#define IPMI_RESERVE_SEL_CMD 0x42
363#define IPMI_GET_SEL_ENTRY_CMD 0x43
364#define IPMI_ADD_SEL_ENTRY_CMD 0x44
365#define IPMI_PARTIAL_ADD_SEL_ENTRY_CMD 0x45
366#define IPMI_DELETE_SEL_ENTRY_CMD 0x46
367#define IPMI_CLEAR_SEL_CMD 0x47
368#define IPMI_GET_SEL_TIME_CMD 0x48
369#define IPMI_SET_SEL_TIME_CMD 0x49
370#define IPMI_GET_AUXILIARY_LOG_STATUS_CMD 0x5A
371#define IPMI_SET_AUXILIARY_LOG_STATUS_CMD 0x5B
381#define IPMI_SET_LAN_CONFIG_PARMS_CMD 0x01
382#define IPMI_GET_LAN_CONFIG_PARMS_CMD 0x02
383#define IPMI_SUSPEND_BMC_ARPS_CMD 0x03
384#define IPMI_GET_IP_UDP_RMCP_STATS_CMD 0x04
385#define IPMI_SET_SERIAL_MODEM_CONFIG_CMD 0x10
386#define IPMI_GET_SERIAL_MODEM_CONFIG_CMD 0x11
387#define IPMI_SET_SERIAL_MODEM_MUX_CMD 0x12
388#define IPMI_GET_TAP_RESPONSE_CODES_CMD 0x13
389#define IPMI_SET_PPP_UDP_PROXY_XMIT_DATA_CMD 0x14
390#define IPMI_GET_PPP_UDP_PROXY_XMIT_DATA_CMD 0x15
391#define IPMI_SEND_PPP_UDP_PROXY_PACKET_CMD 0x16
392#define IPMI_GET_PPP_UDP_PROXY_RECV_DATA_CMD 0x17
393#define IPMI_SERIAL_MODEM_CONN_ACTIVE_CMD 0x18
394#define IPMI_CALLBACK_CMD 0x19
395#define IPMI_SET_USER_CALLBACK_OPTIONS_CMD 0x1A
396#define IPMI_GET_USER_CALLBACK_OPTIONS_CMD 0x1B
397#define IPMI_SOL_ACTIVATING_CMD 0x20
398#define IPMI_SET_SOL_CONFIGURATION_PARAMETERS 0x21
399#define IPMI_GET_SOL_CONFIGURATION_PARAMETERS 0x22
409/* The Group Extension defined for PICMG. */
410#define IPMI_PICMG_GRP_EXT 0x00
411
412#define IPMI_PICMG_CMD_GET_PROPERTIES 0x00
413#define IPMI_PICMG_CMD_GET_ADDRESS_INFO 0x01
414#define IPMI_PICMG_CMD_GET_SHELF_ADDRESS_INFO 0x02
415#define IPMI_PICMG_CMD_SET_SHELF_ADDRESS_INFO 0x03
416#define IPMI_PICMG_CMD_FRU_CONTROL 0x04
417#define IPMI_PICMG_CMD_GET_FRU_LED_PROPERTIES 0x05
418#define IPMI_PICMG_CMD_GET_LED_COLOR_CAPABILITIES 0x06
419#define IPMI_PICMG_CMD_SET_FRU_LED_STATE 0x07
420#define IPMI_PICMG_CMD_GET_FRU_LED_STATE 0x08
421#define IPMI_PICMG_CMD_SET_IPMB_STATE 0x09
422#define IPMI_PICMG_CMD_SET_FRU_ACTIVATION_POLICY 0x0A
423#define IPMI_PICMG_CMD_GET_FRU_ACTIVATION_POLICY 0x0B
424#define IPMI_PICMG_CMD_SET_FRU_ACTIVATION 0x0C
425#define IPMI_PICMG_CMD_GET_DEVICE_LOCATOR_RECORD 0x0D
426#define IPMI_PICMG_CMD_SET_PORT_STATE 0x0E
427#define IPMI_PICMG_CMD_GET_PORT_STATE 0x0F
428#define IPMI_PICMG_CMD_COMPUTE_POWER_PROPERTIES 0x10
429#define IPMI_PICMG_CMD_SET_POWER_LEVEL 0x11
430#define IPMI_PICMG_CMD_GET_POWER_LEVEL 0x12
431#define IPMI_PICMG_CMD_RENEGOTIATE_POWER 0x13
432#define IPMI_PICMG_CMD_GET_FAN_SPEED_PROPERTIES 0x14
433#define IPMI_PICMG_CMD_SET_FAN_LEVEL 0x15
434#define IPMI_PICMG_CMD_GET_FAN_LEVEL 0x16
435#define IPMI_PICMG_CMD_BUSED_RESOURCE 0x17
436#define IPMI_PICMG_CMD_IPMB_LINK_INFO 0x18
437#define IPMI_PICMG_CMD_SET_AMC_PORT_STATE 0x19
438#define IPMI_PICMG_CMD_GET_AMC_PORT_STATE 0x1A
439#define IPMI_PICMG_CMD_SHELF_MANAGER_IPMB_ADDRESS 0x1B
440#define IPMI_PICMG_CMD_SET_FAN_POLICY 0x1C
441#define IPMI_PICMG_CMD_GET_FAN_POLICY 0x1D
442#define IPMI_PICMG_CMD_FRU_CONTROL_CAPABILITIES 0x1E
443#define IPMI_PICMG_CMD_FRU_INVENTORY_DEVICE_LOCK_CONTROL 0x1F
444#define IPMI_PICMG_CMD_FRU_INVENTORY_DEVICE_WRITE 0x20
445#define IPMI_PICMG_CMD_GET_SHELF_MANAGER_IP_ADDRESSES 0x21
446#define IPMI_PICMG_CMD_SHELF_POWER_ALLOCATION 0x22
447#define IPMI_PICMG_CMD_GET_TELCO_ALARM_CAPABILITY 0x29
448/* HPM Commands */
449#define IPMI_PICMG_CMD_HPM_GET_UPGRADE_CAPABILITIES 0x2E
450#define IPMI_PICMG_CMD_HPM_GET_COMPONENT_PROPERTIES 0x2F
451#define IPMI_PICMG_CMD_HPM_ABORT_FIRMWARE_UPGRADE 0x30
452#define IPMI_PICMG_CMD_HPM_INITIATE_UPGRADE_ACTION 0x31
453#define IPMI_PICMG_CMD_HPM_UPLOAD_FIRMWARE_BLOCK 0x32
454#define IPMI_PICMG_CMD_HPM_FINISH_FIRMWARE_UPLOAD 0x33
455#define IPMI_PICMG_CMD_HPM_GET_UPGRADE_STATUS 0x34
456#define IPMI_PICMG_CMD_HPM_ACTIVATE_FIRMWARE 0x35
457#define IPMI_PICMG_CMD_HPM_QUERY_SELF_RESULTS 0x36
458#define IPMI_PICMG_CMD_HPM_QUERY_ROLLBACK_STATUS 0x37
459#define IPMI_PICMG_CMD_HPM_INITIATE_MANUAL_ROLLBACK 0x38
469#define IPMI_CUSTOM_CMD_MMC_GET_FREE_HEAP 0x01
470#define IPMI_CUSTOM_CMD_GET_GIT_HASH 0x02
471#define IPMI_CUSTOM_CMD_WRITE_CLOCK_CONFIG 0x03
472#define IPMI_CUSTOM_CMD_READ_CLOCK_CONFIG 0x04
477#define IPMI_EVENT_MESSAGE_REV 0x04
478
483/* Completion Codes */
484#define IPMI_CC_OK 0x00
485#define IPMI_CC_NODE_BUSY 0xC0
486#define IPMI_CC_INV_CMD 0xC1
487#define IPMI_CC_INV_CMD_FOR_LUN 0xC2
488#define IPMI_CC_TIMEOUT 0xC3
489#define IPMI_CC_OUT_OF_SPACE 0xC4
490#define IPMI_CC_RES_CANCELED 0xC5
491#define IPMI_CC_REQ_DATA_TRUNC 0xC6
492#define IPMI_CC_REQ_DATA_INV_LENGTH 0xC7
493#define IPMI_CC_REQ_DATA_FIELD_EXCEED 0xC8
494#define IPMI_CC_PARAM_OUT_OF_RANGE 0xC9
495#define IPMI_CC_CANT_RET_NUM_REQ_BYTES 0xCA
496#define IPMI_CC_REQ_DATA_NOT_PRESENT 0xCB
497#define IPMI_CC_INV_DATA_FIELD_IN_REQ 0xCC
498#define IPMI_CC_ILL_SENSOR_OR_RECORD 0xCD
499#define IPMI_CC_RESP_COULD_NOT_BE_PRV 0xCE
500#define IPMI_CC_CANT_RESP_DUPLI_REQ 0xCF
501#define IPMI_CC_CANT_RESP_SDRR_UPDATE 0xD0
502#define IPMI_CC_CANT_RESP_FIRM_UPDATE 0xD1
503#define IPMI_CC_CANT_RESP_BMC_INIT 0xD2
504#define IPMI_CC_DESTINATION_UNAVAILABLE 0xD3
505#define IPMI_CC_INSUFFICIENT_PRIVILEGES 0xD4
506#define IPMI_CC_NOT_SUPPORTED_PRESENT_STATE 0xD5
507#define IPMI_CC_ILLEGAL_COMMAND_DISABLED 0xD6
508#define IPMI_CC_COMMAND_IN_PROGRESS 0x80
509#define IPMI_CC_UNSPECIFIED_ERROR 0xFF
518/* FRU Control codes */
519#define FRU_CTLCODE_COLD_RST 0x00
520#define FRU_CTLCODE_WARM_RST 0x01
521#define FRU_CTLCODE_REBOOT 0x02
522#define FRU_CTLCODE_DIAGNOSTIC_INTERRUPT 0x03
523#define FRU_CTLCODE_QUIESCE 0x04
524
530typedef void (* t_req_handler)(ipmi_msg * req, ipmi_msg * resp);
531
535typedef struct{
536 uint8_t netfn;
537 uint8_t cmd;
540
545
550
567#define IPMI_HANDLER(name, netfn_id, cmd_id, args...) \
568 void ipmi_handler_##netfn_id##__##cmd_id##_f(args); \
569 const t_req_handler_record __attribute__ ((section (".ipmi_handlers"))) ipmi_handler_##netfn_id##__##cmd_id##_s = { .req_handler = ipmi_handler_##netfn_id##__##cmd_id##_f , .netfn = netfn_id, .cmd = cmd_id }; \
570 void ipmi_handler_##netfn_id##__##cmd_id##_f(args)
571
572/* Function Prototypes */
573
582void IPMITask ( void *pvParameters );
583
589void ipmi_init ( void );
590
599t_req_handler ipmi_retrieve_handler(uint8_t netfn, uint8_t cmd);
600
614ipmb_error ipmi_event_send( sensor_t * sensor, uint8_t assert_deassert, uint8_t *evData, uint8_t length);
615
616#endif
Definitions used in IPMB Layer.
ipmb_error
IPMB errors enumeration.
Definition ipmb.h:181
const t_req_handler_record * _eipmi_handlers
Pointer to IPMI Handler record list final byte stored in ROM.
void IPMITask(void *pvParameters)
IPMI dispatcher task.
Definition ipmi.c:58
void(* t_req_handler)(ipmi_msg *req, ipmi_msg *resp)
IPMI Handler function type definition.
Definition ipmi.h:530
void ipmi_init(void)
Initializes the IPMI Dispatcher.
Definition ipmi.c:115
ipmb_error ipmi_event_send(sensor_t *sensor, uint8_t assert_deassert, uint8_t *evData, uint8_t length)
Sends an event message (Platform Event) via IPMI.
Definition ipmi.c:159
const t_req_handler_record * _ipmi_handlers
Pointer to IPMI Handler record list start byte stored in ROM.
t_req_handler ipmi_retrieve_handler(uint8_t netfn, uint8_t cmd)
Finds a handler associated with a given netfunction and command.
Definition ipmi.c:130
IPMI message struct.
Definition ipmb.h:142
Definition sdr.h:181
IPMI Handler record structure used to index all handlers.
Definition ipmi.h:535
uint8_t cmd
Definition ipmi.h:537
uint8_t netfn
Definition ipmi.h:536
t_req_handler req_handler
Definition ipmi.h:538