| Vishwa | 4be4b7a | 2015-10-31 22:55:50 -0500 | [diff] [blame] | 1 | #ifndef __IPMI_WRITE_FRU_DATA_H__ | 
|  | 2 | #define __IPMI_WRITE_FRU_DATA_H__ | 
|  | 3 |  | 
|  | 4 | #include <stdint.h> | 
|  | 5 | #include <stddef.h> | 
| vishwa | 13555bd | 2015-11-10 12:10:38 -0600 | [diff] [blame] | 6 | #include <systemd/sd-bus.h> | 
| Vishwa | 4be4b7a | 2015-10-31 22:55:50 -0500 | [diff] [blame] | 7 |  | 
| vishwa | f3ca352 | 2015-12-02 10:35:13 -0600 | [diff] [blame] | 8 | #ifndef __cplusplus | 
|  | 9 | #include <stdbool.h> // For bool variable | 
|  | 10 | #endif | 
|  | 11 |  | 
| Vishwa | 4be4b7a | 2015-10-31 22:55:50 -0500 | [diff] [blame] | 12 | // IPMI commands for Storage net functions. | 
|  | 13 | enum ipmi_netfn_storage_cmds | 
|  | 14 | { | 
|  | 15 | IPMI_CMD_WRITE_FRU_DATA = 0x12 | 
|  | 16 | }; | 
|  | 17 |  | 
|  | 18 | // Format of write fru data command | 
| vishwa | c93d6d4 | 2015-12-16 11:55:16 -0600 | [diff] [blame] | 19 | struct write_fru_data_t | 
| Vishwa | 4be4b7a | 2015-10-31 22:55:50 -0500 | [diff] [blame] | 20 | { | 
|  | 21 | uint8_t  frunum; | 
|  | 22 | uint8_t  offsetls; | 
|  | 23 | uint8_t  offsetms; | 
|  | 24 | uint8_t  data; | 
|  | 25 | }__attribute__ ((packed)); | 
|  | 26 |  | 
|  | 27 | // Per IPMI v2.0 FRU specification | 
|  | 28 | struct common_header | 
|  | 29 | { | 
|  | 30 | uint8_t fixed; | 
|  | 31 | uint8_t internal_offset; | 
|  | 32 | uint8_t chassis_offset; | 
|  | 33 | uint8_t board_offset; | 
|  | 34 | uint8_t product_offset; | 
|  | 35 | uint8_t multi_offset; | 
|  | 36 | uint8_t pad; | 
|  | 37 | uint8_t crc; | 
|  | 38 | }__attribute__((packed)); | 
|  | 39 |  | 
| Vishwa | 4be4b7a | 2015-10-31 22:55:50 -0500 | [diff] [blame] | 40 | // first byte in header is 1h per IPMI V2 spec. | 
|  | 41 | #define IPMI_FRU_HDR_BYTE_ZERO   1 | 
|  | 42 | #define IPMI_FRU_INTERNAL_OFFSET offsetof(struct common_header, internal_offset) | 
|  | 43 | #define IPMI_FRU_CHASSIS_OFFSET  offsetof(struct common_header, chassis_offset) | 
|  | 44 | #define IPMI_FRU_BOARD_OFFSET    offsetof(struct common_header, board_offset) | 
|  | 45 | #define IPMI_FRU_PRODUCT_OFFSET  offsetof(struct common_header, product_offset) | 
|  | 46 | #define IPMI_FRU_MULTI_OFFSET    offsetof(struct common_header, multi_offset) | 
|  | 47 | #define IPMI_FRU_HDR_CRC_OFFSET  offsetof(struct common_header, crc) | 
|  | 48 | #define IPMI_EIGHT_BYTES         8 | 
|  | 49 |  | 
| vishwa | f3ca352 | 2015-12-02 10:35:13 -0600 | [diff] [blame] | 50 | #ifdef __cplusplus | 
|  | 51 | extern "C" { | 
|  | 52 | #endif | 
|  | 53 |  | 
|  | 54 | int ipmi_validate_fru_area(const uint8_t, const char *, sd_bus *, const bool); | 
|  | 55 |  | 
|  | 56 | #ifdef __cplusplus | 
|  | 57 | } // extern C | 
|  | 58 | #endif | 
| Vishwa | 4be4b7a | 2015-10-31 22:55:50 -0500 | [diff] [blame] | 59 | #endif |