add freeipmi source

This commit is contained in:
dmacias72 2016-03-24 14:02:30 -06:00
parent 46d0c3615e
commit bc10199d49
398 changed files with 89602 additions and 0 deletions

View File

@ -0,0 +1,50 @@
# Update the /usr/info/dir info-database, so that we will see the new
# "gmp" item in info root structure, if we type "info".
ErrCount=0
function echo_exit {
((ErrCount += $1))
if [ $1 -eq 0 ]; then
echo -n "$2 "
else
echo -n $3
fi
}
if [ -x /usr/bin/install-info ] ; then
echo -n "Installing info page... "
install-info --info-dir=/usr/info /usr/info/freeipmi-faq.info.gz 2>/dev/null
echo_exit $ErrCount "DONE" "FAILURE"
echo
else
echo "WARNING: Info pages cannot be installed!"
fi
( cd usr/sbin ; rm -rf rmcp-ping )
( cd usr/sbin ; ln -sf /usr/sbin/rmcpping rmcp-ping )
( cd usr/sbin ; rm -rf ipmi-power )
( cd usr/sbin ; ln -sf /usr/sbin/ipmipower ipmi-power )
( cd usr/sbin ; rm -rf ipmi-ping )
( cd usr/sbin ; ln -sf /usr/sbin/ipmiping ipmi-ping )
( cd usr/sbin ; rm -rf ipmi-detect )
( cd usr/sbin ; ln -sf /usr/sbin/ipmidetect ipmi-detect )
( cd usr/sbin ; rm -rf ipmi-console )
( cd usr/sbin ; ln -sf /usr/sbin/ipmiconsole ipmi-console )
( cd usr/sbin ; rm -rf pef-config )
( cd usr/sbin ; ln -sf /usr/sbin/ipmi-pef-config pef-config )
( cd usr/lib ; rm -rf libipmidetect.so )
( cd usr/lib ; ln -sf libipmidetect.so.0.0.0 libipmidetect.so )
( cd usr/lib ; rm -rf libipmidetect.so.0 )
( cd usr/lib ; ln -sf libipmidetect.so.0.0.0 libipmidetect.so.0 )
( cd usr/lib ; rm -rf libipmimonitoring.so )
( cd usr/lib ; ln -sf libipmimonitoring.so.5.0.6 libipmimonitoring.so )
( cd usr/lib ; rm -rf libipmimonitoring.so.5 )
( cd usr/lib ; ln -sf libipmimonitoring.so.5.0.6 libipmimonitoring.so.5 )
( cd usr/lib ; rm -rf libipmiconsole.so )
( cd usr/lib ; ln -sf libipmiconsole.so.2.3.2 libipmiconsole.so )
( cd usr/lib ; rm -rf libipmiconsole.so.2 )
( cd usr/lib ; ln -sf libipmiconsole.so.2.3.2 libipmiconsole.so.2 )
( cd usr/lib ; rm -rf libfreeipmi.so )
( cd usr/lib ; ln -sf libfreeipmi.so.17.0.0 libfreeipmi.so )
( cd usr/lib ; rm -rf libfreeipmi.so.17 )
( cd usr/lib ; ln -sf libfreeipmi.so.17.0.0 libfreeipmi.so.17 )

View File

@ -0,0 +1,14 @@
freeipmi: FreeIPMI (GNU implementation of the IPMI protocol)
freeipmi:
freeipmi: FreeIPMI provides in-band and out-of-band IPMI software based on
freeipmi: the IPMI v1.5/2.0 specification. The IPMI specification defines a
freeipmi: set of interfaces for platform management and is implemented by a
freeipmi: number vendors for system management. The features of IPMI that
freeipmi: most users will be interested in are sensor monitoring, system event
freeipmi: monitoring, power control, and serial-over-LAN (SOL). The FreeIPMI
freeipmi: tools and libraries provide users with the ability to access and
freeipmi: utilize these and many other features. A number of useful features
freeipmi: for large HPC or cluster environments have also been implemented
freeipmi: into FreeIPMI.
freeipmi:
freeipmi: Packaged by Derek Macias

View File

@ -0,0 +1,3 @@
glibc-solibs >= 2.17
libgcrypt >= 1.6.5
libgpg-error >= 1.21

View File

@ -0,0 +1,375 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_API_H
#define IPMI_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/* ERROR CODE NOTES
*
* IPMI_ERR_BMC_BUSY vs IPMI_ERR_DRIVER_BUSY
*
* BMC_BUSY indicates the BMC cannot handle more requests, it is an
* error typically from a completion code returned from the BMC. The
* DRIVER_BUSY error indicates a driver is too busy to handle
* additional requests, the error does not come from the BMC.
*
* IPMI_ERR_MESSAGE_TIMEOUT
*
* message timeout is typical of bridging commands. The
* session/connection has not timed out and is fine, but a
* bridging command could not get its bridged response back in a
* reasonable timeframe.
*/
/* IPMI COMPLETION CODE / RMCPPLUS CODE MAPPING
*
* For most users, the high level error codes listed below will
* suffice. However, for those who want/need to see deeper IPMI
* completion code or RMCPPlus errors, the following are mappings of
* IPMI completion codes and RMCPPlus codes to their respective error
* codes.
*
* Not that other factors outside of completion codes/RMCPPlus codes
* could also lead to these IPMI errors. For example, depending on
* motherboard support of username types, a IPMI_ERR_USERNAME_INVALID
* could be returned even though no IPMI error occurred. In addition,
* completion codes/RMCPPlus codes could map to different error codes,
* depending on when the error occurred (such as during session
* authentication vs. after authentication).
*
* (*) - Completion code is specific to an IPMI command
*
* IPMI_ERR_USERNAME_INVALID
* - IPMI_COMP_CODE_GET_SESSION_CHALLENGE_INVALID_USERNAME (*)
* - IPMI_COMP_CODE_GET_SESSION_CHALLENGE_NULL_USERNAME_NOT_ENABLED (*)
*
* IPMI_ERR_PASSWORD_INVALID
* - RMCPPLUS_STATUS_INVALID_INTEGRITY_CHECK_VALUE
*
* IPMI_ERR_PRIVILEGE_LEVEL_INSUFFICIENT
* - IPMI_COMP_CODE_INSUFFICIENT_PRIVILEGE_LEVEL
*
* IPMI_ERR_PRIVILEGE_LEVEL_CANNOT_BE_OBTAINED
* - IPMI_COMP_CODE_ACTIVATE_SESSION_EXCEEDS_PRIVILEGE_LEVEL (*)
* - IPMI_COMP_CODE_INSUFFICIENT_PRIVILEGE_LEVEL
* - IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_NOT_AVAILABLE_FOR_USER (*)
* - IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_EXCEEDS_USER_PRIVILEGE_LIMIT (*)
* - RMCPPLUS_STATUS_INVALID_ROLE
* - RMCPPLUS_STATUS_UNAUTHORIZED_ROLE_OR_PRIVILEGE_LEVEL_REQUESTED
*
* IPMI_ERR_CIPHER_SUITE_ID_UNAVAILABLE
* - RMCPPLUS_STATUS_NO_CIPHER_SUITE_MATCH_WITH_PROPOSED_SECURITY_ALGORITHMS
*
* IPMI_ERR_MESSAGE_TIMEOUT
* - IPMI_COMP_CODE_COMMAND_TIMEOUT
*
* IPMI_ERR_COMMAND_INVALID_OR_UNSUPPORTED
* - IPMI_COMP_CODE_INVALID_COMMAND
* - IPMI_COMP_CODE_COMMAND_INVALID_FOR_LUN
* - IPMI_COMP_CODE_REQUEST_DATA_LENGTH_INVALID
* - IPMI_COMP_CODE_REQUEST_DATA_LENGTH_LIMIT_EXCEEDED
* - IPMI_COMP_CODE_PARAMETER_OUT_OF_RANGE
* - IPMI_COMP_CODE_INVALID_DATA_FIELD_IN_REQUEST
*
* IPMI_ERR_BMC_BUSY
* - IPMI_COMP_CODE_NODE_BUSY
* - IPMI_COMP_CODE_OUT_OF_SPACE
* - IPMI_COMP_CODE_SDR_REPOSITORY_IN_UPDATE_MODE
* - IPMI_COMP_CODE_DEVICE_IN_FIRMWARE_UPDATE_MODE
* - IPMI_COMP_CODE_BMC_INITIALIZATION_IN_PROGRESS
*
* All other IPMI completion codes will map to IPMI_ERR_BAD_COMPLETION_CODE.
* All other RMCPPlus codes will map to IPMI_ERR_BAD_RMCPPLUS_STATUS_CODE.
*/
enum ipmi_errnum
{
IPMI_ERR_SUCCESS = 0,
IPMI_ERR_CTX_NULL = 1,
IPMI_ERR_CTX_INVALID = 2,
IPMI_ERR_PERMISSION = 3,
IPMI_ERR_USERNAME_INVALID = 4,
IPMI_ERR_PASSWORD_INVALID = 5,
IPMI_ERR_K_G_INVALID = 6,
IPMI_ERR_PRIVILEGE_LEVEL_INSUFFICIENT = 7,
IPMI_ERR_PRIVILEGE_LEVEL_CANNOT_BE_OBTAINED = 8,
IPMI_ERR_AUTHENTICATION_TYPE_UNAVAILABLE = 9,
IPMI_ERR_CIPHER_SUITE_ID_UNAVAILABLE = 10,
IPMI_ERR_PASSWORD_VERIFICATION_TIMEOUT = 11,
IPMI_ERR_IPMI_2_0_UNAVAILABLE = 12,
IPMI_ERR_CONNECTION_TIMEOUT = 13,
IPMI_ERR_SESSION_TIMEOUT = 14,
IPMI_ERR_DEVICE_ALREADY_OPEN = 15,
IPMI_ERR_DEVICE_NOT_OPEN = 16,
IPMI_ERR_DEVICE_NOT_SUPPORTED = 17,
IPMI_ERR_DEVICE_NOT_FOUND = 18,
IPMI_ERR_DRIVER_BUSY = 19,
IPMI_ERR_DRIVER_TIMEOUT = 20,
IPMI_ERR_MESSAGE_TIMEOUT = 21,
IPMI_ERR_COMMAND_INVALID_FOR_SELECTED_INTERFACE = 22,
IPMI_ERR_COMMAND_INVALID_OR_UNSUPPORTED = 23,
IPMI_ERR_BAD_COMPLETION_CODE = 24,
IPMI_ERR_BAD_RMCPPLUS_STATUS_CODE = 25,
IPMI_ERR_NOT_FOUND = 26,
IPMI_ERR_BMC_BUSY = 27,
IPMI_ERR_OUT_OF_MEMORY = 28,
IPMI_ERR_HOSTNAME_INVALID = 29,
IPMI_ERR_PARAMETERS = 30,
IPMI_ERR_DRIVER_PATH_REQUIRED = 31,
IPMI_ERR_IPMI_ERROR = 32,
IPMI_ERR_SYSTEM_ERROR = 33,
IPMI_ERR_INTERNAL_ERROR = 34,
IPMI_ERR_ERRNUMRANGE = 35,
};
typedef enum ipmi_errnum ipmi_errnum_type_t;
enum ipmi_driver_type
{
IPMI_DEVICE_UNKNOWN = 0,
IPMI_DEVICE_LAN = 1,
IPMI_DEVICE_LAN_2_0 = 2,
IPMI_DEVICE_KCS = 3,
IPMI_DEVICE_SMIC = 4,
IPMI_DEVICE_BT = 5,
IPMI_DEVICE_SSIF = 6,
IPMI_DEVICE_OPENIPMI = 7,
IPMI_DEVICE_SUNBMC = 8,
IPMI_DEVICE_INTELDCMI = 9,
};
typedef enum ipmi_driver_type ipmi_driver_type_t;
#define IPMI_SESSION_TIMEOUT_DEFAULT 20000
#define IPMI_RETRANSMISSION_TIMEOUT_DEFAULT 1000
#define IPMI_WORKAROUND_FLAGS_DEFAULT 0x00000000
/* For use w/ ipmi_ctx_open_outofband() */
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_AUTHENTICATION_CAPABILITIES 0x00000001
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_ACCEPT_SESSION_ID_ZERO 0x00000002
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_FORCE_PERMSG_AUTHENTICATION 0x00000004
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_CHECK_UNEXPECTED_AUTHCODE 0x00000008
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_BIG_ENDIAN_SEQUENCE_NUMBER 0x00000010
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_NO_AUTH_CODE_CHECK 0x00000020
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_NO_CHECKSUM_CHECK 0x00000040
/* For use w/ ipmi_ctx_open_outofband_2_0() */
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_2_0_AUTHENTICATION_CAPABILITIES 0x00000001
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_2_0_INTEL_2_0_SESSION 0x00000002
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_2_0_SUPERMICRO_2_0_SESSION 0x00000004
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_2_0_SUN_2_0_SESSION 0x00000008
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_2_0_OPEN_SESSION_PRIVILEGE 0x00000010
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_2_0_NON_EMPTY_INTEGRITY_CHECK_VALUE 0x00000020
#define IPMI_WORKAROUND_FLAGS_OUTOFBAND_2_0_NO_CHECKSUM_CHECK 0x00000040
/* For use w/ ipmi_ctx_open_inband() or ipmi_ctx_find_inband() */
#define IPMI_WORKAROUND_FLAGS_INBAND_ASSUME_IO_BASE_ADDRESS 0x00000001
#define IPMI_WORKAROUND_FLAGS_INBAND_SPIN_POLL 0x00000002
/* NONBLOCKING - for inband only, do no block if device busy.
*
* NOSESSION - for outofband only, do not create an IPMI session.
* Useful for the few IPMI payloads that do not require a session for
* an IPMI command to be sent (e.g. Get Channel Authentication
* Capabilities, Get System GUID, PET Acknowledge). Can only be set
* during opening, not later using ipmi_ctx_set_flags(). If set, you
* cannot call most IPMI payload functions, only those few that send
* data without a session.
*
* DEBUG_DUMP - for all interfaces
*
* NO_VALID_CHECK - do not check if IPMI response payloads are valid
* (i.e. all required fields set). Useful to workaround non-compliant
* motherboards. For example, if an IPMI payload did not return a
* required flag in the payload, an error would be returned. The
* error might possibly be a session timeout, as no valid response
* packet was ever received. This flag would skip the checks for
* valid fields and return the packet to the user.
*
* NO_LEGAL_CHECK - do no check if IPMI response payloads have
* sufficient data (i.e. completion code fields) to be legal. Useful
* to work around non-compliant motherboards. This flag is ignores
* the legality of IPMI payloads greater than the NO_VALID_CHECK
* option. For example, NO_VALID_CHECK would still return an error if
* an IPMI payload did not return a completion code in an IPMI
* response. The NO_LEGAL_CHECK would return such a packet to the
* user without an error. If the payload did not return a completion
* code, the completion code will not be checked for.
*
* IGNORE_AUTHENTICATION_CODE - for IPMI 1.5 packets, do not check the
* authentication code on response packets. Useful to workaround
* around non-compliant motherboards implementing invalid code/hashes.
* Note that this is different than
* IPMI_WORKAROUND_FLAGS_OUTOFBAND_NO_AUTH_CODE_CHECK above. With the
* workaround flag, all authentication codes will be ignored during
* the entire IPMI session. With this flag, specific packets can have
* their authentication codes ignored.
*/
#define IPMI_FLAGS_DEFAULT 0x00000000
#define IPMI_FLAGS_NONBLOCKING 0x00000001
#define IPMI_FLAGS_NOSESSION 0x00000002
#define IPMI_FLAGS_DEBUG_DUMP 0x00000010
#define IPMI_FLAGS_NO_VALID_CHECK 0x00000100
#define IPMI_FLAGS_NO_LEGAL_CHECK 0x00000200
#define IPMI_FLAGS_IGNORE_AUTHENTICATION_CODE 0x00000400
typedef struct ipmi_ctx *ipmi_ctx_t;
ipmi_ctx_t ipmi_ctx_create (void);
int ipmi_ctx_errnum (ipmi_ctx_t ctx);
char *ipmi_ctx_strerror (int errnum);
char *ipmi_ctx_errormsg (ipmi_ctx_t ctx);
int ipmi_ctx_get_flags (ipmi_ctx_t ctx, unsigned int *flags);
/* for changing flags mid-operation for corner cases */
int ipmi_ctx_set_flags (ipmi_ctx_t ctx, unsigned int flags);
/* For IPMI 1.5 sessions */
/* For session_timeout and retransmission_timeout, specify 0 for default */
int ipmi_ctx_open_outofband (ipmi_ctx_t ctx,
const char *hostname,
const char *username,
const char *password,
uint8_t authentication_type,
uint8_t privilege_level,
unsigned int session_timeout,
unsigned int retransmission_timeout,
unsigned int workaround_flags,
unsigned int flags);
/* For IPMI 2.0 sessions */
/* For session_timeout and retransmission_timeout, specify 0 for default */
int ipmi_ctx_open_outofband_2_0 (ipmi_ctx_t ctx,
const char *hostname,
const char *username,
const char *password,
const unsigned char *k_g,
unsigned int k_g_len,
uint8_t privilege_level,
uint8_t cipher_suite_id,
unsigned int session_timeout,
unsigned int retransmission_timeout,
unsigned int workaround_flags,
unsigned int flags);
/* For inband sessions */
int ipmi_ctx_open_inband (ipmi_ctx_t ctx,
ipmi_driver_type_t driver_type,
int disable_auto_probe,
uint16_t driver_address,
uint8_t register_spacing,
const char *driver_device,
unsigned int workaround_flags,
unsigned int flags);
/* like ipmi_ctx_open_inband, but finds probes/discovers an inband device */
/* returns 1 on driver found, 0 on not found, -1 on error */
/* if specified, driver type returned in 'driver_type' */
int ipmi_ctx_find_inband (ipmi_ctx_t ctx,
ipmi_driver_type_t *driver_type,
int disable_auto_probe,
uint16_t driver_address,
uint8_t register_spacing,
const char *driver_device,
unsigned int workaround_flags,
unsigned int flags);
/* Set target channel and slave address so all ipmi_cmd() calls and
* library API calls use ipmb.
*
* To set only one parameter, pass in NULL for the other parameter.
* When only one parameter is passed, the other will be the default
* target channel of IPMI_CHANNEL_NUMBER_PRIMARY_IPMB (0x0) or the
* default rs_addr of IPMI_SLAVE_ADDRESS_BMC (0x20).
*
* To reset to defaults, pass in NULL for both parameters.
*
* Can only be called after device opened.
*/
int ipmi_ctx_set_target (ipmi_ctx_t ctx,
uint8_t *channel_number,
uint8_t *rs_addr);
int ipmi_ctx_get_target (ipmi_ctx_t ctx,
uint8_t *channel_number,
uint8_t *rs_addr);
int ipmi_cmd (ipmi_ctx_t ctx,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
/* convenience function to perform a single bridged IPMI command.
* Will effectively call ipmi_ctx_set_target(), then ipmi_cmd(), then
* will set targets back to prior originals.
*/
int ipmi_cmd_ipmb (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t rs_addr,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
/* for request/response, byte #1 = cmd */
/* for response, byte #2 (typically) = completion code */
/* returns length written into buf_fs on success, -1 on error */
int ipmi_cmd_raw (ipmi_ctx_t ctx,
uint8_t lun,
uint8_t net_fn,
const void *buf_rq,
unsigned int buf_rq_len,
void *buf_rs,
unsigned int buf_rs_len);
/* convenience function to perform a single bridged IPMI raw command.
* Will effectively call ipmi_ctx_set_target(), then ipmi_cmd_raw(),
* then will set targets back to prior originals.
*/
int ipmi_cmd_raw_ipmb (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t rs_addr,
uint8_t lun,
uint8_t net_fn,
const void *buf_rq,
unsigned int buf_rq_len,
void *buf_rs,
unsigned int buf_rs_len);
int ipmi_ctx_close (ipmi_ctx_t ctx);
void ipmi_ctx_destroy (ipmi_ctx_t ctx);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_API_H */

View File

@ -0,0 +1,189 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_CHASSIS_CMDS_API_H
#define IPMI_CHASSIS_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_get_chassis_capabilities (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_chassis_status (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_chassis_control (ipmi_ctx_t ctx,
uint8_t chassis_control,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_chassis_identify (ipmi_ctx_t ctx,
const uint8_t *identify_interval,
const uint8_t *force_identify,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_front_panel_enables (ipmi_ctx_t ctx,
uint8_t disable_power_off_button_for_power_off_only,
uint8_t disable_reset_button,
uint8_t disable_diagnostic_interrupt_button,
uint8_t disable_standby_button_for_entering_standby,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_power_restore_policy (ipmi_ctx_t ctx,
uint8_t power_restore_policy,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_power_cycle_interval (ipmi_ctx_t ctx,
uint8_t interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_restart_cause (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_boot_options (ipmi_ctx_t ctx,
uint8_t parameter_selector,
uint8_t parameter_valid,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_boot_options_set_in_progress (ipmi_ctx_t ctx,
uint8_t parameter_valid,
uint8_t state,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_boot_options_BMC_boot_flag_valid_bit_clearing (ipmi_ctx_t ctx,
uint8_t parameter_valid,
uint8_t dont_clear_on_power_up,
uint8_t dont_clear_on_pushbutton_reset_soft_reset,
uint8_t dont_clear_on_watchdog_timeout,
uint8_t dont_clear_on_chassis_control,
uint8_t dont_clear_on_PEF,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_boot_options_boot_info_acknowledge (ipmi_ctx_t ctx,
uint8_t parameter_valid,
const uint8_t *bios_or_post_handled_boot_info,
const uint8_t *os_loader_handled_boot_info,
const uint8_t *os_or_service_partition_handled_boot_info,
const uint8_t *sms_handled_boot_info,
const uint8_t *oem_handled_boot_info,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_boot_options_boot_flags (ipmi_ctx_t ctx,
uint8_t parameter_valid,
uint8_t bios_boot_type,
uint8_t boot_flags_persistent,
uint8_t boot_flags_valid,
uint8_t lock_out_reset_button,
uint8_t screen_blank,
uint8_t boot_device,
uint8_t lock_keyboard,
uint8_t cmos_clear,
uint8_t console_redirection,
uint8_t lock_out_sleep_button,
uint8_t user_password_bypass,
uint8_t force_progress_event_traps,
uint8_t firmware_bios_verbosity,
uint8_t lock_out_via_power_button,
uint8_t bios_mux_control_override,
uint8_t bios_shared_mode_override,
uint8_t device_instance_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_boot_options_boot_initiator_info (ipmi_ctx_t ctx,
uint8_t parameter_valid,
uint8_t boot_source_channel_number,
uint32_t session_id,
uint32_t boot_info_timestamp,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_boot_options_boot_initiator_mailbox (ipmi_ctx_t ctx,
uint8_t parameter_valid,
uint8_t set_selector,
const void *block_data,
unsigned int block_data_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options (ipmi_ctx_t ctx,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options_set_in_progress (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options_service_partition_selector (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options_service_partition_scan (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options_BMC_boot_flag_valid_bit_clearing (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options_boot_info_acknowledge (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options_boot_flags (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options_boot_initiator_info (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_boot_options_boot_initiator_mailbox (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_power_on_hours_counter (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_CHASSIS_CMDS_API_H */

View File

@ -0,0 +1,210 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* LLNL-CODE-413270
*
* This file is part of Ipmi-Dcmi, tools and libraries to support the
* data center manageability interface (DCMI). For details, see
* http://www.llnl.gov/linux/.
*
* Ipmi-Dcmi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-Dcmi is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-Dcmi. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_DCMI_CMDS_API_H
#define IPMI_DCMI_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_dcmi_get_dcmi_capability_info (ipmi_ctx_t ctx,
uint8_t parameter_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_capability_info_supported_dcmi_capabilities (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_capability_info_mandatory_platform_attributes (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_capability_info_optional_platform_attributes (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_capability_info_manageability_access_attributes (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_capability_info_enhanced_system_power_statistics_attributes (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_dcmi_configuration_parameters (ipmi_ctx_t ctx,
uint8_t parameter_selector,
uint8_t set_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_dcmi_configuration_parameters_activate_dhcp (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t activate,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_dcmi_configuration_parameters_discovery_configuration (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t option_12,
uint8_t option_60_with_option_43,
uint8_t random_back_off,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_1 (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t initial_timeout_interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_2 (ipmi_ctx_t ctx,
uint8_t set_selector,
uint16_t server_contact_timeout_interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_3 (ipmi_ctx_t ctx,
uint8_t set_selector,
uint16_t server_contact_retry_interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_configuration_parameters (ipmi_ctx_t ctx,
uint8_t parameter_selector,
uint8_t set_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_configuration_parameters_discovery_configuration (ipmi_ctx_t ctx,
uint8_t set_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_1 (ipmi_ctx_t ctx,
uint8_t set_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_2 (ipmi_ctx_t ctx,
uint8_t set_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_3 (ipmi_ctx_t ctx,
uint8_t set_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_asset_tag (ipmi_ctx_t ctx,
uint8_t offset_to_read,
uint8_t number_of_bytes_to_read,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_asset_tag (ipmi_ctx_t ctx,
uint8_t offset_to_write,
uint8_t number_of_bytes_to_write,
const void *data,
unsigned int data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_management_controller_identifier_string (ipmi_ctx_t ctx,
uint8_t offset_to_read,
uint8_t number_of_bytes_to_read,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_management_controller_identifier_string (ipmi_ctx_t ctx,
uint8_t offset_to_write,
uint8_t number_of_bytes_to_write,
const void *data,
unsigned int data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_dcmi_sensor_info (ipmi_ctx_t ctx,
uint8_t sensor_type,
uint8_t entity_id,
uint8_t entity_instance,
uint8_t entity_instance_start,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_power_reading (ipmi_ctx_t ctx,
uint8_t mode,
uint8_t mode_attributes,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_power_limit (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_power_limit (ipmi_ctx_t ctx,
uint8_t exception_actions,
uint16_t power_limit_requested,
uint32_t correction_time_limit,
uint16_t management_application_statistics_sampling_period,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_activate_deactivate_power_limit (ipmi_ctx_t ctx,
uint8_t power_limit_activation,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_thermal_limit (ipmi_ctx_t ctx,
uint8_t entity_id,
uint8_t entity_instance,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_set_thermal_limit (ipmi_ctx_t ctx,
uint8_t entity_id,
uint8_t entity_instance,
uint8_t temperature_limit,
uint8_t exception_actions_log_event_to_sel_only,
uint8_t exception_actions_hard_power_off_system_and_log_event,
uint16_t exception_time,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_dcmi_get_temperature_reading (ipmi_ctx_t ctx,
uint8_t sensor_type,
uint8_t entity_id,
uint8_t entity_instance,
uint8_t entity_instance_start,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_DCMI_CMDS_API_H */

View File

@ -0,0 +1,61 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_DEVICE_GLOBAL_CMDS_API_H
#define IPMI_DEVICE_GLOBAL_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_get_device_id (ipmi_ctx_t ctx, fiid_obj_t obj_cmd_rs);
int ipmi_cmd_cold_reset (ipmi_ctx_t ctx, fiid_obj_t obj_cmd_rs);
int ipmi_cmd_warm_reset (ipmi_ctx_t ctx, fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_acpi_power_state (ipmi_ctx_t ctx,
uint8_t system_power_state_enumeration,
uint8_t set_system_power_state,
uint8_t device_power_state_enumeration,
uint8_t set_device_power_state,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_acpi_power_state (ipmi_ctx_t ctx, fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_self_test_results (ipmi_ctx_t ctx, fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_device_guid (ipmi_ctx_t ctx, fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_DEVICE_GLOBAL_CMDS_API_H */

View File

@ -0,0 +1,68 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_EVENT_CMDS_API_H
#define IPMI_EVENT_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_set_event_receiver (ipmi_ctx_t ctx,
uint8_t event_receiver_slave_address,
uint8_t event_receiver_lun,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_event_receiver_ipmb (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t slave_address,
uint8_t event_receiver_slave_address,
uint8_t event_receiver_lun,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_event_receiver (ipmi_ctx_t ctx, fiid_obj_t obj_cmd_rs);
/* generator_id is optional */
int ipmi_cmd_platform_event (ipmi_ctx_t ctx,
uint8_t *generator_id,
uint8_t event_message_format_version,
uint8_t sensor_type,
uint8_t sensor_number,
uint8_t event_type_code,
uint8_t event_dir,
uint8_t event_data1,
uint8_t event_data2,
uint8_t event_data3,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_EVENT_CMDS_API_H */

View File

@ -0,0 +1,139 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_API_H
#define IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_get_netfn_support (ipmi_ctx_t ctx,
uint8_t channel_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_command_support (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t operation,
uint8_t lun,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_command_sub_function_support (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_configurable_commands (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t operation,
uint8_t lun,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_configurable_command_sub_functions (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_command_enables (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t operation,
uint8_t lun,
uint8_t *enable_disable_bitmask,
unsigned int enable_disable_bitmask_len,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_command_enables (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t operation,
uint8_t lun,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_command_sub_function_enables (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t sub_function_enables1,
uint32_t *sub_function_enables2,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_command_sub_function_enables_defining_body_code (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint8_t defining_body_code,
uint32_t sub_function_enables1,
uint32_t *sub_function_enables2,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_command_sub_function_enables_oem_iana (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t oem_iana,
uint32_t sub_function_enables1,
uint32_t *sub_function_enables2,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_command_sub_function_enables (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_oem_netfn_iana_support (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t net_fn,
uint8_t list_index,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_API_H */

View File

@ -0,0 +1,75 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
* Copyright (C) 2007 The Regents of the University of California.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* UCRL-CODE-232183
*
* This file is part of Ipmi-fru, a tool used for retrieving
* motherboard field replaceable unit (FRU) information. For details,
* see http://www.llnl.gov/linux/.
*
* Ipmi-fru is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-fru is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-fru. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_FRU_INVENTORY_DEVICE_CMDS_API_H
#define IPMI_FRU_INVENTORY_DEVICE_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_get_fru_inventory_area_info (ipmi_ctx_t ctx,
uint8_t fru_device_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_read_fru_data (ipmi_ctx_t ctx,
uint8_t fru_device_id,
uint16_t fru_inventory_offset_to_read,
uint8_t count_to_read,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_INVENTORY_DEVICE_CMDS_API_H */

View File

@ -0,0 +1,415 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_LAN_CMDS_API_H
#define IPMI_LAN_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_set_lan_configuration_parameters (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_set_in_progress (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t state,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_authentication_type_enables (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t callback_level_none,
uint8_t callback_level_md2,
uint8_t callback_level_md5,
uint8_t callback_level_straight_password,
uint8_t callback_level_oem_proprietary,
uint8_t user_level_none,
uint8_t user_level_md2,
uint8_t user_level_md5,
uint8_t user_level_straight_password,
uint8_t user_level_oem_proprietary,
uint8_t operator_level_none,
uint8_t operator_level_md2,
uint8_t operator_level_md5,
uint8_t operator_level_straight_password,
uint8_t operator_level_oem_proprietary,
uint8_t admin_level_none,
uint8_t admin_level_md2,
uint8_t admin_level_md5,
uint8_t admin_level_straight_password,
uint8_t admin_level_oem_proprietary,
uint8_t oem_level_none,
uint8_t oem_level_md2,
uint8_t oem_level_md5,
uint8_t oem_level_straight_password,
uint8_t oem_level_oem_proprietary,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_ip_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint32_t ip_address,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_ip_address_source (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t ip_address_source,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_subnet_mask (ipmi_ctx_t ctx,
uint8_t channel_number,
uint32_t subnet_mask,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_ipv4_header_parameters (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t time_to_live,
uint8_t flags,
uint8_t type_of_service,
uint8_t precedence,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_primary_rmcp_port_number (ipmi_ctx_t ctx,
uint8_t channel_number,
uint16_t primary_rmcp_port_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_secondary_rmcp_port_number (ipmi_ctx_t ctx,
uint8_t channel_number,
uint16_t secondary_rmcp_port_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_mac_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint64_t mac_address,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_default_gateway_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint32_t ip_address,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_default_gateway_mac_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint64_t mac_address,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_backup_gateway_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint32_t ip_address,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_backup_gateway_mac_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint64_t mac_address,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_bmc_generated_arp_control (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t bmc_generated_gratuitous_arps,
uint8_t bmc_generated_arp_responses,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_gratuitous_arp_interval (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t gratuitous_arp_interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_community_string (ipmi_ctx_t ctx,
uint8_t channel_number,
const char *community_string,
unsigned int community_string_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_destination_type (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t destination_selector,
uint8_t destination_type,
uint8_t alert_acknowledge,
uint8_t alert_acknowledge_timeout,
uint8_t retries,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_destination_addresses (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t destination_selector,
uint8_t gateway_selector,
uint32_t alerting_ip_address,
uint64_t alerting_mac_address,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_vlan_id (ipmi_ctx_t ctx,
uint8_t channel_number,
uint16_t vlan_id,
uint8_t vlan_id_enable,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_vlan_priority (ipmi_ctx_t ctx,
uint8_t channel_number,
uint32_t vlan_priority,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t maximum_privilege_for_cipher_suite_1,
uint8_t maximum_privilege_for_cipher_suite_2,
uint8_t maximum_privilege_for_cipher_suite_3,
uint8_t maximum_privilege_for_cipher_suite_4,
uint8_t maximum_privilege_for_cipher_suite_5,
uint8_t maximum_privilege_for_cipher_suite_6,
uint8_t maximum_privilege_for_cipher_suite_7,
uint8_t maximum_privilege_for_cipher_suite_8,
uint8_t maximum_privilege_for_cipher_suite_9,
uint8_t maximum_privilege_for_cipher_suite_10,
uint8_t maximum_privilege_for_cipher_suite_11,
uint8_t maximum_privilege_for_cipher_suite_12,
uint8_t maximum_privilege_for_cipher_suite_13,
uint8_t maximum_privilege_for_cipher_suite_14,
uint8_t maximum_privilege_for_cipher_suite_15,
uint8_t maximum_privilege_for_cipher_suite_16,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_lan_configuration_parameters_bad_password_threshold (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t user_disabled_event_message,
uint8_t bad_password_threshold_number,
uint16_t attempt_count_reset_interval,
uint16_t user_lockout_interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_set_in_progress (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_authentication_type_support (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_authentication_type_enables (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_ip_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_ip_address_source (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_mac_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_subnet_mask (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_ipv4_header_parameters (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_primary_rmcp_port_number (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_secondary_rmcp_port_number (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_bmc_generated_arp_control (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_gratuitous_arp_interval (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_default_gateway_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_default_gateway_mac_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_backup_gateway_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_backup_gateway_mac_address (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_community_string (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_number_of_destinations (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_destination_type (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_destination_addresses (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_vlan_id (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_vlan_priority (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entry_support (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entries (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_lan_configuration_parameters_bad_password_threshold (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_suspend_bmc_arps (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t gratuitous_arp_suspend,
uint8_t arp_response_suspend,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_ip_udp_rmcp_statistics (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t clear_all_statistics,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_LAN_CMDS_API_H */

View File

@ -0,0 +1,408 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_MESSAGING_SUPPORT_CMDS_API_H
#define IPMI_MESSAGING_SUPPORT_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_set_bmc_global_enables (ipmi_ctx_t ctx,
uint8_t receive_message_queue_interrupt,
uint8_t event_message_buffer_full_interrupt,
uint8_t event_message_buffer,
uint8_t system_event_logging,
uint8_t oem_0,
uint8_t oem_1,
uint8_t oem_2,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_bmc_global_enables (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_clear_message_flags (ipmi_ctx_t ctx,
uint8_t receive_message_queue,
uint8_t event_message_buffer,
uint8_t watchdog_pre_timeout_interrupt_flag,
uint8_t oem_0,
uint8_t oem_1,
uint8_t oem_2,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_message_flags (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_enable_message_channel_receive (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t channel_operation,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_message (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_send_message (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t message_authentication,
uint8_t message_encryption,
uint8_t tracking_operation,
const void *message_data,
unsigned int message_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_read_event_message_buffer (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_interface_capabilities (ipmi_ctx_t ctx,
uint8_t system_interface,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_interface_capabilities_ssif (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_interface_capabilities_kcs (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_bt_interface_capabilities (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_master_write_read (ipmi_ctx_t ctx,
uint8_t bus_type,
uint8_t bus_id,
uint8_t channel_number,
uint8_t slave_address,
uint8_t read_count,
const void *data,
unsigned int data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_channel_authentication_capabilities (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t maximum_privilege_level,
uint8_t get_ipmi_v20_extended_data,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_guid (ipmi_ctx_t ctx, fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters (ipmi_ctx_t ctx,
uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_set_in_progress (ipmi_ctx_t ctx,
uint8_t state,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_system_firmware_version_first_set (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_system_firmware_version (ipmi_ctx_t ctx,
uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_system_name_first_set (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_system_name (ipmi_ctx_t ctx,
uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_primary_operating_system_name_first_set (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_primary_operating_system_name (ipmi_ctx_t ctx,
uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_operating_system_name_first_set (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_operating_system_name (ipmi_ctx_t ctx,
uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_present_os_version_number_first_set (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_present_os_version_number (ipmi_ctx_t ctx,
uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_bmc_url_first_set (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_bmc_url (ipmi_ctx_t ctx,
uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_base_os_hypervisor_url_first_set (ipmi_ctx_t ctx,
uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_system_info_parameters_base_os_hypervisor_url (ipmi_ctx_t ctx,
uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_set_in_progress (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_system_firmware_version_first_set (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_system_firmware_version (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_system_name_first_set (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_system_name (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_primary_operating_system_name_first_set (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_primary_operating_system_name (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_operating_system_name_first_set (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_operating_system_name (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_present_os_version_number_first_set (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_present_os_version_number (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_bmc_url_first_set (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_bmc_url (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_base_os_hypervisor_url_first_set (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_system_info_parameters_base_os_hypervisor_url (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_session_challenge (ipmi_ctx_t ctx,
uint8_t authentication_type,
const char *user_name,
unsigned int user_name_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_activate_session (ipmi_ctx_t ctx,
uint8_t authentication_type,
uint8_t maximum_privilege_level,
const void *challenge_string,
unsigned int challenge_string_len,
uint32_t initial_outbound_sequence_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_session_privilege_level (ipmi_ctx_t ctx,
uint8_t privilege_level,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_close_session (ipmi_ctx_t ctx,
uint32_t session_id,
uint8_t *session_handle,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_channel_access (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t ipmi_messaging_access_mode,
uint8_t user_level_authentication,
uint8_t per_message_authentication,
uint8_t pef_alerting,
uint8_t channel_access_set,
uint8_t channel_privilege_level_limit,
uint8_t channel_privilege_level_limit_set,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_channel_access (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t channel_access_get,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_channel_info (ipmi_ctx_t ctx,
uint8_t channel_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_channel_security_keys (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t operation,
uint8_t key_id,
const void *key_value,
unsigned int key_value_len,
fiid_obj_t obj_cmd_rq);
int ipmi_cmd_set_user_access (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t user_ipmi_messaging,
uint8_t user_link_authentication,
uint8_t user_restricted_to_callback,
uint8_t change_bits_in_byte,
uint8_t user_id,
uint8_t user_privilege_level_limit,
uint8_t user_session_number_limit,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_user_access (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t user_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_user_name (ipmi_ctx_t ctx,
uint8_t user_id,
const char *user_name,
unsigned int user_name_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_user_name (ipmi_ctx_t ctx,
uint8_t user_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_user_password (ipmi_ctx_t ctx,
uint8_t user_id,
uint8_t password_size,
uint8_t operation,
const char *password,
unsigned int password_len,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_MESSAGING_SUPPORT_CMDS_API_H */

View File

@ -0,0 +1,306 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_OEM_INTEL_NODE_MANAGER_CMDS_API_H
#define IPMI_OEM_INTEL_NODE_MANAGER_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
/*******************************************
* Intel *
*******************************************/
/*
* Intel Node Manager
*
* For Intel Chips, not just Intel Motherboards. Confirmed for:
*
* Intel S5500WB/Penguin Computing Relion 700
* Intel S2600JF/Appro 512X
* Intel S2600KP
* Intel S2600WT2
* Intel S2600WTT
* Inventec 5441/Dell Xanadu II
* Inventec 5442/Dell Xanadu III
* Quanta S99Q/Dell FS12-TY
* Quanta QSSC-S4R/Appro GB812X-CN
*/
int ipmi_cmd_oem_intel_node_manager_enable_disable_node_manager_policy_control (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t policy_enable_disable,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_node_manager_policy (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint8_t policy_enabled,
uint8_t policy_id,
uint8_t policy_trigger_type,
uint8_t policy_configuration_action,
uint8_t aggressive_cpu_power_correction,
uint8_t policy_storage_option,
uint8_t policy_exception_actions_send_alert,
uint8_t policy_exception_actions_shutdown_system,
uint8_t policy_power_domain,
uint16_t policy_target_limit,
uint32_t correction_time_limit,
uint16_t policy_trigger_limit,
uint16_t statistics_reporting_period,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_node_manager_policy_boot_time_policy (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint8_t policy_enabled,
uint8_t policy_id,
uint8_t policy_trigger_type,
uint8_t policy_configuration_action,
uint8_t aggressive_cpu_power_correction,
uint8_t policy_storage_option,
uint8_t policy_exception_actions_send_alert,
uint8_t policy_exception_actions_shutdown_system,
uint8_t policy_power_domain,
uint8_t platform_booting_mode,
uint8_t cores_disabled,
uint32_t correction_time_limit,
uint16_t policy_trigger_limit,
uint16_t statistics_reporting_period,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_node_manager_policy (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_node_manager_policy_alert_thresholds (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint8_t policy_id,
uint16_t *alert_threshold1,
uint16_t *alert_threshold2,
uint16_t *alert_threshold3,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_node_manager_policy_alert_thresholds (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_node_manager_policy_suspend_periods (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint8_t policy_id,
uint8_t *policy1_suspend_start_time,
uint8_t *policy1_suspend_stop_time,
uint8_t *policy1_suspend_period_recurrence_monday,
uint8_t *policy1_suspend_period_recurrence_tuesday,
uint8_t *policy1_suspend_period_recurrence_wednesday,
uint8_t *policy1_suspend_period_recurrence_thursday,
uint8_t *policy1_suspend_period_recurrence_friday,
uint8_t *policy1_suspend_period_recurrence_saturday,
uint8_t *policy1_suspend_period_recurrence_sunday,
uint8_t *policy2_suspend_start_time,
uint8_t *policy2_suspend_stop_time,
uint8_t *policy2_suspend_period_recurrence_monday,
uint8_t *policy2_suspend_period_recurrence_tuesday,
uint8_t *policy2_suspend_period_recurrence_wednesday,
uint8_t *policy2_suspend_period_recurrence_thursday,
uint8_t *policy2_suspend_period_recurrence_friday,
uint8_t *policy2_suspend_period_recurrence_saturday,
uint8_t *policy2_suspend_period_recurrence_sunday,
uint8_t *policy3_suspend_start_time,
uint8_t *policy3_suspend_stop_time,
uint8_t *policy3_suspend_period_recurrence_monday,
uint8_t *policy3_suspend_period_recurrence_tuesday,
uint8_t *policy3_suspend_period_recurrence_wednesday,
uint8_t *policy3_suspend_period_recurrence_thursday,
uint8_t *policy3_suspend_period_recurrence_friday,
uint8_t *policy3_suspend_period_recurrence_saturday,
uint8_t *policy3_suspend_period_recurrence_sunday,
uint8_t *policy4_suspend_start_time,
uint8_t *policy4_suspend_stop_time,
uint8_t *policy4_suspend_period_recurrence_monday,
uint8_t *policy4_suspend_period_recurrence_tuesday,
uint8_t *policy4_suspend_period_recurrence_wednesday,
uint8_t *policy4_suspend_period_recurrence_thursday,
uint8_t *policy4_suspend_period_recurrence_friday,
uint8_t *policy4_suspend_period_recurrence_saturday,
uint8_t *policy4_suspend_period_recurrence_sunday,
uint8_t *policy5_suspend_start_time,
uint8_t *policy5_suspend_stop_time,
uint8_t *policy5_suspend_period_recurrence_monday,
uint8_t *policy5_suspend_period_recurrence_tuesday,
uint8_t *policy5_suspend_period_recurrence_wednesday,
uint8_t *policy5_suspend_period_recurrence_thursday,
uint8_t *policy5_suspend_period_recurrence_friday,
uint8_t *policy5_suspend_period_recurrence_saturday,
uint8_t *policy5_suspend_period_recurrence_sunday,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_node_manager_policy_suspend_periods (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_reset_node_manager_statistics (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t mode,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_node_manager_statistics (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t mode,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_node_manager_capabilities (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint8_t policy_trigger_type,
uint8_t policy_type,
uint8_t policy_power_domain,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_node_manager_version (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_node_manager_power_draw_range (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
uint16_t minimum_power_draw,
uint16_t maximum_power_draw,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_node_manager_alert_destination (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t channel_number,
uint8_t alert_receiver_deactivation,
uint8_t destination_information,
uint8_t alert_string_selector,
uint8_t send_alert_string,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_node_manager_alert_destination_ipmb (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t channel_number,
uint8_t alert_receiver_deactivation,
uint8_t slave_address,
uint8_t alert_string_selector,
uint8_t send_alert_string,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_node_manager_alert_destination_lan (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t channel_number,
uint8_t alert_receiver_deactivation,
uint8_t destination_selector,
uint8_t alert_string_selector,
uint8_t send_alert_string,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_node_manager_alert_destination (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_set_turbo_synchronization_ratio (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t cpu_socket_number,
uint8_t active_cores_configuration,
uint8_t turbo_ratio_limit,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_turbo_synchronization_ratio (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t cpu_socket_number,
uint8_t active_cores_configuration,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_oem_intel_node_manager_get_limiting_policy_id (ipmi_ctx_t ctx,
uint8_t target_channel_number,
uint8_t target_slave_address,
uint8_t target_lun,
uint8_t domain_id,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_OEM_INTEL_NODE_MANAGER_CMDS_API_H */

View File

@ -0,0 +1,254 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_PEF_AND_ALERTING_CMDS_API_H
#define IPMI_PEF_AND_ALERTING_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_get_pef_capabilities (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_arm_pef_postpone_timer (ipmi_ctx_t ctx,
uint8_t pef_postpone_timeout,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters (ipmi_ctx_t ctx,
uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_set_in_progress (ipmi_ctx_t ctx,
uint8_t state,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_pef_control (ipmi_ctx_t ctx,
uint8_t pef,
uint8_t pef_event_messages,
uint8_t pef_startup_delay,
uint8_t pef_alert_startup_delay,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_pef_action_global_control (ipmi_ctx_t ctx,
uint8_t alert_action,
uint8_t power_down_action,
uint8_t reset_action,
uint8_t power_cycle_action,
uint8_t oem_action,
uint8_t diagnostic_interrupt,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_pef_startup_delay (ipmi_ctx_t ctx,
uint8_t pef_startup_delay,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_pef_alert_startup_delay (ipmi_ctx_t ctx,
uint8_t pef_alert_startup_delay,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_event_filter_table (ipmi_ctx_t ctx,
uint8_t filter_number,
uint8_t filter_configuration_type,
uint8_t filter_configuration_filter,
uint8_t event_filter_action_alert,
uint8_t event_filter_action_power_off,
uint8_t event_filter_action_reset,
uint8_t event_filter_action_power_cycle,
uint8_t event_filter_action_oem,
uint8_t event_filter_action_diagnostic_interrupt,
uint8_t event_filter_action_group_control_operation,
uint8_t alert_policy_number_policy_number,
uint8_t alert_policy_number_group_control_selector,
uint8_t event_severity,
uint8_t generator_id_byte1,
uint8_t generator_id_byte2,
uint8_t sensor_type,
uint8_t sensor_number,
uint8_t event_trigger,
uint16_t event_data1_offset_mask,
uint8_t event_data1_AND_mask,
uint8_t event_data1_compare1,
uint8_t event_data1_compare2,
uint8_t event_data2_AND_mask,
uint8_t event_data2_compare1,
uint8_t event_data2_compare2,
uint8_t event_data3_AND_mask,
uint8_t event_data3_compare1,
uint8_t event_data3_compare2,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_event_filter_table_data1_ (ipmi_ctx_t ctx,
uint8_t filter_number,
uint8_t filter_configuration_type,
uint8_t filter_configuration_filter,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_alert_policy_table (ipmi_ctx_t ctx,
uint8_t alert_policy_entry_number,
uint8_t policy_type,
uint8_t policy_enabled,
uint8_t policy_number,
uint8_t destination_selector,
uint8_t channel_number,
uint8_t alert_string_set_selector,
uint8_t event_specific_alert_string,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_alert_string_keys (ipmi_ctx_t ctx,
uint8_t string_selector,
uint8_t filter_number,
uint8_t set_number_for_string,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_pef_configuration_parameters_alert_strings (ipmi_ctx_t ctx,
uint8_t string_selector,
uint8_t block_selector,
const uint8_t *string_data,
unsigned int string_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters (ipmi_ctx_t ctx,
uint8_t parameter_selector,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_set_in_progress (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_pef_control (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_pef_action_global_control (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_pef_startup_delay (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_pef_alert_startup_delay (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_number_of_event_filters (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_event_filter_table (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_event_filter_table_data1_ (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_number_of_alert_policy_entries (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_number_of_alert_strings (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_alert_string_keys (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_alert_string (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_pef_configuration_parameters_alert_policy_table (ipmi_ctx_t ctx,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_last_processed_event_id (ipmi_ctx_t ctx,
uint8_t set_record_id_for_last_record,
uint16_t record_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_last_processed_event_id (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_alert_immediate (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t destination_selector,
uint8_t operation,
uint8_t string_selector,
uint8_t send_alert_string,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_pet_acknowledge (ipmi_ctx_t ctx,
uint16_t sequence_number,
uint32_t local_timestamp,
uint8_t event_source_type,
uint8_t sensor_device,
uint8_t sensor_number,
uint32_t event_data,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_PEF_AND_ALERTING_CMDS_API_H */

View File

@ -0,0 +1,69 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_API_H
#define IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_set_user_payload_access (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t user_id,
uint8_t operation,
uint8_t standard_payload_1,
uint8_t standard_payload_2,
uint8_t standard_payload_3,
uint8_t standard_payload_4,
uint8_t standard_payload_5,
uint8_t standard_payload_6,
uint8_t standard_payload_7,
uint8_t oem_payload_0,
uint8_t oem_payload_1,
uint8_t oem_payload_2,
uint8_t oem_payload_3,
uint8_t oem_payload_4,
uint8_t oem_payload_5,
uint8_t oem_payload_6,
uint8_t oem_payload_7,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_user_payload_access (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t user_id,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_API_H */

View File

@ -0,0 +1,65 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SDR_REPOSITORY_CMDS_API_H
#define IPMI_SDR_REPOSITORY_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_get_sdr_repository_info (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sdr_repository_allocation_info (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_reserve_sdr_repository (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sdr (ipmi_ctx_t ctx,
uint16_t reservation_id,
uint16_t record_id,
uint8_t offset_into_record,
uint8_t bytes_to_read,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sdr_repository_time (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sdr_repository_time (ipmi_ctx_t ctx,
uint32_t time,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_REPOSITORY_CMDS_API_H */

View File

@ -0,0 +1,92 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SEL_CMDS_API_H
#define IPMI_SEL_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_get_sel_info (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sel_allocation_info (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_reserve_sel (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sel_entry (ipmi_ctx_t ctx,
uint16_t reservation_id,
uint16_t record_id,
uint8_t offset_into_record,
uint8_t bytes_to_read,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_delete_sel_entry (ipmi_ctx_t ctx,
uint16_t reservation_id,
uint16_t record_id,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_clear_sel (ipmi_ctx_t ctx,
uint16_t reservation_id,
uint8_t operation,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sel_time (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sel_time (ipmi_ctx_t ctx,
uint32_t time,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sel_time_utc_offset (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sel_time_utc_offset (ipmi_ctx_t ctx,
int16_t offset,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_auxiliary_log_status (ipmi_ctx_t ctx,
uint8_t log_type,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_auxiliary_log_status (ipmi_ctx_t ctx,
uint8_t log_type,
const void *log_data,
unsigned int log_data_len,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SEL_CMDS_API_H */

View File

@ -0,0 +1,223 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SENSOR_CMDS_API_H
#define IPMI_SENSOR_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_get_device_sdr_info (ipmi_ctx_t ctx,
uint8_t operation,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_device_sdr (ipmi_ctx_t ctx,
uint16_t reservation_id,
uint16_t record_id,
uint8_t offset_into_record,
uint8_t bytes_to_read,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_reserve_device_sdr_repository (ipmi_ctx_t ctx,
fiid_obj_t obj_cmd_rs);
/* achu: as of IPMI 2.0 hysteresis_mask reserved for future - write as 0xFF */
int ipmi_cmd_set_sensor_hysteresis (ipmi_ctx_t ctx,
uint8_t sensor_number,
uint8_t hysteresis_mask,
uint8_t positive_going_threshold_hysteresis_value,
uint8_t negative_going_threshold_hysteresis_value,
fiid_obj_t obj_cmd_rs);
/* achu: as of IPMI 2.0 hysteresis_mask reserved for future - write as 0xFF */
int ipmi_cmd_get_sensor_hysteresis (ipmi_ctx_t ctx,
uint8_t sensor_number,
uint8_t hysteresis_mask,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sensor_thresholds (ipmi_ctx_t ctx,
uint8_t sensor_number,
const uint8_t *lower_non_critical_threshold,
const uint8_t *lower_critical_threshold,
const uint8_t *lower_non_recoverable_threshold,
const uint8_t *upper_non_critical_threshold,
const uint8_t *upper_critical_threshold,
const uint8_t *upper_non_recoverable_threshold,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sensor_thresholds (ipmi_ctx_t ctx,
uint8_t sensor_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sensor_event_enable (ipmi_ctx_t ctx,
uint8_t sensor_number,
uint8_t event_message_action,
uint8_t scanning_on_this_sensor,
uint8_t all_event_messages,
uint16_t assertion_event_bitmask,
uint16_t deassertion_event_bitmask,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sensor_event_enable_threshold (ipmi_ctx_t ctx,
uint8_t sensor_number,
uint8_t event_message_action,
uint8_t scanning_on_this_sensor,
uint8_t all_event_messages,
uint8_t assertion_event_lower_non_critical_going_low,
uint8_t assertion_event_lower_non_critical_going_high,
uint8_t assertion_event_lower_critical_going_low,
uint8_t assertion_event_lower_critical_going_high,
uint8_t assertion_event_lower_non_recoverable_going_low,
uint8_t assertion_event_lower_non_recoverable_going_high,
uint8_t assertion_event_upper_non_critical_going_low,
uint8_t assertion_event_upper_non_critical_going_high,
uint8_t assertion_event_upper_critical_going_low,
uint8_t assertion_event_upper_critical_going_high,
uint8_t assertion_event_upper_non_recoverable_going_low,
uint8_t assertion_event_upper_non_recoverable_going_high,
uint8_t deassertion_event_lower_non_critical_going_low,
uint8_t deassertion_event_lower_non_critical_going_high,
uint8_t deassertion_event_lower_critical_going_low,
uint8_t deassertion_event_lower_critical_going_high,
uint8_t deassertion_event_lower_non_recoverable_going_low,
uint8_t deassertion_event_lower_non_recoverable_going_high,
uint8_t deassertion_event_upper_non_critical_going_low,
uint8_t deassertion_event_upper_non_critical_going_high,
uint8_t deassertion_event_upper_critical_going_low,
uint8_t deassertion_event_upper_critical_going_high,
uint8_t deassertion_event_upper_non_recoverable_going_low,
uint8_t deassertion_event_upper_non_recoverable_going_high,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sensor_event_enable_discrete (ipmi_ctx_t ctx,
uint8_t sensor_number,
uint8_t event_message_action,
uint8_t scanning_on_this_sensor,
uint8_t all_event_messages,
uint8_t assertion_event_state_bit_0,
uint8_t assertion_event_state_bit_1,
uint8_t assertion_event_state_bit_2,
uint8_t assertion_event_state_bit_3,
uint8_t assertion_event_state_bit_4,
uint8_t assertion_event_state_bit_5,
uint8_t assertion_event_state_bit_6,
uint8_t assertion_event_state_bit_7,
uint8_t assertion_event_state_bit_8,
uint8_t assertion_event_state_bit_9,
uint8_t assertion_event_state_bit_10,
uint8_t assertion_event_state_bit_11,
uint8_t assertion_event_state_bit_12,
uint8_t assertion_event_state_bit_13,
uint8_t assertion_event_state_bit_14,
uint8_t deassertion_event_state_bit_0,
uint8_t deassertion_event_state_bit_1,
uint8_t deassertion_event_state_bit_2,
uint8_t deassertion_event_state_bit_3,
uint8_t deassertion_event_state_bit_4,
uint8_t deassertion_event_state_bit_5,
uint8_t deassertion_event_state_bit_6,
uint8_t deassertion_event_state_bit_7,
uint8_t deassertion_event_state_bit_8,
uint8_t deassertion_event_state_bit_9,
uint8_t deassertion_event_state_bit_10,
uint8_t deassertion_event_state_bit_11,
uint8_t deassertion_event_state_bit_12,
uint8_t deassertion_event_state_bit_13,
uint8_t deassertion_event_state_bit_14,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sensor_event_enable (ipmi_ctx_t ctx,
uint8_t sensor_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sensor_event_enable_threshold (ipmi_ctx_t ctx,
uint8_t sensor_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sensor_event_enable_discrete (ipmi_ctx_t ctx,
uint8_t sensor_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_re_arm_sensor_events (ipmi_ctx_t ctx,
uint8_t sensor_number,
uint8_t re_arm_all_event_status_from_this_sensor,
uint16_t *re_arm_assertion_event,
uint16_t *re_arm_deassertion_event,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_re_arm_sensor_events_ipmb (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t slave_address,
uint8_t lun,
uint8_t sensor_number,
uint8_t re_arm_all_event_status_from_this_sensor,
uint16_t *re_arm_assertion_event,
uint16_t *re_arm_deassertion_event,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sensor_reading (ipmi_ctx_t ctx,
uint8_t sensor_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sensor_reading_ipmb (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t slave_address,
uint8_t lun,
uint8_t sensor_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sensor_reading_threshold (ipmi_ctx_t ctx,
uint8_t sensor_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sensor_reading_discrete (ipmi_ctx_t ctx,
uint8_t sensor_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sensor_reading_and_event_status (ipmi_ctx_t ctx,
uint8_t sensor_number,
uint8_t sensor_reading_operation,
uint8_t deassertion_bits_operation,
uint8_t assertion_bits_operation,
uint8_t event_data_bytes_operation,
uint8_t sensor_reading,
uint16_t assertion_event_bitmask,
uint16_t deassertion_event_bitmask,
uint8_t event_data1,
uint8_t event_data2,
uint8_t event_data3,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SENSOR_CMDS_API_H */

View File

@ -0,0 +1,123 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SERIAL_MODEM_CMDS_API_H
#define IPMI_SERIAL_MODEM_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_set_serial_modem_configuration (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_serial_modem_configuration_set_in_progress (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t state,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_serial_modem_configuration_connection_mode (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t basic_mode,
uint8_t ppp_mode,
uint8_t terminal_mode,
uint8_t connect_mode,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_serial_modem_configuration_ipmi_messaging_comm_settings (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t dtr_hangup,
uint8_t flow_control,
uint8_t bit_rate,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_serial_modem_configuration_page_blackout_interval (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t page_blackout_interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_serial_modem_configuration_call_retry_interval (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t call_retry_interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_serial_modem_configuration (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_serial_modem_configuration_set_in_progress (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_serial_modem_configuration_connection_mode (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_serial_modem_configuration_ipmi_messaging_comm_settings (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_serial_modem_configuration_page_blackout_interval (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_serial_modem_configuration_call_retry_interval (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SERIAL_MODEM_CMDS_API_H */

View File

@ -0,0 +1,164 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SOL_CMDS_API_H
#define IPMI_SOL_CMDS_API_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/fiid/fiid.h>
/*
* ipmi_cmd* functions return 0 on success, -1 on error.
*
* obj_cmd_rs must be for the function's respective fiid template
* response.
*
*/
int ipmi_cmd_set_sol_configuration_parameters (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sol_configuration_parameters_set_in_progress (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t state,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sol_configuration_parameters_sol_enable (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t sol_enable,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sol_configuration_parameters_sol_authentication (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t sol_privilege_level,
uint8_t force_sol_payload_authentication,
uint8_t force_sol_payload_encryption,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sol_configuration_parameters_character_accumulate_interval_and_send_threshold (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t character_accumulate_interval,
uint8_t character_send_threshold,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sol_configuration_parameters_sol_retry (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t retry_count,
uint8_t retry_interval,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sol_configuration_parameters_sol_non_volatile_bit_rate (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t bit_rate,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sol_configuration_parameters_sol_volatile_bit_rate (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t bit_rate,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_set_sol_configuration_parameters_sol_payload_port_number (ipmi_ctx_t ctx,
uint8_t channel_number,
uint16_t port_number,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_set_in_progress (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_sol_enable (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_sol_authentication (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_character_accumulate_interval_and_send_threshold (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_sol_retry (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_sol_non_volatile_bit_rate (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_sol_volatile_bit_rate (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_sol_payload_channel (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
int ipmi_cmd_get_sol_configuration_parameters_sol_payload_port_number (ipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SOL_CMDS_API_H */

View File

@ -0,0 +1,135 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_BMC_WATCHDOG_TIMER_CMDS_H
#define IPMI_BMC_WATCHDOG_TIMER_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_BIOS_FRB2 0x1
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_BIOS_POST 0x2
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_OS_LOAD 0x3
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_SMS_OS 0x4
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_OEM 0x5
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_VALID(__x) \
(((__x) == IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_BIOS_FRB2 \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_BIOS_POST \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_OS_LOAD \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_SMS_OS \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_OEM) ? 1 : 0)
#define IPMI_BMC_WATCHDOG_TIMER_STOP_TIMER_ENABLE 0x0
#define IPMI_BMC_WATCHDOG_TIMER_STOP_TIMER_DISABLE 0x1
#define IPMI_BMC_WATCHDOG_TIMER_STOP_TIMER_VALID(__x) \
(((__x) == IPMI_BMC_WATCHDOG_TIMER_STOP_TIMER_ENABLE \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_STOP_TIMER_DISABLE) ? 1 : 0)
#define IPMI_BMC_WATCHDOG_TIMER_LOG_ENABLE 0x0
#define IPMI_BMC_WATCHDOG_TIMER_LOG_DISABLE 0x1
#define IPMI_BMC_WATCHDOG_TIMER_LOG_VALID(__x) \
(((__x) == IPMI_BMC_WATCHDOG_TIMER_LOG_ENABLE \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_LOG_DISABLE) ? 1 : 0)
#define IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_NO_ACTION 0x0
#define IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_HARD_RESET 0x1
#define IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_POWER_DOWN 0x2
#define IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_POWER_CYCLE 0x3
#define IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_VALID(__x) \
(((__x) == IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_NO_ACTION \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_HARD_RESET \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_POWER_DOWN \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_TIMEOUT_ACTION_POWER_CYCLE) ? 1 : 0)
#define IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_NONE 0x0
#define IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_SMI 0x1
#define IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_NMI 0x2
#define IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_MESSAGING_INTERRUPT 0x3
#define IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_VALID(__x) \
(((__x) == IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_NONE \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_SMI \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_NMI \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERRUPT_MESSAGING_INTERRUPT) ? 1 : 0)
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_EXPIRATION_CLEAR_TIMER_EXPIRATION_BIT 0x1
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_EXPIRATION_LEAVE_ALONE 0x0
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_EXPIRATION_VALID(__x) \
(((__x) == IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_EXPIRATION_CLEAR_TIMER_EXPIRATION_BIT \
|| (__x) == IPMI_BMC_WATCHDOG_TIMER_TIMER_USE_EXPIRATION_LEAVE_ALONE) ? 1 : 0)
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_STATE_RUNNING 0x1
#define IPMI_BMC_WATCHDOG_TIMER_TIMER_STATE_STOPPED 0x0
#define IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERVAL_MIN 0x00
#define IPMI_BMC_WATCHDOG_TIMER_PRE_TIMEOUT_INTERVAL_MAX 0xFF
#define IPMI_BMC_WATCHDOG_TIMER_INITIAL_COUNTDOWN_MIN 0x0000
#define IPMI_BMC_WATCHDOG_TIMER_INITIAL_COUNTDOWN_MAX 0xFFFF
#define IPMI_BMC_WATCHDOG_TIMER_INITIAL_COUNTDOWN_MIN_SECONDS IPMI_BMC_WATCHDOG_TIMER_INITIAL_COUNTDOWN_MIN
#define IPMI_BMC_WATCHDOG_TIMER_INITIAL_COUNTDOWN_MAX_SECONDS (IPMI_BMC_WATCHDOG_TIMER_INITIAL_COUNTDOWN_MAX/10)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_reset_watchdog_timer_rq;
extern fiid_template_t tmpl_cmd_reset_watchdog_timer_rs;
extern fiid_template_t tmpl_cmd_set_watchdog_timer_rq;
extern fiid_template_t tmpl_cmd_set_watchdog_timer_rs;
extern fiid_template_t tmpl_cmd_get_watchdog_timer_rq;
extern fiid_template_t tmpl_cmd_get_watchdog_timer_rs;
int fill_cmd_reset_watchdog_timer (fiid_obj_t obj_cmd_rq);
int fill_cmd_set_watchdog_timer (uint8_t timer_use,
uint8_t stop_timer,
uint8_t log,
uint8_t timeout_action,
uint8_t pre_timeout_interrupt,
uint8_t pre_timeout_interval,
uint8_t timer_use_expiration_flag_bios_frb2,
uint8_t timer_use_expiration_flag_bios_post,
uint8_t timer_use_expiration_flag_os_load,
uint8_t timer_use_expiration_flag_sms_os,
uint8_t timer_use_expiration_flag_oem,
uint16_t initial_countdown_value,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_watchdog_timer (fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_BMC_WATCHDOG_TIMER_CMDS_H */

View File

@ -0,0 +1,410 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_CHASSIS_CMDS_H
#define IPMI_CHASSIS_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_POWER_RESTORE_POLICY_POWERED_OFF_AFTER_AC_RETURNS 0x00
#define IPMI_POWER_RESTORE_POLICY_POWER_RESTORED_TO_STATE 0x01
#define IPMI_POWER_RESTORE_POLICY_POWERS_UP_AFTER_AC_RETURNS 0x02
#define IPMI_POWER_RESTORE_POLICY_UNKNOWN 0x03
#define IPMI_SYSTEM_POWER_IS_ON 1
#define IPMI_SYSTEM_POWER_IS_OFF 0
#define IPMI_LAST_POWER_EVENT_AC_FAILED 0x00
#define IPMI_LAST_POWER_EVENT_POWER_DOWN_POWER_OVERLOAD 0x01
#define IPMI_LAST_POWER_EVENT_POWER_DOWN_INTERLOCK_ACTIVATED 0x02
#define IPMI_LAST_POWER_EVENT_POWER_DOWN_POWER_FAULT 0x03
#define IPMI_LAST_POWER_EVENT_POWER_ON_VIA_IPMI 0x04
#define IPMI_LAST_POWER_EVENT_UNKNOWN 0x05
#define IPMI_CHASSIS_CONTROL_POWER_DOWN 0x00
#define IPMI_CHASSIS_CONTROL_POWER_UP 0x01
#define IPMI_CHASSIS_CONTROL_POWER_CYCLE 0x02
#define IPMI_CHASSIS_CONTROL_HARD_RESET 0x03
#define IPMI_CHASSIS_CONTROL_PULSE_DIAGNOSTIC_INTERRUPT 0x04
#define IPMI_CHASSIS_CONTROL_INITIATE_SOFT_SHUTDOWN 0x05
#define IPMI_CHASSIS_CONTROL_VALID(__chassis_control) \
(((__chassis_control) == IPMI_CHASSIS_CONTROL_POWER_DOWN \
|| (__chassis_control) == IPMI_CHASSIS_CONTROL_POWER_UP \
|| (__chassis_control) == IPMI_CHASSIS_CONTROL_POWER_CYCLE \
|| (__chassis_control) == IPMI_CHASSIS_CONTROL_HARD_RESET \
|| (__chassis_control) == IPMI_CHASSIS_CONTROL_PULSE_DIAGNOSTIC_INTERRUPT \
|| (__chassis_control) == IPMI_CHASSIS_CONTROL_INITIATE_SOFT_SHUTDOWN) ? 1 : 0)
#define IPMI_CHASSIS_FORCE_IDENTIFY_OFF 0x00
#define IPMI_CHASSIS_FORCE_IDENTIFY_ON 0x01
#define IPMI_CHASSIS_FORCE_IDENTIFY_VALID(__force_identify) \
(((__force_identify) == IPMI_CHASSIS_FORCE_IDENTIFY_OFF \
|| (__force_identify) == IPMI_CHASSIS_FORCE_IDENTIFY_ON) ? 1 : 0)
#define IPMI_CHASSIS_IDENTIFY_STATE_OFF 0x00
#define IPMI_CHASSIS_IDENTIFY_STATE_TEMPORARY_ON 0x01
#define IPMI_CHASSIS_IDENTIFY_STATE_INDEFINITE_ON 0x02
/* min is degenerate "off" case */
#define IPMI_CHASSIS_IDENTIFY_INTERVAL_MIN 0x00
#define IPMI_CHASSIS_IDENTIFY_INTERVAL_MAX 0xFF
/* min is degenerate "no delay" case */
#define IPMI_CHASSIS_POWER_CYCLE_INTERVAL_MIN 0x00
#define IPMI_CHASSIS_POWER_CYCLE_INTERVAL_MAX 0xFF
/* achu: it's backwards on buttons, I don't know why */
#define IPMI_CHASSIS_BUTTON_ENABLE 0x00
#define IPMI_CHASSIS_BUTTON_DISABLE 0x01
#define IPMI_CHASSIS_BUTTON_VALID(__button) \
(((__button) == IPMI_CHASSIS_BUTTON_ENABLE \
|| (__button) == IPMI_CHASSIS_BUTTON_DISABLE) ? 1 : 0)
#define IPMI_CHASSIS_BUTTON_DISABLE_ALLOWED 0x1
#define IPMI_CHASSIS_BUTTON_DISABLE_NOT_ALLOWED 0x0
#define IPMI_POWER_RESTORE_POLICY_ALWAYS_STAY_POWERED_OFF 0x00
#define IPMI_POWER_RESTORE_POLICY_RESTORE_POWER_TO_STATE_WHEN_AC_WAS_LOST 0x01
#define IPMI_POWER_RESTORE_POLICY_ALWAYS_POWER_UP_AFTER_AC_IS_LOST 0x02
#define IPMI_POWER_RESTORE_POLICY_NO_CHANGE 0x03
#define IPMI_POWER_RESTORE_POLICY_VALID(__policy) \
(((__policy) == IPMI_POWER_RESTORE_POLICY_NO_CHANGE \
|| (__policy) == IPMI_POWER_RESTORE_POLICY_ALWAYS_POWER_UP_AFTER_AC_IS_LOST \
|| (__policy) == IPMI_POWER_RESTORE_POLICY_RESTORE_POWER_TO_STATE_WHEN_AC_WAS_LOST \
|| (__policy) == IPMI_POWER_RESTORE_POLICY_ALWAYS_STAY_POWERED_OFF) ? 1 : 0)
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_UNKNOWN 0x00
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_CHASSIS_CONTROL_COMMAND 0x01
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_RESET_VIA_PUSHBUTTON 0x02
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_POWER_UP_VIA_POWER_PUSHBUTTON 0x03
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_WATCHDOG_EXPIRATION 0x04
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_OEM 0x05
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_AUTOMATIC_POWER_UP_ALWAYS_RESTORE 0x06
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_AUTOMATIC_POWER_UP_RESTORE_PREVIOUS 0x07
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_RESET_VIA_PEF 0x08
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_POWER_CYCLE_VIA_PEF 0x09
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_SOFT_RESET 0x0A
#define IPMI_CHASSIS_SYSTEM_RESTART_CAUSE_POWER_UP_VIA_RTC 0x0B
#define IPMI_SYSTEM_BOOT_OPTIONS_PARAMETER_VALID_UNLOCKED 0x0
#define IPMI_SYSTEM_BOOT_OPTIONS_PARAMETER_INVALID_LOCKED 0x1
#define IPMI_SYSTEM_BOOT_OPTIONS_PARAMETER_VALID_VALID(__value) \
(((__value) == IPMI_SYSTEM_BOOT_OPTIONS_PARAMETER_VALID_UNLOCKED \
|| (__value) == IPMI_SYSTEM_BOOT_OPTIONS_PARAMETER_INVALID_LOCKED) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTIONS_NO_SET_SELECTOR 0x0
#define IPMI_SYSTEM_BOOT_OPTIONS_NO_BLOCK_SELECTOR 0x0
#define IPMI_SYSTEM_BOOT_OPTION_SET_COMPLETE 0x00
#define IPMI_SYSTEM_BOOT_OPTION_SET_IN_PROGRESS 0x01
#define IPMI_SYSTEM_BOOT_OPTION_SET_COMMIT_WRITE 0x02
#define IPMI_SYSTEM_BOOT_OPTION_SET_IN_PROGRESS_VALID(__value) \
(((__value) == IPMI_SYSTEM_BOOT_OPTION_SET_COMPLETE \
|| (__value) == IPMI_SYSTEM_BOOT_OPTION_SET_IN_PROGRESS \
|| (__value) == IPMI_SYSTEM_BOOT_OPTION_SET_COMMIT_WRITE) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_INVALID 0x00
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_VALID 0x01
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_VALID_FOR_NEXT_BOOT 0x00
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_VALID_PERSISTENTLY 0x01
/* achu: below is not a typo, IPMI spec orders it 0x09, 0x08, 0x0B, 0x0F */
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_NO_OVERRIDE 0x00
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_PXE 0x01
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_HARD_DRIVE 0x02
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_HARD_DRIVE_SAFE_MODE 0x03
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_DIAGNOSTIC_PARTITION 0x04
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_CD_DVD 0x05
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_BIOS_SETUP 0x06
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_REMOTELY_CONNECTED_FLOPPY_PRIMARY_REMOVEABLE_MEDIA 0x07
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_PRIMARY_REMOTE_MEDIA 0x09
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_REMOTELY_CONNECTED_CD_DVD 0x08
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_REMOTELY_CONNECTED_HARD_DRIVE 0x0B
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_FLOPPY_REMOVEABLE_MEDIA 0x0F
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_VALID(__boot_device) \
(((__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_NO_OVERRIDE \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_PXE \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_HARD_DRIVE \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_HARD_DRIVE_SAFE_MODE \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_DIAGNOSTIC_PARTITION \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_CD_DVD \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_BIOS_SETUP \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_REMOTELY_CONNECTED_FLOPPY_PRIMARY_REMOVEABLE_MEDIA \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_PRIMARY_REMOTE_MEDIA \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_REMOTELY_CONNECTED_CD_DVD \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_REMOTELY_CONNECTED_HARD_DRIVE \
|| (__boot_device) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_DEVICE_FORCE_FLOPPY_REMOVEABLE_MEDIA) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_DEFAULT 0x00
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_BIOS_SETTING IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_DEFAULT
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_SUPPRESS 0x01
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_ENABLE 0x02
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_VALID(__console_redirection) \
(((__console_redirection) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_DEFAULT \
|| (__console_redirection) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_SUPPRESS \
|| (__console_redirection) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_CONSOLE_REDIRECTION_ENABLE) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_NO 0x00
#define IPMI_SYSTEM_BOOT_OPTION_YES 0x01
#define IPMI_SYSTEM_BOOT_OPTION_DISABLE 0x00
#define IPMI_SYSTEM_BOOT_OPTION_ENABLE 0x01
#define IPMI_SYSTEM_BOOT_OPTION_ENABLE_VALID(__value) \
(((__value) == IPMI_SYSTEM_BOOT_OPTION_ENABLE \
|| (__value) == IPMI_SYSTEM_BOOT_OPTION_DISABLE) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_TYPE_PC_COMPATIBLE 0x00
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_TYPE_EFI 0x01
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BIOS_BOOT_TYPE_VALID(__boot_type) \
(((__boot_type) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_TYPE_PC_COMPATIBLE \
|| (__boot_type) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_BOOT_TYPE_EFI) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_FIRMWARE_BIOS_VERBOSITY_DEFAULT 0x00
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_FIRMWARE_BIOS_VERBOSITY_QUIET 0x01
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_FIRMWARE_BIOS_VERBOSITY_VERBOSE 0x02
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_FIRMWARE_BIOS_VERBOSITY_VALID(__verbosity) \
(((__verbosity) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_FIRMWARE_BIOS_VERBOSITY_DEFAULT \
|| (__verbosity) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_FIRMWARE_BIOS_VERBOSITY_QUIET \
|| (__verbosity) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAG_FIRMWARE_BIOS_VERBOSITY_VERBOSE) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_UNSPECIFIED 0x00
#define IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_DISCOVERED 0X01
#define IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_UNDISCOVERED 0X00
#define IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_DISCOVERED_VALID(__value) \
(((__value) == IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_DISCOVERED \
|| (__value) == IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_UNDISCOVERED) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_SCAN 0X01
#define IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_DO_NOT_SCAN 0X00
#define IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_SCAN_VALID(__value) \
(((__value) == IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_SCAN \
|| (__value) == IPMI_SYSTEM_BOOT_OPTION_SERVICE_PARTITION_DO_NOT_SCAN) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_INFO_ACKNOWLEDGE 0x00
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_INFO_UNACKNOWLEDGE 0x01
#define IPMI_SYSTEM_BOOT_OPTION_DONT_CLEAR_VALID_BIT 0x01
#define IPMI_SYSTEM_BOOT_OPTION_CLEAR_VALID_BIT 0x00
#define IPMI_SYSTEM_BOOT_OPTION_CLEAR_VALID_BIT_VALID(__value) \
(((__value) == IPMI_SYSTEM_BOOT_OPTION_DONT_CLEAR_VALID_BIT \
|| (__value) == IPMI_SYSTEM_BOOT_OPTION_CLEAR_VALID_BIT) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAGS_SET_MUX_TO_RECOMENDED_AT_END_OF_POST 0x00
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAGS_SET_MUX_TO_BMC 0x01
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAGS_SET_MUX_TO_SYSTEM 0x02
#define IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAGS_BIOS_MUX_CONTROL_OVERRIDE_VALID(__bios_mux_control) \
(((__bios_mux_control) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAGS_SET_MUX_TO_RECOMENDED_AT_END_OF_POST \
|| (__bios_mux_control) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAGS_SET_MUX_TO_BMC \
|| (__bios_mux_control) == IPMI_SYSTEM_BOOT_OPTION_BOOT_FLAGS_SET_MUX_TO_SYSTEM) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_MIN 0x00
#define IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_MAX 0x31
#define IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_RANGE_MIN 0x01
#define IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_RANGE_MAX 0x15
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_VALID(__value) \
((((__value) + 1) >= (IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_MIN + 1) \
&& (__value) <= IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_MAX) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_RANGE_VALID(__value) \
(((__value) >= IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_RANGE_MIN \
&& (__value) <= IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_RANGE_MAX) ? 1 : 0)
#define IPMI_SYSTEM_BOOT_OPTION_DEVICE_INSTANCE_SELECTOR_INTERNAL_BITMASK 0x10
#define IPMI_SYSTEM_BOOT_OPTION_BLOCK_DATA_LEN_MAX 16
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_get_chassis_capabilities_rq;
extern fiid_template_t tmpl_cmd_get_chassis_capabilities_rs;
extern fiid_template_t tmpl_cmd_get_chassis_status_rq;
extern fiid_template_t tmpl_cmd_get_chassis_status_rs;
extern fiid_template_t tmpl_cmd_chassis_control_rq;
extern fiid_template_t tmpl_cmd_chassis_control_rs;
extern fiid_template_t tmpl_cmd_chassis_identify_rq;
extern fiid_template_t tmpl_cmd_chassis_identify_rs;
extern fiid_template_t tmpl_cmd_set_front_panel_enables_rq;
extern fiid_template_t tmpl_cmd_set_front_panel_enables_rs;
extern fiid_template_t tmpl_cmd_set_power_restore_policy_rq;
extern fiid_template_t tmpl_cmd_set_power_restore_policy_rs;
extern fiid_template_t tmpl_cmd_set_power_cycle_interval_rq;
extern fiid_template_t tmpl_cmd_set_power_cycle_interval_rs;
extern fiid_template_t tmpl_cmd_get_system_restart_cause_rq;
extern fiid_template_t tmpl_cmd_get_system_restart_cause_rs;
extern fiid_template_t tmpl_cmd_set_system_boot_options_rq;
extern fiid_template_t tmpl_cmd_set_system_boot_options_rs;
extern fiid_template_t tmpl_cmd_set_system_boot_options_set_in_progress_rq;
extern fiid_template_t tmpl_cmd_set_system_boot_options_service_partition_selector_rq;
extern fiid_template_t tmpl_cmd_set_system_boot_options_service_partition_scan_rq;
extern fiid_template_t tmpl_cmd_set_system_boot_options_BMC_boot_flag_valid_bit_clearing_rq;
extern fiid_template_t tmpl_cmd_set_system_boot_options_boot_info_acknowledge_rq;
extern fiid_template_t tmpl_cmd_set_system_boot_options_boot_flags_rq;
extern fiid_template_t tmpl_cmd_set_system_boot_options_boot_initiator_info_rq;
extern fiid_template_t tmpl_cmd_set_system_boot_options_boot_initiator_mailbox_rq;
extern fiid_template_t tmpl_cmd_get_system_boot_options_rq;
extern fiid_template_t tmpl_cmd_get_system_boot_options_rs;
extern fiid_template_t tmpl_cmd_get_system_boot_options_set_in_progress_rs;
extern fiid_template_t tmpl_cmd_get_system_boot_options_service_partition_selector_rs;
extern fiid_template_t tmpl_cmd_get_system_boot_options_service_partition_scan_rs;
extern fiid_template_t tmpl_cmd_get_system_boot_options_BMC_boot_flag_valid_bit_clearing_rs;
extern fiid_template_t tmpl_cmd_get_system_boot_options_boot_info_acknowledge_rs;
extern fiid_template_t tmpl_cmd_get_system_boot_options_boot_flags_rs;
extern fiid_template_t tmpl_cmd_get_system_boot_options_boot_initiator_info_rs;
extern fiid_template_t tmpl_cmd_get_system_boot_options_boot_initiator_mailbox_rs;
extern fiid_template_t tmpl_cmd_get_power_on_hours_counter_rq;
extern fiid_template_t tmpl_cmd_get_power_on_hours_counter_rs;
int fill_cmd_get_chassis_capabilities (fiid_obj_t obj_cmd_rq);
int fill_cmd_get_chassis_status (fiid_obj_t obj_cmd_rq);
int fill_cmd_chassis_control (uint8_t chassis_control,
fiid_obj_t obj_cmd_rq);
int fill_cmd_chassis_identify (const uint8_t *identify_interval,
const uint8_t *force_identify,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_front_panel_enables (uint8_t disable_power_off_button_for_power_off_only,
uint8_t disable_reset_button,
uint8_t disable_diagnostic_interrupt_button,
uint8_t disable_standby_button_for_entering_standby,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_power_restore_policy (uint8_t power_restore_policy,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_power_cycle_interval (uint8_t interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_system_restart_cause (fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options (uint8_t parameter_selector,
uint8_t parameter_valid,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options_set_in_progress (uint8_t parameter_valid,
uint8_t state,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options_service_partition_selector (uint8_t parameter_valid,
uint8_t service_partition_selector,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options_service_partition_scan (uint8_t parameter_valid,
uint8_t service_partition_discovered,
uint8_t service_partition_scan,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options_BMC_boot_flag_valid_bit_clearing (uint8_t parameter_valid,
uint8_t dont_clear_on_power_up,
uint8_t dont_clear_on_pushbutton_or_soft_reset,
uint8_t dont_clear_on_watchdog_timeout,
uint8_t dont_clear_on_chassis_control,
uint8_t dont_clear_on_PEF,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options_boot_info_acknowledge (uint8_t parameter_valid,
const uint8_t *bios_or_post_handled_boot_info,
const uint8_t *os_loader_handled_boot_info,
const uint8_t *os_or_service_partition_handled_boot_info,
const uint8_t *sms_handled_boot_info,
const uint8_t *oem_handled_boot_info,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options_boot_flags (uint8_t parameter_valid,
uint8_t bios_boot_type,
uint8_t boot_flags_persistent,
uint8_t boot_flags_valid,
uint8_t lock_out_reset_button,
uint8_t screen_blank,
uint8_t boot_device,
uint8_t lock_keyboard,
uint8_t clear_cmos,
uint8_t console_redirection,
uint8_t lock_out_sleep_button,
uint8_t user_password_bypass,
uint8_t force_progress_event_traps,
uint8_t firmware_bios_verbosity,
uint8_t lock_out_via_power_button,
uint8_t bios_mux_control_override,
uint8_t bios_shared_mode_override,
uint8_t device_instance_selector,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options_boot_initiator_info (uint8_t parameter_valid,
uint8_t boot_source_channel_number,
uint32_t session_id,
uint32_t boot_info_timestamp,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_boot_options_boot_initiator_mailbox (uint8_t parameter_valid,
uint8_t set_selector,
const void *block_data,
unsigned int block_data_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_system_boot_options (uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_power_on_hours_counter (fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_CHASSIS_CMDS_H */

View File

@ -0,0 +1,342 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* LLNL-CODE-413270
*
* This file is part of Ipmi-Dcmi, tools and libraries to support the
* data center manageability interface (DCMI). For details, see
* http://www.llnl.gov/linux/.
*
* Ipmi-Dcmi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-Dcmi is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-Dcmi. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_DCMI_CMDS_H
#define IPMI_DCMI_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_DCMI_CAPABILITIES_INFO_PARAMETER_SUPPORTED_DCMI_CAPABILITIES 0x01
#define IPMI_DCMI_CAPABILITIES_INFO_PARAMETER_MANDATORY_PLATFORM_ATTRIBUTES 0x02
#define IPMI_DCMI_CAPABILITIES_INFO_PARAMETER_OPTIONAL_PLATFORM_ATTRIBUTES 0x03
#define IPMI_DCMI_CAPABILITIES_INFO_PARAMETER_MANAGEABILITY_ACCESS_ATTRIBUTES 0x04
#define IPMI_DCMI_CAPABILITIES_INFO_PARAMETER_ENHANCED_SYSTEM_POWER_STATISTICS_ATTRIBUTES 0x05
#define IPMI_DCMI_CAPABILITIES_INFO_PARAMETER_SELECTOR_VALID(__parameter_selector) \
((((__parameter_selector)) >= (IPMI_DCMI_CAPABILITIES_INFO_PARAMETER_SUPPORTED_DCMI_CAPABILITIES) && \
((__parameter_selector)) <= (IPMI_DCMI_CAPABILITIES_INFO_PARAMETER_ENHANCED_SYSTEM_POWER_STATISTICS_ATTRIBUTES)) ? 1 : 0)
#define IPMI_DCMI_AVAILABLE 0x1
#define IPMI_DCMI_NOT_PRESENT 0x0
#define IPMI_DCMI_AVAILABLE 0x1
#define IPMI_DCMI_AT_LEAST_1_PRESENT 0x1
#define IPMI_DCMI_NOT_PRESENT 0x0
#define IPMI_DCMI_CHANNEL_NOT_SUPPORTED 0xFF
#define IPMI_DCMI_TIME_DURATION_UNITS_SECONDS 0x00
#define IPMI_DCMI_TIME_DURATION_UNITS_MINUTES 0x01
#define IPMI_DCMI_TIME_DURATION_UNITS_HOURS 0x02
#define IPMI_DCMI_TIME_DURATION_UNITS_DAYS 0x03
#define IPMI_DCMI_CONFIGURATION_PARAMETER_ACTIVATE_DHCP 0x01
#define IPMI_DCMI_CONFIGURATION_PARAMETER_DISCOVERY_CONFIGURATION 0x02
#define IPMI_DCMI_CONFIGURATION_PARAMETER_DHCP_TIMING_1 0x03
#define IPMI_DCMI_CONFIGURATION_PARAMETER_DHCP_TIMING_2 0x04
#define IPMI_DCMI_CONFIGURATION_PARAMETER_DHCP_TIMING_3 0x05
#define IPMI_DCMI_CONFIGURATION_PARAMETER_SELECTOR_VALID(__parameter_selector) \
((((__parameter_selector)) >= (IPMI_DCMI_CONFIGURATION_PARAMETER_ACTIVATE_DHCP) && \
((__parameter_selector)) <= (IPMI_DCMI_CONFIGURATION_PARAMETER_DHCP_TIMING_3)) ? 1 : 0)
#define IPMI_DCMI_DHCP_ACTIVATE 0x01
#define IPMI_DCMI_DHCP_INCLUDE_OPTION 0x01
#define IPMI_DCMI_DHCP_DO_NOT_INCLUDE_OPTION 0x00
#define IPMI_DCMI_DHCP_INCLUDE_OPTION_VALID(__val) \
((((__val)) == IPMI_DCMI_DHCP_INCLUDE_OPTION && \
((__val)) == IPMI_DCMI_DHCP_DO_NOT_INCLUDE_OPTION) ? 1 : 0)
#define IPMI_DCMI_DHCP_RANDOM_BACK_OFF_ENABLE 0x01
#define IPMI_DCMI_DHCP_RANDOM_BACK_OFF_DISABLE 0x00
#define IPMI_DCMI_DHCP_RANDOM_BACK_OFF_VALID(__val) \
((((__val)) == IPMI_DCMI_DHCP_RANDOM_BACK_OFF_ENABLE && \
((__val)) == IPMI_DCMI_DHCP_RANDOM_BACK_OFF_DISABLE) ? 1 : 0)
#define IPMI_DCMI_ASSET_TAG_NUMBER_OF_BYTES_TO_READ_MAX 16
#define IPMI_DCMI_ASSET_TAG_NUMBER_OF_BYTES_TO_WRITE_MAX 16
#define IPMI_DCMI_MAX_ASSET_TAG_LENGTH 63
#define IPMI_DCMI_ASSET_TAG_UTF8_BOM_BYTE0 0xEF
#define IPMI_DCMI_ASSET_TAG_UTF8_BOM_BYTE1 0xBB
#define IPMI_DCMI_ASSET_TAG_UTF8_BOM_BYTE2 0xBF
#define IPMI_DCMI_MANAGEMENT_CONTROLLER_IDENTIFIER_STRING_NUMBER_OF_BYTES_TO_READ_MAX 16
#define IPMI_DCMI_MANAGEMENT_CONTROLLER_IDENTIFIER_STRING_NUMBER_OF_BYTES_TO_WRITE_MAX 16
/* length includes NUL byte */
#define IPMI_DCMI_MAX_MANAGEMENT_CONTROLLER_IDENTIFIER_STRING_LENGTH 64
#define IPMI_DCMI_ENTITY_ID_INLET_TEMPERATURE 0x40
#define IPMI_DCMI_ENTITY_ID_CPU_TEMPERATURE 0x41
#define IPMI_DCMI_ENTITY_ID_BASEBOARD_TEMPERATURE 0x42
#define IPMI_DCMI_ENTITY_ID_INLET_TEMPERATURE_STR "Inlet Temperature"
#define IPMI_DCMI_ENTITY_ID_CPU_TEMPERATURE_STR "CPU Temperature"
#define IPMI_DCMI_ENTITY_ID_BASEBOARD_TEMPERATURE_STR "Baseboard temperature"
#define IPMI_DCMI_ENTITY_ID_VALID(__entity_id) \
(((__entity_id) == IPMI_DCMI_ENTITY_ID_INLET_TEMPERATURE \
|| (__entity_id) == IPMI_DCMI_ENTITY_ID_CPU_TEMPERATURE \
|| (__entity_id) == IPMI_DCMI_ENTITY_ID_BASEBOARD_TEMPERATURE) ? 1 : 0)
#define IPMI_DCMI_ENTITY_INSTANCE_ALL 0x00
#define IPMI_DCMI_POWER_READING_MODE_SYSTEM_POWER_STATISTICS 0x01
#define IPMI_DCMI_POWER_READING_MODE_POWER_STATISTICS IPMI_DCMI_POWER_READING_MODE_SYSTEM_POWER_STATISTICS
#define IPMI_DCMI_POWER_READING_MODE_ENHANCED_SYSTEM_POWER_STATISTICS 0x02
/* spec only lists one mode right now, assume there can/will be more in the future */
#define IPMI_DCMI_POWER_READING_MODE_VALID(__mode) \
(((__mode) == IPMI_DCMI_POWER_READING_MODE_POWER_STATISTICS \
|| (__mode) == IPMI_DCMI_POWER_READING_MODE_ENHANCED_SYSTEM_POWER_STATISTICS) ? 1 : 0)
#define IPMI_DCMI_POWER_READING_STATE_POWER_MEASUREMENT_ACTIVE 0x1
#define IPMI_DCMI_POWER_READING_STATE_NO_POWER_MEASUREMENT_AVAILABLE 0x0
/* HLiebig: specific value, not a bitmask */
/* With power limit commands */
#define IPMI_DCMI_EXCEPTION_ACTION_NO_ACTION 0x00
#define IPMI_DCMI_EXCEPTION_ACTION_HARD_POWER_OFF_SYSTEM 0x01
#define IPMI_DCMI_EXCEPTION_ACTION_OEM_MIN 0x02
#define IPMI_DCMI_EXCEPTION_ACTION_OEM_MAX 0x10
#define IPMI_DCMI_EXCEPTION_ACTION_LOG_EVENT_TO_SEL_ONLY 0x11
/* With thermal limit commands */
#define IPMI_DCMI_EXCEPTION_ACTION_BIT_ON 1
#define IPMI_DCMI_EXCEPTION_ACTION_BIT_OFF 0
#define IPMI_DCMI_EXCEPTION_ACTION_BIT_VALID(__bit) \
(((__bit) == IPMI_DCMI_EXCEPTION_ACTION_BIT_ON \
|| (__bit) == IPMI_DCMI_EXCEPTION_ACTION_BIT_OFF) ? 1 : 0)
/* achu: it's an 8 bit field, why not allow all 8 bitmasks? Beats
* me, that's what's in the spec
*/
#define IPMI_DCMI_EXCEPTION_ACTIONS_MIN 0x00
#define IPMI_DCMI_EXCEPTION_ACTIONS_MAX 0x1F
#define IPMI_DCMI_POWER_LIMIT_REQUESTED_MIN 0x0000
#define IPMI_DCMI_POWER_LIMIT_REQUESTED_MAX 0xFFFF
#define IPMI_DCMI_CORRECTION_TIME_LIMIT_MIN 0x00000000
#define IPMI_DCMI_CORRECTION_TIME_LIMIT_MAX 0xFFFFFFFF
#define IPMI_DCMI_MANAGEMENT_APPLICATION_STATISTICS_SAMPLING_PERIOD_MIN 0x0000
#define IPMI_DCMI_MANAGEMENT_APPLICATION_STATISTICS_SAMPLING_PERIOD_MAX 0xFFFF
#define IPMI_DCMI_EXCEPTION_ACTION_VALID(__exception_action) \
(((__exception_action) == IPMI_DCMI_EXCEPTION_ACTION_NO_ACTION \
|| (__exception_action) == IPMI_DCMI_EXCEPTION_ACTION_HARD_POWER_OFF_SYSTEM \
|| (__exception_action) == IPMI_DCMI_EXCEPTION_ACTION_LOG_EVENT_TO_SEL_ONLY \
|| ((__exception_action) >= IPMI_DCMI_EXCEPTION_ACTION_OEM_MIN && (__exception_action) <= IPMI_DCMI_EXCEPTION_ACTION_OEM_MAX)) ? 1 : 0)
#define IPMI_DCMI_POWER_LIMIT_ACTIVATION_DEACTIVATE_POWER_LIMIT 0x0
#define IPMI_DCMI_POWER_LIMIT_ACTIVATION_ACTIVATE_POWER_LIMIT 0x1
#define IPMI_DCMI_POWER_LIMIT_ACTIVATION_VALID(__power_limit_activation) \
(((__power_limit_activation) == IPMI_DCMI_POWER_LIMIT_ACTIVATION_DEACTIVATE_POWER_LIMIT \
|| (__power_limit_activation) == IPMI_DCMI_POWER_LIMIT_ACTIVATION_ACTIVATE_POWER_LIMIT) ? 1 : 0)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_dcmi_rolling_average_time_period;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_capability_info_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_capability_info_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_capability_info_supported_dcmi_capabilities_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_capability_info_mandatory_platform_attributes_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_capability_info_optional_platform_attributes_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_capability_info_manageability_access_attributes_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_capability_info_enhanced_system_power_statistics_attributes_rs;
extern fiid_template_t tmpl_cmd_dcmi_set_dcmi_configuration_parameters_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_dcmi_configuration_parameters_rs;
extern fiid_template_t tmpl_cmd_dcmi_set_dcmi_configuration_parameters_activate_dhcp_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_dcmi_configuration_parameters_discovery_configuration_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_1_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_2_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_3_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_configuration_parameters_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_configuration_parameters_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_configuration_parameters_discovery_configuration_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_1_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_2_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_3_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_asset_tag_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_asset_tag_rs;
extern fiid_template_t tmpl_cmd_dcmi_set_asset_tag_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_asset_tag_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_management_controller_identifier_string_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_management_controller_identifier_string_rs;
extern fiid_template_t tmpl_cmd_dcmi_set_management_controller_identifier_string_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_management_controller_identifier_string_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_sensor_info_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_dcmi_sensor_info_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_power_reading_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_power_reading_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_power_limit_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_power_limit_rs;
extern fiid_template_t tmpl_cmd_dcmi_set_power_limit_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_power_limit_rs;
extern fiid_template_t tmpl_cmd_dcmi_activate_deactivate_power_limit_rq;
extern fiid_template_t tmpl_cmd_dcmi_activate_deactivate_power_limit_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_thermal_limit_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_thermal_limit_rs;
extern fiid_template_t tmpl_cmd_dcmi_set_thermal_limit_rq;
extern fiid_template_t tmpl_cmd_dcmi_set_thermal_limit_rs;
extern fiid_template_t tmpl_cmd_dcmi_get_temperature_reading_rq;
extern fiid_template_t tmpl_cmd_dcmi_get_temperature_reading_rs;
int fill_cmd_dcmi_get_dcmi_capability_info (uint8_t parameter_selector,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_dcmi_configuration_parameters (uint8_t parameter_selector,
uint8_t set_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_dcmi_configuration_parameters_activate_dhcp (uint8_t set_selector,
uint8_t activate,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_dcmi_configuration_parameters_discovery_configuration (uint8_t set_selector,
uint8_t option_12,
uint8_t option_60_with_option_43,
uint8_t random_back_off,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_1 (uint8_t set_selector,
uint8_t initial_timeout_interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_2 (uint8_t set_selector,
uint16_t server_contact_timeout_interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_3 (uint8_t set_selector,
uint16_t server_contact_retry_interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_get_dcmi_configuration_parameters (uint8_t parameter_selector,
uint8_t set_selector,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_get_asset_tag (uint8_t offset_to_read,
uint8_t number_of_bytes_to_read,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_asset_tag (uint8_t offset_to_write,
uint8_t number_of_bytes_to_write,
const void *data,
unsigned int data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_get_management_controller_identifier_string (uint8_t offset_to_read,
uint8_t number_of_bytes_to_read,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_management_controller_identifier_string (uint8_t offset_to_write,
uint8_t number_of_bytes_to_write,
const void *data,
unsigned int data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_get_dcmi_sensor_info (uint8_t sensor_type,
uint8_t entity_id,
uint8_t entity_instance,
uint8_t entity_instance_start,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_get_power_reading (uint8_t mode,
uint8_t mode_attributes,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_get_power_limit (fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_power_limit (uint8_t exception_actions,
uint16_t power_limit_requested,
uint32_t correction_time_limit,
uint16_t management_application_statistics_sampling_period,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_activate_deactivate_power_limit (uint8_t power_limit_activation,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_get_thermal_limit (uint8_t entity_id,
uint8_t entity_instance,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_set_thermal_limit (uint8_t entity_id,
uint8_t entity_instance,
uint8_t temperature_limit,
uint8_t exception_actions_log_event_to_sel_only,
uint8_t exception_actions_hard_power_off_system_and_log_event,
uint16_t exception_time,
fiid_obj_t obj_cmd_rq);
int fill_cmd_dcmi_get_temperature_reading (uint8_t sensor_type,
uint8_t entity_id,
uint8_t entity_instance,
uint8_t entity_instance_start,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_DCMI_CMDS_H */

View File

@ -0,0 +1,33 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_DCMI_OEM_CMDS_H
#define IPMI_DCMI_OEM_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_DCMI_OEM_CMDS_H */

View File

@ -0,0 +1,155 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_DEVICE_GLOBAL_CMDS_H
#define IPMI_DEVICE_GLOBAL_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_DEVICE_ID_UNSPECIFIED 0x00
#define IPMI_MANUFACTURER_ID_UNSPECIFIED 0x000000
#define IPMI_MANUFACTURER_ID_RESERVED 0x0FFFFF
#define IPMI_1_5_MAJOR_VERSION 1
#define IPMI_1_5_MINOR_VERSION 5
#define IPMI_2_0_MAJOR_VERSION 2
#define IPMI_2_0_MINOR_VERSION 0
#define IPMI_SELF_TEST_RESULT_NO_ERROR 0x55
#define IPMI_SELF_TEST_RESULT_SELF_TEST_FUNCTION_NOT_IMPLEMENTED_IN_THIS_CONTROLLER 0x56
#define IPMI_SELF_TEST_RESULT_CORRUPTED_OR_INACCESSIBLE_DATA_OR_DEVICES 0x57
#define IPMI_SELF_TEST_RESULT_FATAL_HARDWARE_ERROR 0x58
#define IPMI_ACPI_SYSTEM_POWER_STATE_S0_G0 0x00
#define IPMI_ACPI_SYSTEM_POWER_STATE_S1 0x01
#define IPMI_ACPI_SYSTEM_POWER_STATE_S2 0x02
#define IPMI_ACPI_SYSTEM_POWER_STATE_S3 0x03
#define IPMI_ACPI_SYSTEM_POWER_STATE_S4 0x04
#define IPMI_ACPI_SYSTEM_POWER_STATE_S5_G2 0x05
#define IPMI_ACPI_SYSTEM_POWER_STATE_S4_S5 0x06
#define IPMI_ACPI_SYSTEM_POWER_STATE_G3 0x07
#define IPMI_ACPI_SYSTEM_POWER_STATE_SLEEPING 0x08
#define IPMI_ACPI_SYSTEM_POWER_STATE_G1_SLEEPING 0x09
#define IPMI_ACPI_SYSTEM_POWER_STATE_OVERRIDE 0x0A
#define IPMI_ACPI_SYSTEM_POWER_STATE_LEGACY_ON 0x20
#define IPMI_ACPI_SYSTEM_POWER_STATE_LEGACY_OFF 0x21
#define IPMI_ACPI_SYSTEM_POWER_STATE_UNKNOWN 0x2A
#define IPMI_ACPI_SYSTEM_POWER_STATE_NO_CHANGE 0x7F
#define IPMI_ACPI_SYSTEM_POWER_STATE_VALID(__acpi_system_power_state) \
(((__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_S0_G0 \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_S1 \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_S2 \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_S3 \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_S4 \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_S5_G2 \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_S4_S5 \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_G3 \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_SLEEPING \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_G1_SLEEPING \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_OVERRIDE \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_LEGACY_ON \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_LEGACY_OFF \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_UNKNOWN \
|| (__acpi_system_power_state) == IPMI_ACPI_SYSTEM_POWER_STATE_NO_CHANGE) ? 1 : 0)
#define IPMI_ACPI_SET_SYSTEM_POWER_STATE_SET_SYSTEM_POWER_STATE 0x1
#define IPMI_ACPI_SET_SYSTEM_POWER_STATE_DONT_SET_SYSTEM_POWER_STATE 0x0
#define IPMI_ACPI_SET_SYSTEM_POWER_STATE_VALID(__set_system_power_state) \
(((__set_system_power_state) == IPMI_ACPI_SET_SYSTEM_POWER_STATE_SET_SYSTEM_POWER_STATE \
|| (__set_system_power_state) == IPMI_ACPI_SET_SYSTEM_POWER_STATE_DONT_SET_SYSTEM_POWER_STATE) ? 1 : 0)
#define IPMI_ACPI_DEVICE_POWER_STATE_D0 0x00
#define IPMI_ACPI_DEVICE_POWER_STATE_D1 0x01
#define IPMI_ACPI_DEVICE_POWER_STATE_D2 0x02
#define IPMI_ACPI_DEVICE_POWER_STATE_D3 0x03
#define IPMI_ACPI_DEVICE_POWER_STATE_UNKNOWN 0x2A
#define IPMI_ACPI_DEVICE_POWER_STATE_NO_CHANGE 0x7F
#define IPMI_ACPI_DEVICE_POWER_STATE_VALID(__acpi_device_power_state) \
(((__acpi_device_power_state) == IPMI_ACPI_DEVICE_POWER_STATE_D0 \
|| (__acpi_device_power_state) == IPMI_ACPI_DEVICE_POWER_STATE_D1 \
|| (__acpi_device_power_state) == IPMI_ACPI_DEVICE_POWER_STATE_D2 \
|| (__acpi_device_power_state) == IPMI_ACPI_DEVICE_POWER_STATE_D3 \
|| (__acpi_device_power_state) == IPMI_ACPI_DEVICE_POWER_STATE_UNKNOWN \
|| (__acpi_device_power_state) == IPMI_ACPI_DEVICE_POWER_STATE_NO_CHANGE) ? 1 : 0)
#define IPMI_ACPI_SET_DEVICE_POWER_STATE_SET_DEVICE_POWER_STATE 0x1
#define IPMI_ACPI_SET_DEVICE_POWER_STATE_DONT_SET_DEVICE_POWER_STATE 0x0
#define IPMI_ACPI_SET_DEVICE_POWER_STATE_VALID(__set_device_power_state) \
(((__set_device_power_state) == IPMI_ACPI_SET_DEVICE_POWER_STATE_SET_DEVICE_POWER_STATE \
|| (__set_device_power_state) == IPMI_ACPI_SET_DEVICE_POWER_STATE_DONT_SET_DEVICE_POWER_STATE) ? 1 : 0)
#define IPMI_SYSTEM_GUID_LENGTH 16
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_get_device_id_rq;
extern fiid_template_t tmpl_cmd_get_device_id_rs;
extern fiid_template_t tmpl_cmd_cold_reset_rq;
extern fiid_template_t tmpl_cmd_cold_reset_rs;
extern fiid_template_t tmpl_cmd_warm_reset_rq;
extern fiid_template_t tmpl_cmd_warm_reset_rs;
extern fiid_template_t tmpl_cmd_get_self_test_results_rq;
extern fiid_template_t tmpl_cmd_get_self_test_results_rs;
extern fiid_template_t tmpl_cmd_set_acpi_power_state_rq;
extern fiid_template_t tmpl_cmd_set_acpi_power_state_rs;
extern fiid_template_t tmpl_cmd_get_acpi_power_state_rq;
extern fiid_template_t tmpl_cmd_get_acpi_power_state_rs;
extern fiid_template_t tmpl_cmd_get_device_guid_rq;
extern fiid_template_t tmpl_cmd_get_device_guid_rs;
extern fiid_template_t tmpl_cmd_get_device_guid_format_rs;
int fill_cmd_get_device_id (fiid_obj_t obj_cmd_rq);
int fill_cmd_cold_reset (fiid_obj_t obj_cmd_rq);
int fill_cmd_warm_reset (fiid_obj_t obj_cmd_rq);
int fill_cmd_set_acpi_power_state (uint8_t system_power_state_enumeration,
uint8_t set_system_power_state,
uint8_t device_power_state_enumeration,
uint8_t set_device_power_state,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_acpi_power_state (fiid_obj_t obj_cmd_rq);
int fill_cmd_get_self_test_results (fiid_obj_t obj_cmd_rq);
int fill_cmd_get_device_guid (fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_DEVICE_GLOBAL_CMDS_H */

View File

@ -0,0 +1,69 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_EVENT_CMDS_H
#define IPMI_EVENT_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_set_event_receiver_rq;
extern fiid_template_t tmpl_cmd_set_event_receiver_rs;
extern fiid_template_t tmpl_cmd_get_event_receiver_rq;
extern fiid_template_t tmpl_cmd_get_event_receiver_rs;
extern fiid_template_t tmpl_cmd_platform_event_rq;
extern fiid_template_t tmpl_cmd_platform_event_rs;
int fill_cmd_set_event_receiver (uint8_t event_receiver_slave_address,
uint8_t event_receiver_lun,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_event_receiver (fiid_obj_t obj_cmd_rq);
/* generator_id is optional */
int fill_cmd_platform_event (uint8_t *generator_id,
uint8_t event_message_format_version,
uint8_t sensor_type,
uint8_t sensor_number,
uint8_t event_type_code,
uint8_t event_dir,
uint8_t event_data1,
uint8_t event_data2,
uint8_t event_data3,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_EVENT_CMDS_H */

View File

@ -0,0 +1,197 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_H
#define IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_NETFN_LUN_SUPPORT_NO_COMMANDS_SUPPORTED 0x0
#define IPMI_NETFN_LUN_SUPPORT_COMMANDS_FOLLOW_BASE_IPMI_SPECIFICATION 0x1
#define IPMI_NETFN_LUN_SUPPORT_COMMANDS_EXIST_ON_LUN 0x2
#define IPMI_NETFN_PAIR_IS_NOT_USED 0x0
#define IPMI_NETFN_PAIR_IS_USED 0x1
#define IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_OPERATION_00H_TO_7FH 0x0
#define IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_OPERATION_80H_TO_FFH 0x1
#define IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_OPERATION_VALID(__val) \
(((__val) == IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_OPERATION_00H_TO_7FH \
|| (__val) == IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_OPERATION_80H_TO_FFH) ? 1 : 0)
/* achu: Yes, this one is backwards. I don't know why */
#define IPMI_COMMAND_AVAILABLE 0x0
#define IPMI_COMMAND_UNAVAILABLE 0x1
/* achu: Yes, this one is backwards. I don't know why */
#define IPMI_SUB_FUNCTION_AVAILABLE 0x0
#define IPMI_SUB_FUNCTION_UNAVAILABLE 0x1
#define IPMI_COMMAND_NOT_CONFIGURABLE 0x0
#define IPMI_COMMAND_CAN_BE_ENABLED_DISABLED 0x1
#define IPMI_SUB_FUNCTION_NOT_CONFIGURABLE 0x0
#define IPMI_SUB_FUNCTION_CAN_BE_ENABLED_DISABLED 0x1
#define IPMI_COMMAND_DISABLED_OR_NOT_SUPPORTED 0x0
#define IPMI_COMMAND_ENABLED 0x1
#define IPMI_SUB_FUNCTION_DISABLED_OR_NOT_SUPPORTED 0x0
#define IPMI_SUB_FUNCTION_ENABLED 0x1
#define IPMI_SPECIFICATION_TYPE_IPMI 0x0
#define IPMI_SPECIFICATION_TYPE_IPMB 0x1
#define IPMI_SPECIFICATION_TYPE_ICMB 0x2
#define IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_ENABLE_DISABLE_BITMASK_LEN 16
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_get_netfn_support_rq;
extern fiid_template_t tmpl_cmd_get_netfn_support_rs;
extern fiid_template_t tmpl_cmd_get_command_support_rq;
extern fiid_template_t tmpl_cmd_get_command_support_rs;
extern fiid_template_t tmpl_cmd_get_command_sub_function_support_rq;
extern fiid_template_t tmpl_cmd_get_command_sub_function_support_specification_errata_rs;
extern fiid_template_t tmpl_cmd_get_command_sub_function_support_extension_errata_rs;
extern fiid_template_t tmpl_cmd_get_configurable_commands_rq;
extern fiid_template_t tmpl_cmd_get_configurable_commands_rs;
extern fiid_template_t tmpl_cmd_get_configurable_command_sub_functions_rq;
extern fiid_template_t tmpl_cmd_get_configurable_command_sub_functions_rs;
extern fiid_template_t tmpl_cmd_set_command_enables_rq;
extern fiid_template_t tmpl_cmd_set_command_enables_rs;
extern fiid_template_t tmpl_cmd_get_command_enables_rq;
extern fiid_template_t tmpl_cmd_get_command_enables_rs;
extern fiid_template_t tmpl_cmd_set_command_sub_function_enables_rq;
extern fiid_template_t tmpl_cmd_set_command_sub_function_enables_defining_body_code_rq;
extern fiid_template_t tmpl_cmd_set_command_sub_function_enables_oem_iana_rq;
extern fiid_template_t tmpl_cmd_set_command_sub_function_enables_rs;
extern fiid_template_t tmpl_cmd_get_command_sub_function_enables_rq;
extern fiid_template_t tmpl_cmd_get_command_sub_function_enables_rs;
extern fiid_template_t tmpl_cmd_get_oem_netfn_iana_support_rq;
extern fiid_template_t tmpl_cmd_get_oem_netfn_iana_support_rs;
int fill_cmd_get_netfn_support (uint8_t channel_number,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_command_support (uint8_t channel_number,
uint8_t net_fn,
uint8_t operation,
uint8_t lun,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_command_sub_function_support (uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_configurable_commands (uint8_t channel_number,
uint8_t net_fn,
uint8_t operation,
uint8_t lun,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_configurable_command_sub_functions (uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_command_enables (uint8_t channel_number,
uint8_t net_fn,
uint8_t operation,
uint8_t lun,
uint8_t *enable_disable_bitmask,
unsigned int enable_disable_bitmask_len,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_command_enables (uint8_t channel_number,
uint8_t net_fn,
uint8_t operation,
uint8_t lun,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_command_sub_function_enables (uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t sub_function_enables1,
uint32_t *sub_function_enables2,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_command_sub_function_enables_defining_body_code (uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint8_t defining_body_code,
uint32_t sub_function_enables1,
uint32_t *sub_function_enables2,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_command_sub_function_enables_oem_iana (uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t oem_iana,
uint32_t sub_function_enables1,
uint32_t *sub_function_enables2,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_command_sub_function_enables (uint8_t channel_number,
uint8_t net_fn,
uint8_t lun,
uint8_t command,
uint32_t net_fn_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_oem_netfn_iana_support (uint8_t channel_number,
uint8_t net_fn,
uint8_t list_index,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_H */

View File

@ -0,0 +1,94 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
* Copyright (C) 2007 The Regents of the University of California.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* UCRL-CODE-232183
*
* This file is part of Ipmi-fru, a tool used for retrieving
* motherboard field replaceable unit (FRU) information. For details,
* see http://www.llnl.gov/linux/.
*
* Ipmi-fru is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-fru is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-fru. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_FRU_INVENTORY_DEVICE_CMDS_H
#define IPMI_FRU_INVENTORY_DEVICE_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_FRU_DEVICE_ID_DEFAULT 0x00 /* FRU for Management Controller - Chap 38 */
#define IPMI_FRU_DEVICE_ID_RESERVED 0xFF
#define IPMI_FRU_DEVICE_ID_MIN 0x00
#define IPMI_FRU_DEVICE_ID_MAX 0xFE
#define IPMI_FRU_INVENTORY_AREA_SIZE_MAX 65536 /* 16 bit field for length */
#define IPMI_FRU_DATA_MAX 255
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_get_fru_inventory_area_info_rq;
extern fiid_template_t tmpl_cmd_get_fru_inventory_area_info_rs;
extern fiid_template_t tmpl_cmd_read_fru_data_rq;
extern fiid_template_t tmpl_cmd_read_fru_data_rs;
extern fiid_template_t tmpl_cmd_write_fru_data_rq;
extern fiid_template_t tmpl_cmd_write_fru_data_rs;
int fill_cmd_get_fru_inventory_area_info (uint8_t fru_device_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_read_fru_data (uint8_t fru_device_id,
uint16_t fru_inventory_offset_to_read,
uint8_t count_to_read,
fiid_obj_t obj_cmd_rq);
int fill_cmd_write_fru_data (uint8_t fru_device_id,
uint16_t fru_inventory_offset_to_write,
const void *data_to_write,
unsigned int data_to_write_len,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_INVENTORY_DEVICE_CMDS_H */

View File

@ -0,0 +1,399 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_LAN_CMDS_H
#define IPMI_LAN_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_LAN_CONFIGURATION_PARAMETERS_NO_SET_SELECTOR 0x0
#define IPMI_LAN_CONFIGURATION_PARAMETERS_NO_BLOCK_SELECTOR 0x0
#define IPMI_LAN_CONFIGURATION_PARAMETERS_SET_COMPLETE 0x00
#define IPMI_LAN_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS 0x01
#define IPMI_LAN_CONFIGURATION_PARAMETERS_SET_COMMIT_WRITE 0x02
#define IPMI_LAN_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS_VALID(__value) \
(((__value) == IPMI_LAN_CONFIGURATION_PARAMETERS_SET_COMPLETE \
|| (__value) == IPMI_LAN_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS \
|| (__value) == IPMI_LAN_CONFIGURATION_PARAMETERS_SET_COMMIT_WRITE) ? 1 : 0)
#define IPMI_AUTHENTICATION_TYPE_SUPPORTED 0x1
#define IPMI_AUTHENTICATION_TYPE_UNSUPPORTED 0x0
#define IPMI_AUTHENTICATION_TYPE_ENABLE 0x1
#define IPMI_AUTHENTICATION_TYPE_DISABLE 0x0
#define IPMI_AUTHENTICATION_TYPE_ENABLE_VALID(__val) \
(((__val) == IPMI_AUTHENTICATION_TYPE_ENABLE \
|| (__val) == IPMI_AUTHENTICATION_TYPE_DISABLE) ? 1 : 0)
#define IPMI_IP_ADDRESS_SOURCE_UNSPECIFIED 0x0
#define IPMI_IP_ADDRESS_SOURCE_STATIC 0x1
#define IPMI_IP_ADDRESS_SOURCE_DHCP 0x2
#define IPMI_IP_ADDRESS_SOURCE_BIOS 0x3
#define IPMI_IP_ADDRESS_SOURCE_OTHER 0x4
#define IPMI_IP_ADDRESS_SOURCE_VALID(__val) \
(((__val) == IPMI_IP_ADDRESS_SOURCE_UNSPECIFIED \
|| (__val) == IPMI_IP_ADDRESS_SOURCE_STATIC \
|| (__val) == IPMI_IP_ADDRESS_SOURCE_DHCP \
|| (__val) == IPMI_IP_ADDRESS_SOURCE_BIOS \
|| (__val) == IPMI_IP_ADDRESS_SOURCE_OTHER) ? 1 : 0)
#define IPMI_BMC_GENERATED_GRATUITOUS_ARPS_ENABLE 0x1
#define IPMI_BMC_GENERATED_GRATUITOUS_ARPS_DISABLE 0x0
#define IPMI_BMC_GENERATED_GRATUITOUS_ARPS_VALID(__val) \
(((__val) == IPMI_BMC_GENERATED_GRATUITOUS_ARPS_ENABLE \
|| (__val) == IPMI_BMC_GENERATED_GRATUITOUS_ARPS_DISABLE) ? 1 : 0)
#define IPMI_BMC_GENERATED_ARP_RESPONSES_ENABLE 0x1
#define IPMI_BMC_GENERATED_ARP_RESPONSES_DISABLE 0x0
#define IPMI_BMC_GENERATED_ARP_RESPONSES_VALID(__val) \
(((__val) == IPMI_BMC_GENERATED_ARP_RESPONSES_ENABLE \
|| (__val) == IPMI_BMC_GENERATED_ARP_RESPONSES_DISABLE) ? 1 : 0)
#define IPMI_MAX_COMMUNITY_STRING_LENGTH 18
#define IPMI_DESTINATION_SELECTOR_MIN 0
#define IPMI_DESTINATION_SELECTOR_MAX 15
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_DESTINATION_SELECTOR_VALID(__val) \
(((__val + 1) >= (IPMI_DESTINATION_SELECTOR_MIN + 1) \
|| (__val) <= IPMI_DESTINATION_SELECTOR_MAX) ? 1 : 0)
#define IPMI_DESTINATION_TYPE_PET_TRAP_DESTINATION 0x0
#define IPMI_DESTINATION_TYPE_OEM1 0x6
#define IPMI_DESTINATION_TYPE_OEM2 0x7
#define IPMI_DESTINATION_TYPE_VALID(__val) \
(((__val) == IPMI_DESTINATION_TYPE_PET_TRAP_DESTINATION \
|| (__val) == IPMI_DESTINATION_TYPE_OEM1 \
|| (__val) == IPMI_DESTINATION_TYPE_OEM2) ? 1 : 0)
#define IPMI_ALERT_UNACKNOWLEDGED 0
#define IPMI_ALERT_ACKNOWLEDGED 1
#define IPMI_ALERT_VALID(__val) \
(((__val) == IPMI_ALERT_UNACKNOWLEDGED \
|| (__val) == IPMI_ALERT_ACKNOWLEDGED) ? 1 : 0)
#define IPMI_ADDRESS_FORMAT_IPV4 0
#define IPMI_GATEWAY_SELECTOR_DEFAULT 0
#define IPMI_GATEWAY_SELECTOR_BACKUP 1
#define IPMI_GATEWAY_SELECTOR_VALID(__val) \
(((__val) == IPMI_GATEWAY_SELECTOR_DEFAULT \
|| (__val) == IPMI_GATEWAY_SELECTOR_BACKUP) ? 1 : 0)
/* 3 bit number */
#define IPMI_ALERT_RETRIES_MAX 7
#define IPMI_VLAN_ID_ENABLE 0x1
#define IPMI_VLAN_ID_DISABLE 0x0
#define IPMI_VLAN_ID_ENABLE_VALID(__val) \
(((__val) == IPMI_VLAN_ID_ENABLE \
|| (__val) == IPMI_VLAN_ID_DISABLE) ? 1 : 0)
#define IPMI_BMC_GENERATED_GRATUITOUS_ARP_DO_NOT_SUSPEND 0x0
#define IPMI_BMC_GENERATED_GRATUITOUS_ARP_SUSPEND 0x1
#define IPMI_BMC_GENERATED_GRATUITOUS_ARP_VALID(__val) \
(((__val) == IPMI_BMC_GENERATED_GRATUITOUS_ARP_DO_NOT_SUSPEND \
|| (__val) == IPMI_BMC_GENERATED_GRATUITOUS_ARP_SUSPEND) ? 1 : 0)
#define IPMI_BMC_GENERATED_ARP_RESPONSE_DO_NOT_SUSPEND 0x0
#define IPMI_BMC_GENERATED_ARP_RESPONSE_SUSPEND 0x1
#define IPMI_BMC_GENERATED_ARP_RESPONSE_VALID(__val) \
(((__val) == IPMI_BMC_GENERATED_ARP_RESPONSE_DO_NOT_SUSPEND \
|| (__val) == IPMI_BMC_GENERATED_ARP_RESPONSE_SUSPEND) ? 1 : 0)
#define IPMI_USER_DISABLED_EVENT_MESSAGE_ON 0x1
#define IPMI_USER_DISABLED_EVENT_MESSAGE_OFF 0x0
#define IPMI_USER_DISABLED_EVENT_MESSAGE_VALID(__val) \
(((__val) == IPMI_USER_DISABLED_EVENT_MESSAGE_ON \
|| (__val) == IPMI_USER_DISABLED_EVENT_MESSAGE_OFF) ? 1 : 0)
#define IPMI_GET_LAN_PARAMETER 0x0
#define IPMI_GET_LAN_PARAMETER_REVISION_ONLY 0x1
#define IPMI_GET_LAN_PARAMETER_VALID(__val) \
(((__val) == IPMI_GET_LAN_PARAMETER \
|| (__val) == IPMI_GET_LAN_PARAMETER_REVISION_ONLY) ? 1 : 0)
#define IPMI_CLEAR_ALL_STATISTICS 0x1
#define IPMI_DONT_CLEAR_ALL_STATISTICS 0x0
#define IPMI_CLEAR_ALL_STATISTICS_VALID(__val) \
(((__val) == IPMI_CLEAR_ALL_STATISTICS \
|| (__val) == IPMI_DONT_CLEAR_ALL_STATISTICS) ? 1 : 0)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_rs;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_set_in_progress_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_authentication_type_enables_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_ip_address_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_ip_address_source_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_mac_address_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_subnet_mask_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_ipv4_header_parameters_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_primary_rmcp_port_number_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_secondary_rmcp_port_number_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_bmc_generated_arp_control_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_gratuitous_arp_interval_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_default_gateway_address_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_default_gateway_mac_address_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_backup_gateway_address_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_backup_gateway_mac_address_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_community_string_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_destination_type_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_destination_addresses_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_vlan_id_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_vlan_priority_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels_rq;
extern fiid_template_t tmpl_cmd_set_lan_configuration_parameters_bad_password_threshold_rq;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_rq;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_set_in_progress_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_authentication_type_support_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_authentication_type_enables_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_ip_address_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_ip_address_source_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_mac_address_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_subnet_mask_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_ipv4_header_parameters_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_primary_rmcp_port_number_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_secondary_rmcp_port_number_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_bmc_generated_arp_control_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_gratuitous_arp_interval_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_default_gateway_address_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_default_gateway_mac_address_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_backup_gateway_address_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_backup_gateway_mac_address_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_community_string_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_number_of_destinations_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_destination_type_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_destination_addresses_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_vlan_id_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_vlan_priority_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entry_support_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entries_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels_rs;
extern fiid_template_t tmpl_cmd_get_lan_configuration_parameters_bad_password_threshold_rs;
extern fiid_template_t tmpl_cmd_suspend_bmc_arps_rq;
extern fiid_template_t tmpl_cmd_suspend_bmc_arps_rs;
extern fiid_template_t tmpl_cmd_get_ip_udp_rmcp_statistics_rq;
extern fiid_template_t tmpl_cmd_get_ip_udp_rmcp_statistics_rs;
int fill_cmd_set_lan_configuration_parameters (uint8_t channel_number,
uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_set_in_progress (uint8_t channel_number,
uint8_t state,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_authentication_type_enables (uint8_t channel_number,
uint8_t callback_level_none,
uint8_t callback_level_md2,
uint8_t callback_level_md5,
uint8_t callback_level_straight_password,
uint8_t callback_level_oem_proprietary,
uint8_t user_level_none,
uint8_t user_level_md2,
uint8_t user_level_md5,
uint8_t user_level_straight_password,
uint8_t user_level_oem_proprietary,
uint8_t operator_level_none,
uint8_t operator_level_md2,
uint8_t operator_level_md5,
uint8_t operator_level_straight_password,
uint8_t operator_level_oem_proprietary,
uint8_t admin_level_none,
uint8_t admin_level_md2,
uint8_t admin_level_md5,
uint8_t admin_level_straight_password,
uint8_t admin_level_oem_proprietary,
uint8_t oem_level_none,
uint8_t oem_level_md2,
uint8_t oem_level_md5,
uint8_t oem_level_straight_password,
uint8_t oem_level_oem_proprietary,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_ip_address (uint8_t channel_number,
uint32_t ip_address,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_ip_address_source (uint8_t channel_number,
uint8_t ip_address_source,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_mac_address (uint8_t channel_number,
uint64_t mac_address,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_subnet_mask (uint8_t channel_number,
uint32_t subnet_mask,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_ipv4_header_parameters (uint8_t channel_number,
uint8_t time_to_live,
uint8_t flags,
uint8_t type_of_service,
uint8_t precedence,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_primary_rmcp_port_number (uint8_t channel_number,
uint16_t primary_rmcp_port_number,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_secondary_rmcp_port_number (uint8_t channel_number,
uint16_t secondary_rmcp_port_number,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_bmc_generated_arp_control (uint8_t channel_number,
uint8_t bmc_generated_gratuitous_arps,
uint8_t bmc_generated_arp_responses,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_gratuitous_arp_interval (uint8_t channel_number,
uint8_t gratuitous_arp_interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_default_gateway_address (uint8_t channel_number,
uint32_t ip_address,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_default_gateway_mac_address (uint8_t channel_number,
uint64_t mac_address,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_backup_gateway_address (uint8_t channel_number,
uint32_t ip_address,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_backup_gateway_mac_address (uint8_t channel_number,
uint64_t mac_address,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_community_string (uint8_t channel_number,
const char *community_string,
unsigned int community_string_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_destination_type (uint8_t channel_number,
uint8_t destination_selector,
uint8_t destination_type,
uint8_t alert_acknowledge,
uint8_t alert_acknowledge_timeout,
uint8_t retries,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_destination_addresses (uint8_t channel_number,
uint8_t destination_selector,
uint8_t gateway_selector,
uint32_t alerting_ip_address,
uint64_t alerting_mac_address,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_vlan_id (uint8_t channel_number,
uint16_t vlan_id,
uint8_t vlan_id_enable,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_vlan_priority (uint8_t channel_number,
uint8_t vlan_priority,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels (uint8_t channel_number,
uint8_t maximum_privilege_for_cipher_suite_1,
uint8_t maximum_privilege_for_cipher_suite_2,
uint8_t maximum_privilege_for_cipher_suite_3,
uint8_t maximum_privilege_for_cipher_suite_4,
uint8_t maximum_privilege_for_cipher_suite_5,
uint8_t maximum_privilege_for_cipher_suite_6,
uint8_t maximum_privilege_for_cipher_suite_7,
uint8_t maximum_privilege_for_cipher_suite_8,
uint8_t maximum_privilege_for_cipher_suite_9,
uint8_t maximum_privilege_for_cipher_suite_10,
uint8_t maximum_privilege_for_cipher_suite_11,
uint8_t maximum_privilege_for_cipher_suite_12,
uint8_t maximum_privilege_for_cipher_suite_13,
uint8_t maximum_privilege_for_cipher_suite_14,
uint8_t maximum_privilege_for_cipher_suite_15,
uint8_t maximum_privilege_for_cipher_suite_16,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_lan_configuration_parameters_bad_password_threshold (uint8_t channel_number,
uint8_t user_disabled_event_message,
uint8_t bad_password_threshold_number,
uint16_t attempt_count_reset_interval,
uint16_t user_lockout_interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_lan_configuration_parameters (uint8_t channel_number,
uint8_t get_parameter,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rq);
int fill_cmd_suspend_bmc_arps (uint8_t channel_number,
uint8_t gratuitous_arp_suspend,
uint8_t arp_response_suspend,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_ip_udp_rmcp_statistics (uint8_t channel_number,
uint8_t clear_all_statistics,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_LAN_CMDS_H */

View File

@ -0,0 +1,654 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_MESSAGING_SUPPORT_CMDS_H
#define IPMI_MESSAGING_SUPPORT_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_MAX_USER_NAME_LENGTH 16
#define IPMI_1_5_MAX_PASSWORD_LENGTH 16
#define IPMI_2_0_MAX_PASSWORD_LENGTH 20
#define IPMI_MAX_PASSWORD_LENGTH IPMI_2_0_MAX_PASSWORD_LENGTH
#define IPMI_CHALLENGE_STRING_LENGTH 16
#define IPMI_MAX_K_R_LENGTH 20
#define IPMI_MAX_K_G_LENGTH 20
#define IPMI_BMC_GLOBAL_ENABLES_ENABLED 0x1
#define IPMI_BMC_GLOBAL_ENALBES_DISABLED 0x0
#define IPMI_BMC_GLOBAL_ENABLES_VALID(__val) \
(((__val) == IPMI_BMC_GLOBAL_ENABLES_ENABLED \
|| (__val) == IPMI_BMC_GLOBAL_ENALBES_DISABLED) ? 1 : 0)
#define IPMI_MESSAGE_FLAGS_CLEAR 0x1
#define IPMI_MESSAGE_FLAGS_DONT_CLEAR 0x0
#define IPMI_MESSAGE_FLAGS_VALID(__val) \
(((__val) == IPMI_MESSAGE_FLAGS_CLEAR \
|| (__val) == IPMI_MESSAGE_FLAGS_DONT_CLEAR) ? 1 : 0)
#define IPMI_CHANNEL_OPERATION_DISABLE_CHANNEL 0x00
#define IPMI_CHANNEL_OPERATION_ENABLE_CHANNEL 0x01
#define IPMI_CHANNEL_OPERATION_GET_CHANNEL_ENABLE_DISABLE_STATE 0x02
#define IPMI_CHANNEL_OPERATION_VALID(__val) \
(((__val) == IPMI_CHANNEL_OPERATION_DISABLE_CHANNEL \
|| (__val) == IPMI_CHANNEL_OPERATION_ENABLE_CHANNEL \
|| (__val) == IPMI_CHANNEL_OPERATION_GET_CHANNEL_ENABLE_DISABLE_STATE) ? 1 : 0)
#define IPMI_CHANNEL_DISABLED 0x00
#define IPMI_CHANNEL_ENABLED 0x01
#define IPMI_SEND_MESSAGE_WITH_AUTHENTICATION 0x1
#define IPMI_SEND_MESSAGE_AUTHENTICATION_NOT_REQUIRED 0x0
#define IPMI_SEND_MESSAGE_AUTHENTICATION_VALID(__val) \
(((__val) == IPMI_SEND_MESSAGE_WITH_AUTHENTICATION \
|| (__val) == IPMI_SEND_MESSAGE_AUTHENTICATION_NOT_REQUIRED) ? 1 : 0)
#define IPMI_SEND_MESSAGE_WITH_ENCRYPTION 0x1
#define IPMI_SEND_MESSAGE_ENCRYPTION_NOT_REQUIRED 0x0
#define IPMI_SEND_MESSAGE_ENCRYPTION_VALID(__val) \
(((__val) == IPMI_SEND_MESSAGE_WITH_ENCRYPTION \
|| (__val) == IPMI_SEND_MESSAGE_ENCRYPTION_NOT_REQUIRED) ? 1 : 0)
#define IPMI_SEND_MESSAGE_TRACKING_OPERATION_NO_TRACKING 0x0
#define IPMI_SEND_MESSAGE_TRACKING_OPERATION_TRACKING_REQUEST 0x1
#define IPMI_SEND_MESSAGE_TRACKING_OPERATION_SEND_RAW 0x2
#define IPMI_SEND_MESSAGE_TRACKING_VALID(__val) \
(((__val) == IPMI_SEND_MESSAGE_TRACKING_OPERATION_NO_TRACKING \
|| (__val) == IPMI_SEND_MESSAGE_TRACKING_OPERATION_TRACKING_REQUEST \
|| (__val) == IPMI_SEND_MESSAGE_TRACKING_OPERATION_SEND_RAW) ? 1 : 0)
#define IPMI_SYSTEM_INTERFACE_SSIF 0x00
#define IPMI_SYSTEM_INTERFACE_KCS 0x01
#define IPMI_SYSTEM_INTERFACE_SMIC 0x02
#define IPMI_SYSTEM_INTERFACE_VALID(__val) \
(((__val) == IPMI_SYSTEM_INTERFACE_SSIF \
|| (__val) == IPMI_SYSTEM_INTERFACE_KCS \
|| (__val) == IPMI_SYSTEM_INTERFACE_SMIC) ? 1 : 0)
#define IPMI_SSIF_SYSTEM_INTERFACE_VERSION_1 0x0
#define IPMI_SSIF_SYSTEM_INTERFACE_IMPLEMENTS_PEC 0x1
#define IPMI_SSIF_SYSTEM_INTERFACE_DOES_NOT_SUPPORT_PEC 0x0
#define IPMI_SSIF_SYSTEM_INTERFACE_TRANSACTION_SUPPORT_SINGLE_PART_READS_WRITES_SUPPORTED 0x0
#define IPMI_SSIF_SYSTEM_INTERFACE_TRANSACTION_SUPPORT_MULTI_PART_READS_WRITES_SUPPORTED_START_AND_END_ONLY 0x1
#define IPMI_SSIF_SYSTEM_INTERFACE_TRANSACTION_SUPPORT_MULTI_PART_READS_WRITES_SUPPORTED_START_MIDDLE_END 0x2
#define IPMI_KCS_SYSTEM_INTERFACE_VERSION_1 0x0
#define IPMI_BUS_TYPE_PUBLIC 0x0
#define IPMI_BUS_TYPE_PRIVATE 0x1
#define IPMI_BUS_TYPE_VALID(__bus_type) \
(((__bus_type) == IPMI_BUS_TYPE_PUBLIC \
|| (__bus_type) == IPMI_BUS_TYPE_PRIVATE) ? 1 : 0)
#define IPMI_GET_IPMI_V20_EXTENDED_DATA 0x01
#define IPMI_GET_IPMI_V15_DATA 0x00
#define IPMI_GET_IPMI_DATA_VALID(__val) \
(((__val) == IPMI_GET_IPMI_V20_EXTENDED_DATA \
|| (__val) == IPMI_GET_IPMI_V15_DATA) ? 1 : 0)
#define IPMI_GET_SYSTEM_INFO_PARAMETER 0x0
#define IPMI_GET_SYSTEM_INFO_PARAMETER_REVISION_ONLY 0x1
#define IPMI_GET_SYSTEM_INFO_PARAMETER_VALID(__val) \
(((__val) == IPMI_GET_SYSTEM_INFO_PARAMETER \
|| (__val) == IPMI_GET_SYSTEM_INFO_PARAMETER_REVISION_ONLY) ? 1 : 0)
#define IPMI_SYSTEM_INFO_PARAMETERS_NO_SET_SELECTOR 0x0
#define IPMI_SYSTEM_INFO_PARAMETERS_NO_BLOCK_SELECTOR 0x0
#define IPMI_SYSTEM_INFO_PARAMETERS_SET_COMPLETE 0x00
#define IPMI_SYSTEM_INFO_PARAMETERS_SET_IN_PROGRESS 0x01
#define IPMI_SYSTEM_INFO_PARAMETERS_SET_COMMIT_WRITE 0x02
#define IPMI_SYSTEM_INFO_PARAMETERS_SET_IN_PROGRESS_VALID(__value) \
(((__value) == IPMI_SYSTEM_INFO_PARAMETERS_SET_COMPLETE \
|| (__value) == IPMI_SYSTEM_INFO_PARAMETERS_SET_IN_PROGRESS \
|| (__value) == IPMI_SYSTEM_INFO_PARAMETERS_SET_COMMIT_WRITE) ? 1 : 0)
#define IPMI_SYSTEM_INFO_ENCODING_ASCII_LATIN1 0x0
#define IPMI_SYSTEM_INFO_ENCODING_UTF_8 0x1
#define IPMI_SYSTEM_INFO_ENCODING_UNICODE 0x2
#define IPMI_SYSTEM_INFO_ENCODING_VALID(__val) \
(((__val) == IPMI_SYSTEM_INFO_ENCODING_ASCII_LATIN1 \
|| (__val) == IPMI_SYSTEM_INFO_ENCODING_UTF_8 \
|| (__val) == IPMI_SYSTEM_INFO_ENCODING_UNICODE) ? 1 : 0)
#define IPMI_SYSTEM_INFO_FIRST_SET_STRING_LEN_MAX 14
#define IPMI_SYSTEM_INFO_SET_STRING_LEN_MAX 16
#define IPMI_SYSTEM_INFO_STRING_LEN_MAX 255
#define IPMI_LIST_ALGORITHMS_BY_CIPHER_SUITE 0x1
#define IPMI_LIST_SUPPORTED_ALGORITHMS 0x0
#define IPMI_LIST_ALGORITHM_TYPE_VALID(__val) \
(((__val) == IPMI_LIST_ALGORITHMS_BY_CIPHER_SUITE \
|| (__val) == IPMI_LIST_SUPPORTED_ALGORITHMS) ? 1 : 0)
#define IPMI_MESSAGING_ACCESS_MODE_DISABLED 0x0
#define IPMI_MESSAGING_ACCESS_MODE_PRE_BOOT_ONLY 0x1
#define IPMI_MESSAGING_ACCESS_MODE_ALWAYS_AVAILABLE 0x2
#define IPMI_MESSAGING_ACCESS_MODE_SHARED 0x3
#define IPMI_MESSAGING_ACCESS_MODE_VALID(__access_mode) \
(((__access_mode) == IPMI_MESSAGING_ACCESS_MODE_DISABLED \
|| (__access_mode) == IPMI_MESSAGING_ACCESS_MODE_PRE_BOOT_ONLY \
|| (__access_mode) == IPMI_MESSAGING_ACCESS_MODE_ALWAYS_AVAILABLE \
|| (__access_mode) == IPMI_MESSAGING_ACCESS_MODE_SHARED) ? 1 : 0)
#define IPMI_USER_LEVEL_AUTHENTICATION_ENABLE 0x0
#define IPMI_USER_LEVEL_AUTHENTICATION_DISABLE 0x1
#define IPMI_USER_LEVEL_AUTHENTICATION_VALID(__val) \
(((__val) == IPMI_USER_LEVEL_AUTHENTICATION_ENABLE \
|| (__val) == IPMI_USER_LEVEL_AUTHENTICATION_DISABLE) ? 1 : 0)
#define IPMI_PER_MESSAGE_AUTHENTICATION_ENABLE 0x0
#define IPMI_PER_MESSAGE_AUTHENTICATION_DISABLE 0x1
#define IPMI_PER_MESSAGE_AUTHENTICATION_VALID(__val) \
(((__val) == IPMI_PER_MESSAGE_AUTHENTICATION_ENABLE \
|| (__val) == IPMI_PER_MESSAGE_AUTHENTICATION_DISABLE) ? 1 : 0)
#define IPMI_PEF_ALERTING_ENABLE 0x0
#define IPMI_PEF_ALERTING_DISABLE 0x1
#define IPMI_PEF_ALERTING_VALID(__val) \
(((__val) == IPMI_PEF_ALERTING_ENABLE \
|| (__val) == IPMI_PEF_ALERTING_DISABLE) ? 1 : 0)
#define IPMI_CHANNEL_ACCESS_NO_CHANGE 0x0
#define IPMI_CHANNEL_ACCESS_SET_NON_VOLATILE 0x1
#define IPMI_CHANNEL_ACCESS_SET_VOLATILE 0x2
#define IPMI_CHANNEL_ACCESS_RESERVED 0x3
#define IPMI_CHANNEL_ACCESS_VALID(__access_mode) \
(((__access_mode) == IPMI_CHANNEL_ACCESS_NO_CHANGE \
|| (__access_mode) == IPMI_CHANNEL_ACCESS_SET_NON_VOLATILE \
|| (__access_mode) == IPMI_CHANNEL_ACCESS_SET_VOLATILE) ? 1 : 0)
#define IPMI_PRIVILEGE_LEVEL_LIMIT_NO_CHANGE 0x0
#define IPMI_PRIVILEGE_LEVEL_LIMIT_SET_NON_VOLATILE 0x1
#define IPMI_PRIVILEGE_LEVEL_LIMIT_SET_VOLATILE 0x2
#define IPMI_PRIVILEGE_LEVEL_LIMIT_RESERVED 0x3
#define IPMI_PRIVILEGE_LEVEL_LIMIT_SET_VALID(__privilege_level_limit) \
(((__privilege_level_limit) == IPMI_PRIVILEGE_LEVEL_LIMIT_NO_CHANGE \
|| (__privilege_level_limit) == IPMI_PRIVILEGE_LEVEL_LIMIT_SET_NON_VOLATILE \
|| (__privilege_level_limit) == IPMI_PRIVILEGE_LEVEL_LIMIT_SET_VOLATILE) ? 1 : 0)
#define IPMI_CHANNEL_ACCESS_GET_NON_VOLATILE 0x1
#define IPMI_CHANNEL_ACCESS_GET_VOLATILE 0x2
#define IPMI_CHANNEL_ACCESS_GET_VALID(__val) \
(((__val) == IPMI_CHANNEL_ACCESS_GET_NON_VOLATILE \
|| (__val) == IPMI_CHANNEL_ACCESS_GET_VOLATILE) ? 1 : 0)
#define IPMI_USER_RESTRICTED_TO_CALLBACK_ENABLE 0x1
#define IPMI_USER_RESTRICTED_TO_CALLBACK_DISABLE 0x0
#define IPMI_USER_RESTRICTED_TO_CALLBACK_VALID(__val) \
(((__val) == IPMI_USER_RESTRICTED_TO_CALLBACK_ENABLE \
|| (__val) == IPMI_USER_RESTRICTED_TO_CALLBACK_DISABLE) ? 1 : 0)
#define IPMI_PRIVILEGE_LEVEL_LIMIT_VALID(__privilege_level) \
(((__privilege_level) == IPMI_PRIVILEGE_LEVEL_CALLBACK \
|| (__privilege_level) == IPMI_PRIVILEGE_LEVEL_USER \
|| (__privilege_level) == IPMI_PRIVILEGE_LEVEL_OPERATOR \
|| (__privilege_level) == IPMI_PRIVILEGE_LEVEL_ADMIN \
|| (__privilege_level) == IPMI_PRIVILEGE_LEVEL_OEM \
|| (__privilege_level) == IPMI_PRIVILEGE_LEVEL_NO_ACCESS) ? 1 : 0)
#define IPMI_USER_LINK_AUTHENTICATION_ENABLE 0x1
#define IPMI_USER_LINK_AUTHENTICATION_DISABLE 0x0
#define IPMI_USER_LINK_AUTHENTICATION_VALID(__val) \
(((__val) == IPMI_USER_LINK_AUTHENTICATION_ENABLE \
|| (__val) == IPMI_USER_LINK_AUTHENTICATION_DISABLE) ? 1 : 0)
#define IPMI_USER_IPMI_MESSAGING_ENABLE 0x1
#define IPMI_USER_IPMI_MESSAGING_DISABLE 0x0
#define IPMI_USER_IPMI_MESSAGING_VALID(__val) \
(((__val) == IPMI_USER_IPMI_MESSAGING_ENABLE \
|| (__val) == IPMI_USER_IPMI_MESSAGING_DISABLE) ? 1 : 0)
#define IPMI_CHANGE_BITS_YES 0x1
#define IPMI_CHANGE_BITS_NO 0x0
#define IPMI_CHANGE_BITS_VALID(__val) \
(((__val) == IPMI_CHANGE_BITS_YES \
|| (__val) == IPMI_CHANGE_BITS_NO) ? 1 : 0)
#define IPMI_SESSION_SUPPORT_SESSION_LESS 0x00
#define IPMI_SESSION_SUPPORT_SINGLE_SESSION 0x01
#define IPMI_SESSION_SUPPORT_MULTI_SESSION 0x02
#define IPMI_SESSION_SUPPORT_SESSION_BASED 0x03
#define IPMI_CHANNEL_SECURITY_KEYS_OPERATION_READ_KEY 0x0
#define IPMI_CHANNEL_SECURITY_KEYS_OPERATION_SET_KEY 0x1
#define IPMI_CHANNEL_SECURITY_KEYS_OPERATION_LOCK_KEY 0x2
#define IPMI_CHANNEL_SECURITY_KEYS_OPERATION_VALID(__val) \
(((__val) == IPMI_CHANNEL_SECURITY_KEYS_OPERATION_READ_KEY \
|| (__val) == IPMI_CHANNEL_SECURITY_KEYS_OPERATION_SET_KEY \
|| (__val) == IPMI_CHANNEL_SECURITY_KEYS_OPERATION_LOCK_KEY) ? 1 : 0)
#define IPMI_CHANNEL_SECURITY_KEYS_KEY_ID_K_R 0x0
#define IPMI_CHANNEL_SECURITY_KEYS_KEY_ID_K_G 0x1
#define IPMI_CHANNEL_SECURITY_KEYS_KEY_ID_VALID(__val) \
(((__val) == IPMI_CHANNEL_SECURITY_KEYS_KEY_ID_K_R \
|| (__val) == IPMI_CHANNEL_SECURITY_KEYS_KEY_ID_K_G) ? 1 : 0)
#define IPMI_CHANNEL_SECURITY_KEYS_LOCK_STATUS_KEY_IS_NOT_LOCKABLE 0x0
#define IPMI_CHANNEL_SECURITY_KEYS_LOCK_STATUS_KEY_IS_LOCKED 0x1
#define IPMI_CHANNEL_SECURITY_KEYS_LOCK_STATUS_KEY_IS_UNLOCKED 0x2
#define IPMI_PASSWORD_OPERATION_DISABLE_USER 0x0
#define IPMI_PASSWORD_OPERATION_ENABLE_USER 0x1
#define IPMI_PASSWORD_OPERATION_SET_PASSWORD 0x2
#define IPMI_PASSWORD_OPERATION_TEST_PASSWORD 0x3
#define IPMI_PASSWORD_OPERATION_VALID(__operation) \
(((__operation) == IPMI_PASSWORD_OPERATION_DISABLE_USER \
|| (__operation) == IPMI_PASSWORD_OPERATION_ENABLE_USER \
|| (__operation) == IPMI_PASSWORD_OPERATION_SET_PASSWORD \
|| (__operation) == IPMI_PASSWORD_OPERATION_TEST_PASSWORD) ? 1 : 0)
#define IPMI_PASSWORD_SIZE_16_BYTES 0x0
#define IPMI_PASSWORD_SIZE_20_BYTES 0x1
#define IPMI_PASSWORD_SIZE_VALID(__password_size) \
(((__password_size) == IPMI_PASSWORD_SIZE_16_BYTES \
|| (__password_size) == IPMI_PASSWORD_SIZE_20_BYTES) ? 1 : 0)
#define IPMI_USER_ID_ENABLE_STATUS_UNSPECIFIED 0x0
#define IPMI_USER_ID_ENABLE_STATUS_ENABLED 0x1
#define IPMI_USER_ID_ENABLE_STATUS_DISABLED 0x2
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_set_bmc_global_enables_rq;
extern fiid_template_t tmpl_cmd_set_bmc_global_enables_rs;
extern fiid_template_t tmpl_cmd_get_bmc_global_enables_rq;
extern fiid_template_t tmpl_cmd_get_bmc_global_enables_rs;
extern fiid_template_t tmpl_cmd_clear_message_flags_rq;
extern fiid_template_t tmpl_cmd_clear_message_flags_rs;
extern fiid_template_t tmpl_cmd_get_message_flags_rq;
extern fiid_template_t tmpl_cmd_get_message_flags_rs;
extern fiid_template_t tmpl_cmd_enable_message_channel_receive_rq;
extern fiid_template_t tmpl_cmd_enable_message_channel_receive_rs;
extern fiid_template_t tmpl_cmd_get_message_rq;
extern fiid_template_t tmpl_cmd_get_message_rs;
extern fiid_template_t tmpl_cmd_send_message_rq;
extern fiid_template_t tmpl_cmd_send_message_rs;
extern fiid_template_t tmpl_cmd_read_event_message_buffer_rq;
extern fiid_template_t tmpl_cmd_read_event_message_buffer_rs;
extern fiid_template_t tmpl_cmd_get_system_interface_capabilities_rq;
extern fiid_template_t tmpl_cmd_get_system_interface_capabilities_rs;
extern fiid_template_t tmpl_cmd_get_system_interface_capabilities_ssif_rs;
extern fiid_template_t tmpl_cmd_get_system_interface_capabilities_kcs_rs;
extern fiid_template_t tmpl_cmd_get_bt_interface_capabilities_rq;
extern fiid_template_t tmpl_cmd_get_bt_interface_capabilities_rs;
extern fiid_template_t tmpl_cmd_master_write_read_rq;
extern fiid_template_t tmpl_cmd_master_write_read_rs;
extern fiid_template_t tmpl_cmd_get_channel_authentication_capabilities_rq;
extern fiid_template_t tmpl_cmd_get_channel_authentication_capabilities_rs;
extern fiid_template_t tmpl_cmd_get_system_guid_rq;
extern fiid_template_t tmpl_cmd_get_system_guid_rs;
extern fiid_template_t tmpl_cmd_get_device_guid_format_rs;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_rs;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_set_in_progress_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_system_firmware_version_first_set_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_system_firmware_version_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_system_name_first_set_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_system_name_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_primary_operating_system_name_first_set_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_primary_operating_system_name_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_operating_system_name_first_set_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_operating_system_name_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_present_os_version_number_first_set_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_present_os_version_number_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_bmc_url_first_set_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_bmc_url_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_base_os_hypervisor_url_first_set_rq;
extern fiid_template_t tmpl_cmd_set_system_info_parameters_base_os_hypervisor_url_rq;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_rq;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_set_in_progress_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_system_firmware_version_first_set_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_system_firmware_version_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_system_name_first_set_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_system_name_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_primary_operating_system_name_first_set_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_primary_operating_system_name_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_operating_system_name_first_set_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_operating_system_name_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_present_os_version_number_first_set_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_present_os_version_number_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_bmc_url_first_set_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_bmc_url_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_base_os_hypervisor_url_first_set_rs;
extern fiid_template_t tmpl_cmd_get_system_info_parameters_base_os_hypervisor_url_rs;
extern fiid_template_t tmpl_cmd_get_channel_cipher_suites_rq;
extern fiid_template_t tmpl_cmd_get_channel_cipher_suites_rs;
extern fiid_template_t tmpl_cmd_get_session_challenge_rq;
extern fiid_template_t tmpl_cmd_get_session_challenge_rs;
extern fiid_template_t tmpl_cmd_activate_session_rq;
extern fiid_template_t tmpl_cmd_activate_session_rs;
extern fiid_template_t tmpl_cmd_set_session_privilege_level_rq;
extern fiid_template_t tmpl_cmd_set_session_privilege_level_rs;
extern fiid_template_t tmpl_cmd_close_session_rq;
extern fiid_template_t tmpl_cmd_close_session_rs;
extern fiid_template_t tmpl_cmd_set_channel_access_rq;
extern fiid_template_t tmpl_cmd_set_channel_access_rs;
extern fiid_template_t tmpl_cmd_get_channel_access_rq;
extern fiid_template_t tmpl_cmd_get_channel_access_rs;
extern fiid_template_t tmpl_cmd_get_channel_info_rq;
extern fiid_template_t tmpl_cmd_get_channel_info_rs;
extern fiid_template_t tmpl_cmd_set_channel_security_keys_rq;
extern fiid_template_t tmpl_cmd_set_channel_security_keys_rs;
extern fiid_template_t tmpl_cmd_set_user_access_rq;
extern fiid_template_t tmpl_cmd_set_user_access_rs;
extern fiid_template_t tmpl_cmd_get_user_access_rq;
extern fiid_template_t tmpl_cmd_get_user_access_rs;
extern fiid_template_t tmpl_cmd_set_user_name_rq;
extern fiid_template_t tmpl_cmd_set_user_name_rs;
extern fiid_template_t tmpl_cmd_get_user_name_rq;
extern fiid_template_t tmpl_cmd_get_user_name_rs;
extern fiid_template_t tmpl_cmd_set_user_password_rq;
extern fiid_template_t tmpl_cmd_set_user_password_rs;
int fill_cmd_set_bmc_global_enables (uint8_t receive_message_queue_interrupt,
uint8_t event_message_buffer_full_interrupt,
uint8_t event_message_buffer,
uint8_t system_event_logging,
uint8_t oem_0,
uint8_t oem_1,
uint8_t oem_2,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_bmc_global_enables (fiid_obj_t obj_cmd_rq);
int fill_cmd_clear_message_flags (uint8_t receive_message_queue,
uint8_t event_message_buffer,
uint8_t watchdog_pre_timeout_interrupt_flag,
uint8_t oem_0,
uint8_t oem_1,
uint8_t oem_2,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_message_flags (fiid_obj_t obj_cmd_rq);
int fill_cmd_enable_message_channel_receive (uint8_t channel_number,
uint8_t channel_operation,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_message (fiid_obj_t obj_cmd_rq);
int fill_cmd_send_message (uint8_t channel_number,
uint8_t message_authentication,
uint8_t message_encryption,
uint8_t tracking_operation,
const void *message_data,
unsigned int message_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_read_event_message_buffer (fiid_obj_t obj_cmd_rq);
int fill_cmd_get_system_interface_capabilities (uint8_t system_interface,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_bt_interface_capabilities (fiid_obj_t obj_cmd_rq);
int fill_cmd_master_write_read (uint8_t bus_type,
uint8_t bus_id,
uint8_t channel_number,
uint8_t slave_address,
uint8_t read_count,
const void *data,
unsigned int data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_channel_authentication_capabilities (uint8_t channel_number,
uint8_t maximum_privilege_level,
uint8_t get_ipmi_v20_extended_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_system_guid (fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters (uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_set_in_progress (uint8_t state,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_system_firmware_version_first_set (uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_system_firmware_version (uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_system_name_first_set (uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_system_name (uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_primary_operating_system_name_first_set (uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_primary_operating_system_name (uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_operating_system_name_first_set (uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_operating_system_name (uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_present_os_version_number_first_set (uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_present_os_version_number (uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_bmc_url_first_set (uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_bmc_url (uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_base_os_hypervisor_url_first_set (uint8_t set_selector,
uint8_t encoding,
uint8_t string_length,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_system_info_parameters_base_os_hypervisor_url (uint8_t set_selector,
const void *string_block,
unsigned int string_block_length,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_system_info_parameters (uint8_t get_parameter,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_channel_cipher_suites (uint8_t channel_number,
uint8_t payload_type,
uint8_t list_index,
uint8_t list_algorithm_type,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_session_challenge (uint8_t authentication_type,
const char *user_name,
unsigned int user_name_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_activate_session (uint8_t authentication_type,
uint8_t maximum_privilege_level,
const void *challenge_string,
unsigned int challenge_string_len,
uint32_t initial_outbound_sequence_number,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_session_privilege_level (uint8_t privilege_level,
fiid_obj_t obj_cmd_rq);
int fill_cmd_close_session (uint32_t session_id,
uint8_t *session_handle,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_channel_access (uint8_t channel_number,
uint8_t ipmi_messaging_access_mode,
uint8_t user_level_authentication,
uint8_t per_message_authentication,
uint8_t pef_alerting,
uint8_t channel_access_set,
uint8_t channel_privilege_level_limit,
uint8_t channel_privilege_level_limit_set,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_channel_access (uint8_t channel_number,
uint8_t channel_access_get,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_channel_info (uint8_t channel_number, fiid_obj_t obj_cmd_rq);
int fill_cmd_set_channel_security_keys (uint8_t channel_number,
uint8_t operation,
uint8_t key_id,
const void *key_value,
unsigned int key_value_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_user_access (uint8_t channel_number,
uint8_t user_ipmi_messaging,
uint8_t user_link_authentication,
uint8_t user_restricted_to_callback,
uint8_t change_bits_in_byte,
uint8_t user_id,
uint8_t user_privilege_level_limit,
uint8_t user_session_limit,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_user_access (uint8_t channel_number,
uint8_t user_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_user_name (uint8_t user_id,
const char *user_name,
unsigned int user_name_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_user_name (uint8_t user_id, fiid_obj_t obj_cmd_rq);
int fill_cmd_set_user_password (uint8_t user_id,
uint8_t password_size,
uint8_t operation,
const char *password,
unsigned int password_len,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_MESSAGING_SUPPORT_CMDS_H */

View File

@ -0,0 +1,537 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_OEM_INTEL_NODE_MANAGER_CMDS_H
#define IPMI_OEM_INTEL_NODE_MANAGER_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
/*
* Intel Node Manager
*
* For Intel Chips, not just Intel Motherboards. Confirmed for:
*
* Intel S5500WB/Penguin Computing Relion 700
* Intel S2600JF/Appro 512X
* Intel S2600KP
* Intel S2600WT2
* Intel S2600WTT
* Inventec 5441/Dell Xanadu II
* Inventec 5442/Dell Xanadu III
* Quanta S99Q/Dell FS12-TY
* Quanta QSSC-S4R/Appro GB812X-CN
*/
#define IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_MIN 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_MAX 0xF
#define IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_ENTIRE_PLATFORM 0x00
#define IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_CPU_SUBSYSTEM 0x01
#define IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_MEMORY_SUBSYSTEM 0x02
#define IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_RESERVED 0x03
#define IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_HIGH_POWER_IO_SUBSYSTEM 0x04
#define IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_ENTIRE_PLATFORM \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_CPU_SUBSYSTEM \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_MEMORY_SUBSYSTEM \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_DOMAIN_ID_HIGH_POWER_IO_SUBSYSTEM) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_GLOBAL_DISABLE_NODE_MANAGER_POLICY_CONTROL 0x00
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_GLOBAL_ENABLE_NODE_MANAGER_POLICY_CONTROL 0x01
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_PER_DOMAIN_DISABLE_NODE_MANAGER_POLICIES 0x02
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_PER_DOMAIN_ENABLE_NODE_MANAGER_POLITICES 0x03
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_PER_POLICY_DISABLE_NODE_MANAGER_POLICIES 0x04
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_PER_POLICY_ENABLE_NODE_MANAGER_POLITICES 0x05
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_GLOBAL_DISABLE_NODE_MANAGER_POLICY_CONTROL \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_GLOBAL_ENABLE_NODE_MANAGER_POLICY_CONTROL \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_PER_DOMAIN_DISABLE_NODE_MANAGER_POLICIES \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_PER_DOMAIN_ENABLE_NODE_MANAGER_POLITICES \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_PER_POLICY_DISABLE_NODE_MANAGER_POLICIES \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLE_DISABLE_PER_POLICY_ENABLE_NODE_MANAGER_POLITICES) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLED 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_DISABLED 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLED_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ENABLED \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_DISABLED) ? 1 : 0)
/* Celsius */
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_NO_POLICY_TRIGGER 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_INLET_TEMPERATURE_LIMIT_POLICY_TRIGGER 0x1
/* 1/10 seconds units */
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_MISSING_POWER_READING_TIMEOUT 0x2
/* 1/10 seconds units */
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_TIME_AFTER_PLATFORM_RESET_TRIGGER 0x3
/* Only to domain 0 = Entire Platform */
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_BOOT_TIME_POLICY 0x4
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_NO_POLICY_TRIGGER \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_INLET_TEMPERATURE_LIMIT_POLICY_TRIGGER \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_MISSING_POWER_READING_TIMEOUT \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_TIME_AFTER_PLATFORM_RESET_TRIGGER \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_TYPE_BOOT_TIME_POLICY) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_CONFIGURATION_ACTION_POLICY_POINTED_BY_POLICY_ID_SHALL_BE_REMOVED 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_CONFIGURATION_ACTION_ADD_POWER_POLICY 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_CONFIGURATION_ACTION_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_CONFIGURATION_ACTION_POLICY_POINTED_BY_POLICY_ID_SHALL_BE_REMOVED \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_CONFIGURATION_ACTION_ADD_POWER_POLICY) ? 1 : 0)
/* achu: not in spec, assume it to be true */
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_EXCEPTION_ACTION_ENABLE 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_EXCEPTION_ACTION_DISABLE 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_EXCEPTION_ACTION_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_EXCEPTION_ACTION_ENABLE \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_EXCEPTION_ACTION_DISABLE) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_PER_DOMAIN_NODE_MANAGER_POLICY_CONTROL_ENABLED 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_PER_DOMAIN_NODE_MANAGER_POLICY_CONTROL_DISABLED 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_GLOBAL_NODE_MANAGER_POLICY_CONTROL_ENABLED 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_GLOBAL_NODE_MANAGER_POLICY_CONTROL_DISABLED 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_CREATED_AND_MANAGED_BY_OTHER_MANAGEMENT 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_NOT_CREATED_AND_MANAGED_BY_OTHER_MANAGEMENT 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_AGGRESSIVE_CPU_POWER_CORRECTION_AUTOMATIC 0x00
#define IPMI_OEM_INTEL_NODE_MANAGER_AGGRESSIVE_CPU_POWER_CORRECTION_NON_AGGRESSIVE 0x01
#define IPMI_OEM_INTEL_NODE_MANAGER_AGGRESSIVE_CPU_POWER_CORRECTION_AGGRESSIVE 0x02
#define IPMI_OEM_INTEL_NODE_MANAGER_AGGRESSIVE_CPU_POWER_CORRECTION_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_AGGRESSIVE_CPU_POWER_CORRECTION_AUTOMATIC \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_AGGRESSIVE_CPU_POWER_CORRECTION_NON_AGGRESSIVE \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_AGGRESSIVE_CPU_POWER_CORRECTION_AGGRESSIVE) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_STORAGE_PERSISTENT_STORAGE 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_STORAGE_VOLATILE_MEMORY 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_STORAGE_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_STORAGE_PERSISTENT_STORAGE \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_STORAGE_VOLATILE_MEMORY) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_PLATFORM_BOOTING_MODE_BOOT_IN_POWER_OPTIMIZED_MODE 0
#define IPMI_OEM_INTEL_NODE_MANAGER_PLATFORM_BOOTING_MODE_BOOT_IN_PERFORMANCE_OPTIMIZED_MODE 1
#define IPMI_OEM_INTEL_NODE_MANAGER_PLATFORM_BOOTING_MODE_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_PLATFORM_BOOTING_MODE_BOOT_IN_POWER_OPTIMIZED_MODE \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_PLATFORM_BOOTING_MODE_BOOT_IN_PERFORMANCE_OPTIMIZED_MODE) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TYPE_POWER_CONTROL_POLICY 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TYPE_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_TYPE_POWER_CONTROL_POLICY) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_POWER_DOMAIN_POWER_PRIMARY_SIDE_POWER_DOMAIN 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_POWER_DOMAIN_POWER_SECONDARY_SIDE_POWER_DOMAIN 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_POWER_DOMAIN_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_POWER_DOMAIN_POWER_PRIMARY_SIDE_POWER_DOMAIN \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_POLICY_POWER_DOMAIN_POWER_SECONDARY_SIDE_POWER_DOMAIN) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ALERT_THRESHOLDS_MAX 3
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_START_TIME_MIN 0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_START_TIME_MAX 239
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_START_TIME_VALID(__val) \
((((__val) + 1) >= (IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_START_TIME_MIN + 1) \
&& (__val) <= IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_START_TIME_MAX) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_STOP_TIME_MIN 0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_STOP_TIME_MAX 240
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_STOP_TIME_VALID(__val) \
((((__val) + 1) >= (IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_STOP_TIME_MIN + 1) \
&& (__val) <= IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_STOP_TIME_MAX) ? 1 : 0)
/* achu: not in spec, assume it to be true */
#define IPMI_OEM_INTEL_NODE_MANAGER_REPEAT_THE_SUSPEND_PERIOD 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_DO_NOT_REPEAT_THE_SUSPEND_PERIOD 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_SUSPEND_PERIOD_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_REPEAT_THE_SUSPEND_PERIOD \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_DO_NOT_REPEAT_THE_SUSPEND_PERIOD) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_SUSPEND_PERIODS_MAX 5
#define IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_RESET_GLOBAL_STATISTICS 0x00
#define IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_PER_POLICY_STATISTICS 0x01
#define IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_GLOBAL_HOST_UNHANDLED_REQUESTS_STATISTICS 0x1B
#define IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_HOST_RESPONSE_TIME_STATISTICS 0x1C
#define IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_CPU_THROTTLING_STATISTICS 0x1D
#define IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_MEMORY_THROTTLING_STATISTICS 0x1E
#define IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_HOST_COMMUNICATION_FAILURE_STATISTICS 0x1F
#define IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_RESET_GLOBAL_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_PER_POLICY_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_GLOBAL_HOST_UNHANDLED_REQUESTS_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_HOST_RESPONSE_TIME_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_CPU_THROTTLING_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_MEMORY_THROTTLING_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_RESET_MODE_HOST_COMMUNICATION_FAILURE_STATISTICS) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_POWER_STATISTICS 0x01
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_INLET_TEMPERATURE_STATISTICS 0x02
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_THROTTLING_STATISTICS 0x03
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_VOLUMETRIC_AIRFLOW_STATISTICS 0x04
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_OUTLET_AIRFLOW_TEMPERATURE_STATISTICS 0x05
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_CHASSIS_POWER_STATISTICS 0x06
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_PER_POLICY_POWER_STATISTICS 0x11
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_PER_POLICY_TRIGGER_STATISTICS 0x12
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_PER_POLICY_THROTTLING_STATISTICS 0x13
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_HOST_UNHANDLED_REQUESTS_STATISTICS 0x1B
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_HOST_RESPONSE_TIME_STATISTICS 0x1C
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_CPU_THROTTLING_STATISTICS 0x1D
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_MEMORY_THROTTLING_STATISTICS 0x1E
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_HOST_COMMUNICATION_FAILURE_STATISTICS 0x1F
#define IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_POWER_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_INLET_TEMPERATURE_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_THROTTLING_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_VOLUMETRIC_AIRFLOW_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_OUTLET_AIRFLOW_TEMPERATURE_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_CHASSIS_POWER_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_PER_POLICY_POWER_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_PER_POLICY_TRIGGER_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_PER_POLICY_THROTTLING_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_HOST_UNHANDLED_REQUESTS_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_HOST_RESPONSE_TIME_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_CPU_THROTTLING_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_MEMORY_THROTTLING_STATISTICS \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_STATISTICS_MODE_GLOBAL_HOST_COMMUNICATION_FAILURE_STATISTICS) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_GLOBAL_ADMINISTRATIVE_STATE_ENABLED 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_GLOBAL_ADMINISTRATIVE_STATE_OTHERWISE 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_OPERATIONAL_STATE_ACTIVELY_MONITORING_DEFINED_TRIGGER 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_OPERATIONAL_STATE_SUSPENDED 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_MEASUREMENTS_STATE_IN_PROGRESS 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_MEASUREMENTS_STATE_SUSPENDED 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ACTIVATION_STATE_TRIGGERED_AND_ACTIVELY_LIMITING_TARGET 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_POLICY_ACTIVATION_STATE_NOT_TRIGGERED 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_LIMITING_TYPE_PLATFORM_POWER_LIMITING 0 /* Legacy, no longer in 2.0 spec */
#define IPMI_OEM_INTEL_NODE_MANAGER_LIMITING_TYPE_CPU_POWER_LIMITING 1 /* Legacy, no longer in 2.0 spec */
#define IPMI_OEM_INTEL_NODE_MANAGER_LIMITING_BASED_ON_WALL_INPUT_POWER_PSU_INPUT_POWER 0
#define IPMI_OEM_INTEL_NODE_MANAGER_LIMITING_BASED_ON_DC_POWER_PSU_OUTPUT_POWER_OR_BLADED_SYSTEM 1
#define IPMI_OEM_INTEL_NODE_MANAGER_VERSION_1_0 0x01
#define IPMI_OEM_INTEL_NODE_MANAGER_VERSION_1_5 0x02
#define IPMI_OEM_INTEL_NODE_MANAGER_VERSION_2_0 0x03
#define IPMI_OEM_INTEL_NODE_MANAGER_VERSION_2_5 0x04
#define IPMI_OEM_INTEL_NODE_MANAGER_VERSION_3_0 0x05
#define IPMI_OEM_INTEL_NODE_MANAGER_IPMI_INTERFACE_VERSION_1_0 0x01
#define IPMI_OEM_INTEL_NODE_MANAGER_IPMI_INTERFACE_VERSION_2_0 0x02
#define IPMI_OEM_INTEL_NODE_MANAGER_IPMI_INTERFACE_VERSION_3_0 0x03
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_REGISTER_ALERT_RECEIVER 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_UNREGISTER_ALERT_RECEIVER 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_REGISTER_ALERT_RECEIVER \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_UNREGISTER_ALERT_RECEIVER) ? 1 : 0)
/* legacy names */
#define IPMI_OEM_INTEL_NODE_MANAGER_DESTINATION_INFORMATION_OPERATION_REGISTER_ALERT_RECEIVER IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_REGISTER_ALERT_RECEIVER
#define IPMI_OEM_INTEL_NODE_MANAGER_DESTINATION_INFORMATION_OPERATION_UNREGISTER_ALERT_RECEIVER IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_UNREGISTER_ALERT_RECEIVER
#define IPMI_OEM_INTEL_NODE_MANAGER_DESTINATION_INFORMATION_OPERATION_VALID(__val) \
IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_VALID((__val))
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_STRING_SELECTOR_USE_VOLATILE_ALERT_STRING 0x00
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_STRING_SELECTOR_MIN 0x00
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_STRING_SELECTOR_MAX 0x7F
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_STRING_SELECTOR_VALID(__val) \
((((__val) + 1) >= (IPMI_OEM_INTEL_NODE_MANAGER_ALERT_STRING_SELECTOR_MIN + 1) \
&& (__val) <= IPMI_OEM_INTEL_NODE_MANAGER_ALERT_STRING_SELECTOR_MAX) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_DONT_SEND_AN_ALERT_STRING 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_SEND_ALERT_STRING_IDENTIFIED_BY_STRING_SELECTOR 0x1
#define IPMI_OEM_INTEL_NODE_MANAGER_SEND_ALERT_STRING_VALID(__val) \
(((__val) == IPMI_OEM_INTEL_NODE_MANAGER_DONT_SEND_AN_ALERT_STRING \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_SEND_ALERT_STRING_IDENTIFIED_BY_STRING_SELECTOR) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_CONFIGURATION_VALID 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_CONFIGURATION_INVALID 0x1
/* legacy names */
#define IPMI_OEM_INTEL_NODE_MANAGER_DESTINATION_INFORMATION_OPERATION_CONFIGURATION_VALID IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_CONFIGURATION_VALID
#define IPMI_OEM_INTEL_NODE_MANAGER_DESTINATION_INFORMATION_OPERATION_CONFIGURATION_INVALID IPMI_OEM_INTEL_NODE_MANAGER_ALERT_RECEIVER_DEACTIVATION_CONFIGURATION_INVALID
#define IPMI_OEM_INTEL_NODE_MANAGER_DESTINATION_SELECTOR_OPERATOR_USE_VOLATILE_DESTINATION_INFO 0x0
#define IPMI_OEM_INTEL_NODE_MANAGER_CPU_SOCKET_MIN 0
#define IPMI_OEM_INTEL_NODE_MANAGER_CPU_SOCKET_MAX 7
#define IPMI_OEM_INTEL_NODE_MANAGER_CPU_SOCKET_ALL_SOCKETS 0xFF
#define IPMI_OEM_INTEL_NODE_MANAGER_CPU_SOCKET_VALID(__val) \
((((__val) >= IPMI_OEM_INTEL_NODE_MANAGER_CPU_SOCKET_MIN \
&& (__val) <= IPMI_OEM_INTEL_NODE_MANAGER_CPU_SOCKET_MAX) \
|| (__val) == IPMI_OEM_INTEL_NODE_MANAGER_CPU_SOCKET_ALL_SOCKETS) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_ACTIVE_CORES_CONFIGURATION_RESERVED 0x00
#define IPMI_OEM_INTEL_NODE_MANAGER_ACTIVE_CORES_CONFIGURATION_APPLY_SETTINGS_TO_ALL_ACTIVE_CORES_CONFIGURATION 0xFF
#define IPMI_OEM_INTEL_NODE_MANAGER_SET_ACTIVE_CORES_CONFIGURATION_VALID(__val) \
(((__val) != IPMI_OEM_INTEL_NODE_MANAGER_ACTIVE_CORES_CONFIGURATION_RESERVED \
&& ((__val) == IPMI_OEM_INTEL_NODE_MANAGER_ACTIVE_CORES_CONFIGURATION_APPLY_SETTINGS_TO_ALL_ACTIVE_CORES_CONFIGURATION \
|| (__val) > 0)) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_GET_ACTIVE_CORES_CONFIGURATION_VALID(__val) \
(((__val) != IPMI_OEM_INTEL_NODE_MANAGER_ACTIVE_CORES_CONFIGURATION_RESERVED) ? 1 : 0)
#define IPMI_OEM_INTEL_NODE_MANAGER_TURBO_RATIO_LIMIT_RESTORE_DEFAULT_SETTINGS 0x00
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_enable_disable_node_manager_policy_control_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_enable_disable_node_manager_policy_control_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_boot_time_policy_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_alert_thresholds_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_alert_thresholds_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_alert_thresholds_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_alert_thresholds_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_suspend_periods_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_suspend_periods_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_suspend_periods_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_suspend_periods_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_reset_node_manager_statistics_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_reset_node_manager_statistics_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_statistics_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_statistics_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_capabilities_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_capabilities_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_version_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_version_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_power_draw_range_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_power_draw_range_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_alert_destination_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_alert_destination_ipmb_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_alert_destination_lan_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_node_manager_alert_destination_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_alert_destination_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_node_manager_alert_destination_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_turbo_synchronization_ratio_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_set_turbo_synchronization_ratio_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_turbo_synchronization_ratio_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_turbo_synchronization_ratio_rs;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_limiting_policy_id_rq;
extern fiid_template_t tmpl_cmd_oem_intel_node_manager_get_limiting_policy_id_rs;
int fill_cmd_oem_intel_node_manager_enable_disable_node_manager_policy_control (uint8_t policy_enable_disable,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_node_manager_policy (uint8_t domain_id,
uint8_t policy_enabled,
uint8_t policy_id,
uint8_t policy_trigger_type,
uint8_t policy_configuration_action,
uint8_t aggressive_cpu_power_correction,
uint8_t policy_storage_option,
uint8_t policy_exception_actions_send_alert,
uint8_t policy_exception_actions_shutdown_system,
uint8_t policy_power_domain,
uint16_t policy_target_limit,
uint32_t correction_time_limit,
uint16_t policy_trigger_limit,
uint16_t statistics_reporting_period,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_node_manager_policy_boot_time_policy (uint8_t domain_id,
uint8_t policy_enabled,
uint8_t policy_id,
uint8_t policy_trigger_type,
uint8_t policy_configuration_action,
uint8_t aggressive_cpu_power_correction,
uint8_t policy_storage_option,
uint8_t policy_exception_actions_send_alert,
uint8_t policy_exception_actions_shutdown_system,
uint8_t policy_power_domain,
uint8_t platform_booting_mode,
uint8_t cores_disabled,
uint32_t correction_time_limit,
uint16_t policy_trigger_limit,
uint16_t statistics_reporting_period,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_node_manager_policy (uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_node_manager_policy_alert_thresholds (uint8_t domain_id,
uint8_t policy_id,
uint16_t *alert_threshold1,
uint16_t *alert_threshold2,
uint16_t *alert_threshold3,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_node_manager_policy_alert_thresholds (uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_node_manager_policy_suspend_periods (uint8_t domain_id,
uint8_t policy_id,
uint8_t *policy1_suspend_start_time,
uint8_t *policy1_suspend_stop_time,
uint8_t *policy1_suspend_period_recurrence_monday,
uint8_t *policy1_suspend_period_recurrence_tuesday,
uint8_t *policy1_suspend_period_recurrence_wednesday,
uint8_t *policy1_suspend_period_recurrence_thursday,
uint8_t *policy1_suspend_period_recurrence_friday,
uint8_t *policy1_suspend_period_recurrence_saturday,
uint8_t *policy1_suspend_period_recurrence_sunday,
uint8_t *policy2_suspend_start_time,
uint8_t *policy2_suspend_stop_time,
uint8_t *policy2_suspend_period_recurrence_monday,
uint8_t *policy2_suspend_period_recurrence_tuesday,
uint8_t *policy2_suspend_period_recurrence_wednesday,
uint8_t *policy2_suspend_period_recurrence_thursday,
uint8_t *policy2_suspend_period_recurrence_friday,
uint8_t *policy2_suspend_period_recurrence_saturday,
uint8_t *policy2_suspend_period_recurrence_sunday,
uint8_t *policy3_suspend_start_time,
uint8_t *policy3_suspend_stop_time,
uint8_t *policy3_suspend_period_recurrence_monday,
uint8_t *policy3_suspend_period_recurrence_tuesday,
uint8_t *policy3_suspend_period_recurrence_wednesday,
uint8_t *policy3_suspend_period_recurrence_thursday,
uint8_t *policy3_suspend_period_recurrence_friday,
uint8_t *policy3_suspend_period_recurrence_saturday,
uint8_t *policy3_suspend_period_recurrence_sunday,
uint8_t *policy4_suspend_start_time,
uint8_t *policy4_suspend_stop_time,
uint8_t *policy4_suspend_period_recurrence_monday,
uint8_t *policy4_suspend_period_recurrence_tuesday,
uint8_t *policy4_suspend_period_recurrence_wednesday,
uint8_t *policy4_suspend_period_recurrence_thursday,
uint8_t *policy4_suspend_period_recurrence_friday,
uint8_t *policy4_suspend_period_recurrence_saturday,
uint8_t *policy4_suspend_period_recurrence_sunday,
uint8_t *policy5_suspend_start_time,
uint8_t *policy5_suspend_stop_time,
uint8_t *policy5_suspend_period_recurrence_monday,
uint8_t *policy5_suspend_period_recurrence_tuesday,
uint8_t *policy5_suspend_period_recurrence_wednesday,
uint8_t *policy5_suspend_period_recurrence_thursday,
uint8_t *policy5_suspend_period_recurrence_friday,
uint8_t *policy5_suspend_period_recurrence_saturday,
uint8_t *policy5_suspend_period_recurrence_sunday,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_node_manager_policy_suspend_periods (uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_reset_node_manager_statistics (uint8_t mode,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_node_manager_statistics (uint8_t mode,
uint8_t domain_id,
uint8_t policy_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_node_manager_capabilities (uint8_t domain_id,
uint8_t policy_trigger_type,
uint8_t policy_type,
uint8_t policy_power_domain,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_node_manager_version (fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_node_manager_power_draw_range (uint8_t domain_id,
uint16_t minimum_power_draw,
uint16_t maximum_power_draw,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_node_manager_alert_destination (uint8_t channel_number,
uint8_t alert_receiver_deactivation,
uint8_t destination_information,
uint8_t alert_string_selector,
uint8_t send_alert_string,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_node_manager_alert_destination_ipmb (uint8_t channel_number,
uint8_t alert_receiver_deactivation,
uint8_t slave_address,
uint8_t alert_string_selector,
uint8_t send_alert_string,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_node_manager_alert_destination_lan (uint8_t channel_number,
uint8_t alert_receiver_deactivation,
uint8_t destination_selector,
uint8_t alert_string_selector,
uint8_t send_alert_string,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_node_manager_alert_destination (fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_set_turbo_synchronization_ratio (uint8_t cpu_socket_number,
uint8_t active_cores_configuration,
uint8_t turbo_ratio_limit,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_turbo_synchronization_ratio (uint8_t cpu_socket_number,
uint8_t active_cores_configuration,
fiid_obj_t obj_cmd_rq);
int fill_cmd_oem_intel_node_manager_get_limiting_policy_id (uint8_t domain_id,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_OEM_INTEL_NODE_MANAGER_CMDS_H */

View File

@ -0,0 +1,494 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_PEF_AND_ALERTING_CMDS_H
#define IPMI_PEF_AND_ALERTING_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#include <freeipmi/spec/ipmi-sensor-types-spec.h>
#define IPMI_PEF_CONFIGURATION_PARAMETERS_NO_SET_SELECTOR 0x0
#define IPMI_PEF_CONFIGURATION_PARAMETERS_NO_BLOCK_SELECTOR 0x0
#define IPMI_PEF_CONFIGURATION_PARAMETERS_SET_COMPLETE 0x00
#define IPMI_PEF_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS 0x01
#define IPMI_PEF_CONFIGURATION_PARAMETERS_SET_COMMIT_WRITE 0x02
#define IPMI_PEF_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS_VALID(__value) \
(((__value) == IPMI_PEF_CONFIGURATION_PARAMETERS_SET_COMPLETE \
|| (__value) == IPMI_PEF_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS \
|| (__value) == IPMI_PEF_CONFIGURATION_PARAMETERS_SET_COMMIT_WRITE) ? 1 : 0)
#define IPMI_PEF_POSTPONE_TIMER_DISABLE 0x00
#define IPMI_PEF_POSTPONE_TIMER_TEMPORARY_DISABLE 0xFE
#define IPMI_PEF_POSTPONE_TIMER_GET_PRESENT_COUNTDOWN_VALUE 0xFF
#define IPMI_PEF_ENABLE 0x1
#define IPMI_PEF_DISABLE 0x0
#define IPMI_PEF_VALID(__val) \
(((__val) == IPMI_PEF_ENABLE \
|| (__val) == IPMI_PEF_DISABLE) ? 1 : 0)
#define IPMI_PEF_ENABLE 0x1
#define IPMI_PEF_DISABLE 0x0
#define IPMI_PEF_VALID(__val) \
(((__val) == IPMI_PEF_ENABLE \
|| (__val) == IPMI_PEF_DISABLE) ? 1 : 0)
#define IPMI_PEF_EVENT_MESSAGES_ENABLE 0x1
#define IPMI_PEF_EVENT_MESSAGES_DISABLE 0x0
#define IPMI_PEF_EVENT_MESSAGES_VALID(__val) \
(((__val) == IPMI_PEF_EVENT_MESSAGES_ENABLE \
|| (__val) == IPMI_PEF_EVENT_MESSAGES_DISABLE) ? 1 : 0)
#define IPMI_PEF_STARTUP_DELAY_ENABLE 0x1
#define IPMI_PEF_STARTUP_DELAY_DISABLE 0x0
#define IPMI_PEF_STARTUP_DELAY_VALID(__val) \
(((__val) == IPMI_PEF_STARTUP_DELAY_ENABLE \
|| (__val) == IPMI_PEF_STARTUP_DELAY_DISABLE) ? 1 : 0)
#define IPMI_PEF_ALERT_STARTUP_DELAY_ENABLE 0x1
#define IPMI_PEF_ALERT_STARTUP_DELAY_DISABLE 0x0
#define IPMI_PEF_ALERT_STARTUP_DELAY_VALID(__val) \
(((__val) == IPMI_PEF_ALERT_STARTUP_DELAY_ENABLE \
|| (__val) == IPMI_PEF_ALERT_STARTUP_DELAY_DISABLE) ? 1 : 0)
#define IPMI_PEF_ALERT_ACTION_ENABLE 0x1
#define IPMI_PEF_ALERT_ACTION_DISABLE 0x0
#define IPMI_PEF_ALERT_ACTION_VALID(__val) \
(((__val) == IPMI_PEF_ALERT_ACTION_ENABLE \
|| (__val) == IPMI_PEF_ALERT_ACTION_DISABLE) ? 1 : 0)
#define IPMI_PEF_POWER_DOWN_ACTION_ENABLE 0x1
#define IPMI_PEF_POWER_DOWN_ACTION_DISABLE 0x0
#define IPMI_PEF_POWER_DOWN_ACTION_VALID(__val) \
(((__val) == IPMI_PEF_POWER_DOWN_ACTION_ENABLE \
|| (__val) == IPMI_PEF_POWER_DOWN_ACTION_DISABLE) ? 1 : 0)
#define IPMI_PEF_RESET_ACTION_ENABLE 0x1
#define IPMI_PEF_RESET_ACTION_DISABLE 0x0
#define IPMI_PEF_RESET_ACTION_VALID(__val) \
(((__val) == IPMI_PEF_RESET_ACTION_ENABLE \
|| (__val) == IPMI_PEF_RESET_ACTION_DISABLE) ? 1 : 0)
#define IPMI_PEF_POWER_CYCLE_ACTION_ENABLE 0x1
#define IPMI_PEF_POWER_CYCLE_ACTION_DISABLE 0x0
#define IPMI_PEF_POWER_CYCLE_ACTION_VALID(__val) \
(((__val) == IPMI_PEF_POWER_CYCLE_ACTION_ENABLE \
|| (__val) == IPMI_PEF_POWER_CYCLE_ACTION_DISABLE) ? 1 : 0)
#define IPMI_PEF_OEM_ACTION_ENABLE 0x1
#define IPMI_PEF_OEM_ACTION_DISABLE 0x0
#define IPMI_PEF_OEM_ACTION_VALID(__val) \
(((__val) == IPMI_PEF_OEM_ACTION_ENABLE \
|| (__val) == IPMI_PEF_OEM_ACTION_DISABLE) ? 1 : 0)
#define IPMI_PEF_DIAGNOSTIC_INTERRUPT_ENABLE 0x1
#define IPMI_PEF_DIAGNOSTIC_INTERRUPT_DISABLE 0x0
#define IPMI_PEF_DIAGNOSTIC_INTERRUPT_VALID(__val) \
(((__val) == IPMI_PEF_DIAGNOSTIC_INTERRUPT_ENABLE \
|| (__val) == IPMI_PEF_DIAGNOSTIC_INTERRUPT_DISABLE) ? 1 : 0)
#define IPMI_FILTER_CONFIGURATION_MANUFACTURER_PRE_CONFIGURED_FILTER 0x2
#define IPMI_FILTER_CONFIGURATION_SOFTWARE_CONFIGURABLE_FILTER 0x0
#define IPMI_FILTER_CONFIGURATION_FILTER_TYPE_VALID(__val) \
(((__val) == IPMI_FILTER_CONFIGURATION_MANUFACTURER_PRE_CONFIGURED_FILTER \
|| (__val) == IPMI_FILTER_CONFIGURATION_SOFTWARE_CONFIGURABLE_FILTER) ? 1 : 0)
#define IPMI_FILTER_CONFIGURATION_FILTER_ENABLE 0x1
#define IPMI_FILTER_CONFIGURATION_FILTER_DISABLE 0x0
#define IPMI_FILTER_CONFIGURATION_FILTER_VALID(__val) \
(((__val) == IPMI_FILTER_CONFIGURATION_FILTER_ENABLE \
|| (__val) == IPMI_FILTER_CONFIGURATION_FILTER_DISABLE) ? 1 : 0)
#define IPMI_EVENT_FILTER_ACTION_ALERT 0x1
#define IPMI_EVENT_FILTER_ACTION_NO_ALERT 0x0
#define IPMI_EVENT_FILTER_ACTION_ALERT_VALID(__val) \
(((__val) == IPMI_EVENT_FILTER_ACTION_ALERT \
|| (__val) == IPMI_EVENT_FILTER_ACTION_NO_ALERT) ? 1 : 0)
#define IPMI_EVENT_FILTER_ACTION_POWER_OFF 0x1
#define IPMI_EVENT_FILTER_ACTION_NO_POWER_OFF 0x0
#define IPMI_EVENT_FILTER_ACTION_POWER_OFF_VALID(__val) \
(((__val) == IPMI_EVENT_FILTER_ACTION_POWER_OFF \
|| (__val) == IPMI_EVENT_FILTER_ACTION_NO_POWER_OFF) ? 1 : 0)
#define IPMI_EVENT_FILTER_ACTION_RESET 0x1
#define IPMI_EVENT_FILTER_ACTION_NO_RESET 0x0
#define IPMI_EVENT_FILTER_ACTION_RESET_VALID(__val) \
(((__val) == IPMI_EVENT_FILTER_ACTION_RESET \
|| (__val) == IPMI_EVENT_FILTER_ACTION_NO_RESET) ? 1 : 0)
#define IPMI_EVENT_FILTER_ACTION_POWER_CYCLE 0x1
#define IPMI_EVENT_FILTER_ACTION_NO_POWER_CYCLE 0x0
#define IPMI_EVENT_FILTER_ACTION_POWER_CYCLE_VALID(__val) \
(((__val) == IPMI_EVENT_FILTER_ACTION_POWER_CYCLE \
|| (__val) == IPMI_EVENT_FILTER_ACTION_NO_POWER_CYCLE) ? 1 : 0)
#define IPMI_EVENT_FILTER_ACTION_OEM_ACTION 0x1
#define IPMI_EVENT_FILTER_ACTION_NO_OEM 0x0
#define IPMI_EVENT_FILTER_ACTION_OEM_VALID(__val) \
(((__val) == IPMI_EVENT_FILTER_ACTION_OEM_ACTION \
|| (__val) == IPMI_EVENT_FILTER_ACTION_NO_OEM) ? 1 : 0)
#define IPMI_EVENT_FILTER_ACTION_DIAGNOSTIC_INTERRUPT 0x1
#define IPMI_EVENT_FILTER_ACTION_NO_DIAGNOSTIC_INTERRUPT 0x0
#define IPMI_EVENT_FILTER_ACTION_DIAGNOSTIC_INTERRUPT_VALID(__val) \
(((__val) == IPMI_EVENT_FILTER_ACTION_DIAGNOSTIC_INTERRUPT \
|| (__val) == IPMI_EVENT_FILTER_ACTION_NO_DIAGNOSTIC_INTERRUPT) ? 1 : 0)
#define IPMI_EVENT_FILTER_ACTION_GROUP_CONTROL_OPERATION 0x1
#define IPMI_EVENT_FILTER_ACTION_NO_GROUP_CONTROL_OPERATION 0x0
#define IPMI_EVENT_FILTER_ACTION_GROUP_CONTROL_OPERATION_VALID(__val) \
(((__val) == IPMI_EVENT_FILTER_ACTION_GROUP_CONTROL_OPERATION \
|| (__val) == IPMI_EVENT_FILTER_ACTION_NO_GROUP_CONTROL_OPERATION) ? 1 : 0)
#define IPMI_EVENT_SEVERITY_UNSPECIFIED 0x00
#define IPMI_EVENT_SEVERITY_MONITOR 0x01
#define IPMI_EVENT_SEVERITY_INFORMATION 0x02
#define IPMI_EVENT_SEVERITY_OK 0x04
#define IPMI_EVENT_SEVERITY_NON_CRITICAL_CONDITION 0x08
#define IPMI_EVENT_SEVERITY_CRITICAL_CONDITION 0x10
#define IPMI_EVENT_SEVERITY_NON_RECOVERABLE_CONDITION 0x20
#define IPMI_EVENT_SEVERITY_VALID(__val) \
(((__val) == IPMI_EVENT_SEVERITY_UNSPECIFIED \
|| (__val) == IPMI_EVENT_SEVERITY_MONITOR \
|| (__val) == IPMI_EVENT_SEVERITY_INFORMATION \
|| (__val) == IPMI_EVENT_SEVERITY_OK \
|| (__val) == IPMI_EVENT_SEVERITY_NON_CRITICAL_CONDITION \
|| (__val) == IPMI_EVENT_SEVERITY_CRITICAL_CONDITION \
|| (__val) == IPMI_EVENT_SEVERITY_NON_RECOVERABLE_CONDITION) ? 1 : 0)
#define IPMI_EVENT_SENSOR_TYPE_RESERVED IPMI_SENSOR_TYPE_RESERVED
#define IPMI_EVENT_SENSOR_TYPE_TEMPERATURE IPMI_SENSOR_TYPE_TEMPERATURE
#define IPMI_EVENT_SENSOR_TYPE_VOLTAGE IPMI_SENSOR_TYPE_VOLTAGE
#define IPMI_EVENT_SENSOR_TYPE_CURRENT IPMI_SENSOR_TYPE_CURRENT
#define IPMI_EVENT_SENSOR_TYPE_FAN IPMI_SENSOR_TYPE_FAN
#define IPMI_EVENT_SENSOR_TYPE_PHYSICAL_SECURITY IPMI_SENSOR_TYPE_PHYSICAL_SECURITY
#define IPMI_EVENT_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT IPMI_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT
#define IPMI_EVENT_SENSOR_TYPE_PROCESSOR IPMI_SENSOR_TYPE_PROCESSOR
#define IPMI_EVENT_SENSOR_TYPE_POWER_SUPPLY IPMI_SENSOR_TYPE_POWER_SUPPLY
#define IPMI_EVENT_SENSOR_TYPE_POWER_UNIT IPMI_SENSOR_TYPE_POWER_UNIT
#define IPMI_EVENT_SENSOR_TYPE_COOLING_DEVICE IPMI_SENSOR_TYPE_COOLING_DEVICE
#define IPMI_EVENT_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR IPMI_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR
#define IPMI_EVENT_SENSOR_TYPE_MEMORY IPMI_SENSOR_TYPE_MEMORY
#define IPMI_EVENT_SENSOR_TYPE_DRIVE_SLOT IPMI_SENSOR_TYPE_DRIVE_SLOT
#define IPMI_EVENT_SENSOR_TYPE_POST_MEMORY_RESIZE IPMI_SENSOR_TYPE_POST_MEMORY_RESIZE
#define IPMI_EVENT_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS
#define IPMI_EVENT_SENSOR_TYPE_EVENT_LOGGING_DISABLED IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED
#define IPMI_EVENT_SENSOR_TYPE_WATCHDOG1 IPMI_SENSOR_TYPE_WATCHDOG1
#define IPMI_EVENT_SENSOR_TYPE_SYSTEM_EVENT IPMI_SENSOR_TYPE_SYSTEM_EVENT
#define IPMI_EVENT_SENSOR_TYPE_CRITICAL_INTERRUPT IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT
#define IPMI_EVENT_SENSOR_TYPE_BUTTON_SWITCH IPMI_SENSOR_TYPE_BUTTON_SWITCH
#define IPMI_EVENT_SENSOR_TYPE_MODULE_BOARD IPMI_SENSOR_TYPE_MODULE_BOARD
#define IPMI_EVENT_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR IPMI_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR
#define IPMI_EVENT_SENSOR_TYPE_ADD_IN_CARD IPMI_SENSOR_TYPE_ADD_IN_CARD
#define IPMI_EVENT_SENSOR_TYPE_CHASSIS IPMI_SENSOR_TYPE_CHASSIS
#define IPMI_EVENT_SENSOR_TYPE_CHIP_SET IPMI_SENSOR_TYPE_CHIP_SET
#define IPMI_EVENT_SENSOR_TYPE_OTHER_FRU IPMI_SENSOR_TYPE_OTHER_FRU
#define IPMI_EVENT_SENSOR_TYPE_CABLE_INTERCONNECT IPMI_SENSOR_TYPE_CABLE_INTERCONNECT
#define IPMI_EVENT_SENSOR_TYPE_TERMINATOR IPMI_SENSOR_TYPE_TERMINATOR
#define IPMI_EVENT_SENSOR_TYPE_SYSTEM_BOOT_INITIATED IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED
#define IPMI_EVENT_SENSOR_TYPE_BOOT_ERROR IPMI_SENSOR_TYPE_BOOT_ERROR
#define IPMI_EVENT_SENSOR_TYPE_OS_BOOT IPMI_SENSOR_TYPE_OS_BOOT
#define IPMI_EVENT_SENSOR_TYPE_OS_CRITICAL_STOP IPMI_SENSOR_TYPE_OS_CRITICAL_STOP
#define IPMI_EVENT_SENSOR_TYPE_SLOT_CONNECTOR IPMI_SENSOR_TYPE_SLOT_CONNECTOR
#define IPMI_EVENT_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE
#define IPMI_EVENT_SENSOR_TYPE_WATCHDOG2 IPMI_SENSOR_TYPE_WATCHDOG2
#define IPMI_EVENT_SENSOR_TYPE_PLATFORM_ALERT IPMI_SENSOR_TYPE_PLATFORM_ALERT
#define IPMI_EVENT_SENSOR_TYPE_ENTITY_PRESENCE IPMI_SENSOR_TYPE_ENTITY_PRESENCE
#define IPMI_EVENT_SENSOR_TYPE_MONITOR_ASIC_IC IPMI_SENSOR_TYPE_MONITOR_ASIC_IC
#define IPMI_EVENT_SENSOR_TYPE_LAN IPMI_SENSOR_TYPE_LAN
#define IPMI_EVENT_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH
#define IPMI_EVENT_SENSOR_TYPE_BATTERY IPMI_SENSOR_TYPE_BATTERY
#define IPMI_EVENT_SENSOR_TYPE_SESSION_AUDIT IPMI_SENSOR_TYPE_SESSION_AUDIT
#define IPMI_EVENT_SENSOR_TYPE_VERSION_CHANGE IPMI_SENSOR_TYPE_VERSION_CHANGE
#define IPMI_EVENT_SENSOR_TYPE_FRU_STATE IPMI_SENSOR_TYPE_FRU_STATE
#define IPMI_EVENT_SENSOR_TYPE_ANY 0xff
#define IPMI_STRING_SELECTOR_MIN 0x00
#define IPMI_STRING_SELECTOR_MAX 0x7F
#define IPMI_STRING_SELECTOR_VOLATILE 0x0
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_STRING_SELECTOR_VALID(__val) \
(((__val+1) >= (IPMI_STRING_SELECTOR_MIN + 1) \
&& (__val) <= IPMI_STRING_SELECTOR_MAX) ? 1 : 0)
#define IPMI_SET_RECORD_ID_FOR_LAST_RECORD_PROCESSED_BY_SOFTWARE 0x0
#define IPMI_SET_RECORD_ID_FOR_LAST_RECORD_PROCESSED_BY_BMC 0x1
#define IPMI_SET_RECORD_ID_FOR_LAST_RECORD_PROCESSED_VALID(__val) \
(((__val) == IPMI_SET_RECORD_ID_FOR_LAST_RECORD_PROCESSED_BY_SOFTWARE \
|| (__val) == IPMI_SET_RECORD_ID_FOR_LAST_RECORD_PROCESSED_BY_BMC) ? 1 : 0)
#define IPMI_ALERT_IMMEDIATE_OPERATION_INITIATE_ALERT 0x0
#define IPMI_ALERT_IMMEDIATE_OPERATION_GET_ALERT_IMMEDIATE_STATUS 0x1
#define IPMI_ALERT_IMMEDIATE_OPERATION_CLEAR_ALERT_IMMEDIATE_STATUS 0x2
#define IPMI_ALERT_IMMEDIATE_OPERATION_RESERVED 0x3
#define IPMI_ALERT_IMMEDIATE_OPERATION_VALID(__val) \
(((__val) == IPMI_ALERT_IMMEDIATE_OPERATION_INITIATE_ALERT \
|| (__val) == IPMI_ALERT_IMMEDIATE_OPERATION_GET_ALERT_IMMEDIATE_STATUS \
|| (__val) == IPMI_ALERT_IMMEDIATE_OPERATION_CLEAR_ALERT_IMMEDIATE_STATUS) ? 1 : 0)
#define IPMI_SEND_ALERT_STRING_IDENTIFIED_BY_STRING_SELECTOR 0x1
#define IPMI_DO_NOT_SEND_AN_ALERT_STRING 0x0
#define IPMI_SEND_ALERT_STRING_VALID(__val) \
(((__val) == IPMI_SEND_ALERT_STRING_IDENTIFIED_BY_STRING_SELECTOR \
|| (__val) == IPMI_DO_NOT_SEND_AN_ALERT_STRING) ? 1 : 0)
#define IPMI_GET_PEF_PARAMETER 0x0
#define IPMI_GET_PEF_PARAMETER_REVISION_ONLY 0x1
#define IPMI_GET_PEF_PARAMETER_VALID(__val) \
(((__val) == IPMI_GET_PEF_PARAMETER \
|| (__val) == IPMI_GET_PEF_PARAMETER_REVISION_ONLY) ? 1 : 0)
#define IPMI_PEF_ALERT_STRINGS_BLOCK_SIZE 16
#define IPMI_PEF_ALERT_STRINGS_BLOCK_SIZE_VALID(__val) \
(((__val) <= IPMI_PEF_ALERT_STRINGS_BLOCK_SIZE) ? 1 : 0)
#define IPMI_ALERT_POLICY_ALWAYS_SEND_TO_THIS_DESTINATION 0x0
#define IPMI_ALERT_POLICY_PROCEED_TO_NEXT_ENTRY 0x1
#define IPMI_ALERT_POLICY_DO_NOT_PROCEED_ANY_MORE_ENTRIES 0x2
#define IPMI_ALERT_POLICY_PROCEED_TO_NEXT_ENTRY_DIFFERENT_CHANNEL 0x3
#define IPMI_ALERT_POLICY_PROCEED_TO_NEXT_ENTRY_DIFFERENT_DESTINATION_TYPE 0x4
#define IPMI_ALERT_POLICY_TABLE_POLICY_TYPE_VALID(__val) \
(((__val) == IPMI_ALERT_POLICY_ALWAYS_SEND_TO_THIS_DESTINATION \
|| (__val) == IPMI_ALERT_POLICY_PROCEED_TO_NEXT_ENTRY \
|| (__val) == IPMI_ALERT_POLICY_DO_NOT_PROCEED_ANY_MORE_ENTRIES \
|| (__val) == IPMI_ALERT_POLICY_PROCEED_TO_NEXT_ENTRY_DIFFERENT_CHANNEL \
|| (__val) == IPMI_ALERT_POLICY_PROCEED_TO_NEXT_ENTRY_DIFFERENT_DESTINATION_TYPE) ? 1 : 0)
#define IPMI_ALERT_POLICY_DISABLED 0x0
#define IPMI_ALERT_POLICY_ENABLED 0x1
#define IPMI_ALERT_POLICY_ENABLED_DISABLED_VALID(__val) \
(((__val) == IPMI_ALERT_POLICY_DISABLED \
|| (__val) == IPMI_ALERT_POLICY_ENABLED) ? 1 : 0)
#define IPMI_EVENT_SPECIFIC_ALERT_STRING_NO 0x0
#define IPMI_EVENT_SPECIFIC_ALERT_STRING_YES 0x1
#define IPMI_EVENT_SPECIFIC_ALERT_STRING_VALID(__val) \
(((__val) == IPMI_EVENT_SPECIFIC_ALERT_STRING_NO \
|| (__val) == IPMI_EVENT_SPECIFIC_ALERT_STRING_YES) ? 1 : 0)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_get_pef_capabilities_rq;
extern fiid_template_t tmpl_cmd_get_pef_capabilities_rs;
extern fiid_template_t tmpl_cmd_arm_pef_postpone_timer_rq;
extern fiid_template_t tmpl_cmd_arm_pef_postpone_timer_rs;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_rs;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_set_in_progress_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_pef_control_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_pef_action_global_control_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_pef_startup_delay_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_pef_alert_startup_delay_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_event_filter_table_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_event_filter_table_data1_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_alert_string_keys_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_alert_strings_rq;
extern fiid_template_t tmpl_cmd_set_pef_configuration_parameters_alert_policy_table_rq;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_rq;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_set_in_progress_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_pef_control_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_pef_action_global_control_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_pef_startup_delay_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_pef_alert_startup_delay_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_number_of_event_filters_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_event_filter_table_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_event_filter_table_data1_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_number_of_alert_policy_entries_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_number_of_alert_strings_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_alert_string_keys_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_alert_strings_rs;
extern fiid_template_t tmpl_cmd_get_pef_configuration_parameters_alert_policy_table_rs;
extern fiid_template_t tmpl_cmd_set_last_processed_event_id_rq;
extern fiid_template_t tmpl_cmd_set_last_processed_event_id_rs;
extern fiid_template_t tmpl_cmd_get_last_processed_event_id_rq;
extern fiid_template_t tmpl_cmd_get_last_processed_event_id_rs;
extern fiid_template_t tmpl_cmd_alert_immediate_rq;
extern fiid_template_t tmpl_cmd_alert_immediate_rs;
extern fiid_template_t tmpl_cmd_pet_acknowledge_rq;
extern fiid_template_t tmpl_cmd_pet_acknowledge_rs;
int fill_cmd_get_pef_capabilities (fiid_obj_t obj_cmd_rq);
int fill_cmd_arm_pef_postpone_timer (uint8_t pef_postpone_timeout,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters (uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_set_in_progress (uint8_t state,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_pef_control (uint8_t pef,
uint8_t pef_event_messages,
uint8_t pef_startup_delay,
uint8_t pef_alert_startup_delay,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_pef_action_global_control (uint8_t alert_action,
uint8_t power_down_action,
uint8_t reset_action,
uint8_t power_cycle_action,
uint8_t oem_action,
uint8_t diagnostic_interrupt,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_pef_startup_delay (uint8_t pef_startup_delay,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_pef_alert_startup_delay (uint8_t pef_alert_startup_delay,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_event_filter_table (uint8_t filter_number,
uint8_t filter_configuration_type,
uint8_t filter_configuration_enable,
uint8_t event_filter_action_alert,
uint8_t event_filter_action_power_off,
uint8_t event_filter_action_reset,
uint8_t event_filter_action_power_cycle,
uint8_t event_filter_action_oem,
uint8_t event_filter_action_diagnostic_interrupt,
uint8_t event_filter_action_group_control_operation,
uint8_t alert_policy_number_policy_number,
uint8_t alert_policy_number_group_control_selector,
uint8_t event_severity,
uint8_t generator_id_byte1,
uint8_t generator_id_byte2,
uint8_t sensor_type,
uint8_t sensor_number,
uint8_t event_trigger,
uint16_t event_data1_offset_mask,
uint8_t event_data1_AND_mask,
uint8_t event_data1_compare1,
uint8_t event_data1_compare2,
uint8_t event_data2_AND_mask,
uint8_t event_data2_compare1,
uint8_t event_data2_compare2,
uint8_t event_data3_AND_mask,
uint8_t event_data3_compare1,
uint8_t event_data3_compare2,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_event_filter_table_data1 (uint8_t filter_number,
uint8_t filter_configuration_type,
uint8_t filter_configuration_enable,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_alert_string_keys (uint8_t string_selector,
uint8_t filter_number,
uint8_t set_number_for_string,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_alert_strings (uint8_t string_selector,
uint8_t block_selector,
const uint8_t *string_data,
unsigned int string_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_pef_configuration_parameters_alert_policy_table (uint8_t alert_policy_entry_number,
uint8_t policy_type,
uint8_t policy_enabled,
uint8_t policy_number,
uint8_t destination_selector,
uint8_t channel_number,
uint8_t alert_string_set_selector,
uint8_t event_specific_alert_string,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_pef_configuration_parameters (uint8_t parameter_selector,
uint8_t get_parameter,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_last_processed_event_id (uint8_t set_record_id_for_last_record,
uint16_t record_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_last_processed_event_id (fiid_obj_t obj_cmd_rq);
int fill_cmd_alert_immediate (uint8_t channel_number,
uint8_t destination_selector,
uint8_t operation,
uint8_t string_selector,
uint8_t send_alert_string,
fiid_obj_t obj_cmd_rq);
int fill_cmd_pet_acknowledge (uint16_t sequence_number,
uint32_t local_timestamp,
uint8_t event_source_type,
uint8_t sensor_device,
uint8_t sensor_number,
uint32_t event_data,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_PEF_AND_ALERTING_CMDS_H */

View File

@ -0,0 +1,210 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_H
#define IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
/* achu: 4 bit field is 1 based
*
* note that Get Payload Activation Status returns instance status for
* 16 instances, which is not possible.
*/
#define IPMI_PAYLOAD_INSTANCE_MIN 1
#define IPMI_PAYLOAD_INSTANCE_MAX 15
#define IPMI_PAYLOAD_INSTANCE_VALID(__val) \
(((__val) >= IPMI_PAYLOAD_INSTANCE_MIN \
|| (__val) <= IPMI_PAYLOAD_INSTANCE_MAX) ? 1 : 0)
#define IPMI_SOL_STARTUP_HANDSHAKE_CTS_AND_DCD_SDR_ASSERTED 0x0
#define IPMI_SOL_STARTUP_HANDSHAKE_CTS_AND_DCD_SDR_DEASSERTED 0x1
#define IPMI_SOL_STARTUP_HANDSHAKE_CTS_AND_DCD_SDR_VALID(__val) \
(((__val) == IPMI_SOL_STARTUP_HANDSHAKE_CTS_AND_DCD_SDR_ASSERTED \
|| (__val) == IPMI_SOL_STARTUP_HANDSHAKE_CTS_AND_DCD_SDR_DEASSERTED) ? 1 : 0)
#define IPMI_SERIAL_MODEM_ALERTS_FAIL_WHILE_SOL_ACTIVE 0x0
#define IPMI_SERIAL_MODEM_ALERTS_DEFERRED_WHILE_SOL_ACTIVE 0x1
#define IPMI_SERIAL_MODEM_ALERTS_SUCCEED_WHILE_SOL_ACTIVE 0x2
#define IPMI_SERIAL_MODEM_ALERTS_RESERVED 0x3
#define IPMI_SERIAL_MODEM_ALERTS_VALID(__val) \
(((__val) == IPMI_SERIAL_MODEM_ALERTS_FAIL_WHILE_SOL_ACTIVE \
|| (__val) == IPMI_SERIAL_MODEM_ALERTS_DEFERRED_WHILE_SOL_ACTIVE \
|| (__val) == IPMI_SERIAL_MODEM_ALERTS_SUCCEED_WHILE_SOL_ACTIVE) ? 1 : 0)
#define IPMI_TEST_MODE_ACTIVATED 0x1
#define IPMI_TEST_MODE_DEACTIVATED 0x0
#define IPMI_TEST_MODE_VALID(__val) \
(((__val) == IPMI_TEST_MODE_ACTIVATED \
|| (__val) == IPMI_TEST_MODE_DEACTIVATED) ? 1 : 0)
#define IPMI_ACTIVATE_PAYLOAD_WITH_AUTHENTICATION 0x1
#define IPMI_ACTIVATE_PAYLOAD_WITHOUT_AUTHENTICATION 0x0
#define IPMI_AUTHENTICATION_ACTIVATION_VALID(__val) \
(((__val) == IPMI_ACTIVATE_PAYLOAD_WITH_AUTHENTICATION \
|| (__val) == IPMI_ACTIVATE_PAYLOAD_WITHOUT_AUTHENTICATION) ? 1 : 0)
#define IPMI_ACTIVATE_PAYLOAD_WITH_ENCRYPTION 0x1
#define IPMI_ACTIVATE_PAYLOAD_WITHOUT_ENCRYPTION 0x0
#define IPMI_ENCRYPTION_ACTIVATION_VALID(__val) \
(((__val) == IPMI_ACTIVATE_PAYLOAD_WITH_ENCRYPTION \
|| (__val) == IPMI_ACTIVATE_PAYLOAD_WITHOUT_ENCRYPTION) ? 1 : 0)
#define IPMI_TEST_MODE_NOT_SUPPORTED 0x0
#define IPMI_TEST_MODE_ENABLED 0x1
#define IPMI_SUSPEND_ENCRYPTION 0x0
#define IPMI_RESUME_ENCRYPTION 0x1
#define IPMI_REGENERATE_INITIALIZATION_VECTOR 0x2
#define IPMI_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_VALID(__val) \
(((__val) == IPMI_SUSPEND_ENCRYPTION \
|| (__val) == IPMI_RESUME_ENCRYPTION \
|| (__val) == IPMI_REGENERATE_INITIALIZATION_VECTOR) ? 1 : 0)
#define IPMI_SET_USER_PAYLOAD_OPERATION_ENABLE 0x00
#define IPMI_SET_USER_PAYLOAD_OPERATION_DISABLE 0x01
#define IPMI_SET_USER_PAYLOAD_OPERATION_VALID(__val) \
(((__val) == IPMI_SET_USER_PAYLOAD_OPERATION_ENABLE \
|| (__val) == IPMI_SET_USER_PAYLOAD_OPERATION_DISABLE) ? 1 : 0)
/* achu: See IPMI Spec Set User Payload Access command. Enable may be
* 0 or 1, and Disable may be 0 or 1 as well.
*/
#define IPMI_PAYLOAD_ACCESS_VALID(__val) \
(((__val) == 0 \
|| (__val) == 1) ? 1 : 0)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_activate_payload_rq;
extern fiid_template_t tmpl_cmd_activate_payload_sol_rq;
extern fiid_template_t tmpl_cmd_activate_payload_rs;
extern fiid_template_t tmpl_cmd_activate_payload_sol_rs;
extern fiid_template_t tmpl_cmd_deactivate_payload_rq;
extern fiid_template_t tmpl_cmd_deactivate_payload_rs;
extern fiid_template_t tmpl_cmd_suspend_resume_payload_encryption_rq;
extern fiid_template_t tmpl_cmd_suspend_resume_payload_encryption_rq;
extern fiid_template_t tmpl_cmd_get_payload_activation_status_rq;
extern fiid_template_t tmpl_cmd_get_payload_activation_status_rs;
extern fiid_template_t tmpl_cmd_get_payload_instance_info_rq;
extern fiid_template_t tmpl_cmd_get_payload_instance_info_rs;
extern fiid_template_t tmpl_cmd_set_user_payload_access_rq;
extern fiid_template_t tmpl_cmd_set_user_payload_access_rs;
extern fiid_template_t tmpl_cmd_get_user_payload_access_rq;
extern fiid_template_t tmpl_cmd_get_user_payload_access_rs;
extern fiid_template_t tmpl_cmd_get_channel_payload_support_rq;
extern fiid_template_t tmpl_cmd_get_channel_payload_support_rs;
extern fiid_template_t tmpl_cmd_get_channel_payload_version_rq;
extern fiid_template_t tmpl_cmd_get_channel_payload_version_rs;
extern fiid_template_t tmpl_cmd_get_channel_oem_payload_info_rq;
extern fiid_template_t tmpl_cmd_get_channel_oem_payload_info_rs;
int fill_cmd_activate_payload (uint8_t payload_type,
uint8_t payload_instance,
const void *auxiliary_request_data,
unsigned int auxiliary_request_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_activate_payload_sol (uint8_t payload_type,
uint8_t payload_instance,
uint8_t sol_startup_handshake,
uint8_t shared_serial_alert_behavior,
uint8_t test_mode,
uint8_t authentication_activation,
uint8_t encryption_activation,
fiid_obj_t obj_cmd_rq);
int fill_cmd_deactivate_payload (uint8_t payload_type,
uint8_t payload_instance,
uint32_t payload_auxiliary_data,
fiid_obj_t obj_cmd_rq);
int fill_cmd_suspend_resume_payload_encryption (uint8_t payload_type,
uint8_t payload_instance,
uint8_t operation,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_payload_activation_status (uint8_t payload_type,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_payload_instance_info (uint8_t payload_type,
uint8_t payload_instance,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_user_payload_access (uint8_t channel_number,
uint8_t user_id,
uint8_t operation,
uint8_t standard_payload_1,
uint8_t standard_payload_2,
uint8_t standard_payload_3,
uint8_t standard_payload_4,
uint8_t standard_payload_5,
uint8_t standard_payload_6,
uint8_t standard_payload_7,
uint8_t oem_payload_0,
uint8_t oem_payload_1,
uint8_t oem_payload_2,
uint8_t oem_payload_3,
uint8_t oem_payload_4,
uint8_t oem_payload_5,
uint8_t oem_payload_6,
uint8_t oem_payload_7,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_user_payload_access (uint8_t channel_number,
uint8_t user_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_channel_payload_support (uint8_t channel_number,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_channel_payload_version (uint8_t channel_number,
uint8_t payload_type,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_channel_oem_payload_info (uint8_t channel_number,
uint8_t payload_type,
uint32_t oem_iana,
uint16_t oem_payload_id,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_H */

View File

@ -0,0 +1,87 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SDR_REPOSITORY_CMDS_H
#define IPMI_SDR_REPOSITORY_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_SDR_MODAL_NON_MODAL_REPOSITORY_UPDATE_OP_UNSPECIFIED 0x0
#define IPMI_SDR_NON_MODAL_REPOSITORY_UPDATE_OP_SUPPORTED 0x1
#define IPMI_SDR_MODAL_REPOSITORY_UPDATE_OP_SUPPORTED 0x2
#define IPMI_SDR_MODAL_NON_MODAL_REPOSITORY_UPDATE_OP_SUPPORTED 0x3
#define IPMI_SDR_IPMB_SLAVE_ADDRESS 0x0
#define IPMI_SDR_SYSTEM_SOFTWARE_ID 0x1
#define IPMI_SDR_RECORD_ID_FIRST 0x0000
#define IPMI_SDR_RECORD_ID_LAST 0xFFFF
#define IPMI_SDR_READ_ENTIRE_RECORD_BYTES_TO_READ 0xFF
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_get_sdr_repository_info_rq;
extern fiid_template_t tmpl_cmd_get_sdr_repository_info_rs;
extern fiid_template_t tmpl_cmd_get_sdr_repository_allocation_info_rq;
extern fiid_template_t tmpl_cmd_get_sdr_repository_allocation_info_rs;
extern fiid_template_t tmpl_cmd_reserve_sdr_repository_rq;
extern fiid_template_t tmpl_cmd_reserve_sdr_repository_rs;
extern fiid_template_t tmpl_cmd_get_sdr_rq;
extern fiid_template_t tmpl_cmd_get_sdr_rs;
extern fiid_template_t tmpl_cmd_get_sdr_repository_time_rq;
extern fiid_template_t tmpl_cmd_get_sdr_repository_time_rs;
extern fiid_template_t tmpl_cmd_set_sdr_repository_time_rq;
extern fiid_template_t tmpl_cmd_set_sdr_repository_time_rs;
int fill_cmd_get_repository_info (fiid_obj_t obj_cmd_rq);
int fill_cmd_get_repository_allocation_info (fiid_obj_t obj_cmd_rq);
int fill_cmd_reserve_sdr_repository (fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sdr (uint16_t reservation_id,
uint16_t record_id,
uint8_t offset_into_record,
uint8_t bytes_to_read,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sdr_repository_time (fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sdr_repository_time (uint32_t time, fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_REPOSITORY_CMDS_H */

View File

@ -0,0 +1,150 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SEL_CMDS_H
#define IPMI_SEL_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_SEL_GET_RECORD_ID_FIRST_ENTRY 0x0000
#define IPMI_SEL_GET_RECORD_ID_LAST_ENTRY 0xFFFF
#define IPMI_SEL_CLEAR_OPERATION_INITIATE_ERASE 0xAA
#define IPMI_SEL_CLEAR_OPERATION_GET_ERASURE_STATUS 0x0
#define IPMI_SEL_CLEAR_OPERATION_VALID(__val) \
(((__val) == IPMI_SEL_CLEAR_OPERATION_INITIATE_ERASE \
|| (__val) == IPMI_SEL_CLEAR_OPERATION_GET_ERASURE_STATUS) ? 1 : 0)
#define IPMI_SEL_CLEAR_ERASURE_IN_PROGRESS 0x0
#define IPMI_SEL_CLEAR_ERASE_COMPLETED 0x1
#define IPMI_SEL_READ_ENTIRE_RECORD_BYTES_TO_READ 0xFF
#define IPMI_SEL_TIME_UTC_OFFSET_MIN -1440
#define IPMI_SEL_TIME_UTC_OFFSET_MAX 1440
#define IPMI_SEL_TIME_UTC_OFFSET_UNSPECIFIED 0x07FF
#define IPMI_SEL_TIME_UTC_OFFSET_VALID(__val) \
((((__val) >= IPMI_SEL_TIME_UTC_OFFSET_MIN \
&& (__val) <= IPMI_SEL_TIME_UTC_OFFSET_MAX) \
|| (__val) == IPMI_SEL_TIME_UTC_OFFSET_UNSPECIFIED) ? 1 : 0)
#define IPMI_AUXILIARY_LOG_TYPE_MCA 0x00
#define IPMI_AUXILIARY_LOG_TYPE_OEM1 0x01
#define IPMI_AUXILIARY_LOG_TYPE_OEM2 0x02
#define IPMI_AUXILIARY_LOG_TYPE_VALID(__val) \
(((__val) == IPMI_AUXILIARY_LOG_TYPE_MCA \
|| (__val) == IPMI_AUXILIARY_LOG_TYPE_OEM1 \
|| (__val) == IPMI_AUXILIARY_LOG_TYPE_OEM2) ? 1 : 0)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_get_sel_info_rq;
extern fiid_template_t tmpl_cmd_get_sel_info_rs;
extern fiid_template_t tmpl_cmd_get_sel_allocation_info_rq;
extern fiid_template_t tmpl_cmd_get_sel_allocation_info_rs;
extern fiid_template_t tmpl_cmd_reserve_sel_rq;
extern fiid_template_t tmpl_cmd_reserve_sel_rs;
extern fiid_template_t tmpl_cmd_get_sel_entry_rq;
extern fiid_template_t tmpl_cmd_get_sel_entry_rs;
extern fiid_template_t tmpl_cmd_delete_sel_entry_rq;
extern fiid_template_t tmpl_cmd_delete_sel_entry_rs;
extern fiid_template_t tmpl_cmd_clear_sel_rq;
extern fiid_template_t tmpl_cmd_clear_sel_rs;
extern fiid_template_t tmpl_cmd_get_sel_time_rq;
extern fiid_template_t tmpl_cmd_get_sel_time_rs;
extern fiid_template_t tmpl_cmd_set_sel_time_rq;
extern fiid_template_t tmpl_cmd_set_sel_time_rs;
extern fiid_template_t tmpl_cmd_get_sel_time_utc_offset_rq;
extern fiid_template_t tmpl_cmd_get_sel_time_utc_offset_rs;
extern fiid_template_t tmpl_cmd_set_sel_time_utc_offset_rq;
extern fiid_template_t tmpl_cmd_set_sel_time_utc_offset_rs;
extern fiid_template_t tmpl_cmd_get_auxiliary_log_status_rq;
extern fiid_template_t tmpl_cmd_get_auxiliary_log_status_rs;
extern fiid_template_t tmpl_cmd_get_auxiliary_log_status_mca_rs;
extern fiid_template_t tmpl_cmd_get_auxiliary_log_status_oem_rs;
extern fiid_template_t tmpl_cmd_set_auxiliary_log_status_rq;
extern fiid_template_t tmpl_cmd_set_auxiliary_log_status_rs;
int fill_cmd_get_sel_info (fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sel_allocation_info (fiid_obj_t obj_cmd_rq);
int fill_cmd_reserve_sel (fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sel_entry (uint16_t reservation_id,
uint16_t record_id,
uint8_t offset_into_record,
uint8_t bytes_to_read,
fiid_obj_t obj_cmd_rq);
int fill_cmd_delete_sel_entry (uint16_t reservation_id,
uint16_t record_id,
fiid_obj_t obj_cmd_rq);
int fill_cmd_clear_sel (uint16_t reservation_id,
uint8_t operation,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sel_time (fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sel_time (uint32_t time, fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sel_time_utc_offset (fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sel_time_utc_offset (int16_t offset, fiid_obj_t obj_cmd_rq);
int fill_cmd_get_auxiliary_log_status (uint8_t log_type,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_auxiliary_log_status (uint8_t log_type,
const void *log_data,
unsigned int log_data_len,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SEL_CMDS_H */

View File

@ -0,0 +1,321 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SENSOR_CMDS_H
#define IPMI_SENSOR_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_SENSOR_GET_SENSOR_COUNT 0x00
#define IPMI_SENSOR_GET_SDR_COUNT 0x01
#define IPMI_SENSOR_GET_SDR_INFO_OPERATION_VALID(__val) \
(((__val) == IPMI_SENSOR_GET_SENSOR_COUNT \
|| (__val) == IPMI_SENSOR_GET_SDR_COUNT) ? 1 : 0)
#define IPMI_SENSOR_STATIC_SENSOR_POPULATION 0x0
#define IPMI_SENSOR_DYNAMIC_SENSOR_POPULATION 0x1
/* achu: as of IPMI 2.0 hysteresis_mask reserved for future - write as 0xFF */
#define IPMI_SENSOR_HYSTERESIS_MASK 0xFF
#define IPMI_SENSOR_EVENT_MESSAGE_ACTION_DO_NOT_CHANGE_INDIVIDUAL_ENABLES 0x0
#define IPMI_SENSOR_EVENT_MESSAGE_ACTION_ENABLE_SELECTED_EVENT_MESSAGES 0x1
#define IPMI_SENSOR_EVENT_MESSAGE_ACTION_DISABLE_SELECTED_EVENT_MESSAGES 0x2
#define IPMI_SENSOR_EVENT_MESSAGE_ACTION_VALID(__val) \
(((__val) == IPMI_SENSOR_EVENT_MESSAGE_ACTION_DO_NOT_CHANGE_INDIVIDUAL_ENABLES \
|| (__val) == IPMI_SENSOR_EVENT_MESSAGE_ACTION_ENABLE_SELECTED_EVENT_MESSAGES \
|| (__val) == IPMI_SENSOR_EVENT_MESSAGE_ACTION_DISABLE_SELECTED_EVENT_MESSAGES) ? 1 : 0)
#define IPMI_SENSOR_SCANNING_ON_THIS_SENSOR_ENABLE 0x1
#define IPMI_SENSOR_SCANNING_ON_THIS_SENSOR_DISABLE 0x0
#define IPMI_SENSOR_SCANNING_ON_THIS_SENSOR_VALID(__val) \
(((__val) == IPMI_SENSOR_SCANNING_ON_THIS_SENSOR_ENABLE \
|| (__val) == IPMI_SENSOR_SCANNING_ON_THIS_SENSOR_DISABLE) ? 1 : 0)
#define IPMI_SENSOR_ALL_EVENT_MESSAGES_ENABLE 0x1
#define IPMI_SENSOR_ALL_EVENT_MESSAGES_DISABLE 0x0
#define IPMI_SENSOR_ALL_EVENT_MESSAGES_VALID(__val) \
(((__val) == IPMI_SENSOR_ALL_EVENT_MESSAGES_ENABLE \
|| (__val) == IPMI_SENSOR_ALL_EVENT_MESSAGES_DISABLE) ? 1 : 0)
#define IPMI_SENSOR_EVENT_FLAG_ENABLE 0x1
#define IPMI_SENSOR_EVENT_FLAG_DISABLE 0x0
#define IPMI_SENSOR_EVENT_FLAG_VALID(__val) \
(((__val) == IPMI_SENSOR_EVENT_FLAG_ENABLE \
|| (__val) == IPMI_SENSOR_EVENT_FLAG_DISABLE) ? 1 : 0)
/* achu: Yes, this one is backwards. I don't know why */
#define IPMI_SENSOR_RE_ARM_ALL_EVENT_STATUS_ENABLED 0x0
#define IPMI_SENSOR_RE_ARM_ALL_EVENT_STATUS_DISABLED 0x1
#define IPMI_SENSOR_RE_ARM_ALL_EVENT_STATUS_VALID(__val) \
(((__val) == IPMI_SENSOR_RE_ARM_ALL_EVENT_STATUS_ENABLED \
|| (__val) == IPMI_SENSOR_RE_ARM_ALL_EVENT_STATUS_DISABLED) ? 1 : 0)
/* achu: Yes, this one is backwards. I don't know why */
#define IPMI_SENSOR_READING_STATE_UNAVAILABLE 0x1
#define IPMI_SENSOR_READING_STATE_AVAILABLE 0x0
#define IPMI_SENSOR_THRESHOLD_SET 0x1
#define IPMI_SENSOR_THRESHOLD_NOT_SET 0x0
#define IPMI_SENSOR_READING_OPERATION_WRITE_GIVEN_VALUE_TO_SENSOR_READING_BYTE 0x01
#define IPMI_SENSOR_READING_OPERATION_DONT_CHANGE_SENSOR_READING_BYTE 0x00
#define IPMI_SENSOR_READING_OPERATION_VALID(__val) \
(((__val) == IPMI_SENSOR_READING_OPERATION_WRITE_GIVEN_VALUE_TO_SENSOR_READING_BYTE \
|| (__val) == IPMI_SENSOR_READING_OPERATION_DONT_CHANGE_SENSOR_READING_BYTE) ? 1 : 0)
#define IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_CLEAR_EVENT_STATUS_BITS 0x03
#define IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_SET_EVENT_STATUS_BITS 0x02
#define IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_WRITE_EVENT_STATUS_BITS 0x01
#define IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_DONT_CHANGE_EVENT_STATUS_BITS 0x00
#define IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_VALID(__val) \
(((__val) == IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_CLEAR_EVENT_STATUS_BITS \
|| (__val) == IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_SET_EVENT_STATUS_BITS \
|| (__val) == IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_WRITE_EVENT_STATUS_BITS \
|| (__val) == IPMI_ASSERTION_DEASSERTION_EVENT_STATUS_BITS_OPERATION_DONT_CHANGE_EVENT_STATUS_BITS) ? 1 : 0)
#define IPMI_EVENT_DATA_BYTES_OPERATION_WRITE_EVENT_DATA_BYTES_EXCLUDING_EVENT_OFFSET 0x02
#define IPMI_EVENT_DATA_BYTES_OPERATION_WRITE_EVENT_DATA_BYTES_INCLUDING_EVENT_OFFSET 0x01
#define IPMI_EVENT_DATA_BYTES_OPERATION_DONT_WRITE_EVENT_DATA_BYTES 0x00
#define IPMI_EVENT_DATA_BYTES_OPERATION_VALID(__val) \
(((__val) == IPMI_EVENT_DATA_BYTES_OPERATION_WRITE_EVENT_DATA_BYTES_EXCLUDING_EVENT_OFFSET \
|| (__val) == IPMI_EVENT_DATA_BYTES_OPERATION_WRITE_EVENT_DATA_BYTES_INCLUDING_EVENT_OFFSET \
|| (__val) == IPMI_EVENT_DATA_BYTES_OPERATION_DONT_WRITE_EVENT_DATA_BYTES) ? 1 : 0)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_get_device_sdr_info_rq;
extern fiid_template_t tmpl_cmd_get_device_sdr_info_rs;
extern fiid_template_t tmpl_cmd_get_device_sdr_rq;
extern fiid_template_t tmpl_cmd_get_device_sdr_rs;
extern fiid_template_t tmpl_cmd_reserve_device_sdr_repository_rq;
extern fiid_template_t tmpl_cmd_reserve_device_sdr_repository_rs;
extern fiid_template_t tmpl_cmd_get_sensor_reading_factors_rq;
extern fiid_template_t tmpl_cmd_get_sensor_reading_factors_rs;
extern fiid_template_t tmpl_cmd_set_sensor_hysteresis_rq;
extern fiid_template_t tmpl_cmd_set_sensor_hysteresis_rs;
extern fiid_template_t tmpl_cmd_get_sensor_hysteresis_rq;
extern fiid_template_t tmpl_cmd_get_sensor_hysteresis_rs;
extern fiid_template_t tmpl_cmd_set_sensor_thresholds_rq;
extern fiid_template_t tmpl_cmd_set_sensor_thresholds_rs;
extern fiid_template_t tmpl_cmd_get_sensor_thresholds_rq;
extern fiid_template_t tmpl_cmd_get_sensor_thresholds_rs;
extern fiid_template_t tmpl_cmd_set_sensor_event_enable_rq;
extern fiid_template_t tmpl_cmd_set_sensor_event_enable_threshold_rq;
extern fiid_template_t tmpl_cmd_set_sensor_event_enable_discrete_rq;
extern fiid_template_t tmpl_cmd_set_sensor_event_enable_rs;
extern fiid_template_t tmpl_cmd_get_sensor_event_enable_rq;
extern fiid_template_t tmpl_cmd_get_sensor_event_enable_rs;
extern fiid_template_t tmpl_cmd_get_sensor_event_enable_threshold_rs;
extern fiid_template_t tmpl_cmd_get_sensor_event_enable_discrete_rs;
extern fiid_template_t tmpl_cmd_re_arm_sensor_events_rq;
extern fiid_template_t tmpl_cmd_re_arm_sensor_events_threshold_rq;
extern fiid_template_t tmpl_cmd_re_arm_sensor_events_discrete_rq;
extern fiid_template_t tmpl_cmd_re_arm_sensor_events_rs;
extern fiid_template_t tmpl_cmd_get_sensor_event_status_rq;
extern fiid_template_t tmpl_cmd_get_sensor_event_status_rs;
extern fiid_template_t tmpl_cmd_get_sensor_event_status_threshold_rs;
extern fiid_template_t tmpl_cmd_get_sensor_event_status_discerete_rs;
extern fiid_template_t tmpl_cmd_get_sensor_reading_rq;
extern fiid_template_t tmpl_cmd_get_sensor_reading_rs;
extern fiid_template_t tmpl_cmd_get_sensor_reading_threshold_rs;
extern fiid_template_t tmpl_cmd_get_sensor_reading_discrete_rs;
extern fiid_template_t tmpl_cmd_set_sensor_type_rq;
extern fiid_template_t tmpl_cmd_set_sensor_type_rs;
extern fiid_template_t tmpl_cmd_get_sensor_type_rq;
extern fiid_template_t tmpl_cmd_get_sensor_type_rs;
extern fiid_template_t tmpl_cmd_set_sensor_reading_and_event_status_rq;
extern fiid_template_t tmpl_cmd_set_sensor_reading_and_event_status_threshold_rq;
extern fiid_template_t tmpl_cmd_set_sensor_reading_and_event_status_discrete_rq;
extern fiid_template_t tmpl_cmd_set_sensor_reading_and_event_status_event_fields_rq;
extern fiid_template_t tmpl_cmd_set_sensor_reading_and_event_status_threshold_event_fields_rq;
extern fiid_template_t tmpl_cmd_set_sensor_reading_and_event_status_discrete_event_fields_rq;
extern fiid_template_t tmpl_cmd_set_sensor_reading_and_event_status_rs;
int fill_cmd_get_device_sdr_info (uint8_t operation,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_device_sdr (uint16_t reservation_id,
uint16_t record_id,
uint8_t offset_into_record,
uint8_t bytes_to_read,
fiid_obj_t obj_cmd_rq);
int fill_cmd_reserve_device_sdr_repository (fiid_obj_t obj_cmd_rq);
/* achu: as of IPMI 2.0 hysteresis_mask reserved for future - write as 0xFF */
int fill_cmd_set_sensor_hysteresis (uint8_t sensor_number,
uint8_t hysteresis_mask,
uint8_t positive_going_threshold_hysteresis_value,
uint8_t negative_going_threshold_hysteresis_value,
fiid_obj_t obj_cmd_rq);
/* achu: as of IPMI 2.0 hysteresis_mask reserved for future - write as 0xFF */
int fill_cmd_get_sensor_hysteresis (uint8_t sensor_number,
uint8_t hysteresis_mask,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sensor_thresholds (uint8_t sensor_number,
const uint8_t *lower_non_critical_threshold,
const uint8_t *lower_critical_threshold,
const uint8_t *lower_non_recoverable_threshold,
const uint8_t *upper_non_critical_threshold,
const uint8_t *upper_critical_threshold,
const uint8_t *upper_non_recoverable_threshold,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sensor_thresholds (uint8_t sensor_number, fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sensor_event_enable (uint8_t sensor_number,
uint8_t event_message_action,
uint8_t scanning_on_this_sensor,
uint8_t all_event_messages,
uint16_t assertion_event_bitmask,
uint16_t deassertion_event_bitmask,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sensor_event_enable_threshold (uint8_t sensor_number,
uint8_t event_message_action,
uint8_t scanning_on_this_sensor,
uint8_t all_event_messages,
uint8_t assertion_event_lower_non_critical_going_low,
uint8_t assertion_event_lower_non_critical_going_high,
uint8_t assertion_event_lower_critical_going_low,
uint8_t assertion_event_lower_critical_going_high,
uint8_t assertion_event_lower_non_recoverable_going_low,
uint8_t assertion_event_lower_non_recoverable_going_high,
uint8_t assertion_event_upper_non_critical_going_low,
uint8_t assertion_event_upper_non_critical_going_high,
uint8_t assertion_event_upper_critical_going_low,
uint8_t assertion_event_upper_critical_going_high,
uint8_t assertion_event_upper_non_recoverable_going_low,
uint8_t assertion_event_upper_non_recoverable_going_high,
uint8_t deassertion_event_lower_non_critical_going_low,
uint8_t deassertion_event_lower_non_critical_going_high,
uint8_t deassertion_event_lower_critical_going_low,
uint8_t deassertion_event_lower_critical_going_high,
uint8_t deassertion_event_lower_non_recoverable_going_low,
uint8_t deassertion_event_lower_non_recoverable_going_high,
uint8_t deassertion_event_upper_non_critical_going_low,
uint8_t deassertion_event_upper_non_critical_going_high,
uint8_t deassertion_event_upper_critical_going_low,
uint8_t deassertion_event_upper_critical_going_high,
uint8_t deassertion_event_upper_non_recoverable_going_low,
uint8_t deassertion_event_upper_non_recoverable_going_high,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sensor_event_enable_discrete (uint8_t sensor_number,
uint8_t event_message_action,
uint8_t scanning_on_this_sensor,
uint8_t all_event_messages,
uint8_t assertion_event_state_bit_0,
uint8_t assertion_event_state_bit_1,
uint8_t assertion_event_state_bit_2,
uint8_t assertion_event_state_bit_3,
uint8_t assertion_event_state_bit_4,
uint8_t assertion_event_state_bit_5,
uint8_t assertion_event_state_bit_6,
uint8_t assertion_event_state_bit_7,
uint8_t assertion_event_state_bit_8,
uint8_t assertion_event_state_bit_9,
uint8_t assertion_event_state_bit_10,
uint8_t assertion_event_state_bit_11,
uint8_t assertion_event_state_bit_12,
uint8_t assertion_event_state_bit_13,
uint8_t assertion_event_state_bit_14,
uint8_t deassertion_event_state_bit_0,
uint8_t deassertion_event_state_bit_1,
uint8_t deassertion_event_state_bit_2,
uint8_t deassertion_event_state_bit_3,
uint8_t deassertion_event_state_bit_4,
uint8_t deassertion_event_state_bit_5,
uint8_t deassertion_event_state_bit_6,
uint8_t deassertion_event_state_bit_7,
uint8_t deassertion_event_state_bit_8,
uint8_t deassertion_event_state_bit_9,
uint8_t deassertion_event_state_bit_10,
uint8_t deassertion_event_state_bit_11,
uint8_t deassertion_event_state_bit_12,
uint8_t deassertion_event_state_bit_13,
uint8_t deassertion_event_state_bit_14,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sensor_event_enable (uint8_t sensor_number, fiid_obj_t obj_cmd_rq);
int fill_cmd_re_arm_sensor_events (uint8_t sensor_number,
uint8_t re_arm_all_event_status_from_this_sensor,
uint16_t *re_arm_assertion_event,
uint16_t *re_arm_deassertion_event,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sensor_reading (uint8_t sensor_number, fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sensor_reading_and_event_status (uint8_t sensor_number,
uint8_t sensor_reading_operation,
uint8_t deassertion_bits_operation,
uint8_t assertion_bits_operation,
uint8_t event_data_bytes_operation,
uint8_t sensor_reading,
uint16_t assertion_event_bitmask,
uint16_t deassertion_event_bitmask,
uint8_t event_data1,
uint8_t event_data2,
uint8_t event_data3,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SENSOR_CMDS_H */

View File

@ -0,0 +1,173 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SERIAL_MODEM_CMDS_H
#define IPMI_SERIAL_MODEM_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_SERIAL_MODEM_CONFIGURATION_NO_SET_SELECTOR 0x0
#define IPMI_SERIAL_MODEM_CONFIGURATION_NO_BLOCK_SELECTOR 0x0
#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SET_COMPLETE 0x00
#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS 0x01
#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SET_COMMIT_WRITE 0x02
#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS_VALID(__value) \
(((__value) == IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SET_COMPLETE \
|| (__value) == IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS \
|| (__value) == IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SET_COMMIT_WRITE) ? 1 : 0)
#define IPMI_BASIC_MODE_ENABLE 0x1
#define IPMI_BASIC_MODE_DISABLE 0x0
#define IPMI_BASIC_MODE_VALID(__val) \
(((__val) == IPMI_BASIC_MODE_ENABLE \
|| (__val) == IPMI_BASIC_MODE_DISABLE) ? 1 : 0)
#define IPMI_PPP_MODE_ENABLE 0x1
#define IPMI_PPP_MODE_DISABLE 0x0
#define IPMI_PPP_MODE_VALID(__val) \
(((__val) == IPMI_PPP_MODE_ENABLE \
|| (__val) == IPMI_PPP_MODE_DISABLE) ? 1 : 0)
#define IPMI_TERMINAL_MODE_ENABLE 0x1
#define IPMI_TERMINAL_MODE_DISABLE 0x0
#define IPMI_TERMINAL_MODE_VALID(__val) \
(((__val) == IPMI_TERMINAL_MODE_ENABLE \
|| (__val) == IPMI_TERMINAL_MODE_DISABLE) ? 1 : 0)
#define IPMI_CONNECT_MODE_DIRECT 0x1
#define IPMI_CONNECT_MODE_MODEM 0x0
#define IPMI_CONNECT_MODE_VALID(__val) \
(((__val) == IPMI_CONNECT_MODE_DIRECT \
|| (__val) == IPMI_CONNECT_MODE_MODEM) ? 1 : 0)
#define IPMI_DTR_HANGUP_ENABLE 0x1
#define IPMI_DTR_HANGUP_DISABLE 0x0
#define IPMI_DTR_HANGUP_VALID(__val) \
(((__val) == IPMI_DTR_HANGUP_ENABLE \
|| (__val) == IPMI_DTR_HANGUP_DISABLE) ? 1 : 0)
#define IPMI_FLOW_CONTROL_NO_FLOW_CONTROL 0x0
#define IPMI_FLOW_CONTROL_RTS_CTS_FLOW_CONTROL 0x1
#define IPMI_FLOW_CONTROL_XON_XOFF_FLOW_CONTROL 0x2
#define IPMI_FLOW_CONTROL_RESERVED 0x3
#define IPMI_FLOW_CONTROL_VALID(__val) \
(((__val) == IPMI_FLOW_CONTROL_NO_FLOW_CONTROL \
|| (__val) == IPMI_FLOW_CONTROL_RTS_CTS_FLOW_CONTROL \
|| (__val) == IPMI_FLOW_CONTROL_XON_XOFF_FLOW_CONTROL) ? 1 : 0)
#define IPMI_BIT_RATE_9600_BPS 0x6
#define IPMI_BIT_RATE_19200_BPS 0x7
#define IPMI_BIT_RATE_38400_BPS 0x8
#define IPMI_BIT_RATE_57600_BPS 0x9
#define IPMI_BIT_RATE_115200_BPS 0xA
#define IPMI_BIT_RATE_VALID(__val) \
(((__val) == IPMI_BIT_RATE_9600_BPS \
|| (__val) == IPMI_BIT_RATE_19200_BPS \
|| (__val) == IPMI_BIT_RATE_38400_BPS \
|| (__val) == IPMI_BIT_RATE_57600_BPS \
|| (__val) == IPMI_BIT_RATE_115200_BPS) ? 1 : 0)
#define IPMI_GET_SERIAL_MODEM_PARAMETER 0x0
#define IPMI_GET_SERIAL_MODEM_PARAMETER_REVISION_ONLY 0x1
#define IPMI_GET_SERIAL_MODEM_PARAMETER_VALID(__flag) \
(((__flag) == IPMI_GET_SERIAL_MODEM_PARAMETER \
|| (__flag) == IPMI_GET_SERIAL_MODEM_PARAMETER_REVISION_ONLY) ? 1 : 0)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_set_serial_modem_configuration_rq;
extern fiid_template_t tmpl_cmd_set_serial_modem_configuration_rs;
extern fiid_template_t tmpl_cmd_set_serial_modem_configuration_set_in_progress_rq;
extern fiid_template_t tmpl_cmd_set_serial_modem_configuration_connection_mode_rq;
extern fiid_template_t tmpl_cmd_set_serial_modem_configuration_ipmi_messaging_comm_settings_rq;
extern fiid_template_t tmpl_cmd_set_serial_modem_configuration_page_blackout_interval_rq;
extern fiid_template_t tmpl_cmd_set_serial_modem_configuration_call_retry_interval_rq;
extern fiid_template_t tmpl_cmd_get_serial_modem_configuration_rq;
extern fiid_template_t tmpl_cmd_get_serial_modem_configuration_rs;
extern fiid_template_t tmpl_cmd_get_serial_modem_configuration_set_in_progress_rs;
extern fiid_template_t tmpl_cmd_get_serial_modem_configuration_connection_mode_rs;
extern fiid_template_t tmpl_cmd_get_serial_modem_configuration_ipmi_messaging_comm_settings_rs;
extern fiid_template_t tmpl_cmd_get_serial_modem_configuration_page_blackout_interval_rs;
extern fiid_template_t tmpl_cmd_get_serial_modem_configuration_call_retry_interval_rs;
int fill_cmd_set_serial_modem_configuration (uint8_t channel_number,
uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_serial_modem_configuration_set_in_progress (uint8_t channel_number,
uint8_t state,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_serial_modem_configuration_connection_mode (uint8_t channel_number,
uint8_t basic_mode,
uint8_t ppp_mode,
uint8_t terminal_mode,
uint8_t connect_mode,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_serial_modem_configuration_ipmi_messaging_comm_settings (uint8_t channel_number,
uint8_t dtr_hangup,
uint8_t flow_control,
uint8_t bit_rate,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_serial_modem_configuration_page_blackout_interval (uint8_t channel_number,
uint8_t page_blackout_interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_serial_modem_configuration_call_retry_interval (uint8_t channel_number,
uint8_t call_retry_interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_serial_modem_configuration (uint8_t channel_number,
uint8_t parameter_type,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_cmd_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SERIAL_MODEM_CMDS_H */

View File

@ -0,0 +1,169 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SOL_CMDS_H
#define IPMI_SOL_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_SOL_CONFIGURATION_PARAMETERS_NO_SET_SELECTOR 0x0
#define IPMI_SOL_CONFIGURATION_PARAMETERS_NO_BLOCK_SELECTOR 0x0
#define IPMI_SOL_CONFIGURATION_PARAMETERS_SET_COMPLETE 0x00
#define IPMI_SOL_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS 0x01
#define IPMI_SOL_CONFIGURATION_PARAMETERS_SET_COMMIT_WRITE 0x02
#define IPMI_SOL_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS_VALID(__value) \
(((__value) == IPMI_SOL_CONFIGURATION_PARAMETERS_SET_COMPLETE \
|| (__value) == IPMI_SOL_CONFIGURATION_PARAMETERS_SET_IN_PROGRESS \
|| (__value) == IPMI_SOL_CONFIGURATION_PARAMETERS_SET_COMMIT_WRITE) ? 1 : 0)
#define IPMI_SOL_SOL_DISABLE 0x0
#define IPMI_SOL_SOL_ENABLE 0x1
#define IPMI_SOL_SOL_ENABLE_VALID(__val) \
(((__val) == IPMI_SOL_SOL_DISABLE \
|| (__val) == IPMI_SOL_SOL_ENABLE) ? 1 : 0)
#define IPMI_SOL_FORCE_SOL_PAYLOAD_AUTHENTICATION 0x1
#define IPMI_SOL_AUTHENTICATION_CONTROLLED_BY_REMOTE_SOFTWARE 0x0
#define IPMI_SOL_FORCE_SOL_PAYLOAD_AUTHENTICATION_VALID(__val) \
(((__val) == IPMI_SOL_FORCE_SOL_PAYLOAD_AUTHENTICATION \
|| (__val) == IPMI_SOL_AUTHENTICATION_CONTROLLED_BY_REMOTE_SOFTWARE) ? 1 : 0)
#define IPMI_SOL_FORCE_SOL_PAYLOAD_ENCRYPTION 0x1
#define IPMI_SOL_ENCRYPTION_CONTROLLED_BY_REMOTE_SOFTWARE 0x0
#define IPMI_SOL_FORCE_SOL_PAYLOAD_ENCRYPTION_VALID(__val) \
(((__val) == IPMI_SOL_FORCE_SOL_PAYLOAD_ENCRYPTION \
|| (__val) == IPMI_SOL_ENCRYPTION_CONTROLLED_BY_REMOTE_SOFTWARE) ? 1 : 0)
#define IPMI_SOL_BIT_RATE_SERIAL_BIT_RATE 0x0
#define IPMI_SOL_BIT_RATE_96_KBPS 0x6
#define IPMI_SOL_BIT_RATE_192_KBPS 0x7
#define IPMI_SOL_BIT_RATE_384_KBPS 0x8
#define IPMI_SOL_BIT_RATE_576_KBPS 0x9
#define IPMI_SOL_BIT_RATE_1152_KBPS 0xA
#define IPMI_SOL_BIT_RATE_VALID(__val) \
(((__val) == IPMI_SOL_BIT_RATE_SERIAL_BIT_RATE \
|| (__val) == IPMI_SOL_BIT_RATE_96_KBPS \
|| (__val) == IPMI_SOL_BIT_RATE_192_KBPS \
|| (__val) == IPMI_SOL_BIT_RATE_384_KBPS \
|| (__val) == IPMI_SOL_BIT_RATE_576_KBPS \
|| (__val) == IPMI_SOL_BIT_RATE_1152_KBPS) ? 1 : 0)
#define IPMI_GET_SOL_PARAMETER 0x0
#define IPMI_GET_SOL_PARAMETER_REVISION_ONLY 0x1
#define IPMI_GET_SOL_PARAMETER_VALID(__val) \
(((__val) == IPMI_GET_SOL_PARAMETER \
|| (__val) == IPMI_GET_SOL_PARAMETER_REVISION_ONLY) ? 1 : 0)
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_rq;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_rs;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_set_in_progress_rq;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_sol_enable_rq;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_sol_authentication_rq;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_character_accumulate_interval_and_send_threshold_rq;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_sol_retry_rq;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_sol_non_volatile_bit_rate_rq;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_sol_volatile_bit_rate_rq;
extern fiid_template_t tmpl_cmd_set_sol_configuration_parameters_sol_payload_port_number_rq;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_rq;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_set_in_progress_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_sol_enable_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_sol_authentication_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_character_accumulate_interval_and_send_threshold_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_sol_retry_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_sol_non_volatile_bit_rate_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_sol_volatile_bit_rate_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_sol_payload_channel_rs;
extern fiid_template_t tmpl_cmd_get_sol_configuration_parameters_sol_payload_port_number_rs;
int fill_cmd_set_sol_configuration_parameters (uint8_t channel_number,
uint8_t parameter_selector,
const void *configuration_parameter_data,
unsigned int configuration_parameter_data_len,
fiid_obj_t obj_data_rq);
int fill_cmd_set_sol_configuration_parameters_set_in_progress (uint8_t channel_number,
uint8_t state,
fiid_obj_t obj_data_rq);
int fill_cmd_set_sol_configuration_parameters_sol_enable (uint8_t channel_number,
uint8_t sol_enable,
fiid_obj_t obj_data_rq);
int fill_cmd_set_sol_configuration_parameters_sol_authentication (uint8_t channel_number,
uint8_t sol_privilege_level,
uint8_t force_sol_payload_authentication,
uint8_t force_sol_payload_encryption,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sol_configuration_parameters_character_accumulate_interval_and_send_threshold (uint8_t channel_number,
uint8_t character_accumulate_interval,
uint8_t character_send_threshold,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sol_configuration_parameters_sol_retry (uint8_t channel_number,
uint8_t retry_count,
uint8_t retry_interval,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sol_configuration_parameters_sol_non_volatile_bit_rate (uint8_t channel_number,
uint8_t bit_rate,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sol_configuration_parameters_sol_volatile_bit_rate (uint8_t channel_number,
uint8_t bit_rate,
fiid_obj_t obj_cmd_rq);
int fill_cmd_set_sol_configuration_parameters_sol_payload_port_number (uint8_t channel_number,
uint16_t port_number,
fiid_obj_t obj_cmd_rq);
int fill_cmd_get_sol_configuration_parameters (uint8_t channel_number,
uint8_t get_parameter,
uint8_t parameter_selector,
uint8_t set_selector,
uint8_t block_selector,
fiid_obj_t obj_data_rq);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SOL_CMDS_H */

View File

@ -0,0 +1,53 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef RMCP_CMDS_H
#define RMCP_CMDS_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_cmd_rq must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cmd_asf_presence_ping;
extern fiid_template_t tmpl_cmd_asf_presence_pong;
/* MESSAGE_TAG:
achu: Consecutive ping messages should use different message tags,
ranging from 0x00 to 0xFE. This is because the RMCP consumers may
optionally discard duplicate messages. */
int fill_cmd_asf_presence_ping (uint8_t message_tag, fiid_obj_t obj_cmd);
#ifdef __cplusplus
}
#endif
#endif /* RMCP_CMDS_H */

View File

@ -0,0 +1,151 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_DEBUG_H
#define IPMI_DEBUG_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
extern fiid_template_t tmpl_unexpected_data;
int ipmi_obj_dump (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
fiid_obj_t obj);
int ipmi_obj_dump_ipmb (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
fiid_obj_t obj,
fiid_template_t tmpl_ipmb_msg_hdr,
fiid_template_t tmpl_ipmb_cmd);
int ipmi_dump_rmcp_packet (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
const void *pkt,
unsigned int pkt_len,
fiid_template_t tmpl_cmd);
int ipmi_dump_kcs_packet (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
const void *pkt,
unsigned int pkt_len,
fiid_template_t tmpl_cmd);
int ipmi_dump_kcs_packet_ipmb (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
const void *pkt,
unsigned int pkt_len,
fiid_template_t tmpl_cmd,
fiid_template_t tmpl_ipmb_msg_hdr,
fiid_template_t tmpl_ipmb_cmd);
int ipmi_dump_ssif_packet (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
const void *pkt,
unsigned int pkt_len,
fiid_template_t tmpl_cmd);
int ipmi_dump_lan_packet (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
const void *pkt,
unsigned int pkt_len,
fiid_template_t tmpl_lan_msg_hdr,
fiid_template_t tmpl_cmd);
int ipmi_dump_lan_packet_ipmb (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
const void *pkt,
unsigned int pkt_len,
fiid_template_t tmpl_lan_msg_hdr,
fiid_template_t tmpl_cmd,
fiid_template_t tmpl_ipmb_msg_hdr,
fiid_template_t tmpl_ipmb_cmd);
int ipmi_dump_rmcpplus_packet (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
uint8_t authentication_algorithm,
uint8_t integrity_algorithm,
uint8_t confidentiality_algorithm,
const void *integrity_key,
unsigned int integrity_key_len,
const void *confidentiality_key,
unsigned int confidentiality_key_len,
const void *pkt,
unsigned int pkt_len,
fiid_template_t tmpl_lan_msg_hdr,
fiid_template_t tmpl_cmd);
int ipmi_dump_rmcpplus_packet_ipmb (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
uint8_t authentication_algorithm,
uint8_t integrity_algorithm,
uint8_t confidentiality_algorithm,
const void *integrity_key,
unsigned int integrity_key_len,
const void *confidentiality_key,
unsigned int confidentiality_key_len,
const void *pkt,
unsigned int pkt_len,
fiid_template_t tmpl_lan_msg_hdr,
fiid_template_t tmpl_cmd,
fiid_template_t tmpl_ipmb_msg_hdr,
fiid_template_t tmpl_ipmb_cmd);
int ipmi_dump_sdr_record (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
const void *sdr_record,
unsigned int sdr_record_len);
int ipmi_dump_hex (int fd,
const char *prefix,
const char *hdr,
const char *trlr,
const void *buf,
unsigned int buf_len);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_DEBUG_H */

View File

@ -0,0 +1,81 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_INTELDCMI_DRIVER_H
#define IPMI_INTELDCMI_DRIVER_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_INTELDCMI_DRIVER_DEVICE_DEFAULT "/dev/dcmi"
#define IPMI_INTELDCMI_ERR_SUCCESS 0
#define IPMI_INTELDCMI_ERR_NULL 1
#define IPMI_INTELDCMI_ERR_INVALID 2
#define IPMI_INTELDCMI_ERR_PARAMETERS 3
#define IPMI_INTELDCMI_ERR_PERMISSION 4
#define IPMI_INTELDCMI_ERR_DEVICE_NOT_FOUND 5
#define IPMI_INTELDCMI_ERR_IO_NOT_INITIALIZED 6
#define IPMI_INTELDCMI_ERR_OUT_OF_MEMORY 7
#define IPMI_INTELDCMI_ERR_DRIVER_TIMEOUT 8
#define IPMI_INTELDCMI_ERR_IPMI_ERROR 9
#define IPMI_INTELDCMI_ERR_SYSTEM_ERROR 10
#define IPMI_INTELDCMI_ERR_INTERNAL_ERROR 11
#define IPMI_INTELDCMI_ERR_ERRNUMRANGE 12
#define IPMI_INTELDCMI_FLAGS_DEFAULT 0x00000000
typedef struct ipmi_inteldcmi_ctx *ipmi_inteldcmi_ctx_t;
ipmi_inteldcmi_ctx_t ipmi_inteldcmi_ctx_create (void);
void ipmi_inteldcmi_ctx_destroy (ipmi_inteldcmi_ctx_t ctx);
int ipmi_inteldcmi_ctx_errnum (ipmi_inteldcmi_ctx_t ctx);
char *ipmi_inteldcmi_ctx_strerror (int errnum);
char *ipmi_inteldcmi_ctx_errormsg (ipmi_inteldcmi_ctx_t ctx);
int ipmi_inteldcmi_ctx_get_driver_device (ipmi_inteldcmi_ctx_t ctx, char **driver_device);
int ipmi_inteldcmi_ctx_get_flags (ipmi_inteldcmi_ctx_t ctx, unsigned int *flags);
int ipmi_inteldcmi_ctx_set_driver_device (ipmi_inteldcmi_ctx_t ctx, const char *driver_device);
int ipmi_inteldcmi_ctx_set_flags (ipmi_inteldcmi_ctx_t ctx, unsigned int flags);
int ipmi_inteldcmi_ctx_io_init (ipmi_inteldcmi_ctx_t ctx);
int ipmi_inteldcmi_cmd (ipmi_inteldcmi_ctx_t ctx,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
int ipmi_inteldcmi_cmd_ipmb (ipmi_inteldcmi_ctx_t ctx,
uint8_t channel_number,
uint8_t rs_addr,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_INTELDCMI_DRIVER_H */

View File

@ -0,0 +1,98 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_KCS_DRIVER_H
#define IPMI_KCS_DRIVER_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_KCS_SMS_IO_BASE_DEFAULT 0x0CA2
#define IPMI_KCS_ERR_SUCCESS 0
#define IPMI_KCS_ERR_NULL 1
#define IPMI_KCS_ERR_INVALID 2
#define IPMI_KCS_ERR_PARAMETERS 3
#define IPMI_KCS_ERR_PERMISSION 4
#define IPMI_KCS_ERR_IO_NOT_INITIALIZED 5
#define IPMI_KCS_ERR_OVERFLOW 6
#define IPMI_KCS_ERR_BUSY 7
#define IPMI_KCS_ERR_OUT_OF_MEMORY 8
#define IPMI_KCS_ERR_DEVICE_NOT_FOUND 9
#define IPMI_KCS_ERR_DRIVER_TIMEOUT 10
#define IPMI_KCS_ERR_IPMI_ERROR 11
#define IPMI_KCS_ERR_SYSTEM_ERROR 12
#define IPMI_KCS_ERR_INTERNAL_ERROR 13
#define IPMI_KCS_ERR_ERRNUMRANGE 14
/* NONBLOCKING - if busy, IPMI_KCS_ERR_BUSY will be returned.
*
* SPIN_POLL - when polling, internally spin instead of putting
* process to sleep. If polling intervals are small, may improve
* inband performance by removing context switches and OS timer
* granularity.
*/
#define IPMI_KCS_FLAGS_DEFAULT 0x00000000
#define IPMI_KCS_FLAGS_NONBLOCKING 0x00000001
#define IPMI_KCS_FLAGS_SPIN_POLL 0x00000002
typedef struct ipmi_kcs_ctx *ipmi_kcs_ctx_t;
ipmi_kcs_ctx_t ipmi_kcs_ctx_create (void);
void ipmi_kcs_ctx_destroy (ipmi_kcs_ctx_t ctx);
int ipmi_kcs_ctx_errnum (ipmi_kcs_ctx_t ctx);
char *ipmi_kcs_ctx_strerror (int errnum);
char *ipmi_kcs_ctx_errormsg (ipmi_kcs_ctx_t ctx);
int ipmi_kcs_ctx_get_driver_address (ipmi_kcs_ctx_t ctx, uint16_t *bmc_iobase_address);
int ipmi_kcs_ctx_get_register_spacing (ipmi_kcs_ctx_t ctx, uint8_t *register_spacing);
int ipmi_kcs_ctx_get_poll_interval (ipmi_kcs_ctx_t ctx, uint8_t *poll_interval);
int ipmi_kcs_ctx_get_flags (ipmi_kcs_ctx_t ctx, unsigned int *flags);
int ipmi_kcs_ctx_set_driver_address (ipmi_kcs_ctx_t ctx, uint16_t bmc_iobase_address);
int ipmi_kcs_ctx_set_register_spacing (ipmi_kcs_ctx_t ctx, uint8_t register_spacing);
int ipmi_kcs_ctx_set_poll_interval (ipmi_kcs_ctx_t ctx, uint8_t poll_interval);
int ipmi_kcs_ctx_set_flags (ipmi_kcs_ctx_t ctx, unsigned int flags);
int ipmi_kcs_ctx_io_init (ipmi_kcs_ctx_t ctx);
/* returns length written on success, -1 on error */
int ipmi_kcs_write (ipmi_kcs_ctx_t ctx,
const void *buf,
unsigned int buf_len);
/* returns length read on success, -1 on error */
int ipmi_kcs_read (ipmi_kcs_ctx_t ctx,
void *buf,
unsigned int buf_len);
int ipmi_kcs_cmd (ipmi_kcs_ctx_t ctx,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_KCS_DRIVER_H */

View File

@ -0,0 +1,81 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_OPENIPMI_DRIVER_H
#define IPMI_OPENIPMI_DRIVER_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_OPENIPMI_DRIVER_DEVICE_DEFAULT "/dev/ipmi0"
#define IPMI_OPENIPMI_ERR_SUCCESS 0
#define IPMI_OPENIPMI_ERR_NULL 1
#define IPMI_OPENIPMI_ERR_INVALID 2
#define IPMI_OPENIPMI_ERR_PARAMETERS 3
#define IPMI_OPENIPMI_ERR_PERMISSION 4
#define IPMI_OPENIPMI_ERR_DEVICE_NOT_FOUND 5
#define IPMI_OPENIPMI_ERR_IO_NOT_INITIALIZED 6
#define IPMI_OPENIPMI_ERR_OUT_OF_MEMORY 7
#define IPMI_OPENIPMI_ERR_DRIVER_TIMEOUT 8
#define IPMI_OPENIPMI_ERR_IPMI_ERROR 9
#define IPMI_OPENIPMI_ERR_SYSTEM_ERROR 10
#define IPMI_OPENIPMI_ERR_INTERNAL_ERROR 11
#define IPMI_OPENIPMI_ERR_ERRNUMRANGE 12
#define IPMI_OPENIPMI_FLAGS_DEFAULT 0x00000000
typedef struct ipmi_openipmi_ctx *ipmi_openipmi_ctx_t;
ipmi_openipmi_ctx_t ipmi_openipmi_ctx_create (void);
void ipmi_openipmi_ctx_destroy (ipmi_openipmi_ctx_t ctx);
int ipmi_openipmi_ctx_errnum (ipmi_openipmi_ctx_t ctx);
char *ipmi_openipmi_ctx_strerror (int errnum);
char *ipmi_openipmi_ctx_errormsg (ipmi_openipmi_ctx_t ctx);
int ipmi_openipmi_ctx_get_driver_device (ipmi_openipmi_ctx_t ctx, char **driver_device);
int ipmi_openipmi_ctx_get_flags (ipmi_openipmi_ctx_t ctx, unsigned int *flags);
int ipmi_openipmi_ctx_set_driver_device (ipmi_openipmi_ctx_t ctx, const char *driver_device);
int ipmi_openipmi_ctx_set_flags (ipmi_openipmi_ctx_t ctx, unsigned int flags);
int ipmi_openipmi_ctx_io_init (ipmi_openipmi_ctx_t ctx);
int ipmi_openipmi_cmd (ipmi_openipmi_ctx_t ctx,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
int ipmi_openipmi_cmd_ipmb (ipmi_openipmi_ctx_t ctx,
uint8_t channel_number,
uint8_t rs_addr,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_OPENIPMI_DRIVER_H */

View File

@ -0,0 +1,94 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SSIF_DRIVER_H
#define IPMI_SSIF_DRIVER_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_DEFAULT_I2C_DEVICE "/dev/i2c-0"
#define IPMI_DEFAULT_SSIF_IPMB_ADDR 0x42
#define IPMI_SSIF_ERR_SUCCESS 0
#define IPMI_SSIF_ERR_NULL 1
#define IPMI_SSIF_ERR_INVALID 2
#define IPMI_SSIF_ERR_PARAMETERS 3
#define IPMI_SSIF_ERR_PERMISSION 4
#define IPMI_SSIF_ERR_IO_NOT_INITIALIZED 5
#define IPMI_SSIF_ERR_OVERFLOW 6
#define IPMI_SSIF_ERR_BUSY 7
#define IPMI_SSIF_ERR_OUT_OF_MEMORY 8
#define IPMI_SSIF_ERR_DEVICE_NOT_FOUND 9
#define IPMI_SSIF_ERR_DRIVER_TIMEOUT 10
#define IPMI_SSIF_ERR_IPMI_ERROR 11
#define IPMI_SSIF_ERR_SYSTEM_ERROR 12
#define IPMI_SSIF_ERR_INTERNAL_ERROR 13
#define IPMI_SSIF_ERR_ERRNUMRANGE 14
#define IPMI_SSIF_FLAGS_DEFAULT 0x00000000
#define IPMI_SSIF_FLAGS_NONBLOCKING 0x00000001
typedef struct ipmi_ssif_ctx *ipmi_ssif_ctx_t;
/* Notes:
*
* IPMBAddress - slave address of the BMC on the SMBus (usually 0x42)
*
*/
ipmi_ssif_ctx_t ipmi_ssif_ctx_create (void);
void ipmi_ssif_ctx_destroy (ipmi_ssif_ctx_t ctx);
int ipmi_ssif_ctx_errnum (ipmi_ssif_ctx_t ctx);
char *ipmi_ssif_ctx_strerror (int errnum);
char *ipmi_ssif_ctx_errormsg (ipmi_ssif_ctx_t ctx);
int ipmi_ssif_ctx_get_driver_device (ipmi_ssif_ctx_t ctx, char **driver_device);
int ipmi_ssif_ctx_get_driver_address (ipmi_ssif_ctx_t ctx, uint8_t *driver_address);
int ipmi_ssif_ctx_get_flags (ipmi_ssif_ctx_t ctx, unsigned int *flags);
int ipmi_ssif_ctx_set_driver_device (ipmi_ssif_ctx_t ctx, const char *driver_device);
int ipmi_ssif_ctx_set_driver_address (ipmi_ssif_ctx_t ctx, uint8_t driver_address);
int ipmi_ssif_ctx_set_flags (ipmi_ssif_ctx_t ctx, unsigned int flags);
int ipmi_ssif_ctx_io_init (ipmi_ssif_ctx_t ctx);
/* returns length written on success, -1 on error */
int ipmi_ssif_write (ipmi_ssif_ctx_t ctx,
const void *buf,
unsigned int buf_len);
/* returns length read on success, -1 on error */
int ipmi_ssif_read (ipmi_ssif_ctx_t ctx,
void *buf,
unsigned int buf_len);
int ipmi_ssif_cmd (ipmi_ssif_ctx_t ctx,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SSIF_DRIVER_H */

View File

@ -0,0 +1,74 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SUNBMC_DRIVER_H
#define IPMI_SUNBMC_DRIVER_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_SUNBMC_DRIVER_DEVICE_DEFAULT "/dev/bmc"
#define IPMI_SUNBMC_ERR_SUCCESS 0
#define IPMI_SUNBMC_ERR_NULL 1
#define IPMI_SUNBMC_ERR_INVALID 2
#define IPMI_SUNBMC_ERR_PARAMETERS 3
#define IPMI_SUNBMC_ERR_PERMISSION 4
#define IPMI_SUNBMC_ERR_DEVICE_NOT_FOUND 5
#define IPMI_SUNBMC_ERR_DEVICE_NOT_SUPPORTED 6
#define IPMI_SUNBMC_ERR_IO_NOT_INITIALIZED 7
#define IPMI_SUNBMC_ERR_OUT_OF_MEMORY 8
#define IPMI_SUNBMC_ERR_DRIVER_TIMEOUT 9
#define IPMI_SUNBMC_ERR_IPMI_ERROR 10
#define IPMI_SUNBMC_ERR_SYSTEM_ERROR 11
#define IPMI_SUNBMC_ERR_INTERNAL_ERROR 12
#define IPMI_SUNBMC_ERR_ERRNUMRANGE 13
#define IPMI_SUNBMC_FLAGS_DEFAULT 0x00000000
typedef struct ipmi_sunbmc_ctx *ipmi_sunbmc_ctx_t;
ipmi_sunbmc_ctx_t ipmi_sunbmc_ctx_create (void);
void ipmi_sunbmc_ctx_destroy (ipmi_sunbmc_ctx_t ctx);
int ipmi_sunbmc_ctx_errnum (ipmi_sunbmc_ctx_t ctx);
char *ipmi_sunbmc_ctx_strerror (int errnum);
char *ipmi_sunbmc_ctx_errormsg (ipmi_sunbmc_ctx_t ctx);
int ipmi_sunbmc_ctx_get_driver_device (ipmi_sunbmc_ctx_t ctx, char **driver_device);
int ipmi_sunbmc_ctx_get_flags (ipmi_sunbmc_ctx_t ctx, unsigned int *flags);
int ipmi_sunbmc_ctx_set_driver_device (ipmi_sunbmc_ctx_t ctx, const char *driver_device);
int ipmi_sunbmc_ctx_set_flags (ipmi_sunbmc_ctx_t ctx, unsigned int flags);
int ipmi_sunbmc_ctx_io_init (ipmi_sunbmc_ctx_t ctx);
int ipmi_sunbmc_cmd (ipmi_sunbmc_ctx_t ctx,
uint8_t lun,
uint8_t net_fn,
fiid_obj_t obj_cmd_rq,
fiid_obj_t obj_cmd_rs);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SUNBMC_DRIVER_H */

View File

@ -0,0 +1,751 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef FIID_H
#define FIID_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
/*
* FIID Error Codes
*/
enum fiid_err
{
FIID_ERR_SUCCESS = 0,
FIID_ERR_OBJ_NULL = 1,
FIID_ERR_OBJ_INVALID = 2,
FIID_ERR_ITERATOR_NULL = 3,
FIID_ERR_ITERATOR_INVALID = 4,
FIID_ERR_PARAMETERS = 5,
FIID_ERR_TEMPLATE_INVALID = 6,
FIID_ERR_FIELD_NOT_FOUND = 7,
FIID_ERR_KEY_INVALID = 8,
FIID_ERR_FLAGS_INVALID = 9,
FIID_ERR_TEMPLATE_NOT_BYTE_ALIGNED = 10,
FIID_ERR_FIELD_NOT_BYTE_ALIGNED = 11,
FIID_ERR_BLOCK_NOT_BYTE_ALIGNED = 12,
FIID_ERR_OVERFLOW = 13,
FIID_ERR_MAX_FIELD_LEN_MISMATCH = 14,
FIID_ERR_KEY_FIELD_MISMATCH = 15,
FIID_ERR_FLAGS_FIELD_MISMATCH = 16,
FIID_ERR_TEMPLATE_LENGTH_MISMATCH = 17,
FIID_ERR_DATA_NOT_BYTE_ALIGNED = 18,
FIID_ERR_REQUIRED_FIELD_MISSING = 19,
FIID_ERR_FIXED_LENGTH_FIELD_INVALID = 20,
FIID_ERR_DATA_NOT_AVAILABLE = 21,
FIID_ERR_NOT_IDENTICAL = 22,
FIID_ERR_OUT_OF_MEMORY = 23,
FIID_ERR_INTERNAL_ERROR = 24,
FIID_ERR_ERRNUMRANGE = 25
};
typedef enum fiid_err fiid_err_t;
/*
* FIID Field Maximum Key Length
*/
#define FIID_FIELD_MAX_KEY_LEN 256
/*
* FIID Field Flags
*
* FIID Field Requirement Flags
*
* REQUIRED
*
* The field in the template is required. For requests, if not set, a
* packet cannot be created. For responses, if not set, a packet is
* invalid.
*
* OPTIONAL
*
* The field in the template is not required. For requests, if not
* set, a packet can still be created. For responses, if not set, a
* packet is still valid.
*
* In a template field, either the REQUIRED or OPTIONAL flag must be
* specified.
*
* FIID Field Length Flags
*
* LENGTH_FIXED
*
* The number of bits that must be set in the field is fixed. It
* cannot be any other length.
*
* LENGTH_VARIABLE
*
* The number of bits that must be set in the field is variable in
* length.
*
* In a template field, either the LENGTH_FIXED or LENGTH_VARIABLE
* flag must be specified.
*
* FIID Field Misc Flags
*
* MAKES_PACKET_SUFFICIENT
*
* Used to indicate a sufficient set of fields, that if set, may allow
* a packet to be "sufficiently valid", despite other "required"
* fields not being set. Typically used in response packets to
* indicate the few fields necessary to be set for a payload to be
* accepted.
*/
#define FIID_FIELD_REQUIRED 0x00000001
#define FIID_FIELD_OPTIONAL 0x00000002
#define FIID_FIELD_REQUIRED_MASK 0x0000000F
#define FIID_FIELD_REQUIRED_FLAG(__flags) \
((__flags) & FIID_FIELD_REQUIRED_MASK)
#define FIID_FIELD_REQUIRED_FLAG_VALID(__flags) \
((FIID_FIELD_REQUIRED_FLAG (__flags) == FIID_FIELD_REQUIRED \
|| FIID_FIELD_REQUIRED_FLAG (__flags) == FIID_FIELD_OPTIONAL) ? 1 : 0)
#define FIID_FIELD_LENGTH_FIXED 0x00000010
#define FIID_FIELD_LENGTH_VARIABLE 0x00000020
#define FIID_FIELD_LENGTH_MASK 0x000000F0
#define FIID_FIELD_LENGTH_FLAG(__flags) \
((__flags) & FIID_FIELD_LENGTH_MASK)
#define FIID_FIELD_LENGTH_FLAG_VALID(__flags) \
((FIID_FIELD_LENGTH_FLAG (__flags) == FIID_FIELD_LENGTH_FIXED \
|| FIID_FIELD_LENGTH_FLAG (__flags) == FIID_FIELD_LENGTH_VARIABLE) ? 1 : 0)
#define FIID_FIELD_MAKES_PACKET_SUFFICIENT 0x00010000
/*
* fiid_field_t
*
* Defines a FIID field:
*
* max_field_len - maximum length of a field in bits
* key - field name
* flags - indicating field requirements
*
* An array of field's makes up a FIID template.
*/
typedef struct fiid_field
{
unsigned int max_field_len;
char key[FIID_FIELD_MAX_KEY_LEN];
unsigned int flags;
} fiid_field_t;
/*
* FIID Template
*
* An array of fiid_field_t's make up a fiid template. The array should be
* terminated with a field with a maximum field length of 0.
*
* The FIID template should be a multiple of 8 (i.e. byte aligned) otherwise
* most of the FIID API will return errors.
*/
typedef fiid_field_t fiid_template_t[];
typedef struct fiid_obj *fiid_obj_t;
typedef struct fiid_iterator *fiid_iterator_t;
/*****************************
* FIID Template API *
*****************************/
/*
* fiid_template_field_lookup
*
* Returns 1 if the field is found in the template, 0 if not, -1 on
* error.
*/
int fiid_template_field_lookup (fiid_template_t tmpl,
const char *field);
/*
* FIID_TEMPLATE_FIELD_LOOKUP
*
* Returns 1 if the field is found in the template, -1 on error.
* Identical to fiid_template_field_lookup() except a return of 0 is
* not possible. If the field is not found, -1 is returned and
* errno EINVAL is the error code set.
*/
int FIID_TEMPLATE_FIELD_LOOKUP (fiid_template_t tmpl,
const char *field);
/*
* fiid_template_len
*
* Returns the total length (in bits) of the all the fields in the
* template, -1 on error.
*/
int fiid_template_len (fiid_template_t tmpl);
/*
* fiid_template_len_bytes
*
* Returns the total length (in bytes) of the all the fields in the
* template, -1 on error. Will return an error if template bit length
* is not a multiple of 8.
*/
int fiid_template_len_bytes (fiid_template_t tmpl);
/*
* fiid_template_field_start
*
* Returns the offset (in bits) of the beginning of the field within
* this template, -1 on error.
*/
int fiid_template_field_start (fiid_template_t tmpl,
const char *field);
/*
* fiid_template_field_start_bytes
*
* Returns the offset (in bytes) of the beginning of the field within
* this template, -1 on error. Will return an error if field bit
* offset is not a multiple of 8.
*/
int fiid_template_field_start_bytes (fiid_template_t tmpl,
const char *field);
/*
* fiid_template_field_end
*
* Returns the offset (in bits) of the ending of the field within this
* template, -1 on error.
*/
int fiid_template_field_end (fiid_template_t tmpl,
const char *field);
/*
* fiid_template_field_end_bytes
*
* Returns the offset (in bytes) of the ending of the field within
* this template, -1 on error. Will return an error if field bit
* offset is not a multiple of 8.
*/
int fiid_template_field_end_bytes (fiid_template_t tmpl,
const char *field);
/*
* fiid_template_field_len
*
* Returns the maximum length (in bits) of the specified field, -1 on
* error.
*/
int fiid_template_field_len (fiid_template_t tmpl,
const char *field);
/*
* fiid_template_field_len_bytes
*
* Returns the maximum length (in bytes) of the specified field, -1 on
* error. Will return an error if the field maximum bit length is not
* a multiple of 8.
*/
int fiid_template_field_len_bytes (fiid_template_t tmpl,
const char *field);
/*
* fiid_template_block_len
*
* Returns the maximum length (in bits) of the block of fields
* beginning at 'field_start' and ending at 'field_end'. Returns -1
* on error.
*/
int fiid_template_block_len (fiid_template_t tmpl,
const char *field_start,
const char *field_end);
/*
* fiid_template_block_len_bytes
*
* Returns the maximum length (in bytes) of the block of fields
* beginning at 'field_start' and ending at 'field_end'. Returns -1
* on error. Will return an error if the calculated bit length is not
* a multiple of 8.
*/
int fiid_template_block_len_bytes (fiid_template_t tmpl,
const char *field_start,
const char *field_end);
/*
* fiid_template_compare
*
* Returns 1 if the two specified templates are identical, 0 if not,
* -1 on error.
*/
int fiid_template_compare (fiid_template_t tmpl1,
fiid_template_t tmpl2);
/*
* FIID_TEMPLATE_COMPARE
*
* Returns 1 if the two specified templates are identical, -1 on
* error. Identical to fiid_template_compare() except a return of 0
* is not possible. If templates are not identical, -1 is returned and
* errno EINVAL is the error code set.
*/
int FIID_TEMPLATE_COMPARE (fiid_template_t tmpl1,
fiid_template_t tmpl2);
/*
* fiid_template_free
*
* Free's a template created by fiid_obj_template.
*/
void fiid_template_free (fiid_field_t *tmpl_dynamic);
/*****************************
* FIID Object API *
*****************************/
/*
* fiid_strerror
*
* Return statically allocated string describing the specified error.
*/
char *fiid_strerror (fiid_err_t errnum);
/*
* fiid_obj_create
*
* Return a fiid object based on the specified template. Returns NULL
* on error.
*/
fiid_obj_t fiid_obj_create (fiid_template_t tmpl);
/*
* fiid_obj_destroy
*
* Destroy and free memory from a fiid object.
*/
void fiid_obj_destroy (fiid_obj_t obj);
/*
* fiid_obj_dup
*
* Create and return a duplicate object from the one specified.
* Returns NULL on error.
*/
fiid_obj_t fiid_obj_dup (fiid_obj_t src_obj);
/*
* fiid_obj_copy
*
* Create and return a duplicate object from the one specified, but
* base the new object on the alternate template specified. Template
* length of the original and alternate template must be the same.
* Returns NULL on error.
*/
fiid_obj_t fiid_obj_copy (fiid_obj_t src_obj, fiid_template_t alt_tmpl);
/*
* fiid_obj_valid
*
* Returns 1 if the object passed in is a valid fiid object, 0 if not.
*/
int fiid_obj_valid (fiid_obj_t obj);
/*
* fiid_obj_packet_valid
*
* Returns 1 if the object contains all the data for a valid packet,
* 0 if not, -1 on error. A valid packet is based on the field flags
* specified in the original fiid template. For example, this
* function will check if all required fields have been set with the
* correct number of bytes. It will also check that data set within
* the object is byte aligned. The FIID_FIELD_MAKES_PACKET_SUFFICIENT
* is not considered in this function.
*/
int fiid_obj_packet_valid (fiid_obj_t obj);
/*
* FIID_OBJ_PACKET_VALID
*
* Returns 1 if the object contains all the data for a valid packet,
* -1 on error. Identical to fiid_obj_packet_valid() except a return
* of 0 is not possible. The FIID_FIELD_MAKES_PACKET_SUFFICIENT is
* not considered in this function.
*/
int FIID_OBJ_PACKET_VALID (fiid_obj_t obj);
/*
* fiid_obj_packet_sufficient
*
* Returns 1 if the object contains all the data for a sufficient
* packet, 0 if not, -1 on error. Identical to
* fiid_obj_packet_valid() except FIID_FIELD_MAKES_PACKET_SUFFICIENT
* is considered. If a packet does not meet the conditions to pass
* fiid_obj_packet_valid(), sufficient fields are subsequently
* checked.
*/
int fiid_obj_packet_sufficient (fiid_obj_t obj);
/*
* FIID_OBJ_PACKET_SUFFICIENT
*
* Returns 1 if the object contains a all the data for a valid packet,
* -1 on error. Identical to fiid_obj_packet_sufficient() except a return
* of 0 is not possible.
*/
int FIID_OBJ_PACKET_SUFFICIENT (fiid_obj_t obj);
/*
* fiid_obj_template
*
* Create a template based on what is stored internally within the
* object. Returns NULL on error. Free the resulting template using
* fiid_template_free().
*/
fiid_field_t *fiid_obj_template (fiid_obj_t obj);
/*
* fiid_obj_template_compare
*
* Returns 1 if the template specified is the one used to create the
* object, 0 if not, -1 one error.
*/
int fiid_obj_template_compare (fiid_obj_t obj, fiid_template_t tmpl);
/*
* FIID_OBJ_TEMPLATE_COMPARE
*
* Returns 1 if the template specified is the one used to create the
* object, -1 one error. Identical to fiid_obj_template_compare()
* except a return of 0 is not possible. If object template and input
* template are not identical, -1 is returned and
* FIID_ERR_NOT_IDENTICAL is the error code set.
*/
int FIID_OBJ_TEMPLATE_COMPARE (fiid_obj_t obj, fiid_template_t tmpl);
/*
* fiid_obj_errnum
*
* Returns the error code for the most recently occurring error.
*/
fiid_err_t fiid_obj_errnum (fiid_obj_t obj);
/*
* fiid_obj_errormsg
*
* Returns the error string for the most recently occurring error.
*/
char *fiid_obj_errormsg (fiid_obj_t obj);
/*
* fiid_obj_len
*
* Returns the total length (in bits) of data stored within the
* object, -1 on error.
*/
int fiid_obj_len (fiid_obj_t obj);
/*
* fiid_obj_len_bytes
*
* Returns the total length (in bytes) of data stored within the
* object, -1 on error. Will return an error if the total bit length
* of data is not a multiple of 8.
*/
int fiid_obj_len_bytes (fiid_obj_t obj);
/*
* fiid_obj_field_len
*
* Returns the length (in bits) of data stored within the
* specified field, -1 on error.
*/
int fiid_obj_field_len (fiid_obj_t obj, const char *field);
/*
* fiid_obj_field_len_bytes
*
* Returns the length (in bytes) of data stored within the specified
* field, -1 on error. Will return an error if the bit length of data
* is not a multiple of 8.
*/
int fiid_obj_field_len_bytes (fiid_obj_t obj, const char *field);
/*
* fiid_obj_block_len
*
* Returns the length (in bits) of data stored within the block of
* fields beginning at 'field_start' and ending at 'field_end'.
* Returns -1 on error.
*/
int fiid_obj_block_len (fiid_obj_t obj,
const char *field_start,
const char *field_end);
/*
* fiid_obj_block_len_bytes
*
* Returns the length (in bytes) of data stored within the block of
* fields beginning at 'field_start' and ending at 'field_end'.
* Returns -1 on error. Will return an error if the calculated bit
* length is not a multiple of 8.
*/
int fiid_obj_block_len_bytes (fiid_obj_t obj,
const char *field_start,
const char *field_end);
/*
* fiid_obj_clear
*
* Clear all data stored in the object. Return 0 on success, -1 on
* error.
*/
int fiid_obj_clear (fiid_obj_t obj);
/*
* fiid_obj_clear_field
*
* Clear all data stored in a specified field in the object. Return 0
* on success, -1 on error.
*/
int fiid_obj_clear_field (fiid_obj_t obj, const char *field);
/*
* fiid_obj_field_lookup
*
* Returns 1 if the field is found in the object, 0 if not, -1 on
* error.
*/
int fiid_obj_field_lookup (fiid_obj_t obj, const char *field);
/*
* FIID_OBJ_FIELD_LOOKUP
*
* Returns 1 if the field is found in the object, -1 on error.
* Identical to fiid_obj_field_lookup() except a return of 0 is not
* possible. If the field is not found, -1 is returned and
* FIID_ERR_FIELD_NOT_FOUND is the error code set.
*/
int FIID_OBJ_FIELD_LOOKUP (fiid_obj_t obj, const char *field);
/*
* fiid_obj_set
*
* Set data in the object for the specified field. Returns 0 on
* success, -1 on error.
*/
int fiid_obj_set (fiid_obj_t obj, const char *field, uint64_t val);
/*
* fiid_obj_get
*
* Get data stored in the object for the specified field. Returns 1
* if data was available and returned, 0 if no data was available, -1
* on error.
*/
int fiid_obj_get (fiid_obj_t obj, const char *field, uint64_t *val);
/*
* FIID_OBJ_GET
*
* Get data stored in the object for the specified field. Returns 1
* if data was available and returned, -1 on error. Identical to
* fiid_obj_get() except a return of 0 is not possible. If no data is
* available, -1 is returned and FIID_ERR_DATA_NOT_AVAILABLE is the
* error code set.
*/
int FIID_OBJ_GET (fiid_obj_t obj, const char *field, uint64_t *val);
/*
* fiid_obj_set_data
*
* Set an array of data in the object for the specified field.
* Returns length of data set on success, -1 on error. The field
* specified must begin on a byte boundary and have a maximum bit
* length that is a multiple of 8. Will truncate the data written
* if the field maximum length is smaller than the data given.
*/
int fiid_obj_set_data (fiid_obj_t obj,
const char *field,
const void *data,
unsigned int data_len);
/*
* fiid_obj_get_data
*
* Get an array of data in the object for the specified field.
* Returns length of data read on success, -1 on error. The field
* specified must begin on a byte boundary and have a data bit length
* that is a multiple of 8.
*/
int fiid_obj_get_data (fiid_obj_t obj,
const char *field,
void *data,
unsigned int data_len);
/*
* fiid_obj_set_all
*
* Set all fields in the object with the specified array of data.
* Returns length of data set on success, -1 on error. The given data
* must fall on a byte boundary of the object. Will truncate the data
* written if the total object maximum length is smaller than the data
* given. Will write as much as possible if data is not large enough
* to fill the entire object.
*/
int fiid_obj_set_all (fiid_obj_t obj, const void *data, unsigned int data_len);
/*
* fiid_obj_get_all
*
* Get an array of all data in the object. Returns length of data
* read on success, -1 on error.
*/
int fiid_obj_get_all (fiid_obj_t obj, void *data, unsigned int data_len);
/*
* fiid_obj_set_block
*
* Set a block of fields in the object, beginning with 'field_start'
* and ending with 'field_end'. Returns length of data set on
* success, -1 on error. The fields given must fall on a byte
* boundary of the object. Will truncate the data written if the
* total block maximum length is smaller than the data given. Will
* write as much as possible if data is not large enough to fill the
* entire block.
*/
int fiid_obj_set_block (fiid_obj_t obj,
const char *field_start,
const char *field_end,
const void *data,
unsigned int data_len);
/*
* fiid_obj_get_block
*
* Get a block of data in the object, beginning with 'field_start' and
* ending with 'field_end'. Returns length of data read on success,
* -1 on error. Data being read must fall on a byte boundary.
*/
int fiid_obj_get_block (fiid_obj_t obj,
const char *field_start,
const char *field_end,
void *data,
unsigned int data_len);
/*****************************
* FIID Iterator API *
*****************************/
/*
* fiid_iterator_create
*
* Create a fiid iterator to iteratate through each field in an
* object. Returns iterator on success, NULL on error.
*/
fiid_iterator_t fiid_iterator_create (fiid_obj_t obj);
/*
* fiid_iterator_destroy
*
* Destroy and free memory from a fiid iterator.
*/
void fiid_iterator_destroy (fiid_iterator_t iter);
/*
* fiid_iterator_errnum
*
* Returns the error code for the most recently occurring error.
*/
fiid_err_t fiid_iterator_errnum (fiid_iterator_t iter);
/*
* fiid_iterator_errormsg
*
* Returns the error string for the most recently occurring error.
*/
char *fiid_iterator_errormsg (fiid_iterator_t iter);
/*
* fiid_iterator_reset
*
* Reset the iterator back to the beginning. Returns 0 on success, -1
* on error.
*/
int fiid_iterator_reset (fiid_iterator_t iter);
/*
* fiid_iterator_next
*
* Move the iterator to the next field. Returns 0 on success, -1 on
* error.
*/
int fiid_iterator_next (fiid_iterator_t iter);
/*
* fiid_iterator_end
*
* Returns 1 if you are at the end of the iterator, 0 if not, -1
* error.
*/
int fiid_iterator_end (fiid_iterator_t iter);
/*
* fiid_iterator_field_len
*
* Returns the number of bits set for the current field. Returns -1
* on error.
*/
int fiid_iterator_field_len (fiid_iterator_t iter);
/*
* fiid_iterator_key
*
* Returns the key name for the current field. Returns NULL on error.
*/
char *fiid_iterator_key (fiid_iterator_t iter);
/*
* fiid_iterator_get
*
* Get data stored in the object for the current field. Returns 1
* if data was available and returned, 0 if no data was available, -1
* on error.
*/
int fiid_iterator_get (fiid_iterator_t iter, uint64_t *val);
/*
* fiid_iterator_get_data
*
* Get an array of data in the object for the current field. Returns
* length of data read on success, -1 on error. The current field
* must begin on a byte boundary and have a data bit length that is a
* multiple of 8.
*/
int fiid_iterator_get_data (fiid_iterator_t iter,
void *data,
unsigned int data_len);
#ifdef __cplusplus
}
#endif
#endif /* FIID_H */

View File

@ -0,0 +1,243 @@
/*
* Copyright (C) 2003-2012 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef FREEIPMI_H
#define FREEIPMI_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/api/ipmi-chassis-cmds-api.h>
#include <freeipmi/api/ipmi-dcmi-cmds-api.h>
#include <freeipmi/api/ipmi-device-global-cmds-api.h>
#include <freeipmi/api/ipmi-event-cmds-api.h>
#include <freeipmi/api/ipmi-firmware-firewall-command-discovery-cmds-api.h>
#include <freeipmi/api/ipmi-fru-inventory-device-cmds-api.h>
#include <freeipmi/api/ipmi-lan-cmds-api.h>
#include <freeipmi/api/ipmi-messaging-support-cmds-api.h>
#include <freeipmi/api/ipmi-oem-intel-node-manager-cmds-api.h>
#include <freeipmi/api/ipmi-pef-and-alerting-cmds-api.h>
#include <freeipmi/api/ipmi-rmcpplus-support-and-payload-cmds-api.h>
#include <freeipmi/api/ipmi-sdr-repository-cmds-api.h>
#include <freeipmi/api/ipmi-sensor-cmds-api.h>
#include <freeipmi/api/ipmi-sel-cmds-api.h>
#include <freeipmi/api/ipmi-serial-modem-cmds-api.h>
#include <freeipmi/api/ipmi-sol-cmds-api.h>
#include <freeipmi/cmds/ipmi-bmc-watchdog-timer-cmds.h>
#include <freeipmi/cmds/ipmi-chassis-cmds.h>
#include <freeipmi/cmds/ipmi-dcmi-cmds.h>
#include <freeipmi/cmds/ipmi-dcmi-oem-cmds.h>
#include <freeipmi/cmds/ipmi-device-global-cmds.h>
#include <freeipmi/cmds/ipmi-event-cmds.h>
#include <freeipmi/cmds/ipmi-firmware-firewall-command-discovery-cmds.h>
#include <freeipmi/cmds/ipmi-fru-inventory-device-cmds.h>
#include <freeipmi/cmds/ipmi-lan-cmds.h>
#include <freeipmi/cmds/ipmi-messaging-support-cmds.h>
#include <freeipmi/cmds/ipmi-oem-intel-node-manager-cmds.h>
#include <freeipmi/cmds/ipmi-pef-and-alerting-cmds.h>
#include <freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h>
#include <freeipmi/cmds/ipmi-sdr-repository-cmds.h>
#include <freeipmi/cmds/ipmi-sel-cmds.h>
#include <freeipmi/cmds/ipmi-sensor-cmds.h>
#include <freeipmi/cmds/ipmi-serial-modem-cmds.h>
#include <freeipmi/cmds/ipmi-sol-cmds.h>
#include <freeipmi/cmds/rmcp-cmds.h>
#include <freeipmi/debug/ipmi-debug.h>
#include <freeipmi/driver/ipmi-kcs-driver.h>
#include <freeipmi/driver/ipmi-ssif-driver.h>
#include <freeipmi/driver/ipmi-openipmi-driver.h>
#include <freeipmi/driver/ipmi-sunbmc-driver.h>
#include <freeipmi/fiid/fiid.h>
#include <freeipmi/fru/ipmi-fru.h>
#include <freeipmi/interface/ipmi-interface.h>
#include <freeipmi/interface/ipmi-ipmb-interface.h>
#include <freeipmi/interface/ipmi-kcs-interface.h>
#include <freeipmi/interface/ipmi-lan-interface.h>
#include <freeipmi/interface/ipmi-rmcpplus-interface.h>
#include <freeipmi/interface/rmcp-interface.h>
#include <freeipmi/interpret/ipmi-interpret.h>
#include <freeipmi/locate/ipmi-locate.h>
#include <freeipmi/payload/ipmi-sol-payload.h>
#include <freeipmi/record-format/ipmi-cipher-suite-record-format.h>
#include <freeipmi/record-format/ipmi-fru-dimmspd-record-format.h>
#include <freeipmi/record-format/ipmi-fru-information-record-format.h>
#include <freeipmi/record-format/ipmi-platform-event-trap-record-format.h>
#include <freeipmi/record-format/ipmi-sdr-record-format.h>
#include <freeipmi/record-format/ipmi-sel-record-format.h>
#include <freeipmi/record-format/oem/ipmi-fru-wistron-oem-record-format.h>
#include <freeipmi/record-format/oem/ipmi-sdr-oem-intel-node-manager-record-format.h>
#include <freeipmi/record-format/oem/ipmi-sdr-oem-intel-record-format.h>
#include <freeipmi/record-format/oem/ipmi-sel-oem-intel-record-format.h>
#include <freeipmi/record-format/oem/ipmi-sel-oem-linux-kernel-record-format.h>
#include <freeipmi/sdr/ipmi-sdr.h>
#include <freeipmi/sdr/oem/ipmi-sdr-oem-intel-node-manager.h>
#include <freeipmi/sel/ipmi-sel.h>
#include <freeipmi/sensor-read/ipmi-sensor-read.h>
#include <freeipmi/spec/ipmi-authentication-type-spec.h>
#include <freeipmi/spec/ipmi-channel-spec.h>
#include <freeipmi/spec/ipmi-cmd-spec.h>
#include <freeipmi/spec/ipmi-cmd-dcmi-spec.h>
#include <freeipmi/spec/ipmi-comp-code-spec.h>
#include <freeipmi/spec/ipmi-comp-code-dcmi-spec.h>
#include <freeipmi/spec/ipmi-device-types-spec.h>
#include <freeipmi/spec/ipmi-entity-ids-spec.h>
#include <freeipmi/spec/ipmi-event-reading-type-code-spec.h>
#include <freeipmi/spec/ipmi-fru-chassis-types-spec.h>
#include <freeipmi/spec/ipmi-fru-language-codes-spec.h>
#include <freeipmi/spec/ipmi-iana-enterprise-numbers-spec.h>
#include <freeipmi/spec/ipmi-ipmb-lun-spec.h>
#include <freeipmi/spec/ipmi-jedec-manufacturer-identification-code-spec.h>
#include <freeipmi/spec/ipmi-lan-configuration-parameters-spec.h>
#include <freeipmi/spec/ipmi-netfn-spec.h>
#include <freeipmi/spec/ipmi-pef-configuration-parameters-spec.h>
#include <freeipmi/spec/ipmi-privilege-level-spec.h>
#include <freeipmi/spec/ipmi-product-id-spec.h>
#include <freeipmi/spec/ipmi-rmcpplus-status-spec.h>
#include <freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h>
#include <freeipmi/spec/ipmi-sensor-types-spec.h>
#include <freeipmi/spec/ipmi-sensor-units-spec.h>
#include <freeipmi/spec/ipmi-serial-modem-configuration-parameters-spec.h>
#include <freeipmi/spec/ipmi-slave-address-spec.h>
#include <freeipmi/spec/ipmi-sol-configuration-parameters-spec.h>
#include <freeipmi/spec/ipmi-system-boot-option-parameters-spec.h>
#include <freeipmi/spec/ipmi-system-info-parameters-spec.h>
#include <freeipmi/spec/ipmi-system-software-id-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-ibm-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-intel-node-manager-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-quanta-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-sun-microsystems-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-supermicro-spec.h>
#include <freeipmi/spec/oem/ipmi-cmd-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-intel-node-manager-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-hp-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-node-manager-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-supermicro-spec.h>
#include <freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-ibm-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-quanta-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-supermicro-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-ibm-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-quanta-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-sun-microsystems-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-supermicro-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-hp-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-intel-node-manager-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-quanta-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-supermicro-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-numbers-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-numbers-oem-intel-node-manager-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-numbers-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-numbers-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-numbers-oem-quanta-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-numbers-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-types-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-types-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-types-oem-hp-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-types-oem-intel-node-manager-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-types-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-types-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-types-oem-supermicro-spec.h>
#include <freeipmi/spec/oem/ipmi-sensor-types-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-slave-address-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-slave-address-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-slave-address-oem-linux-kernel-spec.h>
#include <freeipmi/spec/oem/ipmi-slave-address-oem-quanta-spec.h>
#include <freeipmi/spec/oem/ipmi-slave-address-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-sol-configuration-parameters-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-sol-configuration-parameters-oem-wistron-spec.h>
#include <freeipmi/spec/oem/ipmi-system-info-parameters-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-system-info-parameters-oem-wistron-spec.h>
#include <freeipmi/util/ipmi-channel-util.h>
#include <freeipmi/util/ipmi-cipher-suite-util.h>
#include <freeipmi/util/ipmi-device-types-util.h>
#include <freeipmi/util/ipmi-entity-ids-util.h>
#include <freeipmi/util/ipmi-error-util.h>
#include <freeipmi/util/ipmi-error-dcmi-util.h>
#include <freeipmi/util/ipmi-iana-enterprise-numbers-util.h>
#include <freeipmi/util/ipmi-ipmb-util.h>
#include <freeipmi/util/ipmi-jedec-manufacturer-identification-code-util.h>
#include <freeipmi/util/ipmi-lan-util.h>
#include <freeipmi/util/ipmi-outofband-util.h>
#include <freeipmi/util/ipmi-rmcpplus-util.h>
#include <freeipmi/util/ipmi-sensor-and-event-code-tables-util.h>
#include <freeipmi/util/ipmi-sensor-util.h>
#include <freeipmi/util/ipmi-timestamp-util.h>
#include <freeipmi/util/ipmi-util.h>
#include <freeipmi/util/ipmi-dcmi-util.h>
#include <freeipmi/util/rmcp-util.h>
#define FREEIPMI_PACKAGE_VERSION 1.5.1
#define FREEIPMI_PACKAGE_VERSION_MAJOR 1
#define FREEIPMI_PACKAGE_VERSION_MINOR 5
#define FREEIPMI_PACKAGE_VERSION_PATCH 1
/*
* Libfreeipmi version
*
* MAJOR - Incremented when interfaces are changed or removed.
* Interfaces may be binary incompatible. When incremented, MINOR
* and PATCH are zeroed.
*
* MINOR - Incremented when interfaces are added. Interfaces are
* binary compatible with older minor versions. When incremented,
* PATCH is zeroed.
*
* PATCH - Incremented when interfaces are not changed. Typically
* incremented due to bug fixes or minor features. Interfaces are
* forward and backward compatible to other PATCH versions.
*/
#define LIBFREEIPMI_VERSION_MAJOR 6
#define LIBFREEIPMI_VERSION_MINOR 0
#define LIBFREEIPMI_VERSION_PATCH 0
#ifdef __cplusplus
}
#endif
#endif /* FREEIPMI_H */

View File

@ -0,0 +1,339 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_FRU_H
#define IPMI_FRU_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#define IPMI_FRU_ERR_SUCCESS 0
#define IPMI_FRU_ERR_CONTEXT_NULL 1
#define IPMI_FRU_ERR_CONTEXT_INVALID 2
#define IPMI_FRU_ERR_PARAMETERS 3
#define IPMI_FRU_ERR_DEVICE_ID_NOT_OPEN 4
#define IPMI_FRU_ERR_DEVICE_ID_ALREADY_OPEN 5
#define IPMI_FRU_ERR_NO_FRU_INFORMATION 6
#define IPMI_FRU_ERR_FRU_AREA_LENGTH_INVALID 7
#define IPMI_FRU_ERR_COMMON_HEADER_CHECKSUM_INVALID 8
#define IPMI_FRU_ERR_CHASSIS_INFO_AREA_CHECKSUM_INVALID 9
#define IPMI_FRU_ERR_BOARD_INFO_AREA_CHECKSUM_INVALID 10
#define IPMI_FRU_ERR_PRODUCT_INFO_AREA_CHECKSUM_INVALID 11
#define IPMI_FRU_ERR_MULTIRECORD_AREA_CHECKSUM_INVALID 12
#define IPMI_FRU_ERR_COMMON_HEADER_FORMAT_INVALID 13
#define IPMI_FRU_ERR_CHASSIS_INFO_AREA_FORMAT_INVALID 14
#define IPMI_FRU_ERR_BOARD_INFO_AREA_FORMAT_INVALID 15
#define IPMI_FRU_ERR_PRODUCT_INFO_AREA_FORMAT_INVALID 16
#define IPMI_FRU_ERR_MULTIRECORD_AREA_FORMAT_INVALID 17
#define IPMI_FRU_ERR_FRU_INFORMATION_INCONSISTENT 18
#define IPMI_FRU_ERR_FRU_LANGUAGE_CODE_NOT_SUPPORTED 19
#define IPMI_FRU_ERR_FRU_INVALID_BCD_ENCODING 20
#define IPMI_FRU_ERR_FRU_SENTINEL_VALUE_NOT_FOUND 21
#define IPMI_FRU_ERR_NOT_AVAILABLE_FOR_THIS_RECORD 22
#define IPMI_FRU_ERR_OVERFLOW 23
#define IPMI_FRU_ERR_OUT_OF_MEMORY 24
#define IPMI_FRU_ERR_DEVICE_BUSY 25
#define IPMI_FRU_ERR_IPMI_ERROR 26
#define IPMI_FRU_ERR_SYSTEM_ERROR 27
#define IPMI_FRU_ERR_INTERNAL_ERROR 28
#define IPMI_FRU_ERR_ERRNUMRANGE 29
#define IPMI_FRU_FLAGS_DEFAULT 0x0000
#define IPMI_FRU_FLAGS_DEBUG_DUMP 0x0001
#define IPMI_FRU_FLAGS_SKIP_CHECKSUM_CHECKS 0x0002
#define IPMI_FRU_FLAGS_INTERPRET_OEM_DATA 0x0004
/* Do not parse FRU inventory information like normal
* - iterator functions no longer serve purpose
* - ipmi_fru_read_data_area will read as much data as in
* can into buffer.
*/
#define IPMI_FRU_FLAGS_READ_RAW 0x0008
#define IPMI_FRU_AREA_TYPE_CHASSIS_INFO_AREA 0
#define IPMI_FRU_AREA_TYPE_BOARD_INFO_AREA 1
#define IPMI_FRU_AREA_TYPE_PRODUCT_INFO_AREA 2
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_POWER_SUPPLY_INFORMATION 3
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_DC_OUTPUT 4
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_DC_LOAD 5
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_MANAGEMENT_ACCESS_RECORD 6
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_BASE_COMPATABILITY_RECORD 7
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_EXTENDED_COMPATABILITY_RECORD 8
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_ASF_FIXED_SMBUS_DEVICE_RECORD 9
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_ASF_LEGACY_DEVICE_ALERTS 10
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_ASF_REMOTE_CONTROL 11
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_EXTENDED_DC_OUTPUT 12
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_EXTENDED_DC_LOAD 13
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_NVM_EXPRESS 14
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_OEM 15
#define IPMI_FRU_AREA_TYPE_MULTIRECORD_UNKNOWN 16
#define IPMI_FRU_AREA_TYPE_RAW_DATA 17
/* multirecord length field is 1 byte => max 256 chars. Round up to
* 512 for good measure.
*/
#define IPMI_FRU_AREA_TYPE_LENGTH_FIELD_MAX 512
/* length field is 6 bits = 64 bytes of text, x2 b/c could be hex
* output, x2 because of possible space in between hex output and 'h'
* at end of hex output, x2 for extra measure. This length is
* sufficient for 6-bit ASCII as well, since you have 4 chars / 3
* bytes.
*/
#define IPMI_FRU_AREA_STRING_MAX 512
/* 16 bit field for length */
#define IPMI_FRU_AREA_SIZE_MAX 65536
struct ipmi_fru_field
{
uint8_t type_length_field[IPMI_FRU_AREA_TYPE_LENGTH_FIELD_MAX];
/* store length of data stored in buffer */
unsigned int type_length_field_length;
};
typedef struct ipmi_fru_field ipmi_fru_field_t;
typedef struct ipmi_fru_ctx *ipmi_fru_ctx_t;
/* FRU Parse Context Functions
* - if specified, ipmi_ctx must be open and ready to go
* - if NULL ipmi_ctx, FRU ctx cannot be used for FRU reading, only parsing records
*/
ipmi_fru_ctx_t ipmi_fru_ctx_create (ipmi_ctx_t ipmi_ctx);
void ipmi_fru_ctx_destroy (ipmi_fru_ctx_t ctx);
int ipmi_fru_ctx_errnum (ipmi_fru_ctx_t ctx);
char * ipmi_fru_ctx_strerror (int errnum);
char * ipmi_fru_ctx_errormsg (ipmi_fru_ctx_t ctx);
/* FRU Parse flag functions */
int ipmi_fru_ctx_get_flags (ipmi_fru_ctx_t ctx, unsigned int *flags);
int ipmi_fru_ctx_set_flags (ipmi_fru_ctx_t ctx, unsigned int flags);
/* for use w/ IPMI_FRU_FLAGS_INTERPRET_OEM_DATA */
int ipmi_fru_ctx_get_manufacturer_id (ipmi_fru_ctx_t ctx, uint32_t *manufacturer_id);
int ipmi_fru_ctx_set_manufacturer_id (ipmi_fru_ctx_t ctx, uint32_t manufacturer_id);
/* for use w/ IPMI_FRU_FLAGS_INTERPRET_OEM_DATA */
int ipmi_fru_ctx_get_product_id (ipmi_fru_ctx_t ctx, uint16_t *product_id);
int ipmi_fru_ctx_set_product_id (ipmi_fru_ctx_t ctx, uint16_t product_id);
char *ipmi_fru_ctx_get_debug_prefix (ipmi_fru_ctx_t ctx);
int ipmi_fru_ctx_set_debug_prefix (ipmi_fru_ctx_t ctx, const char *debug_prefix);
/* FRU data retrieval setup functions */
int ipmi_fru_open_device_id (ipmi_fru_ctx_t ctx, uint8_t fru_device_id);
int ipmi_fru_close_device_id (ipmi_fru_ctx_t ctx);
/* FRU data iterator functions */
int ipmi_fru_first (ipmi_fru_ctx_t ctx);
/* returns 1 if iterator can continue, 0 if at end, -1 on error */
int ipmi_fru_next (ipmi_fru_ctx_t ctx);
/* area read will not include record headers */
/* utiliize area_type and area_length in/out parameters for later parsing */
/* if reading in raw mode, read as much data as you can into buffer
* - area_length will return total size of data that exists
* - area_type will return IPMI_FRU_AREA_TYPE_RAW_DATA
*/
int ipmi_fru_read_data_area (ipmi_fru_ctx_t ctx,
unsigned int *area_type,
unsigned int *area_length,
void *areabuf,
unsigned int areabuflen);
/* most useful for OEM record handling, will error if not at a multirecord area */
int ipmi_fru_read_multirecord_record_type_id (ipmi_fru_ctx_t ctx,
uint8_t *record_type_id);
/* FRU area parsing */
/* Functions assume record headers have been stripped out */
int ipmi_fru_chassis_info_area (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
uint8_t *chassis_type,
ipmi_fru_field_t *chassis_part_number,
ipmi_fru_field_t *chassis_serial_number,
ipmi_fru_field_t *chassis_custom_fields,
unsigned int chassis_custom_fields_len);
/* mfg_date_time returned in seconds since unix epoch, not FRU defined epoch */
int ipmi_fru_board_info_area (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
uint8_t *language_code,
uint32_t *mfg_date_time,
ipmi_fru_field_t *board_manufacturer,
ipmi_fru_field_t *board_product_name,
ipmi_fru_field_t *board_serial_number,
ipmi_fru_field_t *board_part_number,
ipmi_fru_field_t *board_fru_file_id,
ipmi_fru_field_t *board_custom_fields,
unsigned int chassis_custom_fields_len);
int ipmi_fru_product_info_area (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
uint8_t *language_code,
ipmi_fru_field_t *product_manufacturer_name,
ipmi_fru_field_t *product_name,
ipmi_fru_field_t *product_part_model_number,
ipmi_fru_field_t *product_version,
ipmi_fru_field_t *product_serial_number,
ipmi_fru_field_t *product_asset_tag,
ipmi_fru_field_t *product_fru_file_id,
ipmi_fru_field_t *product_custom_fields,
unsigned int product_custom_fields_len);
/* 10 mV multipliers factored in return voltages */
/* FRU Revision 1.2 renamed ac_dropout_tolerance to input_dropout_tolerance, are identical */
int ipmi_fru_multirecord_power_supply_information (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
unsigned int *overall_capacity,
unsigned int *peak_va,
unsigned int *inrush_current,
unsigned int *inrush_interval,
int *low_end_input_voltage_range_1,
int *high_end_input_voltage_range_1,
int *low_end_input_voltage_range_2,
int *high_end_input_voltage_range_2,
unsigned int *low_end_input_frequency_range,
unsigned int *high_end_input_frequency_range,
unsigned int *ac_dropout_tolerance,
unsigned int *predictive_fail_support,
unsigned int *power_factor_correction,
unsigned int *autoswitch,
unsigned int *hot_swap_support,
unsigned int *tachometer_pulses_per_rotation_predictive_fail_polarity,
unsigned int *peak_capacity,
unsigned int *hold_up_time,
unsigned int *voltage_1,
unsigned int *voltage_2,
unsigned int *total_combined_wattage,
unsigned int *predictive_fail_tachometer_lower_threshold);
/* 10 mV multipliers factored in return voltages */
int ipmi_fru_multirecord_dc_output (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
unsigned int *output_number,
unsigned int *standby,
int *nominal_voltage,
int *maximum_negative_voltage_deviation,
int *maximum_positive_voltage_deviation,
unsigned int *ripple_and_noise_pk_pk,
unsigned int *minimum_current_draw,
unsigned int *maximum_current_draw);
/* 10 mV multipliers factored in return voltages */
int ipmi_fru_multirecord_dc_load (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
unsigned int *output_number,
unsigned int *standby,
int *nominal_voltage,
int *specd_minimum_voltage,
int *specd_maximum_voltage,
unsigned int *specd_ripple_and_noise_pk_pk,
unsigned int *minimum_current_load,
unsigned int *maximum_current_load);
int ipmi_fru_multirecord_management_access_record (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
uint8_t *sub_record_type,
void *sub_record_data,
unsigned int *sub_record_data_len);
int ipmi_fru_multirecord_base_compatibility_record (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
uint32_t *manufacturer_id,
unsigned int *entity_id_code,
unsigned int *compatibility_base,
unsigned int *compatibility_code_start_value,
uint8_t *code_range_mask,
unsigned int *code_range_mask_len);
int ipmi_fru_multirecord_extended_compatibility_record (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
uint32_t *manufacturer_id,
unsigned int *entity_id_code,
unsigned int *compatibility_base,
unsigned int *compatibility_code_start_value,
uint8_t *code_range_mask,
unsigned int *code_range_mask_len);
/* 10 mV multipliers factored in return voltages */
/* draw in mA units, already factoring in current_units */
int ipmi_fru_multirecord_extended_dc_output (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
unsigned int *output_number,
unsigned int *current_units,
unsigned int *standby,
int *nominal_voltage,
int *maximum_negative_voltage_deviation,
int *maximum_positive_voltage_deviation,
unsigned int *ripple_and_noise_pk_pk,
unsigned int *minimum_current_draw,
unsigned int *maximum_current_draw);
/* 10 mV multipliers factored in return voltages */
/* load in mA units, already factoring in current_units */
int ipmi_fru_multirecord_extended_dc_load (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
unsigned int *output_number,
unsigned int *current_units,
unsigned int *standby,
int *nominal_voltage,
int *specd_minimum_voltage,
int *specd_maximum_voltage,
unsigned int *specd_ripple_and_noise_pk_pk,
unsigned int *minimum_current_load,
unsigned int *maximum_current_load);
int ipmi_fru_multirecord_oem_record (ipmi_fru_ctx_t ctx,
const void *areabuf,
unsigned int areabuflen,
uint32_t *manufacturer_id,
void *oem_data,
unsigned int *oem_data_len);
/* FRU utility functions */
/* Typically pass in buffer and length from ipmi_fru_field_t
* after info area is parsed. strbuflen is an in/out value. input
* indicates length of buffer, output indicates bytes written to
* buffer.
*/
int ipmi_fru_type_length_field_to_string (ipmi_fru_ctx_t ctx,
const uint8_t *type_length_buf,
unsigned int type_length_buflen,
uint8_t language_code,
char *strbuf,
unsigned int *strbuflen);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_H */

View File

@ -0,0 +1,41 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_INTERFACE_H
#define IPMI_INTERFACE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
/* NO_LEGAL_CHECK - do no check if IPMI response payloads have
* sufficient data (i.e. completion code fields) to be legal. Useful
* to work around non-compliant motherboards. Only applicable to
* interface unassemble functions.
*/
#define IPMI_INTERFACE_FLAGS_DEFAULT 0x00000000
#define IPMI_INTERFACE_FLAGS_NO_LEGAL_CHECK 0x00000001
#ifdef __cplusplus
}
#endif
#endif /* IPMI_INTERFACE_H */

View File

@ -0,0 +1,73 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_IPMB_INTERFACE_H
#define IPMI_IPMB_INTERFACE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_IPMB_REQUESTER_SEQUENCE_NUMBER_MAX 0x3F /* 111111b */
/*
* fill* functions return 0 on success, -1 on error.
*
* object must be for the fill function's respective fiid
* template.
*
* assemble/unassemble functions must be passed fiid objects of the
* respective expected header/trailer templates.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_ipmb_msg_hdr_rq;
extern fiid_template_t tmpl_ipmb_msg_hdr_rs;
extern fiid_template_t tmpl_ipmb_msg_trlr;
extern fiid_template_t tmpl_ipmb_msg;
int fill_ipmb_msg_hdr (uint8_t rs_addr,
uint8_t net_fn,
uint8_t rs_lun,
uint8_t rq_addr,
uint8_t rq_lun,
uint8_t rq_seq,
fiid_obj_t obj_ipmb_msg_hdr);
/* returns length written to obj_ipmb_msg on success, -1 on error */
int assemble_ipmi_ipmb_msg (fiid_obj_t obj_ipmb_msg_hdr,
fiid_obj_t obj_cmd,
fiid_obj_t obj_ipmb_msg,
unsigned int flags);
/* returns 1 if fully unparsed, 0 if not, -1 on error */
int unassemble_ipmi_ipmb_msg (fiid_obj_t obj_ipmb_msg,
fiid_obj_t obj_ipmb_msg_hdr,
fiid_obj_t obj_cmd,
fiid_obj_t obj_ipmb_msg_trlr,
unsigned int flags);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_IPMB_INTERFACE_H */

View File

@ -0,0 +1,65 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_KCS_INTERFACE_H
#define IPMI_KCS_INTERFACE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
/*
* fill* functions return 0 on success, -1 on error.
*
* object must be for the fill function's respective fiid
* template.
*
* assemble/unassemble functions must be passed fiid objects of the
* respective expected header/trailer templates.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_hdr_kcs;
int fill_hdr_ipmi_kcs (uint8_t lun,
uint8_t fn,
fiid_obj_t obj_kcs_hdr);
/* returns length written to pkt on success, -1 on error */
int assemble_ipmi_kcs_pkt (fiid_obj_t obj_kcs_hdr,
fiid_obj_t obj_cmd,
void *pkt,
unsigned int pkt_len,
unsigned int flags);
/* returns 1 if fully unparsed, 0 if not, -1 on error */
int unassemble_ipmi_kcs_pkt (const void *pkt,
unsigned int pkt_len,
fiid_obj_t obj_kcs_hdr,
fiid_obj_t obj_cmd,
unsigned int flags);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_KCS_INTERFACE_H */

View File

@ -0,0 +1,105 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_LAN_INTERFACE_H
#define IPMI_LAN_INTERFACE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#include <sys/types.h>
#include <sys/socket.h>
#define IPMI_LAN_REQUESTER_SEQUENCE_NUMBER_MAX 0x3F /* 111111b */
/*
* fill* functions return 0 on success, -1 on error.
*
* object must be for the fill function's respective fiid
* template.
*
* assemble/unassemble functions must be passed fiid objects of the
* respective expected header/trailer templates.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_lan_session_hdr;
extern fiid_template_t tmpl_lan_msg_hdr_rq;
extern fiid_template_t tmpl_lan_msg_hdr_rs;
extern fiid_template_t tmpl_lan_msg_trlr;
int fill_lan_session_hdr (uint8_t authentication_type,
uint32_t session_sequence_number,
uint32_t session_id,
fiid_obj_t obj_lan_session_hdr);
int fill_lan_msg_hdr (uint8_t rs_addr,
uint8_t net_fn,
uint8_t rs_lun,
uint8_t rq_seq,
fiid_obj_t obj_lan_msg_hdr);
/* returns length written to pkt on success, -1 on error */
int assemble_ipmi_lan_pkt (fiid_obj_t obj_rmcp_hdr,
fiid_obj_t obj_lan_session_hdr,
fiid_obj_t obj_lan_msg_hdr,
fiid_obj_t obj_cmd,
const void *authentication_code_data,
unsigned int authentication_code_data_len,
void *pkt,
unsigned int pkt_len,
unsigned int flags);
/* returns 1 if fully unparsed, 0 if not, -1 on error */
int unassemble_ipmi_lan_pkt (const void *pkt,
unsigned int pkt_len,
fiid_obj_t obj_rmcp_hdr,
fiid_obj_t obj_lan_session_hdr,
fiid_obj_t obj_lan_msg_hdr,
fiid_obj_t obj_cmd,
fiid_obj_t obj_lan_msg_trlr,
unsigned int flags);
/* returns length sent on success, -1 on error */
/* A few extra error checks, but nearly identical to system sendto() */
ssize_t ipmi_lan_sendto (int s,
const void *buf,
size_t len,
int flags,
const struct sockaddr *to,
socklen_t tolen);
/* returns length received on success, 0 on orderly shutdown, -1 on error */
/* A few extra error checks, but nearly identical to system recvfrom() */
ssize_t ipmi_lan_recvfrom (int s,
void *buf,
size_t len,
int flags,
struct sockaddr *from,
socklen_t *fromlen);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_LAN_INTERFACE_H */

View File

@ -0,0 +1,342 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_RMCPPLUS_INTERFACE_H
#define IPMI_RMCPPLUS_INTERFACE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#include <sys/types.h>
#include <sys/socket.h>
/**************************
* IPMI 2.0 Payload Types *
**************************/
#define IPMI_PAYLOAD_TYPE_IPMI 0x00
#define IPMI_PAYLOAD_TYPE_SOL 0x01
#define IPMI_PAYLOAD_TYPE_OEM_EXPLICIT 0x02
#define IPMI_PAYLOAD_TYPE_RMCPPLUS_OPEN_SESSION_REQUEST 0x10
#define IPMI_PAYLOAD_TYPE_RMCPPLUS_OPEN_SESSION_RESPONSE 0x11
#define IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_1 0x12
#define IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_2 0x13
#define IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_3 0x14
#define IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_4 0x15
/* 20h - 27h - OEM */
/* all other reserved */
#define IPMI_PAYLOAD_TYPE_VALID(__payload_type) \
(((__payload_type) == IPMI_PAYLOAD_TYPE_IPMI \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_SOL \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_OEM_EXPLICIT \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RMCPPLUS_OPEN_SESSION_REQUEST \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RMCPPLUS_OPEN_SESSION_RESPONSE \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_1 \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_2 \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_3 \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_4) ? 1 : 0)
#define IPMI_PAYLOAD_TYPE_SESSION_SETUP(__payload_type) \
(((__payload_type) == IPMI_PAYLOAD_TYPE_RMCPPLUS_OPEN_SESSION_REQUEST \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RMCPPLUS_OPEN_SESSION_RESPONSE \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_1 \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_2 \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_3 \
|| (__payload_type) == IPMI_PAYLOAD_TYPE_RAKP_MESSAGE_4) ? 1 : 0)
/**************************
* IPMI 2.0 Payload Flags *
**************************/
#define IPMI_PAYLOAD_FLAG_UNENCRYPTED 0x0
#define IPMI_PAYLOAD_FLAG_ENCRYPTED 0x1
#define IPMI_PAYLOAD_FLAG_UNAUTHENTICATED 0x0
#define IPMI_PAYLOAD_FLAG_AUTHENTICATED 0x1
#define IPMI_PAYLOAD_ENCRYPTED_FLAG_VALID(__payload_flag) \
(((__payload_flag) == IPMI_PAYLOAD_FLAG_UNENCRYPTED \
|| (__payload_flag) == IPMI_PAYLOAD_FLAG_ENCRYPTED) ? 1 : 0)
#define IPMI_PAYLOAD_AUTHENTICATED_FLAG_VALID(__payload_flag) \
(((__payload_flag) == IPMI_PAYLOAD_FLAG_UNENCRYPTED \
|| (__payload_flag) == IPMI_PAYLOAD_FLAG_ENCRYPTED) ? 1 : 0)
/*********************************************
* IPMI 2.0 Authentication Algorithm Numbers *
*********************************************/
#define IPMI_AUTHENTICATION_ALGORITHM_RAKP_NONE 0x00
#define IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA1 0x01
#define IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 0x02
#define IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA256 0x03
/* C0h - FFh - OEM */
/* all other reserved */
#define IPMI_AUTHENTICATION_ALGORITHM_VALID(__algorithm) \
(((__algorithm) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_NONE \
|| (__algorithm) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA1 \
|| (__algorithm) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 \
|| (__algorithm) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA256) ? 1 : 0)
#define IPMI_AUTHENTICATION_ALGORITHM_SUPPORTED(__algorithm) \
(((__algorithm) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_NONE \
|| (__algorithm) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA1 \
|| (__algorithm) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 \
|| (__algorithm) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA256) ? 1 : 0)
/****************************************
* IPMI 2.0 Integrity Algorithm Numbers *
****************************************/
#define IPMI_INTEGRITY_ALGORITHM_NONE 0x00
#define IPMI_INTEGRITY_ALGORITHM_HMAC_SHA1_96 0x01
#define IPMI_INTEGRITY_ALGORITHM_HMAC_MD5_128 0x02
#define IPMI_INTEGRITY_ALGORITHM_MD5_128 0x03
#define IPMI_INTEGRITY_ALGORITHM_HMAC_SHA256_128 0x04
/* C0h - FFh - OEM */
/* all other reserved */
#define IPMI_INTEGRITY_ALGORITHM_VALID(__algorithm) \
(((__algorithm) == IPMI_INTEGRITY_ALGORITHM_NONE \
|| (__algorithm) == IPMI_INTEGRITY_ALGORITHM_HMAC_SHA1_96 \
|| (__algorithm) == IPMI_INTEGRITY_ALGORITHM_HMAC_MD5_128 \
|| (__algorithm) == IPMI_INTEGRITY_ALGORITHM_MD5_128 \
|| (__algorithm) == IPMI_INTEGRITY_ALGORITHM_HMAC_SHA256_128) ? 1 : 0)
#define IPMI_INTEGRITY_ALGORITHM_SUPPORTED(__algorithm) \
(((__algorithm) == IPMI_INTEGRITY_ALGORITHM_NONE \
|| (__algorithm) == IPMI_INTEGRITY_ALGORITHM_HMAC_SHA1_96 \
|| (__algorithm) == IPMI_INTEGRITY_ALGORITHM_HMAC_MD5_128 \
|| (__algorithm) == IPMI_INTEGRITY_ALGORITHM_MD5_128 \
|| (__algorithm) == IPMI_INTEGRITY_ALGORITHM_HMAC_SHA256_128) ? 1 : 0)
/**********************************************
* IPMI 2.0 Confidentiality Algorithm Numbers *
**********************************************/
#define IPMI_CONFIDENTIALITY_ALGORITHM_NONE 0x00
#define IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128 0x01
#define IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_128 0x02
#define IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_40 0x03
/* 30h - 3Fh - OEM */
/* all other reserved */
#define IPMI_CONFIDENTIALITY_ALGORITHM_VALID(__algorithm) \
(((__algorithm) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \
|| (__algorithm) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128 \
|| (__algorithm) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_128 \
|| (__algorithm) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_40) ? 1 : 0)
#define IPMI_CONFIDENTIALITY_ALGORITHM_SUPPORTED(__algorithm) \
(((__algorithm) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \
|| (__algorithm) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128) ? 1 : 0)
/***************************************
* IPMI 2.0 Misc Flags and Definitions *
***************************************/
#define IPMI_AUTHENTICATION_PAYLOAD_TYPE 0x00
#define IPMI_AUTHENTICATION_PAYLOAD_LENGTH 0x08
#define IPMI_INTEGRITY_PAYLOAD_TYPE 0x01
#define IPMI_INTEGRITY_PAYLOAD_LENGTH 0x08
#define IPMI_CONFIDENTIALITY_PAYLOAD_TYPE 0x02
#define IPMI_CONFIDENTIALITY_PAYLOAD_LENGTH 0x08
#define IPMI_USER_NAME_PRIVILEGE_LOOKUP 0x0
#define IPMI_NAME_ONLY_LOOKUP 0x1
#define IPMI_USER_NAME_LOOKUP_VALID(__username_lookup_flag) \
(((__username_lookup_flag) == IPMI_USER_NAME_PRIVILEGE_LOOKUP \
|| (__username_lookup_flag) == IPMI_NAME_ONLY_LOOKUP) ? 1 : 0)
#define IPMI_REMOTE_CONSOLE_RANDOM_NUMBER_LENGTH 16
#define IPMI_MANAGED_SYSTEM_RANDOM_NUMBER_LENGTH 16
#define IPMI_MANAGED_SYSTEM_GUID_LENGTH 16
#define IPMI_NEXT_HEADER 0x07
#define IPMI_INTEGRITY_PAD_MULTIPLE 4
#define IPMI_INTEGRITY_PAD_DATA 0xFF
#define IPMI_MAX_PAYLOAD_LENGTH 65536
/* achu: b/c ipmi_msg_len is 2 bytes */
#define IPMI_HMAC_SHA1_DIGEST_LENGTH 20
#define IPMI_HMAC_MD5_DIGEST_LENGTH 16
#define IPMI_MD5_DIGEST_LENGTH 16
#define IPMI_HMAC_SHA1_96_DIGEST_LENGTH 12
#define IPMI_HMAC_SHA256_DIGEST_LENGTH 32
#define IPMI_HMAC_SHA1_96_AUTHENTICATION_CODE_LENGTH 12
#define IPMI_HMAC_MD5_128_AUTHENTICATION_CODE_LENGTH 16
#define IPMI_MD5_128_AUTHENTICATION_CODE_LENGTH 16
#define IPMI_HMAC_SHA256_128_AUTHENTICATION_CODE_LENGTH 16
/* Refer to table 22-19 */
/* XXX - Errata 4 defines SHA256 but not cipher suite IDs */
/* achu: Intel support says Cipher Suite 15-19 maps to 1-5 using
* SHA256 instead of SHA1 and SHA256-128 instead of SHA1-96.
*/
/* Cipher Suite 17 confirmed via DCMI 1.1 specification */
#define IPMI_CIPHER_SUITE_ID_MIN 0
#define IPMI_CIPHER_SUITE_ID_MAX 19
/*
* fill* functions return 0 on success, -1 on error.
*
* object must be for the fill function's respective fiid
* template.
*
* assemble/unassemble functions must be passed fiid objects of the
* respective expected header/trailer templates.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_rmcpplus_session_hdr;
extern fiid_template_t tmpl_rmcpplus_session_trlr;
extern fiid_template_t tmpl_rmcpplus_payload;
extern fiid_template_t tmpl_rmcpplus_open_session_request;
extern fiid_template_t tmpl_rmcpplus_open_session_response;
extern fiid_template_t tmpl_rmcpplus_rakp_message_1;
extern fiid_template_t tmpl_rmcpplus_rakp_message_2;
extern fiid_template_t tmpl_rmcpplus_rakp_message_3;
extern fiid_template_t tmpl_rmcpplus_rakp_message_4;
/* ipmi_rmcpplus_init
*
* Must be called first to initialize crypt libs. In threaded
* programs, must be called before threads are created.
*
* If errno returned == EPERM, underlying crypt library incompatible.
*
* Returns 0 on success, -1 on error.
*/
int ipmi_rmcpplus_init (void);
int fill_rmcpplus_session_hdr (uint8_t payload_type,
uint8_t payload_authenticated,
uint8_t payload_encrypted,
uint32_t oem_iana,
uint16_t oem_payload_id,
uint32_t session_id,
uint32_t session_sequence_number,
fiid_obj_t obj_rmcpplus_session_hdr);
int fill_rmcpplus_session_trlr (fiid_obj_t obj_rmcpplus_session_trlr);
int fill_rmcpplus_payload (const void *confidentiality_header,
unsigned int confidentiality_header_len,
const void *payload_data,
unsigned int payload_data_len,
const void *confidentiality_trailer,
unsigned int confidentiality_trailer_len,
fiid_obj_t obj_cmd_rq);
int fill_rmcpplus_open_session (uint8_t message_tag,
uint8_t requested_maximum_privilege_level,
uint32_t remote_console_session_id,
uint8_t authentication_algorithm,
uint8_t integrity_algorithm,
uint8_t confidentiality_algorithm,
fiid_obj_t obj_cmd_rq);
int fill_rmcpplus_rakp_message_1 (uint8_t message_tag,
uint32_t managed_system_session_id,
const void *remote_console_random_number,
unsigned int remote_console_random_number_len,
uint8_t requested_maximum_privilege_level,
uint8_t name_only_lookup_flag,
const char *username,
unsigned int username_len,
fiid_obj_t obj_cmd_rq);
int fill_rmcpplus_rakp_message_3 (uint8_t message_tag,
uint8_t rmcpplus_status_code,
uint32_t managed_system_session_id,
const void *key_exchange_authentication_code,
unsigned int key_exchange_authentication_code_len,
fiid_obj_t obj_cmd_rq);
/* returns length written to pkt on success, -1 on error */
int assemble_ipmi_rmcpplus_pkt (uint8_t authentication_algorithm,
uint8_t integrity_algorithm,
uint8_t confidentiality_algorithm,
const void *integrity_key,
unsigned int integrity_key_len,
const void *confidentiality_key,
unsigned int confidentiality_key_len,
const void *authentication_code_data,
unsigned int authentication_code_data_len,
fiid_obj_t obj_rmcp_hdr,
fiid_obj_t obj_rmcpplus_session_hdr,
fiid_obj_t obj_lan_msg_hdr,
fiid_obj_t obj_cmd,
fiid_obj_t obj_rmcpplus_session_trlr,
void *pkt,
unsigned int pkt_len,
unsigned int flags);
/* returns 1 if fully unparsed, 0 if not, -1 on error */
int unassemble_ipmi_rmcpplus_pkt (uint8_t authentication_algorithm,
uint8_t integrity_algorithm,
uint8_t confidentiality_algorithm,
const void *integrity_key,
unsigned int integrity_key_len,
const void *confidentiality_key,
unsigned int confidentiality_key_len,
const void *pkt,
unsigned int pkt_len,
fiid_obj_t obj_rmcp_hdr,
fiid_obj_t obj_rmcpplus_session_hdr,
fiid_obj_t obj_rmcpplus_payload,
fiid_obj_t obj_lan_msg_hdr,
fiid_obj_t obj_cmd,
fiid_obj_t obj_lan_msg_trlr,
fiid_obj_t obj_rmcpplus_session_trlr,
unsigned int flags);
/* returns length sent on success, -1 on error */
/* A few extra error checks, but nearly identical to system sendto() */
ssize_t ipmi_rmcpplus_sendto (int s,
const void *buf,
size_t len,
int flags,
const struct sockaddr *to,
socklen_t tolen);
/* returns length received on success, 0 on orderly shutdown, -1 on error */
/* A few extra error checks, but nearly identical to system recvfrom() */
ssize_t ipmi_rmcpplus_recvfrom (int s,
void *buf,
size_t len,
int flags,
struct sockaddr *from,
socklen_t *fromlen);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_RMCPPLUS_INTERFACE_H */

View File

@ -0,0 +1,97 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef RMCP_INTERFACE_H
#define RMCP_INTERFACE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define RMCP_VERSION_1_0 0x06 /* RMCP Version 1.0 */
#define RMCP_AUX_BUS_SHUNT 0x26F /* 623 */
#define RMCP_PRIMARY_RMCP_PORT RMCP_AUX_BUS_SHUNT
#define RMCP_SECURE_AUX_BUS 0x298 /* 664 */
#define RMCP_SECONDARY_RMCP_PORT RMCP_SECURE_AUX_BUS
#define RMCP_HDR_SEQ_NUM_NO_RMCP_ACK 0xFF
#define RMCP_HDR_MESSAGE_CLASS_BIT_RMCP_NORMAL 0x0
#define RMCP_HDR_MESSAGE_CLASS_BIT_RMCP_ACK 0x1
#define RMCP_HDR_MESSAGE_CLASS_ASF 0x06
#define RMCP_HDR_MESSAGE_CLASS_IPMI 0x07
#define RMCP_HDR_MESSAGE_CLASS_OEM 0x08
#define RMCP_HDR_MESSAGE_CLASS_VALID(__message_class) \
(((__message_class) == RMCP_HDR_MESSAGE_CLASS_ASF \
|| (__message_class) == RMCP_HDR_MESSAGE_CLASS_IPMI \
|| (__message_class) == RMCP_HDR_MESSAGE_CLASS_OEM) ? 1 : 0)
#define RMCP_ASF_IANA_ENTERPRISE_NUM 0x11BE /* 4542 */
#define RMCP_ASF_MESSAGE_TYPE_PRESENCE_PING 0x80
#define RMCP_ASF_MESSAGE_TYPE_PRESENCE_PONG 0x40
#define RMCP_ASF_MESSAGE_TAG_MAX 0xFE
/*
* fill* functions return 0 on success, -1 on error.
*
* object must be for the fill function's respective fiid
* template.
*
* assemble/unassemble functions must be passed fiid objects of the
* respective expected header/trailer templates.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_rmcp_hdr;
int fill_rmcp_hdr (uint8_t message_class, fiid_obj_t obj_rmcp_hdr);
int fill_rmcp_hdr_ipmi (fiid_obj_t obj_rmcp_hdr);
int fill_rmcp_hdr_asf (fiid_obj_t obj_rmcp_hdr);
/* returns length written to pkt on success, -1 on error */
int assemble_rmcp_pkt (fiid_obj_t obj_rmcp_hdr,
fiid_obj_t obj_cmd,
void *pkt,
unsigned int pkt_len,
unsigned int flags);
/* returns 1 if fully unparsed, 0 if not, -1 on error */
int unassemble_rmcp_pkt (const void *pkt,
unsigned int pkt_len,
fiid_obj_t obj_rmcp_hdr,
fiid_obj_t obj_cmd,
unsigned int flags);
#ifdef __cplusplus
}
#endif
#endif /* RMCP_INTERFACE_H */

View File

@ -0,0 +1,102 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_INTERPRET_H
#define IPMI_INTERPRET_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#define IPMI_INTERPRET_ERR_SUCCESS 0
#define IPMI_INTERPRET_ERR_CONTEXT_NULL 1
#define IPMI_INTERPRET_ERR_CONTEXT_INVALID 2
#define IPMI_INTERPRET_ERR_PARAMETERS 3
#define IPMI_INTERPRET_ERR_OUT_OF_MEMORY 4
#define IPMI_INTERPRET_ERR_PERMISSION 5
#define IPMI_INTERPRET_ERR_SEL_CONFIG_FILE_DOES_NOT_EXIST 6
#define IPMI_INTERPRET_ERR_SEL_CONFIG_FILE_PARSE 7
#define IPMI_INTERPRET_ERR_SENSOR_CONFIG_FILE_DOES_NOT_EXIST 8
#define IPMI_INTERPRET_ERR_SENSOR_CONFIG_FILE_PARSE 9
#define IPMI_INTERPRET_ERR_INVALID_SEL_RECORD 10
#define IPMI_INTERPRET_ERR_SYSTEM_ERROR 11
#define IPMI_INTERPRET_ERR_OVERFLOW 12
#define IPMI_INTERPRET_ERR_INTERNAL_ERROR 13
#define IPMI_INTERPRET_ERR_ERRNUMRANGE 14
#define IPMI_INTERPRET_FLAGS_DEFAULT 0x0000
#define IPMI_INTERPRET_FLAGS_INTERPRET_OEM_DATA 0x0001
#define IPMI_INTERPRET_FLAGS_SEL_ASSUME_SYSTEM_EVENT_RECORDS 0x0002
#define IPMI_INTERPRET_FLAGS_IGNORE_UNRECOGNIZED_EVENTS 0x0004
#define IPMI_INTERPRET_STATE_NOMINAL 0x00
#define IPMI_INTERPRET_STATE_WARNING 0x01
#define IPMI_INTERPRET_STATE_CRITICAL 0x02
#define IPMI_INTERPRET_STATE_UNKNOWN 0x03
typedef struct ipmi_interpret_ctx *ipmi_interpret_ctx_t;
/* Interpret Context Functions */
ipmi_interpret_ctx_t ipmi_interpret_ctx_create (void);
void ipmi_interpret_ctx_destroy (ipmi_interpret_ctx_t ctx);
int ipmi_interpret_ctx_errnum (ipmi_interpret_ctx_t ctx);
char * ipmi_interpret_ctx_strerror (int errnum);
char * ipmi_interpret_ctx_errormsg (ipmi_interpret_ctx_t ctx);
/* interpret flag functions */
int ipmi_interpret_ctx_get_flags (ipmi_interpret_ctx_t ctx, unsigned int *flags);
int ipmi_interpret_ctx_set_flags (ipmi_interpret_ctx_t ctx, unsigned int flags);
/* for use w/ IPMI_INTERPRET_FLAGS_INTERPRET_OEM_DATA */
int ipmi_interpret_ctx_get_manufacturer_id (ipmi_interpret_ctx_t ctx, uint32_t *manufacturer_id);
int ipmi_interpret_ctx_set_manufacturer_id (ipmi_interpret_ctx_t ctx, uint32_t manufacturer_id);
/* for use w/ IPMI_INTERPRET_FLAGS_INTERPRET_OEM_DATA */
int ipmi_interpret_ctx_get_product_id (ipmi_interpret_ctx_t ctx, uint16_t *product_id);
int ipmi_interpret_ctx_set_product_id (ipmi_interpret_ctx_t ctx, uint16_t product_id);
/* interpret file config loading */
/* specify NULL for default config file */
/* if not called, library default will always be used */
int ipmi_interpret_load_sel_config (ipmi_interpret_ctx_t ctx,
const char *sel_config_file);
/* specify NULL for default config file */
/* if not called, library default will always be used */
int ipmi_interpret_load_sensor_config (ipmi_interpret_ctx_t ctx,
const char *sensor_config_file);
/* interpret core functions */
int ipmi_interpret_sel (ipmi_interpret_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
unsigned int *sel_state);
int ipmi_interpret_sensor (ipmi_interpret_ctx_t ctx,
uint8_t event_reading_type_code,
uint8_t sensor_type,
uint16_t sensor_event_bitmask,
unsigned int *sensor_state);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_INTERPRET_H */

View File

@ -0,0 +1,134 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_LOCATE_H
#define IPMI_LOCATE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#define IPMI_LOCATE_PATH_MAX 1024
#define IPMI_ADDRESS_SPACE_ID_SYSTEM_MEMORY 0x00
#define IPMI_ADDRESS_SPACE_ID_SYSTEM_IO 0x01
#define IPMI_ADDRESS_SPACE_ID_SMBUS 0x04
#define IPMI_LOCATE_ERR_SUCCESS 0
#define IPMI_LOCATE_ERR_NULL 1
#define IPMI_LOCATE_ERR_INVALID 2
#define IPMI_LOCATE_ERR_PARAMETERS 3
#define IPMI_LOCATE_ERR_PERMISSION 4
#define IPMI_LOCATE_ERR_OUT_OF_MEMORY 5
#define IPMI_LOCATE_ERR_SYSTEM_ERROR 6
#define IPMI_LOCATE_ERR_INTERNAL_ERROR 7
#define IPMI_LOCATE_ERR_ERRNUMRANGE 8
typedef struct ipmi_locate_ctx *ipmi_locate_ctx_t;
enum ipmi_locate_driver_type
{
IPMI_LOCATE_DRIVER_NONE = 0,
IPMI_LOCATE_DRIVER_DEFAULTS = 1,
IPMI_LOCATE_DRIVER_SMBIOS = 2,
IPMI_LOCATE_DRIVER_ACPI = 3,
IPMI_LOCATE_DRIVER_PCI = 4,
IPMI_LOCATE_DRIVER_DMIDECODE = 5
};
typedef enum ipmi_locate_driver_type ipmi_locate_driver_type_t;
#define IPMI_LOCATE_DRIVER_VALID(__val) \
(((__val) == IPMI_LOCATE_DRIVER_NONE \
|| (__val) == IPMI_LOCATE_DRIVER_DEFAULTS \
|| (__val) == IPMI_LOCATE_DRIVER_SMBIOS \
|| (__val) == IPMI_LOCATE_DRIVER_ACPI \
|| (__val) == IPMI_LOCATE_DRIVER_PCI \
|| (__val) == IPMI_LOCATE_DRIVER_DMIDECODE) ? 1 : 0)
enum ipmi_interface_type
{
IPMI_INTERFACE_RESERVED = 0,
IPMI_INTERFACE_KCS = 1,
IPMI_INTERFACE_SMIC = 2,
IPMI_INTERFACE_BT = 3,
IPMI_INTERFACE_SSIF = 4,
};
typedef enum ipmi_interface_type ipmi_interface_type_t;
#define IPMI_INTERFACE_TYPE_VALID(__val) \
(((__val) == IPMI_INTERFACE_KCS \
|| (__val) == IPMI_INTERFACE_SMIC \
|| (__val) == IPMI_INTERFACE_BT \
|| (__val) == IPMI_INTERFACE_SSIF) ? 1 : 0)
struct ipmi_locate_info
{
uint8_t ipmi_version_major;
uint8_t ipmi_version_minor;
ipmi_locate_driver_type_t locate_driver_type;
ipmi_interface_type_t interface_type; /* KCS, SMIC, BT, SSIF */
char driver_device[IPMI_LOCATE_PATH_MAX];
uint8_t address_space_id; /* Memory mapped, IO mapped, SMBus*/
uint64_t driver_address;
uint8_t register_spacing; /* Register spacing in bytes */
};
ipmi_locate_ctx_t ipmi_locate_ctx_create (void);
void ipmi_locate_ctx_destroy (ipmi_locate_ctx_t ctx);
int ipmi_locate_ctx_errnum (ipmi_locate_ctx_t ctx);
char *ipmi_locate_ctx_strerror (int errnum);
char *ipmi_locate_ctx_errormsg (ipmi_locate_ctx_t ctx);
int ipmi_locate_get_device_info (ipmi_locate_ctx_t ctx,
ipmi_interface_type_t type,
struct ipmi_locate_info *info);
/* Identical to ipmi_locate_get_device_info() but will NOT return
* defaults if no device info is found.
*/
int ipmi_locate_discover_device_info (ipmi_locate_ctx_t ctx,
ipmi_interface_type_t type,
struct ipmi_locate_info *info);
int ipmi_locate_smbios_get_device_info (ipmi_locate_ctx_t ctx,
ipmi_interface_type_t type,
struct ipmi_locate_info *info);
int ipmi_locate_pci_get_device_info (ipmi_locate_ctx_t ctx,
ipmi_interface_type_t type,
struct ipmi_locate_info *info);
int ipmi_locate_acpi_spmi_get_device_info (ipmi_locate_ctx_t ctx,
ipmi_interface_type_t interface_type,
struct ipmi_locate_info *info);
int ipmi_locate_defaults_get_device_info (ipmi_locate_ctx_t ctx,
ipmi_interface_type_t type,
struct ipmi_locate_info *info);
int ipmi_locate_dmidecode_get_device_info (ipmi_locate_ctx_t ctx,
ipmi_interface_type_t type,
struct ipmi_locate_info *info);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_LOCATE_H */

View File

@ -0,0 +1,135 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SOL_PAYLOAD_H
#define IPMI_SOL_PAYLOAD_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
#define IPMI_SOL_PACKET_SEQUENCE_NUMBER_MAX 0xF
#define IPMI_SOL_FLUSH_OUTBOUND 0x1
#define IPMI_SOL_DO_NOT_FLUSH_OUTBOUND 0x0
#define IPMI_SOL_FLUSH_OUTBOUND_VALID(__val) \
(((__val) == IPMI_SOL_FLUSH_OUTBOUND \
|| (__val) == IPMI_SOL_DO_NOT_FLUSH_OUTBOUND) ? 1 : 0)
#define IPMI_SOL_FLUSH_INBOUND 0x1
#define IPMI_SOL_DO_NOT_FLUSH_INBOUND 0x0
#define IPMI_SOL_FLUSH_INBOUND_VALID(__val) \
(((__val) == IPMI_SOL_FLUSH_INBOUND \
|| (__val) == IPMI_SOL_DO_NOT_FLUSH_INBOUND) ? 1 : 0)
#define IPMI_SOL_ASSERT_DCD_DSR 0x0
#define IPMI_SOL_DEASSERT_DCD_DSR 0x1
#define IPMI_SOL_ASSERT_DCD_DSR_VALID(__val) \
(((__val) == IPMI_SOL_ASSERT_DCD_DSR \
|| (__val) == IPMI_SOL_DEASSERT_DCD_DSR) ? 1 : 0)
#define IPMI_SOL_ASSERT_CTS 0x0
#define IPMI_SOL_DEASSERT_CTS 0x1
#define IPMI_SOL_ASSERT_CTS_VALID(__val) \
(((__val) == IPMI_SOL_ASSERT_CTS \
|| (__val) == IPMI_SOL_DEASSERT_CTS) ? 1 : 0)
#define IPMI_SOL_GENERATE_BREAK 0x1
#define IPMI_SOL_DO_NOT_GENERATE_BREAK 0x0
#define IPMI_SOL_GENERATE_BREAK_VALID(__val) \
(((__val) == IPMI_SOL_GENERATE_BREAK \
|| (__val) == IPMI_SOL_DO_NOT_GENERATE_BREAK) ? 1 : 0)
#define IPMI_SOL_ASSERT_RI 0x0
#define IPMI_SOL_DEASSERT_RI 0x1
#define IPMI_SOL_ASSERT_RI_VALID(__val) \
(((__val) == IPMI_SOL_ASSERT_RI \
|| (__val) == IPMI_SOL_DEASSERT_RI) ? 1 : 0)
#define IPMI_SOL_ACK 0x0
#define IPMI_SOL_NACK 0x1
#define IPMI_SOL_ACK_VALID(__val) \
(((__val) == IPMI_SOL_ACK \
|| (__val) == IPMI_SOL_NACK) ? 1 : 0)
#define IPMI_SOL_NACK_VALID(__val) \
(((__val) == IPMI_SOL_ACK \
|| (__val) == IPMI_SOL_NACK) ? 1 : 0)
#define IPMI_SOL_BREAK_CONDITION_DETECTED 0x1
#define IPMI_SOL_NO_BREAK_DETECTED 0x0
#define IPMI_SOL_TRANSMIT_OVERRUN_CHARACTERS_DROPPED 0x1
#define IPMI_SOL_TRANSMIT_OVERRUN_NO_CHARACTERS_DROPPED 0x0
#define IPMI_SOL_SOL_DEACTIVATING 0x1
#define IPMI_SOL_SOL_ACTIVE 0x0
#define IPMI_SOL_CHARACTER_TRANSFER_UNAVAILABLE 0x1
#define IPMI_SOL_CHARACTER_TRANSFER_AVAILABLE 0x0
/*
* fill* functions return 0 on success, -1 on error.
*
* obj_sol_payload must be for the fill function's respective fiid
* template request.
*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_sol_payload_data;
extern fiid_template_t tmpl_sol_payload_data_remote_console_to_bmc;
extern fiid_template_t tmpl_sol_payload_data_bmc_to_remote_console;
int fill_sol_payload_data (uint8_t packet_sequence_number,
uint8_t packet_ack_nack_sequence_number,
uint8_t accepted_character_count,
uint8_t operation_status,
const void *character_data,
unsigned int character_data_len,
fiid_obj_t obj_sol_payload);
int fill_sol_payload_data_remote_console_to_bmc (uint8_t packet_sequence_number,
uint8_t packet_ack_nack_sequence_number,
uint8_t accepted_character_count,
uint8_t flush_outbound,
uint8_t flush_inbound,
uint8_t drop_dcd_dsr,
uint8_t cts_pause,
uint8_t generate_break,
uint8_t ring_wor,
uint8_t nack,
const void *character_data,
unsigned int character_data_len,
fiid_obj_t obj_sol_payload);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SOL_PAYLOAD_H */

View File

@ -0,0 +1,63 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_CIPHER_SUITE_RECORD_FORMAT_H
#define IPMI_CIPHER_SUITE_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/fiid/fiid.h>
/* Notes:
Refer to IPMI 2.0 spec Table 22-18.
*/
#define IPMI_CIPHER_SUITE_TAG_BITS_AUTHENTICATION_ALGORITHM 0x0
#define IPMI_CIPHER_SUITE_TAG_BITS_INTEGRITY_ALGORITHM 0x1
#define IPMI_CIPHER_SUITE_TAG_BITS_CONFIDENTIALITY_ALGORITHM 0x2
#define IPMI_CIPHER_SUITE_TAG_BITS_RECORD 0x3
#define IPMI_CIPHER_SUITE_RECORD_FORMAT_STANDARD 0x00
#define IPMI_CIPHER_SUITE_RECORD_FORMAT_OEM 0x01
#define IPMI_CIPHER_SUITE_RECORD_FORMAT_VALID(__val) \
(((__val) == IPMI_CIPHER_SUITE_RECORD_FORMAT_STANDARD \
|| (__val) == IPMI_CIPHER_SUITE_RECORD_FORMAT_OEM) ? 1 : 0)
#define IPMI_CIPHER_SUITE_TAG_BITS_VALID(__val) \
(((__val) == IPMI_CIPHER_SUITE_TAG_BITS_AUTHENTICATION_ALGORITHM \
|| (__val) == IPMI_CIPHER_SUITE_TAG_BITS_INTEGRITY_ALGORITHM \
|| (__val) == IPMI_CIPHER_SUITE_TAG_BITS_CONFIDENTIALITY_ALGORITHM \
|| (__val) == IPMI_CIPHER_SUITE_TAG_BITS_RECORD) ? 1 : 0)
/*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_cipher_suite_record_header;
extern fiid_template_t tmpl_cipher_suite_record;
extern fiid_template_t tmpl_oem_cipher_suite_record;
#ifdef __cplusplus
}
#endif
#endif /* IPMI_CIPHER_SUITE_RECORD_FORMAT_H */

View File

@ -0,0 +1,480 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_FRU_DIMMSPD_RECORD_FORMAT_H
#define IPMI_FRU_DIMMSPD_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
/*
* see freeipmi/templates/ for template definitions
*/
/* From "Annex K: Serial Presence Detect (SPD) for DDR3 SDRAM Modules"
* and
* "Annex L: Serial Presence Detect (SPD) for DDR4 SDRAM Modules"
*
* Released by JEDEC
*/
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_RESERVED 0x00
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_STANDARD_FPM_DRAM 0x01 /* Fast Page Mode */
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_EDO 0x02
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_PIPELINED_NIBBLE 0x03
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_SDRAM 0x04
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_ROM 0x05
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_DDR_SGRAM 0x06
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_DDR_SDRAM 0x07
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_DDR2_SDRAM 0x08
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_DDR2_SDRAM_FB_DIMM 0x09
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_DDR2_SDRAM_FB_DIMM_PROBE 0x0A
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_DDR3_SDRAM 0x0B
#define IPMI_FRU_DIMMSPD_DRAM_DEVICE_TYPE_DDR4_SDRAM 0x0C
/* From "Annex K: Serial Presence Detect (SPD) for DDR3 SDRAM Modules"
*
* Released by JEDEC
*/
#define IPMI_FRU_DIMMSPD_SPD_BYTES_USED_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_SPD_BYTES_USED_128 0x1
#define IPMI_FRU_DIMMSPD_SPD_BYTES_USED_176 0x2
#define IPMI_FRU_DIMMSPD_SPD_BYTES_USED_256 0x3
#define IPMI_FRU_DIMMSPD_SPD_BYTES_TOTAL_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_SPD_BYTES_TOTAL_256 0x1
#define IPMI_FRU_DIMMSPD_CRC_COVERAGE_0_TO_125 0x0
#define IPMI_FRU_DIMMSPD_CRC_COVERAGE_0_TO_116 0x1
/* RDIMM - Registered Dual In-Line Memory Module
* LRDIMM - Load Reduction DIMM
* UDIMM - Unbuffered DIMM
* SO-DIMM - Unbuffered 64-bit Small Outline DIMM
* Micro-DIMM - Micro DIMM
* Mini-RDIMM - Mini RDIMM
* Mini-UDIMM - Mini UDIMM
* Mini-CDIMM - Clocked 72-bit Mini DIMM
* 72b-SO-UDIMM - Unbuffered 72-bit SO-DIMM
* 72b-SO-RDIMM - Registered 72-bit SO-DIMM
* 72b-SO-CDIMM - Clocked 72-bit SO-DIMM
* 16b-SO-DIMM - Unbuffered 16-bit SO-DIMM
* 32b-SO-DIMM - Unbuffered 32-bit SO-DIMM
*/
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_RDIMM 0x1
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_UDIMM 0x2
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_SO_DIMM 0x3
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_MICRO_DIMM 0x4
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_MINI_RDIMM 0x5
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_MINI_UDIMM 0x6
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_MINI_CDIMM 0x7
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_72B_SO_UDIMM 0x8
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_72B_SO_RDIMM 0x9
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_72B_SO_CDIMM 0xA
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_LRDIMM 0xB
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_16B_SO_DIMM 0xC
#define IPMI_FRU_DIMMSPD_DRAM_MODULE_TYPE_32B_SO_DIMM 0xD
/* In megabits / gigabits */
#define IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_256_MB 0x0
#define IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_512_MB 0x1
#define IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_1_GB 0x2
#define IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_2_GB 0x3
#define IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_4_GB 0x4
#define IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_8_GB 0x5
#define IPMI_FRU_DIMMSPD_TOTAL_SDRAM_CAPACITY_16_GB 0x6
#define IPMI_FRU_DIMMSPD_BANK_ADDRESS_BITS_3 0x0 /* 8 banks */
#define IPMI_FRU_DIMMSPD_BANK_ADDRESS_BITS_4 0x1 /* 16 banks */
#define IPMI_FRU_DIMMSPD_BANK_ADDRESS_BITS_5 0x2 /* 32 banks */
#define IPMI_FRU_DIMMSPD_BANK_ADDRESS_BITS_6 0x3 /* 64 banks */
#define IPMI_FRU_DIMMSPD_COLUMN_ADDRESS_BITS_9 0x0
#define IPMI_FRU_DIMMSPD_COLUMN_ADDRESS_BITS_10 0x1
#define IPMI_FRU_DIMMSPD_COLUMN_ADDRESS_BITS_11 0x2
#define IPMI_FRU_DIMMSPD_COLUMN_ADDRESS_BITS_12 0x3
#define IPMI_FRU_DIMMSPD_ROW_ADDRESS_BITS_12 0x0
#define IPMI_FRU_DIMMSPD_ROW_ADDRESS_BITS_13 0x1
#define IPMI_FRU_DIMMSPD_ROW_ADDRESS_BITS_14 0x2
#define IPMI_FRU_DIMMSPD_ROW_ADDRESS_BITS_15 0x3
#define IPMI_FRU_DIMMSPD_ROW_ADDRESS_BITS_16 0x4
/* Yes, flags are opposite of normal logic for 1.5V */
#define IPMI_FRU_DIMMSPD_VOLTAGE_1_5_OPERABLE 0x0
#define IPMI_FRU_DIMMSPD_VOLTAGE_1_5_NOT_OPERABLE 0x1
#define IPMI_FRU_DIMMSPD_VOLTAGE_1_35_OPERABLE 0x1
#define IPMI_FRU_DIMMSPD_VOLTAGE_1_35_NOT_OPERABLE 0x0
#define IPMI_FRU_DIMMSPD_VOLTAGE_1_25_OPERABLE 0x1
#define IPMI_FRU_DIMMSPD_VOLTAGE_1_25_NOT_OPERABLE 0x0
#define IPMI_FRU_DIMMSPD_DEVICE_WIDTH_4_BITS 0x0
#define IPMI_FRU_DIMMSPD_DEVICE_WIDTH_8_BITS 0x1
#define IPMI_FRU_DIMMSPD_DEVICE_WIDTH_16_BITS 0x2
#define IPMI_FRU_DIMMSPD_DEVICE_WIDTH_32_BITS 0x3
#define IPMI_FRU_DIMMSPD_NUMBER_OF_RANKS_1 0x0
#define IPMI_FRU_DIMMSPD_NUMBER_OF_RANKS_2 0x1
#define IPMI_FRU_DIMMSPD_NUMBER_OF_RANKS_3 0x2
#define IPMI_FRU_DIMMSPD_NUMBER_OF_RANKS_4 0x3
#define IPMI_FRU_DIMMSPD_PRIMARY_BUS_WIDTH_8_BITS 0x0
#define IPMI_FRU_DIMMSPD_PRIMARY_BUS_WIDTH_16_BITS 0x1
#define IPMI_FRU_DIMMSPD_PRIMARY_BUS_WIDTH_32_BITS 0x2
#define IPMI_FRU_DIMMSPD_PRIMARY_BUS_WIDTH_64_BITS 0x3
#define IPMI_FRU_DIMMSPD_BUS_WIDTH_EXTENSION_0_BITS 0x0
#define IPMI_FRU_DIMMSPD_BUS_WIDTH_EXTENSION_8_BITS 0x1
#define IPMI_FRU_DIMMSPD_CAS_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_CAS_SUPPORTED 0x1
#define IPMI_FRU_DIMMSPD_RZQ_6_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_RZQ_6_SUPPORTED 0x1
#define IPMI_FRU_DIMMSPD_RZQ_7_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_RZQ_7_SUPPORTED 0x1
#define IPMI_FRU_DIMMSPD_DLL_OFF_MODE_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_DLL_OFF_MODE_SUPPORTED 0x1
#define IPMI_FRU_DIMMSPD_EXTENDED_TEMPERATURE_RANGE_NORMAL_RANGE 0x0 /* 0-85 C */
#define IPMI_FRU_DIMMSPD_EXTENDED_TEMPERATURE_RANGE_NORMAL_AND_EXTENDED_RANGE 0x1 /* 0-95 C */
#define IPMI_FRU_DIMMSPD_EXTENDED_TEMPERATURE_RANGE_REFRESH_RATE_2X 0x0
#define IPMI_FRU_DIMMSPD_EXTENDED_TEMPERATURE_RANGE_REFRESH_RATE_1X 0x1
#define IPMI_FRU_DIMMSPD_AUTO_SELF_REFRESH_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_AUTO_SELF_REFRESH_SUPPORTED 0x1
#define IPMI_FRU_DIMMSPD_ON_DIE_THERMAL_SENSOR_READOUT_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_ON_DIE_THERMAL_SENSOR_READOUT_SUPPORTED 0x1
#define IPMI_FRU_DIMMSPD_PARTIAL_ARRAY_SELF_REFRESH_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_PARTIAL_ARRAY_SELF_REFRESH_SUPPORTED 0x1
#define IPMI_FRU_DIMMSPD_THERMAL_SENSOR_NOT_INCORPORATED 0x0
#define IPMI_FRU_DIMMSPD_THERMAL_SENSOR_INCORPORATED 0x1
#define IPMI_FRU_DIMMSPD_SIGNAL_LOADING_NOT_SPECIFIED 0x0
#define IPMI_FRU_DIMMSPD_SIGNAL_LOADING_MULTI_LOAD_STACK 0x1
#define IPMI_FRU_DIMMSPD_SIGNAL_LOADING_SINGLE_LOAD_STACK 0x2
#define IPMI_FRU_DIMMSPD_SIGNAL_LOADING_RESERVED 0x3
#define IPMI_FRU_DIMMSPD_DIE_COUNT_NOT_SPECIFIED 0x0
#define IPMI_FRU_DIMMSPD_DIE_COUNT_SINGLE_DIE 0x1
#define IPMI_FRU_DIMMSPD_DIE_COUNT_2_DIE 0x2
#define IPMI_FRU_DIMMSPD_DIE_COUNT_4_DIE 0x3
#define IPMI_FRU_DIMMSPD_DIE_COUNT_8_DIE 0x4
#define IPMI_FRU_DIMMSPD_SDRAM_DEVICE_TYPE_STANDARD_MONOLITHIC_DRAM_DEVICE 0x0
#define IPMI_FRU_DIMMSPD_SDRAM_DEVICE_TYPE_NON_STANDARD_DEVICE 0x1
/* From "Annex L: Serial Presence Detect (SPD) for DDR4 SDRAM Modules"
*
* Released by JEDEC
*/
#define IPMI_FRU_DIMMSPD_DDR4_SPD_BYTES_USED_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_SPD_BYTES_USED_128 0x1
#define IPMI_FRU_DIMMSPD_DDR4_SPD_BYTES_USED_256 0x2
#define IPMI_FRU_DIMMSPD_DDR4_SPD_BYTES_USED_384 0x3
#define IPMI_FRU_DIMMSPD_DDR4_SPD_BYTES_USED_512 0x4
#define IPMI_FRU_DIMMSPD_DDR4_SPD_BYTES_TOTAL_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_SPD_BYTES_TOTAL_256 0x1
#define IPMI_FRU_DIMMSPD_DDR4_SPD_BYTES_TOTAL_512 0x2
/* RDIMM - Registered Dual In-Line Memory Module
* UDIMM - Unbuffered Dual In-Line Memory Module
* SO-DIMM - Unbuffered Small Outline Dual In-Line Memory Module, 64-bit data bus
* LRDIMM - Load Reduced Dual In-Line Memory Module
* Mini-RDIMM - Mini RDIMM
* Mini-UDIMM - Mini UDIMM
* 72b-SO-RDIMM - Small Outline Registered DIMM, 72-bit data bus
* 72b-SO-UDIMM - Small Outline Unbuffered DIMM, 72-bit data bus
* 16b-SO-DIMM - Small Outline Unbuffered DIMM, 16-bit data bus
* 32b-SO-DIMM - Small Outline Unbuffered DIMM, 32-bit data bus
*/
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_EXTENDED_MODULE 0x0
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_RDIMM 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_UDIMM 0x2
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_SO_DIMM 0x3
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_LR_DIMM 0x4
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_MINI_RDIMM 0x5
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_MINI_UDIMM 0x6
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_72B_SO_RDIMM 0x8
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_72B_SO_UDIMM 0x9
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_16B_SO_DIMM 0xC
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_32B_SO_DIMM 0xD
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_MODULE_TYPE_NO_BASE_MEMORY_PRESENT 0xF
/* In megabits / gigabits */
#define IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_256_MB 0x0
#define IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_512_MB 0x1
#define IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_1_GB 0x2
#define IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_2_GB 0x3
#define IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_4_GB 0x4
#define IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_8_GB 0x5
#define IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_16_GB 0x6
#define IPMI_FRU_DIMMSPD_DDR4_TOTAL_SDRAM_CAPACITY_32_GB 0x7
#define IPMI_FRU_DIMMSPD_DDR4_BANK_ADDRESS_BITS_2 0x0 /* 4 banks */
#define IPMI_FRU_DIMMSPD_DDR4_BANK_ADDRESS_BITS_3 0x1 /* 8 banks */
#define IPMI_FRU_DIMMSPD_DDR4_BANK_GROUP_BITS_0 0x0 /* no bank groups */
#define IPMI_FRU_DIMMSPD_DDR4_BANK_GROUP_BITS_1 0x1 /* 2 bank groups */
#define IPMI_FRU_DIMMSPD_DDR4_BANK_GROUP_BITS_2 0x2 /* 4 bank groups */
#define IPMI_FRU_DIMMSPD_DDR4_COLUMN_ADDRESS_BITS_9 0x0
#define IPMI_FRU_DIMMSPD_DDR4_COLUMN_ADDRESS_BITS_10 0x1
#define IPMI_FRU_DIMMSPD_DDR4_COLUMN_ADDRESS_BITS_11 0x2
#define IPMI_FRU_DIMMSPD_DDR4_COLUMN_ADDRESS_BITS_12 0x3
#define IPMI_FRU_DIMMSPD_DDR4_ROW_ADDRESS_BITS_12 0x0
#define IPMI_FRU_DIMMSPD_DDR4_ROW_ADDRESS_BITS_13 0x1
#define IPMI_FRU_DIMMSPD_DDR4_ROW_ADDRESS_BITS_14 0x2
#define IPMI_FRU_DIMMSPD_DDR4_ROW_ADDRESS_BITS_15 0x3
#define IPMI_FRU_DIMMSPD_DDR4_ROW_ADDRESS_BITS_16 0x4
#define IPMI_FRU_DIMMSPD_DDR4_ROW_ADDRESS_BITS_17 0x5
#define IPMI_FRU_DIMMSPD_DDR4_ROW_ADDRESS_BITS_18 0x6
#define IPMI_FRU_DIMMSPD_DDR4_SIGNAL_LOADING_NOT_SPECIFIED 0x00
#define IPMI_FRU_DIMMSPD_DDR4_SIGNAL_LOADING_MULTI_LOAD_STACK 0x01
#define IPMI_FRU_DIMMSPD_DDR4_SIGNAL_LOADING_SINGLE_LOAD_STACK 0x02
#define IPMI_FRU_DIMMSPD_DDR4_DIE_COUNT_SINGLE_DIE 0x0
#define IPMI_FRU_DIMMSPD_DDR4_DIE_COUNT_2_DIE 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DIE_COUNT_3_DIE 0x2
#define IPMI_FRU_DIMMSPD_DDR4_DIE_COUNT_4_DIE 0x3
#define IPMI_FRU_DIMMSPD_DDR4_DIE_COUNT_5_DIE 0x4
#define IPMI_FRU_DIMMSPD_DDR4_DIE_COUNT_6_DIE 0x5
#define IPMI_FRU_DIMMSPD_DDR4_DIE_COUNT_7_DIE 0x6
#define IPMI_FRU_DIMMSPD_DDR4_DIE_COUNT_8_DIE 0x7
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_PACKAGE_TYPE_MONOLITHIC_DRAM_DEVICE 0x0
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_PACKAGE_TYPE_NON_MONOLITHIC_DRAM_DEVICE 0x1
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_COUNT_UNTESTED_MAC 0x0
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_COUNT_700_K 0x1
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_COUNT_600_K 0x2
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_COUNT_500_K 0x3
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_COUNT_400_K 0x4
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_COUNT_300_K 0x5
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_COUNT_200_K 0x6
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_COUNT_UNLIMITED_MAC 0x7
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_WINDOW_8192xtREFI 0x0
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_WINDOW_4096xtREFI 0x1
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_MAXIMUM_ACTIVATE_WINDOW_2048xtREFI 0x2
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_POST_PACKAGE_REPAIR_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_SDRAM_POST_PACKAGE_REPAIR_SUPPORTED_ONE_ROW_PER_BANK_GROUP 0x1
#define IPMI_FRU_DIMMSPD_DDR4_VDD_1_2_NOT_OPERABLE 0x0
#define IPMI_FRU_DIMMSPD_DDR4_VDD_1_2_OPERABLE 0x1
#define IPMI_FRU_DIMMSPD_DDR4_VDD_1_2_NOT_ENDURANT 0x0
#define IPMI_FRU_DIMMSPD_DDR4_VDD_1_2_ENDURANT 0x1
#define IPMI_FRU_DIMMSPD_DDR4_VDD_TBD1_NOT_OPERABLE 0x0
#define IPMI_FRU_DIMMSPD_DDR4_VDD_TBD1_OPERABLE 0x1
#define IPMI_FRU_DIMMSPD_DDR4_VDD_TBD1_NOT_ENDURANT 0x0
#define IPMI_FRU_DIMMSPD_DDR4_VDD_TBD1_ENDURANT 0x1
#define IPMI_FRU_DIMMSPD_DDR4_VDD_TBD2_NOT_OPERABLE 0x0
#define IPMI_FRU_DIMMSPD_DDR4_VDD_TBD2_OPERABLE 0x1
#define IPMI_FRU_DIMMSPD_DDR4_VDD_TBD2_NOT_ENDURANT 0x0
#define IPMI_FRU_DIMMSPD_DDR4_VDD_TBD2_ENDURANT 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DEVICE_WIDTH_4_BITS 0x0
#define IPMI_FRU_DIMMSPD_DDR4_DEVICE_WIDTH_8_BITS 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DEVICE_WIDTH_16_BITS 0x2
#define IPMI_FRU_DIMMSPD_DDR4_DEVICE_WIDTH_32_BITS 0x3
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_PACKAGE_RANKS_1 0x0
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_PACKAGE_RANKS_2 0x1
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_PACKAGE_RANKS_3 0x2
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_PACKAGE_RANKS_4 0x3
#define IPMI_FRU_DIMMSPD_DDR4_PRIMARY_BUS_WIDTH_8_BITS 0x0
#define IPMI_FRU_DIMMSPD_DDR4_PRIMARY_BUS_WIDTH_16_BITS 0x1
#define IPMI_FRU_DIMMSPD_DDR4_PRIMARY_BUS_WIDTH_32_BITS 0x2
#define IPMI_FRU_DIMMSPD_DDR4_PRIMARY_BUS_WIDTH_64_BITS 0x3
#define IPMI_FRU_DIMMSPD_DDR4_BUS_WIDTH_EXTENSION_0_BITS 0x0
#define IPMI_FRU_DIMMSPD_DDR4_BUS_WIDTH_EXTENSION_8_BITS 0x1
#define IPMI_FRU_DIMMSPD_DDR4_THERMAL_SENSOR_NOT_INCORPORATED_ONTO_THIS_ASSEMBLY 0x0
#define IPMI_FRU_DIMMSPD_DDR4_THERMAL_SENSOR_INCORPORATED_ONTO_THIS_ASSEMBLY 0x1
#define IPMI_FRU_DIMMSPD_DDR4_CAS_NOT_SUPPORTED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_CAS_SUPPORTED 0x1
/* For unbuffered memory modules & registered memory modules & load reduction memory modules */
/* in mm */
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_HEIGHT_LT_15 0x00
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_15_TO_16 0x01
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_16_TO_17 0x02
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_17_TO_18 0x03
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_18_TO_19 0x04
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_19_TO_20 0x05
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_20_TO_21 0x06
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_21_TO_22 0x07
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_22_TO_23 0x08
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_23_TO_24 0x09
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_24_TO_25 0x0A
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_25_TO_26 0x0B
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_26_TO_27 0x0C
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_27_TO_28 0x0D
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_28_TO_39 0x0E
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_29_TO_30 0x0F
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_30_TO_31 0x10
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_31_TO_32 0x11
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_32_TO_33 0x12
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_33_TO_34 0x13
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_34_TO_35 0x14
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_35_TO_36 0x15
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_36_TO_37 0x16
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_37_TO_38 0x17
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_38_TO_39 0x18
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_39_TO_40 0x19
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_40_TO_41 0x1A
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_41_TO_42 0x1B
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_42_TO_43 0x1C
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_43_TO_44 0x1D
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_44_TO_45 0x1E
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_NOMINAL_HEIGHT_MAX_45_GT_HEIGHT 0x1F
#define IPMI_FRU_DIMMSPD_DDR4_RAW_CARD_REVISIONS_0_TO_3 0x0
#define IPMI_FRU_DIMMSPD_DDR4_RAW_CARD_REVISIONS_4 0x1
#define IPMI_FRU_DIMMSPD_DDR4_RAW_CARD_REVISIONS_5 0x2
#define IPMI_FRU_DIMMSPD_DDR4_RAW_CARD_REVISIONS_6 0x3
#define IPMI_FRU_DIMMSPD_DDR4_RAW_CARD_REVISIONS_7 0x4
#define IPMI_FRU_DIMMSPD_DDR4_RAW_CARD_REVISIONS_8 0x5
#define IPMI_FRU_DIMMSPD_DDR4_RAW_CARD_REVISIONS_9 0x6
#define IPMI_FRU_DIMMSPD_DDR4_RAW_CARD_REVISIONS_10 0x7
/* in mm */
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_THICKNESS_LT_1 0x0
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_1_TO_2 0x1
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_2_TO_3 0x2
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_3_TO_4 0x3
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_4_TO_5 0x4
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_5_TO_6 0x5
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_6_TO_7 0x6
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_7_TO_8 0x7
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_8_TO_9 0x8
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_9_TO_10 0x9
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_10_TO_11 0xA
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_11_TO_12 0xB
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_12_TO_13 0xC
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_13_TO_14 0xD
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_14_TO_15 0xE
#define IPMI_FRU_DIMMSPD_DDR4_MODULE_MAXIMUM_THICKNESS_15_GT_THICKNESS 0xF
#define IPMI_FRU_DIMMSPD_DDR4_REFERENCE_RAW_CARD_EXTENSION_A_THROUGH_AL 0x0
#define IPMI_FRU_DIMMSPD_DDR4_REFERENCE_RAW_CARD_EXTENSION_AM_THROUGH_B 0x1
#define IPMI_FRU_DIMMSPD_DDR4_REFERENCE_RAW_CARD_REVISION_0 0x0
#define IPMI_FRU_DIMMSPD_DDR4_REFERENCE_RAW_CARD_REVISION_1 0x1
#define IPMI_FRU_DIMMSPD_DDR4_REFERENCE_RAW_CARD_REVISION_2 0x2
#define IPMI_FRU_DIMMSPD_DDR4_REFERENCE_RAW_CARD_REVISION_3 0x3
#define IPMI_FRU_DIMMSPD_DDR4_REFERENCE_RAW_CARD_NO_JEDEC_REFERENCE_RAW_CARD_DESIGN_USED 0x1F
#define IPMI_FRU_DIMMSPD_DDR4_RANK_1_MAPPING_STANDARD 0x0
#define IPMI_FRU_DIMMSPD_DDR4_RANK_1_MAPPING_MIRRORED 0x1
/* For registered memory modules & load reduction memory modules */
#define IPMI_FRU_DIMMSPD_DDR4_HEAT_SPREADER_SOLUTION_NOT_INCORPORATED_INTO_THIS_ASSEMBLY 0x0
#define IPMI_FRU_DIMMSPD_DDR4_HEAT_SPREADER_SOLUTION_INCORPORATED_INTO_THIS_ASSEMBLY 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DRIVE_STRENGTH_LIGHT_DRIVE 0x0
#define IPMI_FRU_DIMMSPD_DDR4_DRIVE_STRENGTH_MODERATE_DRIVE 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DRIVE_STRENGTH_STRONG_DRIVE 0x2
/* For registered memory modules */
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_REGISTERS_USED_ON_RDIMM_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_REGISTERS_USED_ON_RDIMM_1_REGISTER 0x1
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_REGISTERS_USED_ON_RDIMM_2_REGISTERS 0x2
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_REGISTERS_USED_ON_RDIMM_4_REGISTERS 0x3
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_ROWS_OF_DRAMS_ON_RDIMM_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_ROWS_OF_DRAMS_ON_RDIMM_1_ROW 0x1
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_ROWS_OF_DRAMS_ON_RDIMM_2_ROWS 0x2
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_ROWS_OF_DRAMS_ON_RDIMM_4_ROWS 0x3
#define IPMI_FRU_DIMMSPD_DDR4_HEAT_SPREADER_THERMAL_CHARACTERISTICS_UNDEFINED 0x0
/* For load reduction memory modules */
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_REGISTERS_USED_ON_LRDIMM_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_REGISTERS_USED_ON_LRDIMM_1_REGISTER 0x1
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_ROWS_OF_DRAMS_ON_LRDIMM_UNDEFINED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_ROWS_OF_DRAMS_ON_LRDIMM_1_ROW 0x1
#define IPMI_FRU_DIMMSPD_DDR4_NUMBER_OF_ROWS_OF_DRAMS_ON_LRDIMM_2_ROWS 0x2
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_READ_TERMINATION_STRENGTH_DISABLED 0x0
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_READ_TERMINATION_STRENGTH_RZQ4 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_READ_TERMINATION_STRENGTH_RZQ2 0x2
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_READ_TERMINATION_STRENGTH_RZQ6 0x3
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_READ_TERMINATION_STRENGTH_RZQ 0x4
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_READ_TERMINATION_STRENGTH_RZQ5 0x5
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_READ_TERMINATION_STRENGTH_RZQ3 0x6
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_READ_TERMINATION_STRENGTH_RZQ7 0x7
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_DRIVE_STRENGTH_RZQ6 0x0
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_DRIVE_STRENGTH_RZQ7 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_DRIVE_STRENGTH_RZQ5 0x2
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_INTERFACE_MDQ_DRIVE_STRENGTH_RZQ4 0x5 /* not a typo, jumps to 5 */
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_DRIVE_STRENGTH_RZQ7 0x0
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_DRIVE_STRENGTH_RZQ5 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_ODT_STRENGTH_DYNAMIC_ODT_OFF 0x0
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_ODT_STRENGTH_RZQ2 0x1
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_ODT_STRENGTH_RZQ 0x2
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_ODT_STRENGTH_HI_IMPEDANCE 0x3
#define IPMI_FRU_DIMMSPD_DDR4_DRAM_ODT_STRENGTH_RZQ3 0x4
extern fiid_template_t tmpl_fru_dimm_spd_ddr_header;
extern fiid_template_t tmpl_fru_dimm_spd_ddr3_record;
extern fiid_template_t tmpl_fru_dimm_spd_ddr4_record;
extern fiid_template_t tmpl_fru_dimm_spd_ddr4_module_specific_unbuffered_memory_module;
extern fiid_template_t tmpl_fru_dimm_spd_ddr4_module_specific_registered_memory_module;
extern fiid_template_t tmpl_fru_dimm_spd_ddr4_module_specific_load_reduction_memory_module;
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_DIMMSPD_RECORD_FORMAT_H */

View File

@ -0,0 +1,159 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
* Copyright (C) 2007 The Regents of the University of California.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* UCRL-CODE-232183
*
* This file is part of Ipmi-fru, a tool used for retrieving
* motherboard field replaceable unit (FRU) information. For details,
* see http://www.llnl.gov/linux/.
*
* Ipmi-fru is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-fru is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-fru. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_FRU_INFORMATION_RECORD_FORMAT_H
#define IPMI_FRU_INFORMATION_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
/*
* achu:
*
* Not in IPMI spec. In "Platform Management FRU Information Storage
* Definition" document.
*/
#define IPMI_FRU_COMMON_HEADER_FORMAT_VERSION 0x01
#define IPMI_FRU_CHASSIS_INFO_AREA_FORMAT_VERSION 0x01
#define IPMI_FRU_BOARD_INFO_AREA_FORMAT_VERSION 0x01
#define IPMI_FRU_PRODUCT_INFO_AREA_FORMAT_VERSION 0x01
#define IPMI_FRU_MULTIRECORD_AREA_FORMAT_VERSION 0x02
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_POWER_SUPPLY_INFORMATION 0x00
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_DC_OUTPUT 0x01
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_DC_LOAD 0x02
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_MANAGEMENT_ACCESS_RECORD 0x03
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_BASE_COMPATIBILITY_RECORD 0x04
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_EXTENDED_COMPATIBILITY_RECORD 0x05
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_ASF_FIXED_SMBUS_DEVICE_RECORD 0x06
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_ASF_LEGACY_DEVICE_ALERTS 0x07
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_ASF_REMOTE_CONTROL 0x08
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_EXTENDED_DC_OUTPUT 0x09
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_EXTENDED_DC_LOAD 0x0A
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_NVM_EXPRESS_MIN 0x0B
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_NVM_EXPRESS_MAX 0x0F
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_OEM_MIN 0xC0
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_OEM_MAX 0xFF
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_VALID(__multirecord_area_type) \
(((__multirecord_area_type) >= IPMI_FRU_MULTIRECORD_AREA_TYPE_POWER_SUPPLY_INFORMATION \
&& (__multirecord_area_type) <= IPMI_FRU_MULTIRECORD_AREA_TYPE_EXTENDED_DC_LOAD) ? 1 : 0)
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_IS_NVM_EXPRESS(__multirecord_area_type) \
(((__multirecord_area_type) >= IPMI_FRU_MULTIRECORD_AREA_TYPE_NVM_EXPRESS_MIN \
&& (__multirecord_area_type) <= IPMI_FRU_MULTIRECORD_AREA_TYPE_NVM_EXPRESS_MAX) ? 1 : 0)
#define IPMI_FRU_MULTIRECORD_AREA_TYPE_IS_OEM(__multirecord_area_type) \
(((__multirecord_area_type) >= IPMI_FRU_MULTIRECORD_AREA_TYPE_OEM_MIN \
&& (__multirecord_area_type) <= IPMI_FRU_MULTIRECORD_AREA_TYPE_OEM_MAX) ? 1 : 0)
#define IPMI_FRU_MFG_DATE_TIME_UNSPECIFIED 0x000000
#define IPMI_FRU_ONE_PULSE_PER_ROTATION 0x0
#define IPMI_FRU_TWO_PULSES_PER_ROTATION 0x1
#define IPMI_FRU_PEAK_CAPACITY_UNSPECIFIED 0xFFF
#define IPMI_FRU_VOLTAGE_12V 0x0
#define IPMI_FRU_VOLTAGE_MINUS12V 0x1
#define IPMI_FRU_VOLTAGE_5V 0x2
#define IPMI_FRU_VOLTAGE_3_3V 0x3
#define IPMI_FRU_PREDICTIVE_FAIL_PIN_IS_PASS_FAIL 0x0
#define IPMI_FRU_CURRENT_UNITS_10MA 0x0
#define IPMI_FRU_CURRENT_UNITS_100MA 0x1
#define IPMI_FRU_SUB_RECORD_TYPE_SYSTEM_MANAGEMENT_URL 0x01
#define IPMI_FRU_SUB_RECORD_TYPE_SYSTEM_NAME 0x02
#define IPMI_FRU_SUB_RECORD_TYPE_SYSTEM_PING_ADDRESS 0x03
#define IPMI_FRU_SUB_RECORD_TYPE_COMPONENT_MANAGEMENT_URL 0x04
#define IPMI_FRU_SUB_RECORD_TYPE_COMPONENT_NAME 0x05
#define IPMI_FRU_SUB_RECORD_TYPE_COMPONENT_PING_ADDRESS 0x06
#define IPMI_FRU_SUB_RECORD_TYPE_SYSTEM_UNIQUE_ID 0x07
#define IPMI_FRU_SUB_RECORD_TYPE_VALID(__sub_record_type) \
(((__sub_record_type) >= IPMI_FRU_SUB_RECORD_TYPE_SYSTEM_MANAGEMENT_URL \
&& (__sub_record_type) <= IPMI_FRU_SUB_RECORD_TYPE_SYSTEM_UNIQUE_ID) ? 1 : 0)
#define IPMI_FRU_TYPE_LENGTH_TYPE_CODE_BINARY 0x00
#define IPMI_FRU_TYPE_LENGTH_TYPE_CODE_BCD 0x01
#define IPMI_FRU_TYPE_LENGTH_TYPE_CODE_SIXBIT_ASCII 0x02
#define IPMI_FRU_TYPE_LENGTH_TYPE_CODE_LANGUAGE_CODE 0x03
#define IPMI_FRU_TYPE_LENGTH_TYPE_CODE_MASK 0xC0
#define IPMI_FRU_TYPE_LENGTH_TYPE_CODE_SHIFT 0x06
#define IPMI_FRU_TYPE_LENGTH_NUMBER_OF_DATA_BYTES_MASK 0x3F
#define IPMI_FRU_BCD_DIGIT_MIN 0x0
#define IPMI_FRU_BCD_DIGIT_MAX 0x9
#define IPMI_FRU_BCD_SPACE 0xA
#define IPMI_FRU_BCD_DASH 0xB
#define IPMI_FRU_BCD_PERIOD 0xC
#define IPMI_FRU_SENTINEL_VALUE 0xC1
/*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_fru_common_header;
extern fiid_template_t tmpl_fru_info_area_header;
extern fiid_template_t tmpl_fru_multirecord_area_header;
extern fiid_template_t tmpl_fru_power_supply_information;
extern fiid_template_t tmpl_fru_dc_output;
extern fiid_template_t tmpl_fru_dc_load;
extern fiid_template_t tmpl_fru_management_access_record;
extern fiid_template_t tmpl_fru_base_compatibility_record;
extern fiid_template_t tmpl_fru_extended_compatibility_record;
extern fiid_template_t tmpl_fru_extended_dc_output;
extern fiid_template_t tmpl_fru_extended_dc_load;
extern fiid_template_t tmpl_fru_oem_record;
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_INFORMATION_RECORD_FORMAT_H */

View File

@ -0,0 +1,34 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_FRU_OEM_RECORD_FORMAT_H
#define IPMI_FRU_OEM_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-fru-oem-record-format.h header file is deprecated
#include <freeipmi/record-format/oem/ipmi-fru-wistron-oem-record-format.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_OEM_RECORD_FORMAT_H */

View File

@ -0,0 +1,118 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_PLATFORM_EVENT_TRAP_RECORD_FORMAT_H
#define IPMI_PLATFORM_EVENT_TRAP_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
/*
* achu:
*
* Not in IPMI spec. In "Platform Event Trap Specification" document.
*/
#define IPMI_PLATFORM_EVENT_TRAP_MIN_VARIABLE_BINDINGS_LENGTH 47
#define IPMI_PLATFORM_EVENT_TRAP_MAX_VARIABLE_BINDINGS_LENGTH 110
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_SENSOR_TYPE_MASK 0x00FF0000
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_SENSOR_TYPE_SHIFT 16
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_EVENT_TYPE_MASK 0x0000FF00
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_EVENT_TYPE_SHIFT 8
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_EVENT_DIRECTION_MASK 0x00000080
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_EVENT_DIRECTION_SHIFT 7
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_EVENT_OFFSET_MASK 0x0000000F
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_EVENT_OFFSET_SHIFT 0
#define IPMI_PLATFORM_EVENT_TRAP_SPECIFIC_TRAP_EVENT_OFFSET_UNSPECIFIED 0x0F
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_GUID_INDEX_START 0
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_GUID_INDEX_END 15
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SEQUENCE_NUMBER_INDEX_START 16
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SEQUENCE_NUMBER_INDEX_END 17
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_COOKIE_INDEX_START IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SEQUENCE_NUMBER_INDEX_START
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_COOKIE_INDEX_END IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SEQUENCE_NUMBER_INDEX_END
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_LOCAL_TIMESTAMP_INDEX_START 18
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_LOCAL_TIMESTAMP_INDEX_END 21
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_LOCAL_TIMESTAMP_UNSPECIFIED 0x0000
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_UTC_OFFSET_INDEX_START 22
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_UTC_OFFSET_INDEX_END 23
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_UTC_OFFSET_UNSPECIFIED 0xFFFF
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_TRAP_SOURCE_TYPE_INDEX 24
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_TRAP_SOURCE_UNSPECIFIED 0xFF
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SOURCE_TYPE_INDEX 25
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SOURCE_UNSPECIFIED 0xFF
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SEVERITY_INDEX 26
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SEVERITY_UNSPECIFIED 0x00
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SEVERITY_MONITOR 0x01
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SEVERITY_INFORMATION 0x02
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SEVERITY_OK 0x04
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SEVERITY_NON_CRITICAL_CONDITION 0x08
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SEVERITY_CRITICAL_CONDITION 0x10
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_SEVERITY_NON_RECOVERABLE_CONDITION 0x20
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SENSOR_DEVICE_INDEX 27
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SENSOR_DEVICE_UNSPECIFIED 0xFF
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SENSOR_NUMBER_INDEX 28
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SENSOR_NUMBER_UNSPECIFIED_A 0x00
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SENSOR_NUMBER_UNSPECIFIED_B 0xFF
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_ENTITY_INDEX 29
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_ENTITY_UNSPECIFIED 0x00
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_ENTITY_INSTANCE_INDEX 30
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_ENTITY_INSTANCE_UNSPECIFIED 0x00
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_DATA_INDEX_START 31
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_DATA_INDEX_END 38
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_EVENT_DATA_LENGTH 8
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_LANGUAGE_CODE_INDEX 39
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_MANUFACTURER_ID_INDEX_START 40
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_MANUFACTURER_ID_INDEX_END 43
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SYSTEM_ID_INDEX_START 44
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_SYSTEM_ID_INDEX_END 45
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_OEM_CUSTOM_FIELDS_INDEX_START 46
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_OEM_CUSTOM_FIELDS_INDEX_END 109
#define IPMI_PLATFORM_EVENT_TRAP_VARIABLE_BINDINGS_OEM_CUSTOM_FIELDS_LENGTH 64
#ifdef __cplusplus
}
#endif
#endif /* IPMI_PLATFORM_EVENT_TRAP_RECORD_FORMAT_H */

View File

@ -0,0 +1,35 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SDR_OEM_RECORD_FORMAT_H
#define IPMI_SDR_OEM_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-sdr-oem-record-format.h header file is deprecated
#include <freeipmi/record-format/oem/ipmi-sdr-oem-intel-node-manager-record-format.h>
#include <freeipmi/record-format/oem/ipmi-sdr-oem-intel-record-format.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_OEM_RECORD_FORMAT_H */

View File

@ -0,0 +1,231 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SDR_RECORD_FORMAT_H
#define IPMI_SDR_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
#define IPMI_SDR_FORMAT_FULL_SENSOR_RECORD 0x01
#define IPMI_SDR_FORMAT_COMPACT_SENSOR_RECORD 0x02
#define IPMI_SDR_FORMAT_EVENT_ONLY_RECORD 0x03
#define IPMI_SDR_FORMAT_ENTITY_ASSOCIATION_RECORD 0x08
#define IPMI_SDR_FORMAT_DEVICE_RELATIVE_ENTITY_ASSOCIATION_RECORD 0x09
#define IPMI_SDR_FORMAT_GENERIC_DEVICE_LOCATOR_RECORD 0x10
#define IPMI_SDR_FORMAT_FRU_DEVICE_LOCATOR_RECORD 0x11
#define IPMI_SDR_FORMAT_MANAGEMENT_CONTROLLER_DEVICE_LOCATOR_RECORD 0x12
#define IPMI_SDR_FORMAT_MANAGEMENT_CONTROLLER_CONFIRMATION_RECORD 0x13
#define IPMI_SDR_FORMAT_BMC_MESSAGE_CHANNEL_INFO_RECORD 0x14
#define IPMI_SDR_FORMAT_OEM_RECORD 0xC0
#define IPMI_SDR_FORMAT_TYPE_VALID(__val) \
(((__val) == IPMI_SDR_FORMAT_FULL_SENSOR_RECORD \
|| (__val) == IPMI_SDR_FORMAT_COMPACT_SENSOR_RECORD \
|| (__val) == IPMI_SDR_FORMAT_EVENT_ONLY_RECORD \
|| (__val) == IPMI_SDR_FORMAT_ENTITY_ASSOCIATION_RECORD \
|| (__val) == IPMI_SDR_FORMAT_DEVICE_RELATIVE_ENTITY_ASSOCIATION_RECORD \
|| (__val) == IPMI_SDR_FORMAT_GENERIC_DEVICE_LOCATOR_RECORD \
|| (__val) == IPMI_SDR_FORMAT_FRU_DEVICE_LOCATOR_RECORD \
|| (__val) == IPMI_SDR_FORMAT_MANAGEMENT_CONTROLLER_DEVICE_LOCATOR_RECORD \
|| (__val) == IPMI_SDR_FORMAT_MANAGEMENT_CONTROLLER_CONFIRMATION_RECORD \
|| (__val) == IPMI_SDR_FORMAT_BMC_MESSAGE_CHANNEL_INFO_RECORD \
|| (__val) == IPMI_SDR_FORMAT_OEM_RECORD) ? 1 : 0)
#define IPMI_SDR_SENSOR_OWNER_ID_TYPE_IPMB_SLAVE_ADDRESS 0x0
#define IPMI_SDR_SENSOR_OWNER_ID_TYPE_SYSTEM_SOFTWARE_ID 0x1
#define IPMI_SDR_ANALOG_DATA_FORMAT_UNSIGNED 0x0
#define IPMI_SDR_ANALOG_DATA_FORMAT_1S_COMPLEMENT 0x1
#define IPMI_SDR_ANALOG_DATA_FORMAT_2S_COMPLEMENT 0x2
#define IPMI_SDR_ANALOG_DATA_FORMAT_NOT_ANALOG 0x3
#define IPMI_SDR_ANALOG_DATA_FORMAT_UNSIGNED_STRING "unsigned"
#define IPMI_SDR_ANALOG_DATA_FORMAT_1S_COMPLEMENT_STRING "1's complement (signed)"
#define IPMI_SDR_ANALOG_DATA_FORMAT_2S_COMPLEMENT_STRING "2's complement (signed)"
#define IPMI_SDR_ANALOG_DATA_FORMAT_NOT_ANALOG_STRING "Does not return analog (numeric) reading"
#define IPMI_SDR_ANALOG_DATA_FORMAT_VALID(__val) \
(((__val) == IPMI_SDR_ANALOG_DATA_FORMAT_UNSIGNED \
|| (__val) == IPMI_SDR_ANALOG_DATA_FORMAT_1S_COMPLEMENT \
|| (__val) == IPMI_SDR_ANALOG_DATA_FORMAT_2S_COMPLEMENT) ? 1 : 0)
#define IPMI_SDR_MODIFIER_UNIT_NONE 0
#define IPMI_SDR_MODIFIER_UNIT_DIVIDE 1
#define IPMI_SDR_MODIFIER_UNIT_MULTIPLY 2
#define IPMI_SDR_MODIFIER_UNIT_VALID(__sensor_modifier_unit) \
(((__sensor_modifier_unit) == IPMI_SDR_MODIFIER_UNIT_NONE \
|| (__sensor_modifier_unit) == IPMI_SDR_MODIFIER_UNIT_DIVIDE \
|| (__sensor_modifier_unit) == IPMI_SDR_MODIFIER_UNIT_MULTIPLY) ? 1 : 0)
#define IPMI_SDR_LINEARIZATION_LINEAR 0
#define IPMI_SDR_LINEARIZATION_LN 1
#define IPMI_SDR_LINEARIZATION_LOG10 2
#define IPMI_SDR_LINEARIZATION_LOG2 3
#define IPMI_SDR_LINEARIZATION_E 4
#define IPMI_SDR_LINEARIZATION_EXP10 5
#define IPMI_SDR_LINEARIZATION_EXP2 6
#define IPMI_SDR_LINEARIZATION_INVERSE 7
#define IPMI_SDR_LINEARIZATION_SQR 8
#define IPMI_SDR_LINEARIZATION_CUBE 9
#define IPMI_SDR_LINEARIZATION_SQRT 10
#define IPMI_SDR_LINEARIZATION_CUBERT 11
#define IPMI_SDR_LINEARIZATION_NON_LINEAR 0x70
#define IPMI_SDR_LINEARIZATION_NON_LINEAR_OEM_MIN 0x71
#define IPMI_SDR_LINEARIZATION_NON_LINEAR_OEM_MAX 0x7F
#define IPMI_SDR_LINEARIZATION_LINEAR_STRING "linear"
#define IPMI_SDR_LINEARIZATION_LN_STRING "ln"
#define IPMI_SDR_LINEARIZATION_LOG10_STRING "log10"
#define IPMI_SDR_LINEARIZATION_LOG2_STRING "log2"
#define IPMI_SDR_LINEARIZATION_E_STRING "e"
#define IPMI_SDR_LINEARIZATION_EXP10_STRING "exp10"
#define IPMI_SDR_LINEARIZATION_EXP2_STRING "exp2"
#define IPMI_SDR_LINEARIZATION_INVERSE_STRING "1/x"
#define IPMI_SDR_LINEARIZATION_SQR_STRING "sqr(x)"
#define IPMI_SDR_LINEARIZATION_CUBE_STRING "cube(x)"
#define IPMI_SDR_LINEARIZATION_SQRT_STRING "sqrt(x)"
#define IPMI_SDR_LINEARIZATION_CUBERT_STRING "cube^-1(x)"
#define IPMI_SDR_LINEARIZATION_NON_LINEAR_STRING "non-linear"
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_SDR_LINEARIZATION_IS_LINEAR(__sensor_linearization) \
((((__sensor_linearization) + 1) >= IPMI_SDR_LINEARIZATION_LN \
&& (__sensor_linearization) <= IPMI_SDR_LINEARIZATION_CUBERT) ? 1 : 0)
#define IPMI_SDR_LINEARIZATION_IS_NON_LINEAR(__sensor_linearization) \
(((__sensor_linearization) >= IPMI_SDR_LINEARIZATION_NON_LINEAR \
&& (__sensor_linearization) <=IPMI_SDR_LINEARIZATION_NON_LINEAR_OEM_MAX) ? 1 : 0)
#define IPMI_SDR_PERCENTAGE_NO 0
#define IPMI_SDR_PERCENTAGE_YES 1
#define IPMI_SDR_PERCENTAGE_VALID(__val) \
(((__val) == IPMI_SDR_PERCENTAGE_NO \
|| (__val) == IPMI_SDR_PERCENTAGE_YES) ? 1 : 0)
#define IPMI_SDR_PHYSICAL_ENTITY 0x0
#define IPMI_SDR_LOGICAL_CONTAINER_ENTITY 0x1
#define IPMI_SDR_SENSOR_SCANNING_ENABLED 0x1
#define IPMI_SDR_SENSOR_SCANNING_DISABLED 0x0
#define IPMI_SDR_EVENT_GENERATION_ENABLED 0x1
#define IPMI_SDR_EVENT_GENERATION_DISABLED 0x0
#define IPMI_SDR_SENSOR_AUTO_REARM_SUPPORT_MANUAL 0x0
#define IPMI_SDR_SENSOR_AUTO_REARM_SUPPORT_AUTO 0x1
#define IPMI_SDR_PER_EVENT_ENABLE_DISABLE_SUPPORT 0x0
#define IPMI_SDR_ENTIRE_SENSOR_ONLY 0x1
#define IPMI_SDR_GLOBAL_DISABLE_ONLY 0x2
#define IPMI_SDR_NO_EVENTS_FROM_SENSOR 0x3
#define IPMI_SDR_NO_THRESHOLDS_SUPPORT 0x0
#define IPMI_SDR_READABLE_THRESHOLDS_SUPPORT 0x1
#define IPMI_SDR_READABLE_SETTABLE_THRESHOLDS_SUPPORT 0x2
#define IPMI_SDR_FIXED_UNREADABLE_THRESHOLDS_SUPPORT 0x3
#define IPMI_SDR_NO_HYSTERESIS_SUPPORT 0x0
#define IPMI_SDR_READABLE_HYSTERESIS_SUPPORT 0x1
#define IPMI_SDR_READABLE_SETTABLE_HYSTERESIS_SUPPORT 0x2
#define IPMI_SDR_FIXED_UNREADABLE_HYSTERESIS_SUPPORT 0x3
#define IPMI_SDR_ANALOG_CHARACTERISTICS_NOMINAL_READING_SPECIFIED 0x1
#define IPMI_SDR_ANALOG_CHARACTERISTICS_NOMINAL_READING_UNSPECIFIED 0x0
#define IPMI_SDR_ANALOG_CHARACTERISTICS_NORMAL_MAX_SPECIFIED 0x1
#define IPMI_SDR_ANALOG_CHARACTERISTICS_NORMAL_MAX_UNSPECIFIED 0x0
#define IPMI_SDR_ANALOG_CHARACTERISTICS_NORMAL_MIN_SPECIFIED 0x1
#define IPMI_SDR_ANALOG_CHARACTERISTICS_NORMAL_MIN_UNSPECIFIED 0x0
#define IPMI_SDR_ID_STRING_INSTANCE_MODIFIER_TYPE_NUMERIC 0x0
#define IPMI_SDR_ID_STRING_INSTANCE_MODIFIER_TYPE_ALPHA 0x1
#define IPMI_SDR_SENSOR_DIRECTION_UNSPECIFIED 0x0
#define IPMI_SDR_SENSOR_DIRECTION_INPUT 0x1
#define IPMI_SDR_SENSOR_DIRECTION_OUTPUT 0x2
#define IPMI_SDR_SENSOR_DIRECTION_RESERVED 0x3
#define IPMI_SDR_ENTITY_INSTANCE_SAME_FOR_ALL_SHARED_RECORDS 0x0
#define IPMI_SDR_ENTITY_INSTANCE_INCREMENTS_FOR_EACH_SHARED_RECORD 0x1
#define IPMI_SDR_RECORD_NO_LINKED_ENTITY_ASSOCIATION_RECORDS_EXIST 0x0
#define IPMI_SDR_RECORD_LINKED_ENTITY_ASSOCIATION_RECORDS_EXIST 0x1
#define IPMI_SDR_CONTAINED_ENTITY_SPECIFIED_AS_LIST 0x0
#define IPMI_SDR_CONTAINED_ENTITY_SPECIFIED_AS_RANGE 0x1
#define IPMI_SDR_DEVICE_IS_NOT_A_LOGICAL_FRU_DEVICE 0x0
#define IPMI_SDR_DEVICE_IS_LOGICAL_FRU_DEVICE 0x1
#define IPMI_SDR_EVENT_MESSAGE_GENERATION_FROM_CONTROLLER_ENABLE 0x0
#define IPMI_SDR_EVENT_MESSAGE_GENERATION_FROM_CONTROLLER_DISABLE 0x1
#define IPMI_SDR_EVENT_MESSAGE_GENERATION_DO_NOT_INITIALIZE_CONTROLLER 0x2
#define IPMI_SDR_EVENT_MESSAGE_GENERATION_RESERVED 0x3
#define IPMI_SDR_LOG_INITIALIZATION_AGENT_ERRORS_ENABLE 0x0
#define IPMI_SDR_LOG_INITIALIZATION_AGENT_ERRORS_DISABLE 0x1
#define IPMI_SDR_CONTROLLER_LOGS_INITIALIZATION_AGENT_ERRORS_ENABLE 0x0
#define IPMI_SDR_CONTROLLER_LOGS_INITIALIZATION_AGENT_ERRORS_DISABLE 0x1
#define IPMI_SDR_CONTROLLER_DYNAMIC 0x0
#define IPMI_SDR_CONTROLLER_STATIC 0x1
#define IPMI_SDR_ACPI_DEVICE_POWER_STATE_NOTIFICATION_REQUIRED 0x0
#define IPMI_SDR_NO_ACPI_DEVICE_POWER_STATE_NOTIFICATION_REQUIRED 0x1
#define IPMI_SDR_ACPI_SYSTEM_POWER_STATE_NOTIFICATION_REQUIRED 0x0
#define IPMI_SDR_NO_ACPI_SYSTEM_POWER_STATE_NOTIFICATION_REQUIRED 0x1
#define IPMI_SDR_MAX_ID_STRING_LENGTH 16
#define IPMI_SDR_MAX_DEVICE_ID_STRING_LENGTH 16
/*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_sdr_record_header;
extern fiid_template_t tmpl_sdr_full_sensor_record;
extern fiid_template_t tmpl_sdr_full_sensor_record_non_threshold_based_sensors;
extern fiid_template_t tmpl_sdr_full_sensor_record_threshold_based_sensors;
extern fiid_template_t tmpl_sdr_compact_sensor_record;
extern fiid_template_t tmpl_sdr_compact_sensor_record_non_threshold_based_sensors;
extern fiid_template_t tmpl_sdr_compact_sensor_record_threshold_based_sensors;
extern fiid_template_t tmpl_sdr_event_only_record;
extern fiid_template_t tmpl_sdr_entity_association_record;
extern fiid_template_t tmpl_sdr_device_relative_entity_association_record;
extern fiid_template_t tmpl_sdr_generic_device_locator_record;
extern fiid_template_t tmpl_sdr_fru_device_locator_record;
extern fiid_template_t tmpl_sdr_fru_device_locator_record_non_intelligent;
extern fiid_template_t tmpl_sdr_management_controller_device_locator_record;
extern fiid_template_t tmpl_sdr_management_controller_confirmation_record;
extern fiid_template_t tmpl_sdr_bmc_message_channel_info_record;
extern fiid_template_t tmpl_sdr_oem_record;
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_RECORD_FORMAT_H */

View File

@ -0,0 +1,35 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SEL_OEM_RECORD_FORMAT_H
#define IPMI_SEL_OEM_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-sel-oem-record-format.h header file is deprecated
#include <freeipmi/record-format/oem/ipmi-sel-oem-intel-record-format.h>
#include <freeipmi/record-format/oem/ipmi-sel-oem-linux-kernel-record-format.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SEL_OEM_RECORD_FORMAT_H */

View File

@ -0,0 +1,96 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SEL_RECORD_FORMAT_H
#define IPMI_SEL_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
#define IPMI_V1_0_EVENT_MESSAGE_FORMAT 0x03
#define IPMI_V1_5_EVENT_MESSAGE_FORMAT 0x04
#define IPMI_SEL_RECORD_TYPE_SYSTEM_EVENT_RECORD 0x02
#define IPMI_SEL_RECORD_TYPE_TIMESTAMPED_OEM_MIN 0xC0
#define IPMI_SEL_RECORD_TYPE_TIMESTAMPED_OEM_MAX 0xDF
#define IPMI_SEL_RECORD_TYPE_NON_TIMESTAMPED_OEM_MIN 0xE0
#define IPMI_SEL_RECORD_TYPE_NON_TIMESTAMPED_OEM_MAX 0xFF
#define IPMI_SEL_RECORD_TYPE_IS_EVENT(__record_type) \
(((__record_type) == IPMI_SEL_RECORD_TYPE_SYSTEM_EVENT_RECORD) ? 1 : 0)
#define IPMI_SEL_RECORD_TYPE_IS_TIMESTAMPED_OEM(__record_type) \
(((__record_type) >= IPMI_SEL_RECORD_TYPE_TIMESTAMPED_OEM_MIN \
&& (__record_type) <= IPMI_SEL_RECORD_TYPE_TIMESTAMPED_OEM_MAX) ? 1 : 0)
/* To avoid gcc warnings, subtract -1 in comparison */
#define IPMI_SEL_RECORD_TYPE_IS_NON_TIMESTAMPED_OEM(__record_type) \
(((__record_type) >= IPMI_SEL_RECORD_TYPE_NON_TIMESTAMPED_OEM_MIN \
&& (((__record_type) - 1) <= (IPMI_SEL_RECORD_TYPE_NON_TIMESTAMPED_OEM_MAX - 1))) ? 1 : 0)
#define IPMI_SEL_RECORD_TYPE_VALID(__record_type) \
((IPMI_SEL_RECORD_TYPE_IS_EVENT((__record_type)) \
|| IPMI_SEL_RECORD_TYPE_IS_TIMESTAMPED_OEM((__record_type)) \
|| IPMI_SEL_RECORD_TYPE_IS_NON_TIMESTAMPED_OEM((__record_type))) ? 1 : 0)
#define IPMI_SEL_RECORD_ASSERTION_EVENT 0x0
#define IPMI_SEL_RECORD_DEASSERTION_EVENT 0x1
#define IPMI_SEL_RECORD_EVENT_DIRECTION_VALID(__event_direction) \
(((__event_direction) == IPMI_SEL_RECORD_ASSERTION_EVENT \
|| (__event_direction) == IPMI_SEL_RECORD_DEASSERTION_EVENT) ? 1 : 0)
/* Refer to Table 29-6 */
#define IPMI_SEL_EVENT_DATA_UNSPECIFIED_BYTE 0x0
#define IPMI_SEL_EVENT_DATA_TRIGGER_READING 0x1
#define IPMI_SEL_EVENT_DATA_TRIGGER_THRESHOLD_VALUE 0x1
#define IPMI_SEL_EVENT_DATA_PREVIOUS_STATE_OR_SEVERITY 0x1
#define IPMI_SEL_EVENT_DATA_OEM_CODE 0x2
#define IPMI_SEL_EVENT_DATA_SENSOR_SPECIFIC_EVENT_EXTENSION_CODE 0x3
#define IPMI_SEL_RECORD_UNSPECIFIED_EVENT 0xFF
#define IPMI_SEL_RECORD_UNSPECIFIED_OFFSET 0x0F
#define IPMI_SEL_RECORD_MAX_RECORD_LENGTH 16
/*
* see freeipmi/templates/ for template definitions
*/
extern fiid_template_t tmpl_sel_record_header;
extern fiid_template_t tmpl_sel_system_event_record;
extern fiid_template_t tmpl_sel_system_event_record_event_fields;
extern fiid_template_t tmpl_sel_system_event_record_discrete_previous_state_severity;
extern fiid_template_t tmpl_sel_timestamped_oem_record;
extern fiid_template_t tmpl_sel_non_timestamped_oem_record;
extern fiid_template_t tmpl_threshold_event_data;
extern fiid_template_t tmpl_discrete_event_data;
extern fiid_template_t tmpl_oem_event_data;
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SEL_RECORD_FORMAT_H */

View File

@ -0,0 +1,43 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_FRU_OEM_WISTRON_RECORD_FORMAT_H
#define IPMI_FRU_OEM_WISTRON_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
/*
* see freeipmi/templates/ for template definitions
*/
/*
* Wistron / Dell Poweredge C6220
*/
/* achu: not official names, named based on use context */
#define IPMI_FRU_OEM_WISTRON_PROPRIETARY_STRING 0xC0
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_OEM_WISTRON_RECORD_FORMAT_H */

View File

@ -0,0 +1,58 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SDR_OEM_INTEL_NODE_MANAGER_RECORD_FORMAT_H
#define IPMI_SDR_OEM_INTEL_NODE_MANAGER_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
/*
* see freeipmi/templates/ for template definitions
*/
/*
* Intel Node Manager
*
* For Intel Chips, not just Intel Motherboards. Confirmed for:
*
* Intel S5500WB/Penguin Computing Relion 700
* Intel S2600JF/Appro 512X
* Intel S2600KP
* Intel S2600WT2
* Intel S2600WTT
* Inventec 5441/Dell Xanadu II
* Inventec 5442/Dell Xanadu III
* Quanta S99Q/Dell FS12-TY
* Quanta QSSC-S4R/Appro GB812X-CN
*/
#define IPMI_SDR_OEM_INTEL_NODE_MANAGER_RECORD_SUBTYPE_NM_DISCOVERY 0x0D
#define IPMI_SDR_OEM_INTEL_NODE_MANAGER_DISCOVERY_VERSION 0x01
extern fiid_template_t tmpl_sdr_oem_intel_node_manager_record;
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_OEM_INTEL_NODE_MANAGER_RECORD_FORMAT_H */

View File

@ -0,0 +1,121 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SDR_OEM_INTEL_RECORD_FORMAT_H
#define IPMI_SDR_OEM_INTEL_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* see freeipmi/templates/ for template definitions
*/
/*
* Quanta QSSC-S4R/Appro GB812X-CN
* (Quanta motherboard contains Intel manufacturer ID)
*/
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_OEM_DATA_LENGTH 11
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_SUBTYPE_INDEX 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_SUBTYPE 0x0B
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_MEMORY_THROTTLING_MODE_INDEX 1
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_MEMORY_THROTTLING_MODE_BITMASK 0x03
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_MEMORY_THROTTLING_MODE_SHIFT 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_MEMORY_THROTTLING_MODE_NONE_SUPPORTED 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_MEMORY_THROTTLING_MODE_OPEN_LOOP_THROUGHPUT_THROTTLING 1
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_MEMORY_THROTTLING_MODE_CLOSE_LOOP_THERMAL_THROTTLING 2
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE_INDEX 2
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE0_BITMASK 0x01
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE0_SHIFT 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE1_BITMASK 0x02
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE1_SHIFT 1
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE2_BITMASK 0x04
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE2_SHIFT 2
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE3_BITMASK 0x08
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE3_SHIFT 3
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE4_BITMASK 0x10
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE4_SHIFT 4
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE5_BITMASK 0x20
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE5_SHIFT 5
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE6_BITMASK 0x40
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE6_SHIFT 6
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE7_BITMASK 0x80
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE7_SHIFT 7
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE_VALID 1
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_FAN_PROFILE_INVALID 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_TEMPINLET_INDEX 3
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_TEMPRISE_INDEX 4
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_AIRFLOW_INDEX_START 5
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_AIRFLOW_INDEX_END 6
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_DIMMPITCH_INDEX_START 7
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_DIMMPITCH_INDEX_END 8
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THROTTLE_MODE_INDEX 9
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THROTTLE_MODE_BITMASK 0x03
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THROTTLE_MODE_SHIFT 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THROTTLE_MODE_DISABLED 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THROTTLE_MODE_VTS_ONLY 1
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THROTTLE_MODE_SOFTWARE_MODE 2
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THROTTLE_MODE_EXTTS_CLTT 3
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THERMAL_REGISTER_LOCK_INDEX 10
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THERMAL_REGISTER_LOCK_BITMASK 0x01
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_THERMAL_REGISTER_LOCK_SHIFT 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_HYSTERESIS_INDEX 10
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_HYSTERESIS_BITMASK 0x06
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_HYSTERESIS_SHIFT 1
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_HYSTERESIS_DISABLE 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_HYSTERESIS_1_5C 1
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_HYSTERESIS_3C 2
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_HYSTERESIS_6C 3
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_CONTROL_EVENT_MODE_INDEX 10
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_CONTROL_EVENT_MODE_BITMASK 0x04
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_CONTROL_EVENT_MODE_SHIFT 3
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_CONTROL_EVENT_MODE_ASSERT_NOT_ONLY_CRITICAL 0
#define IPMI_SDR_OEM_INTEL_QUANTA_QSSC_S4R_THERMAL_PROFILE_DATA_RECORD_CONTROL_EVENT_MODE_ASSERT_ONLY_CRITICAL 1
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_OEM_INTEL_RECORD_FORMAT_H */

View File

@ -0,0 +1,86 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SEL_OEM_INTEL_RECORD_FORMAT_H
#define IPMI_SEL_OEM_INTEL_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* Intel Windmill
* (Quanta Winterfell)
* (Wiwynn Windmill)
*/
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_ID_INDEX_LSB_INDEX 10
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_ID_INDEX_MSB_INDEX 11
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_INDEX_LSB_INDEX 12
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_INDEX_MSB_INDEX 13
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_DEVICE_0_IN_DMI_MODE 0x3C00
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_DMI_PORT_IN_PCIE_MODE 0x3C01
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_1A 0x3C02
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_1B 0x3C03
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_2A 0x3C04
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_2B 0x3C05
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_2C 0x3C06
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_2D 0x3C07
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_3A_IN_PCIE_MODE 0x3C08
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_3B 0x3C09
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_3C 0x3C0A
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_PORT_3D 0x3C0B
#define IPMI_SEL_OEM_INTEL_WINDMILL_DEVICE_IDENTIFICATION_NUMBER_IIO_NTB_SECONDARY_ENDPOINT 0x3C0F
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_INDEX_LSB_INDEX 14
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_INDEX_MSB_INDEX 15
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVER_ERROR 0x70
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_BAD_TLP 0x71
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_BAD_DLLP 0x72
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_REPLAY_TIMEOUT 0x73
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_REPLAY_NUMBER_ROLLOVER 0x74
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_ADVISORY_NON_FATAL_ERROR 0x78
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_ERR_COR_MESSAGE_FROM_DOWNSTREAM_DEVICE 0x75
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_PCI_EXPRESS_LINK_BANDWIDTH_CHANGED 0x76
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_UNSUPPORTED_REQUEST_COMPLETION_STATUS_FROM_DOWNSTREAM_DEVICE 0x80
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_SENT_A_PCI_EXPRESS_UNSUPPORTED_REQUEST_RESPOND_ON_INBOUND_REQUEST 0x81
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_COMPLETER_ABORT_COMPLETION_STATUS_FROM_DOWNSTREAM_DEVICE 0x82
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_SENT_A_PCI_EXPRESS_COMPLETER_ABORT_CONDITION_ON_INBOUND_REQUEST 0x83
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_COMPLETION_TIMEOUT_ON_NP_TRANSACTION_OUTSTANDING_ON_PCI_EXPRESS_DMI 0x84
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_PCI_EXPRESS_POISONED_TLP 0x85
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_PCI_EXPRESS_UNEXPECTED_COMPLETION 0x86
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_PCI_EXPRESS_FLOW_CONTROL_PROTOCOL_ERROR 0x87
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_ERR_NONFATAL_MESSAGE_FROM_DOWNSTREAM_DEVICE 0x88
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_A_REQUEST_FROM_A_DOWNSTREAM_COMPONENT_THAT_IS_UNSUPPORTED 0x89
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_A_REQUEST_FROM_A_DOWNSTREAM_COMPONENT_THAT_IS_TO_BE_COMPLETER_ABORTED 0x8A
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_ACS_VIOLATION 0x8B
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_PCI_EXPRESS_MALFORMED_TLP 0x90
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_PCI_EXPRESS_DATA_LINK_PROTOCOL_ERROR 0x91
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_PCI_EXPRESS_RECEIVER_OVERFLOW 0x92
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_SURPRISE_DOWN 0x93
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_RECEIVED_ERR_FATAL_MESSAGE_FROM_DOWNSTREAM_DEVICE 0x94
#define IPMI_SEL_OEM_INTEL_WINDMILL_ERROR_CODE_OUTBOUND_SWITCH_HEADER_QUEUE_PARITY_ERROR 0x97
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SEL_OEM_INTEL_RECORD_FORMAT_H */

View File

@ -0,0 +1,32 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SEL_OEM_LINUX_KERNEL_RECORD_FORMAT_H
#define IPMI_SEL_OEM_LINUX_KERNEL_RECORD_FORMAT_H
#ifdef __cplusplus
extern "C" {
#endif
#define IPMI_SEL_RECORD_TYPE_NON_TIMESTAMPED_OEM_LINUX_KERNEL_PANIC 0xF0
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SEL_OEM_LINUX_KERNEL_RECORD_FORMAT_H */

View File

@ -0,0 +1,34 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SDR_OEM_H
#define IPMI_SDR_OEM_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-sdr-oem.h header file is deprecated
#include <freeipmi/sdr/oem/ipmi-sdr-oem-intel-node-manager.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_OEM_H */

View File

@ -0,0 +1,646 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
* Copyright (C) 2006-2007 The Regents of the University of California.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* UCRL-CODE-222073
*
* This file is part of Ipmimonitoring, an IPMI sensor monitoring
* library. For details, see http://www.llnl.gov/linux/.
*
* Ipmimonitoring is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmimonitoring is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmimonitoring. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_SDR_H
#define IPMI_SDR_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#define IPMI_SDR_ERR_SUCCESS 0
#define IPMI_SDR_ERR_CONTEXT_NULL 1
#define IPMI_SDR_ERR_CONTEXT_INVALID 2
#define IPMI_SDR_ERR_PARAMETERS 3
#define IPMI_SDR_ERR_OUT_OF_MEMORY 4
#define IPMI_SDR_ERR_FILENAME_INVALID 5
#define IPMI_SDR_ERR_FILESYSTEM 6
#define IPMI_SDR_ERR_PERMISSION 7
#define IPMI_SDR_ERR_CONTEXT_PERFORMING_OTHER_OPERATION 8
#define IPMI_SDR_ERR_CACHE_CREATE_CACHE_EXISTS 9
#define IPMI_SDR_ERR_CACHE_CREATE_DUPLICATE_RECORD_ID 10
#define IPMI_SDR_ERR_CACHE_CREATE_INVALID_RECORD_LENGTH 11
#define IPMI_SDR_ERR_CACHE_CREATE_INVALID_RECORD_COUNT 12
#define IPMI_SDR_ERR_CACHE_READ_ALREADY_INITIALIZED 13
#define IPMI_SDR_ERR_CACHE_READ_INITIALIZATION 14
#define IPMI_SDR_ERR_CACHE_READ_CACHE_DOES_NOT_EXIST 15
#define IPMI_SDR_ERR_CACHE_INVALID 16
#define IPMI_SDR_ERR_CACHE_OUT_OF_DATE 17
#define IPMI_SDR_ERR_STATS_NOT_COMPILED 18
#define IPMI_SDR_ERR_PARSE_INVALID_SDR_RECORD 19
#define IPMI_SDR_ERR_PARSE_INCOMPLETE_SDR_RECORD 20
#define IPMI_SDR_ERR_PARSE_CANNOT_PARSE_OR_CALCULATE 21
#define IPMI_SDR_ERR_ERROR_RETURNED_IN_CALLBACK 22
#define IPMI_SDR_ERR_NOT_FOUND 23
#define IPMI_SDR_ERR_IPMI_ERROR 24
#define IPMI_SDR_ERR_SYSTEM_ERROR 25
#define IPMI_SDR_ERR_OVERFLOW 26
#define IPMI_SDR_ERR_INTERNAL_ERROR 27
#define IPMI_SDR_ERR_ERRNUMRANGE 28
#define IPMI_SDR_FLAGS_DEFAULT 0x0000
#define IPMI_SDR_FLAGS_DEBUG_DUMP 0x0001
/* Flags just for cache creation
*
* OVERWRITE - overwrite any previously created cache.
*
* DUPLICATE_RECORD_ID - check for duplicate record IDs and return error if one is found.
*
* ASSUME_MAX_SDR_RECORD_COUNT - If motherboard does not implement SDR
* record reading properly, this workaround will allow code to not
* fail out.
*/
#define IPMI_SDR_CACHE_CREATE_FLAGS_DEFAULT 0x00
#define IPMI_SDR_CACHE_CREATE_FLAGS_OVERWRITE 0x01
#define IPMI_SDR_CACHE_CREATE_FLAGS_DUPLICATE_RECORD_ID 0x02
#define IPMI_SDR_CACHE_CREATE_FLAGS_ASSUME_MAX_SDR_RECORD_COUNT 0x04
#define IPMI_SDR_SENSOR_NAME_FLAGS_DEFAULT 0x00000000
#define IPMI_SDR_SENSOR_NAME_FLAGS_IGNORE_SHARED_SENSORS 0x00000001
/* applicable only to entity sensor names */
#define IPMI_SDR_SENSOR_NAME_FLAGS_ALWAYS_OUTPUT_INSTANCE_NUMBER 0x00000002
#define IPMI_SDR_MAX_RECORD_LENGTH 261 /* 256 + header */
#define IPMI_SDR_MAX_SENSOR_NAME_LENGTH 128
typedef struct ipmi_sdr_ctx *ipmi_sdr_ctx_t;
typedef void (*Ipmi_Sdr_Cache_Create_Callback)(uint8_t sdr_version,
uint16_t record_count,
uint32_t most_recent_addition_timestamp,
uint32_t most_recent_erase_timestamp,
uint16_t record_id,
void *data);
/* return != 0 to quit iteration, return val will be returned up
* through original caller. return < 0 will result in
* IPMI_SDR_ERR_ERROR_RETURNED_IN_CALLBACK to bet set.
*
* Users should be mindful of the API calls they make will in a
* callback. Calls to some functions, such as ipmi_sdr_cache_first()
* may change iteration behavior.
*/
typedef int (*Ipmi_Sdr_Cache_Iterate_Callback)(ipmi_sdr_ctx_t ctx,
uint8_t record_type,
const void *sdr_record,
unsigned int sdr_record_len,
void *data);
/*
* SDR Cache Context and General functions
*/
ipmi_sdr_ctx_t ipmi_sdr_ctx_create (void);
void ipmi_sdr_ctx_destroy (ipmi_sdr_ctx_t ctx);
int ipmi_sdr_ctx_errnum (ipmi_sdr_ctx_t ctx);
char * ipmi_sdr_ctx_strerror (int errnum);
char * ipmi_sdr_ctx_errormsg (ipmi_sdr_ctx_t ctx);
int ipmi_sdr_ctx_get_flags (ipmi_sdr_ctx_t ctx, unsigned int *flags);
int ipmi_sdr_ctx_set_flags (ipmi_sdr_ctx_t ctx, unsigned int flags);
char *ipmi_sdr_ctx_get_debug_prefix (ipmi_sdr_ctx_t ctx);
int ipmi_sdr_ctx_set_debug_prefix (ipmi_sdr_ctx_t ctx, const char *debug_prefix);
/*
* SDR Cache Creation Functions
*/
/* ipmi_sdr_cache_create
* - callback called between every record that is cached
*/
int ipmi_sdr_cache_create (ipmi_sdr_ctx_t ctx,
ipmi_ctx_t ipmi_ctx,
const char *filename,
int cache_create_flags,
Ipmi_Sdr_Cache_Create_Callback create_callback,
void *create_callback_data);
/*
* SDR Cache Reading Functions
*/
/* ipmi_sdr_cache_open
* - ipmi_ctx is optional
* - if ipmi_ctx is specified, timestamps/version of the SDR will be
* checked for out-of-dateness
*/
int ipmi_sdr_cache_open (ipmi_sdr_ctx_t ctx,
ipmi_ctx_t ipmi_ctx,
const char *filename);
int ipmi_sdr_cache_sdr_version (ipmi_sdr_ctx_t ctx, uint8_t *sdr_version);
int ipmi_sdr_cache_record_count (ipmi_sdr_ctx_t ctx, uint16_t *record_count);
int ipmi_sdr_cache_most_recent_addition_timestamp (ipmi_sdr_ctx_t ctx,
uint32_t *most_recent_addition_timestamp);
int ipmi_sdr_cache_most_recent_erase_timestamp (ipmi_sdr_ctx_t ctx,
uint32_t *most_recent_erase_timestamp);
int ipmi_sdr_cache_first (ipmi_sdr_ctx_t ctx);
int ipmi_sdr_cache_next (ipmi_sdr_ctx_t ctx);
int ipmi_sdr_cache_seek (ipmi_sdr_ctx_t ctx, unsigned int index);
int ipmi_sdr_cache_search_record_id (ipmi_sdr_ctx_t ctx, uint16_t record_id);
/* sensor owner id is 8bit field - 7 bit slave or system software id + 1 bit indicating type */
int ipmi_sdr_cache_search_sensor (ipmi_sdr_ctx_t ctx, uint8_t sensor_number, uint8_t sensor_owner_id);
/* return length of data read into buffer on success, -1 on error */
int ipmi_sdr_cache_record_read (ipmi_sdr_ctx_t ctx,
void *buf,
unsigned int buflen);
/* ipmi_sdr_cache_iterate
* - iterate through all SDR records calling callback for each one.
* - if callback returns < 0, that will break iteration and return
* value is returned here.
*/
int ipmi_sdr_cache_iterate (ipmi_sdr_ctx_t ctx,
Ipmi_Sdr_Cache_Iterate_Callback iterate_callback,
void *iterate_callback_data);
int ipmi_sdr_cache_close (ipmi_sdr_ctx_t ctx);
/*
* SDR stats functions
*
* After opening an SDR cache (i.e. ipmi_sdr_cache_open() has been
* called), loop through the cache and compile data on the cache for
* a variety of utility functions.
*/
int ipmi_sdr_stats_compile (ipmi_sdr_ctx_t ctx);
/* returns the number of unique entity instances for an entity id found
* in the SDR
*/
int ipmi_sdr_stats_entity_instance_unique (ipmi_sdr_ctx_t ctx, uint8_t entity_id);
/*
* SDR Record Parsing Functions
*
* For all parsing functions, if currently reading the SDR cache
* (i.e. ipmi_sdr_cache_open() has been called), if sdr_record is NULL
* and sdr_record_len is 0, the current sdr record in the iterator
* will be used in parsing.
*
* See ipmi-sdr-oem.h for parsing OEM records.
*/
/* For all SDR records */
int ipmi_sdr_parse_record_id_and_type (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint16_t *record_id,
uint8_t *record_type);
/* For Full, Compact, Event SDR records */
int ipmi_sdr_parse_sensor_owner_id (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *sensor_owner_id_type,
uint8_t *sensor_owner_id);
/* For Full, Compact, Event SDR records */
int ipmi_sdr_parse_sensor_owner_lun (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *sensor_owner_lun,
uint8_t *channel_number);
/* For Full, Compact, Event SDR records */
int ipmi_sdr_parse_sensor_number (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *sensor_number);
/* For Full, Compact, Event SDR, Generic Device Locator, Management Controller Device Locator SDR records */
int ipmi_sdr_parse_entity_id_instance_type (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *entity_id,
uint8_t *entity_instance,
uint8_t *entity_instance_type);
/* For Full, Compact, Event SDR records */
int ipmi_sdr_parse_sensor_type (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *sensor_type);
/* For Full, Compact, Event SDR records */
int ipmi_sdr_parse_event_reading_type_code (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *event_reading_type_code);
/* For Full, Compact, Event SDR records */
/* return length of data read into buffer on success, -1 on error */
int ipmi_sdr_parse_id_string (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
char *id_string,
unsigned int id_string_len);
/* For Full, Compact SDR records */
int ipmi_sdr_parse_sensor_units (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *sensor_units_percentage,
uint8_t *sensor_units_modifier,
uint8_t *sensor_units_rate,
uint8_t *sensor_base_unit_type,
uint8_t *sensor_modifier_unit_type);
/* For Full, Compact SDR records */
int ipmi_sdr_parse_sensor_capabilities (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *event_message_control_support,
uint8_t *threshold_access_support,
uint8_t *hysteresis_support,
uint8_t *auto_re_arm_support,
uint8_t *entity_ignore_support);
/* For Full, Compact SDR records */
int ipmi_sdr_parse_sensor_direction (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *sensor_direction);
/* For Full, Compact SDR records */
/* event reading type must indicate a discrete sensor */
int ipmi_sdr_parse_assertion_supported (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *event_state_0,
uint8_t *event_state_1,
uint8_t *event_state_2,
uint8_t *event_state_3,
uint8_t *event_state_4,
uint8_t *event_state_5,
uint8_t *event_state_6,
uint8_t *event_state_7,
uint8_t *event_state_8,
uint8_t *event_state_9,
uint8_t *event_state_10,
uint8_t *event_state_11,
uint8_t *event_state_12,
uint8_t *event_state_13,
uint8_t *event_state_14);
/* For Full, Compact SDR records */
/* event reading type must indicate a discrete sensor */
int ipmi_sdr_parse_deassertion_supported (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *event_state_0,
uint8_t *event_state_1,
uint8_t *event_state_2,
uint8_t *event_state_3,
uint8_t *event_state_4,
uint8_t *event_state_5,
uint8_t *event_state_6,
uint8_t *event_state_7,
uint8_t *event_state_8,
uint8_t *event_state_9,
uint8_t *event_state_10,
uint8_t *event_state_11,
uint8_t *event_state_12,
uint8_t *event_state_13,
uint8_t *event_state_14);
/* For Full SDR records */
/* event reading type must indicate a threshold sensor */
int ipmi_sdr_parse_threshold_assertion_supported (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *lower_non_critical_going_low,
uint8_t *lower_non_critical_going_high,
uint8_t *lower_critical_going_low,
uint8_t *lower_critical_going_high,
uint8_t *lower_non_recoverable_going_low,
uint8_t *lower_non_recoverable_going_high,
uint8_t *upper_non_critical_going_low,
uint8_t *upper_non_critical_going_high,
uint8_t *upper_critical_going_low,
uint8_t *upper_critical_going_high,
uint8_t *upper_non_recoverable_going_low,
uint8_t *upper_non_recoverable_going_high);
/* For Full SDR records */
/* event reading type must indicate a threshold sensor */
int ipmi_sdr_parse_threshold_deassertion_supported (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *lower_non_critical_going_low,
uint8_t *lower_non_critical_going_high,
uint8_t *lower_critical_going_low,
uint8_t *lower_critical_going_high,
uint8_t *lower_non_recoverable_going_low,
uint8_t *lower_non_recoverable_going_high,
uint8_t *upper_non_critical_going_low,
uint8_t *upper_non_critical_going_high,
uint8_t *upper_critical_going_low,
uint8_t *upper_critical_going_high,
uint8_t *upper_non_recoverable_going_low,
uint8_t *upper_non_recoverable_going_high);
/* For Full SDR records */
/* event reading type must indicate a threshold sensor */
int ipmi_sdr_parse_threshold_readable (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *lower_non_critical_threshold,
uint8_t *lower_critical_threshold,
uint8_t *lower_non_recoverable_threshold,
uint8_t *upper_non_critical_threshold,
uint8_t *upper_critical_threshold,
uint8_t *upper_non_recoverable_threshold);
/* For Full SDR records */
/* event reading type must indicate a threshold sensor */
int ipmi_sdr_parse_threshold_settable (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *lower_non_critical_threshold,
uint8_t *lower_critical_threshold,
uint8_t *lower_non_recoverable_threshold,
uint8_t *upper_non_critical_threshold,
uint8_t *upper_critical_threshold,
uint8_t *upper_non_recoverable_threshold);
/* For Full SDR records */
/* b_exponent - sometimes documented as k1 */
/* r_exponent - sometimes documented as k2 */
int ipmi_sdr_parse_sensor_decoding_data (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
int8_t *r_exponent,
int8_t *b_exponent,
int16_t *m,
int16_t *b,
uint8_t *linearization,
uint8_t *analog_data_format);
/* For Full SDR records */
int ipmi_sdr_parse_sensor_reading_ranges_specified (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *nominal_reading_specified,
uint8_t *normal_maximum_specified,
uint8_t *normal_minimum_specified);
/* For Full SDR records */
/* Results must be freed by user */
int ipmi_sdr_parse_sensor_reading_ranges (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
double **nominal_reading,
double **normal_maximum,
double **normal_minimum,
double **sensor_maximum_reading,
double **sensor_minimum_reading);
/* For Full SDR records */
/* Results must be freed by user */
int ipmi_sdr_parse_thresholds (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
double **lower_non_critical_threshold,
double **lower_critical_threshold,
double **lower_non_recoverable_threshold,
double **upper_non_critical_threshold,
double **upper_critical_threshold,
double **upper_non_recoverable_threshold);
/* For Full SDR records */
int ipmi_sdr_parse_thresholds_raw (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *lower_non_critical_threshold,
uint8_t *lower_critical_threshold,
uint8_t *lower_non_recoverable_threshold,
uint8_t *upper_non_critical_threshold,
uint8_t *upper_critical_threshold,
uint8_t *upper_non_recoverable_threshold);
/* For Full SDR records */
/* Results must be freed by user */
int ipmi_sdr_parse_tolerance (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
double **tolerance);
/* For Full SDR records */
/* Result returned is in percentage */
/* Results must be freed by user */
int ipmi_sdr_parse_accuracy (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
double **tolerance);
/* For Full SDR records */
int ipmi_sdr_parse_hysteresis (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *positive_going_threshold_hysteresis,
uint8_t *negative_going_threshold_hysteresis);
/* For Compact SDR records */
int ipmi_sdr_parse_sensor_record_sharing (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *share_count,
uint8_t *id_string_instance_modifier_type,
uint8_t *id_string_instance_modifier_offset,
uint8_t *entity_instance_sharing);
/* For Entity Association, Device Relative Entity Association SDR
records */
int ipmi_sdr_parse_container_entity (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *container_entity_id,
uint8_t *container_entity_instance);
/* For Generic Device Locator, FRU Device Locator, Management
Controller Device Locator SDR records */
/* return length of data read into buffer on success, -1 on error */
int ipmi_sdr_parse_device_id_string (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
char *device_id_string,
unsigned int device_id_string_len);
/* For Generic Device Locator, FRU Device Locator SDR records */
int ipmi_sdr_parse_device_type (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *device_type,
uint8_t *device_type_modifier);
/* For Generic Device Locator SDR records */
int ipmi_sdr_parse_generic_device_locator_parameters (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *device_access_address,
uint8_t *channel_number,
uint8_t *device_slave_address,
uint8_t *private_bus_id,
uint8_t *lun_for_master_write_read_command,
uint8_t *address_span,
uint8_t *oem);
/* For FRU Device Locator SDR records */
int ipmi_sdr_parse_fru_device_locator_parameters (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *device_access_address,
uint8_t *logical_fru_device_device_slave_address,
uint8_t *private_bus_id,
uint8_t *lun_for_master_write_read_fru_command,
uint8_t *logical_physical_fru_device,
uint8_t *channel_number);
/* For FRU Device Locator SDR records */
int ipmi_sdr_parse_fru_entity_id_and_instance (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *fru_entity_id,
uint8_t *fru_entity_instance);
/* For Management Controller Device Locator SDR records */
int ipmi_sdr_parse_management_controller_device_locator_parameters (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *device_slave_address,
uint8_t *channel_number,
uint8_t *global_initialization_event_message_generation,
uint8_t *global_initialization_log_initialization_agent_errors,
uint8_t *global_initialization_controller_logs_initialization_agent_errors,
uint8_t *power_state_notification_controller,
uint8_t *power_state_notification_acpi_device_power_state_notification,
uint8_t *power_state_notification_acpi_system_power_state_notification,
uint8_t *device_capabilities_sensor_device,
uint8_t *device_capabilities_sdr_repository_device,
uint8_t *device_capabilities_sel_device,
uint8_t *device_capabilities_fru_inventory_device,
uint8_t *device_capabilities_ipmb_event_receiver,
uint8_t *device_capabilities_ipmb_event_generator,
uint8_t *device_capabilities_bridge,
uint8_t *device_capabilities_chassis_device);
/* For Management Controller Confirmation, OEM SDR records */
int ipmi_sdr_parse_manufacturer_id (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint32_t *manufacturer_id);
/* For Management Controller Confirmation SDR records */
int ipmi_sdr_parse_product_id (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint16_t *product_id);
/* For OEM SDR records */
/* return length of data read into buffer on success, -1 on error */
int ipmi_sdr_parse_oem_data (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
void *oem_data,
unsigned int oem_data_len);
/*
* SDR Cache Utility Functions
*/
int ipmi_sdr_cache_delete (ipmi_sdr_ctx_t ctx, const char *filename);
/* ipmi_sensor_parse_sensor_name_string
* - Wrapper that will return id_string or device_id_string dependent
* on SDR type.
* - Based on flags, will deal with shared sensors and alter sensor
* name if necessary.
* - if sdr_record is NULL and sdr_record_len is 0, the current sdr
* record in the iterator will be used in parsing.
*/
/* For Full, Compact, Event, Generic Device Locator, FRU Device
* Locator, and Management Controller Device Locator SDR records
*/
/* returns length written into buffer on success, -1 on error */
int ipmi_sdr_parse_sensor_name (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t sensor_number,
unsigned int flags,
char *buf,
unsigned int buflen);
/* ipmi_sensor_parse_entity_sensor_name
* - Creates sensor names with the entity id and instance for better
* names on some systems.
* - For example, on some systems sensor ID strings are all called
* "Temp". The entity ID and instance are needed to turn the name
* into "Processor 1 Temp" or "Processor 2 Temp".
* - Based on flags, will deal with shared sensors and alter sensor
* name if necessary.
* - if sdr_record is NULL and sdr_record_len is 0, the current sdr
* record in the iterator will be used in parsing.
*/
/* For Full, Compact, Event, Generic Device Locator, and Management
* Controller Device Locator SDR records
*/
/* returns length written into buffer on success, -1 on error */
int ipmi_sdr_parse_entity_sensor_name (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t sensor_number,
unsigned int flags,
char *buf,
unsigned int buflen);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_H */

View File

@ -0,0 +1,61 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SDR_INTEL_NODE_MANAGER_OEM_H
#define IPMI_SDR_INTEL_NODE_MANAGER_OEM_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* Intel Node Manager
*
* For Intel Chips, not just Intel Motherboards. Confirmed for:
*
* Intel S5500WB/Penguin Computing Relion 700
* Intel S2600JF/Appro 512X
* Intel S2600KP
* Intel S2600WT2
* Intel S2600WTT
* Inventec 5441/Dell Xanadu II
* Inventec 5442/Dell Xanadu III
* Quanta S99Q/Dell FS12-TY
* Quanta QSSC-S4R/Appro GB812X-CN
*/
/* return (1) - is oem intel node manager, fully parsed
* return (0) - is not oem intel node manager
* return (-1) - error
*/
int ipmi_sdr_oem_parse_intel_node_manager (ipmi_sdr_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t *nm_device_slave_address,
uint8_t *sensor_owner_lun,
uint8_t *channel_number,
uint8_t *nm_health_event_sensor_number,
uint8_t *nm_exception_event_sensor_number,
uint8_t *nm_operational_capabilities_sensor_number,
uint8_t *nm_alert_threshold_exceeded_sensor_number);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SDR_INTEL_NODE_MANAGER_OEM_H */

View File

@ -0,0 +1,479 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SEL_H
#define IPMI_SEL_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/cmds/ipmi-sel-cmds.h>
#include <freeipmi/interpret/ipmi-interpret.h>
#include <freeipmi/sdr/ipmi-sdr.h>
#define IPMI_SEL_ERR_SUCCESS 0
#define IPMI_SEL_ERR_CONTEXT_NULL 1
#define IPMI_SEL_ERR_CONTEXT_INVALID 2
#define IPMI_SEL_ERR_PARAMETERS 3
#define IPMI_SEL_ERR_OUT_OF_MEMORY 4
#define IPMI_SEL_ERR_SDR_CACHE_ERROR 5
#define IPMI_SEL_ERR_SEL_ENTRIES_NOT_LOADED 6
#define IPMI_SEL_ERR_NO_SEL_ENTRIES 7
#define IPMI_SEL_ERR_SEL_ENTRIES_LIST_END 8
#define IPMI_SEL_ERR_INVALID_SEL_ENTRY 9
#define IPMI_SEL_ERR_NOT_FOUND 10
#define IPMI_SEL_ERR_RESERVATION_CANCELED 11
#define IPMI_SEL_ERR_INTERPRET_ERROR 12
#define IPMI_SEL_ERR_CALLBACK_ERROR 13
#define IPMI_SEL_ERR_IPMI_ERROR 14
#define IPMI_SEL_ERR_SYSTEM_ERROR 15
#define IPMI_SEL_ERR_OVERFLOW 16
#define IPMI_SEL_ERR_INTERNAL_ERROR 17
#define IPMI_SEL_ERR_ERRNUMRANGE 18
#define IPMI_SEL_FLAGS_DEFAULT 0x0000
#define IPMI_SEL_FLAGS_DEBUG_DUMP 0x0001
#define IPMI_SEL_FLAGS_ASSUME_SYTEM_EVENT_RECORDS 0x0002
#define IPMI_SEL_PARAMETER_INTERPRET_CONTEXT 0x0001
#define IPMI_SEL_PARAMETER_UTC_OFFSET 0x0002
#define IPMI_SEL_STRING_FLAGS_DEFAULT 0x0000
#define IPMI_SEL_STRING_FLAGS_VERBOSE 0x0001
#define IPMI_SEL_STRING_FLAGS_IGNORE_UNAVAILABLE_FIELD 0x0002
#define IPMI_SEL_STRING_FLAGS_OUTPUT_NOT_AVAILABLE 0x0004
#define IPMI_SEL_STRING_FLAGS_DATE_USE_SLASH 0x0008
#define IPMI_SEL_STRING_FLAGS_DATE_MONTH_STRING 0x0010
#define IPMI_SEL_STRING_FLAGS_NON_ABBREVIATED_UNITS 0x0020
#define IPMI_SEL_STRING_FLAGS_ENTITY_SENSOR_NAMES 0x0040
#define IPMI_SEL_STRING_FLAGS_INTERPRET_OEM_DATA 0x0100
/* Timestamps are defined as localtime. If there are UTC and
* one wishes to output in localtime, this flag will do so.
*/
#define IPMI_SEL_STRING_FLAGS_UTC_TO_LOCALTIME 0x0200
/* Convert localtimes to UTC times, as it may be convenient
* for certain purposes.
*/
#define IPMI_SEL_STRING_FLAGS_LOCALTIME_TO_UTC 0x0400
#define IPMI_SEL_STRING_FLAGS_LEGACY 0x1000
#define IPMI_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD 0x0
#define IPMI_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD 0x1
#define IPMI_SEL_RECORD_TYPE_CLASS_NON_TIMESTAMPED_OEM_RECORD 0x2
#define IPMI_SEL_RECORD_TYPE_CLASS_UNKNOWN 0x3
#define IPMI_SEL_RECORD_ID_FIRST IPMI_SEL_GET_RECORD_ID_FIRST_ENTRY
#define IPMI_SEL_RECORD_ID_LAST IPMI_SEL_GET_RECORD_ID_LAST_ENTRY
typedef struct ipmi_sel_ctx *ipmi_sel_ctx_t;
typedef int (*Ipmi_Sel_Parse_Callback)(ipmi_sel_ctx_t ctx, void *callback_data);
/*
* SEL Context Functions
*/
/* ipmi_sel_ctx_create
* - if specified, ipmi_ctx must be open and ready to go
* - if NULL ipmi_ctx, SEL ctx cannot be used for SEL reading, only parsing records
* - if specified, sdr_ctx cache must be open and ready for reading
* - if NULL sdr_ctx, sdr won't be used
*/
ipmi_sel_ctx_t ipmi_sel_ctx_create (ipmi_ctx_t ipmi_ctx, ipmi_sdr_ctx_t sdr_ctx);
void ipmi_sel_ctx_destroy (ipmi_sel_ctx_t ctx);
int ipmi_sel_ctx_errnum (ipmi_sel_ctx_t ctx);
char * ipmi_sel_ctx_strerror (int errnum);
char * ipmi_sel_ctx_errormsg (ipmi_sel_ctx_t ctx);
/* SEL Parse flag functions and settings functions */
int ipmi_sel_ctx_get_flags (ipmi_sel_ctx_t ctx, unsigned int *flags);
int ipmi_sel_ctx_set_flags (ipmi_sel_ctx_t ctx, unsigned int flags);
/* for use w/ string parsing w/ IPMI_SEL_STRING_FLAGS_INTERPRET_OEM_DATA */
int ipmi_sel_ctx_get_manufacturer_id (ipmi_sel_ctx_t ctx, uint32_t *manufacturer_id);
int ipmi_sel_ctx_set_manufacturer_id (ipmi_sel_ctx_t ctx, uint32_t manufacturer_id);
int ipmi_sel_ctx_get_product_id (ipmi_sel_ctx_t ctx, uint16_t *product_id);
int ipmi_sel_ctx_set_product_id (ipmi_sel_ctx_t ctx, uint16_t product_id);
int ipmi_sel_ctx_get_ipmi_version (ipmi_sel_ctx_t ctx,
uint8_t *ipmi_version_major,
uint8_t *ipmi_vesion_minor);
int ipmi_sel_ctx_set_ipmi_version (ipmi_sel_ctx_t ctx,
uint8_t ipmi_version_major,
uint8_t ipmi_version_minor);
/* get/set parameters
*
* For misc uses.
*
* INTERPRET_CONTEXT - for use with %I - see below. interpret_ctx
* assumed loaded with whatever config desired for interpretation
*
* UTC_OFFSET - specific UTC offset to apply to timestamps (int)
*/
int ipmi_sel_ctx_get_parameter (ipmi_sel_ctx_t ctx,
unsigned int parameter,
void *ptr);
/* Pass NULL as ptr for default value */
int ipmi_sel_ctx_set_parameter (ipmi_sel_ctx_t ctx,
unsigned int parameter,
const void *ptr);
char *ipmi_sel_ctx_get_debug_prefix (ipmi_sel_ctx_t ctx);
int ipmi_sel_ctx_set_debug_prefix (ipmi_sel_ctx_t ctx, const char *debug_prefix);
/* determines separator between fields in string functions
*
* defaults to " | "
*/
char *ipmi_sel_ctx_get_separator (ipmi_sel_ctx_t ctx);
int ipmi_sel_ctx_set_separator (ipmi_sel_ctx_t ctx, const char *separator);
/* register/clear a reservation ID
* - Almost all SEL operations use a reservation ID. Generally
* speaking, it can be considered an advisory lock. The same
* reservation ID can be used for all "read" operations and will only
* be canceled when some "write" operation has occurred on the SEL.
* This "write" operation could be a new SEL event, a SEL event that
* was deleted, etc.
* - Normally, it is no big deal for a reservation ID to be canceled.
* The most normal circumstance is a new SEL event has been generated
* while reading the current list of SEL records. Therefore, under
* most circumstances, this library will simple re-retrieve a
* reservation ID once it has noticed one has been canceled.
* - These functions allow you to override the default functionality.
* You may inform the library to register a specific reservation ID
* and continue to use it for all SEL operations. In the event that
* it has been canceled, a IPMI_SEL_ERR_RESERVATION_CANCELED
* errnum will be returned.
* - These functions are predominantly useful for doing a set of
* operations and wanting to be informed of a possible race
* condition occurring. For example, perhaps you wish to read all
* the SEL records, log them, then clear them. There is a small
* window where a new SEL event could be generated, then cleared
* without the user knowing it ever existed. Use of a fixed
* reservation ID would be a mechanism to notice this.
* - In the event a reservation ID is canceled, it is up to the user
* to re-register a reservation ID, otherwise SEL operations will
* continue to default to grab its own reservation ID.
* - In ipmi_sel_ctx_register_reservation_id(), an optional
* reservation_id can be passed to see what reservation ID was
* specifically registered.
*/
int ipmi_sel_ctx_register_reservation_id (ipmi_sel_ctx_t ctx, uint16_t *reservation_id);
int ipmi_sel_ctx_clear_reservation_id (ipmi_sel_ctx_t ctx);
/*
* SEL Parse Functions
*/
/* ipmi_sel_parse and ipmi_sel_parse_record_ids
* - callback is called after each SEL entry is parsed
* - Returns the number of entries parsed
*/
int ipmi_sel_parse (ipmi_sel_ctx_t ctx,
uint16_t record_id_start,
uint16_t record_id_last,
Ipmi_Sel_Parse_Callback callback,
void *callback_data);
int ipmi_sel_parse_record_ids (ipmi_sel_ctx_t ctx,
uint16_t *record_ids,
unsigned int record_ids_len,
Ipmi_Sel_Parse_Callback callback,
void *callback_data);
/* SEL data retrieval functions after SEL is parsed
*
* seek_record_id moves the iterator to the closest record_id >= record_id
* search_record_id finds the record id, will return NOT_FOUND if it can't be found
*/
int ipmi_sel_parse_first (ipmi_sel_ctx_t ctx);
int ipmi_sel_parse_next (ipmi_sel_ctx_t ctx);
int ipmi_sel_parse_sel_entry_count (ipmi_sel_ctx_t ctx);
int ipmi_sel_parse_seek_record_id (ipmi_sel_ctx_t ctx, uint16_t record_id);
int ipmi_sel_parse_search_record_id (ipmi_sel_ctx_t ctx, uint16_t record_id);
/* return length of data read into buffer on success, -1 on error */
int ipmi_sel_parse_read_record (ipmi_sel_ctx_t ctx,
void *buf,
unsigned int buflen);
/* SEL record parsing functions
*
* - if a sel_record is passed in, that sel_record is used for
* reading/parsing
*
* - if the sel_record is NULL sel_record_len is 0, the current sel
* parsed after ipmi_sel_parse() or ipmi_sel_parse_record_ids() is
* used. It can be the record used within the iterator functions
* (i.e. ipmi_sel_parse_next()) or in callbacks.
*
* - will return IPMI_SEL_ERR_INVALID_SEL_ENTRY if current sel
* entry is not appropriate for data requested.
*/
/* record_id & record_type - works with all SEL record types */
int ipmi_sel_parse_read_record_id (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint16_t *record_id);
int ipmi_sel_parse_read_record_type (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *record_type);
/* timetamp - works with sel event and timestamped OEM record types */
int ipmi_sel_parse_read_timestamp (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint32_t *timestamp);
/* generator_id, event message format version, sensor type, sensor
* number, event direction, event type code, and event data available
* form system event record type
*/
int ipmi_sel_parse_read_generator_id (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *generator_id);
int ipmi_sel_parse_read_ipmb_device_lun (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *ipmb_device_lun);
int ipmi_sel_parse_read_channel_number (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *channel_number);
int ipmi_sel_parse_read_event_message_format_version (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_message_format_version);
int ipmi_sel_parse_read_sensor_type (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *sensor_type);
int ipmi_sel_parse_read_sensor_number (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *sensor_number);
int ipmi_sel_parse_read_event_direction (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_direction);
int ipmi_sel_parse_read_event_type_code (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_type_code);
int ipmi_sel_parse_read_event_data1 (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_data1);
int ipmi_sel_parse_read_event_data1_offset_from_event_reading_type_code (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_data1_offset);
int ipmi_sel_parse_read_event_data1_event_data2_flag (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_data2_flag);
int ipmi_sel_parse_read_event_data1_event_data3_flag (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_data3_flag);
int ipmi_sel_parse_read_event_data2 (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_data2);
int ipmi_sel_parse_read_event_data3 (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint8_t *event_data3);
/* manufacturer_id - works with sel timestamped OEM record types */
int ipmi_sel_parse_read_manufacturer_id (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
uint32_t *manufacturer_id);
/* oem - works with sel timestamped and non-timestamped OEM record types */
/* return length of data read into buffer on success, -1 on error */
int ipmi_sel_parse_read_oem (ipmi_sel_ctx_t ctx,
const void *sel_record,
unsigned int sel_record_len,
void *buf,
unsigned int buflen);
/*
* create a string output of the SEL entry.
*
* String format - availability for output dependent on SEL record
* type.
*
* Available in all SEL record types
*
* %i - record ID in decimal
* %I - event nominal vs. warning vs. critical interpretation [1]
*
* [1] - see libfreeipmi interpret library for information. See
* ipmi_sel_ctx_set_interpret_ctx(). If interpret context not
* available, returns INTERPRET_ERROR.
*
* Available in SEL event and timestamped OEM SEL records
*
* %t - time in format H:M:S using 24 hour clock
* %d - date in format D-M-YEAR
*
* Available in SEL event records
*
* %T - sensor type
* %s - sensor name
* %e - event data 1 string (usually offset from event/reading code type string)
* %f - event data 2 string [2]
* %h - event data 3 string
* %c - combined event data 2 and event data 3 string [3]
* %p - event data 2 previous state string [4]
* %S - event data 2 severity string [4]
* %E - combined event data 1, 2, and 3 string [5]
* %k - event direction
*
* [2] - if a previous state and a severity state string are available
* from a discrete sensor, they are concatenated with the defined
* separator in between.
*
* [3] - for events where both event data 2 and event data 3 hold data
* that must be combined for an effective output. As an example, data
* 2 holds a minor version number and data 3 holds a major version
* number. The combined output might print out "Version 1.2" instead
* of a separated "Major Version 1 ; Minor Version 2" if you did them
* separately. If a combined output is not available or not
* reasonable, event data 2 and event data 3 output will be output
* separately with the defined separator between them
* (e.g. effectively "%f ; %h").
*
* [4] - if event type code indicates a discrete sensor and event data 2
* flag indicates a previous state and/or severity state is available.
*
* [5] - this can be loosely considered the equivalent of "%e" and
* "%c" concatenated with the defined separator between them.
* However, various corner cases will be handled for the user to
* create a nicer output. For example, "Foo ; NA" will never be
* output. This will be condensed into just "Foo".
*
* Available in timestamped OEM SEL records
*
* %m - manufacturer id
*
* Available in SEL timestamped and non-timestamped OEM record types
*
* %o - oem data in hex (or strings if interpreted OEM available)
*
* Available in all record types for certain manufacturers
*
* %O - output an OEM supplied string describing the event. [6]
*
* [6] On some motherboards, the vendor is capable of supplying a full
* string describing the event data, in particular supplying strings
* for OEM records and OEM event extensions. Under the right
* conditions, this output option may be used as a potential
* replacement for %e, %f, %h, %c, and/or %E. If an OEM supplied string
* is not available, nothing will be output (with the exception of N/A
* if the OUTPUT_NOT_AVAILABLE flag is set). Currently, this output
* option supports Fujitsu systems with iRMC S1/iRMC S2.
*
* Misc
*
* %% - percent sign
*
* flags
*
* VERBOSE
*
* Output slightly more verbose text for selected fields. For example:
*
* - If a sensor does not have a name, output sensor number and
* generator id instead of just sensor number.
* - If an event data string cannot be determined (i.e. it is OEM or
* not defined by IPMI), output both the data and event type code
* instead of just the event data.
*
* IGNORE_UNAVAILABLE_FIELD
*
* If a field is not available for output (for example, a timestamp field
* in a SEL entry w/o a timestamp field), do not return an error. Output
* nothing.
*
* OUTPUT_NOT_AVAILABLE
*
* If a field is not available, do not output an empty string, output
* "N/A" (sometimes must have IGNORE_UNAVAILABLE_FIELD set)
*
* DATE_USE_SLASH
*
* Use a '/' instead of hyphens when outputting the date.
*
* DATE_MONTH_STRING
*
* Output a month name (Jan, Feb, Mar, etc.) instead of the month
* number when outputting the date.
*
* LEGACY
*
* Output strings in legacy format.
*
* Returns length of data written to buffer. If >= buflen, no null
* termination exists in buffer.
*/
int ipmi_sel_parse_read_record_string (ipmi_sel_ctx_t ctx,
const char *fmt,
const void *sel_record,
unsigned int sel_record_len,
char *buf,
unsigned int buflen,
unsigned int flags);
/*
* SEL Utility functions
*/
int ipmi_sel_clear_sel (ipmi_sel_ctx_t ctx);
int ipmi_sel_delete_sel_entry (ipmi_sel_ctx_t ctx, uint16_t record_id);
int ipmi_sel_record_type_class (uint8_t record_type);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SEL_H */

View File

@ -0,0 +1,114 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_SENSOR_READ_H
#define IPMI_SENSOR_READ_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <freeipmi/api/ipmi-api.h>
#include <freeipmi/sdr/ipmi-sdr.h>
/* note: SENSOR_READING_UNAVAILABLE and SENSOR_SCANNING_DISABLED are
* because of configuration of a sensor. It is "ok" to some extent.
* SENSOR_READING_CANNOT_BE_OBTAINED is due to a retrieval error.
*/
#define IPMI_SENSOR_READ_ERR_SUCCESS 0
#define IPMI_SENSOR_READ_ERR_CONTEXT_NULL 1
#define IPMI_SENSOR_READ_ERR_CONTEXT_INVALID 2
#define IPMI_SENSOR_READ_ERR_PARAMETERS 3
#define IPMI_SENSOR_READ_ERR_OUT_OF_MEMORY 4
#define IPMI_SENSOR_READ_ERR_SENSOR_READING_UNAVAILABLE 5
#define IPMI_SENSOR_READ_ERR_SENSOR_SCANNING_DISABLED 6
#define IPMI_SENSOR_READ_ERR_SENSOR_NON_ANALOG 7
#define IPMI_SENSOR_READ_ERR_SENSOR_NON_LINEAR 8
#define IPMI_SENSOR_READ_ERR_SENSOR_NOT_OWNED_BY_BMC 9
#define IPMI_SENSOR_READ_ERR_SENSOR_IS_SYSTEM_SOFTWARE 10
#define IPMI_SENSOR_READ_ERR_SENSOR_CANNOT_BE_BRIDGED 11
#define IPMI_SENSOR_READ_ERR_SENSOR_READING_CANNOT_BE_OBTAINED 12
#define IPMI_SENSOR_READ_ERR_NODE_BUSY 13
#define IPMI_SENSOR_READ_ERR_INVALID_SDR_RECORD_TYPE 14
#define IPMI_SENSOR_READ_ERR_SDR_ENTRY_ERROR 15
#define IPMI_SENSOR_READ_ERR_IPMI_ERROR 16
#define IPMI_SENSOR_READ_ERR_SYSTEM_ERROR 17
#define IPMI_SENSOR_READ_ERR_OVERFLOW 18
#define IPMI_SENSOR_READ_ERR_INTERNAL_ERROR 19
#define IPMI_SENSOR_READ_ERR_ERRNUMRANGE 20
#define IPMI_SENSOR_READ_FLAGS_DEFAULT 0x0000
#define IPMI_SENSOR_READ_FLAGS_BRIDGE_SENSORS 0x0001
#define IPMI_SENSOR_READ_FLAGS_DISCRETE_READING 0x0002
#define IPMI_SENSOR_READ_FLAGS_IGNORE_SCANNING_DISABLED 0x0004
#define IPMI_SENSOR_READ_FLAGS_ASSUME_BMC_OWNER 0x0008
typedef struct ipmi_sensor_read_ctx *ipmi_sensor_read_ctx_t;
/* Sensor Read Context Functions
* - ipmi_ctx assumes ipmi opened and ready to go
*/
ipmi_sensor_read_ctx_t ipmi_sensor_read_ctx_create (ipmi_ctx_t ipmi_ctx);
void ipmi_sensor_read_ctx_destroy (ipmi_sensor_read_ctx_t ctx);
int ipmi_sensor_read_ctx_errnum (ipmi_sensor_read_ctx_t ctx);
char * ipmi_sensor_read_ctx_strerror (int errnum);
char * ipmi_sensor_read_ctx_errormsg (ipmi_sensor_read_ctx_t ctx);
/* Sensor read flag functions */
int ipmi_sensor_read_ctx_get_flags (ipmi_sensor_read_ctx_t ctx, unsigned int *flags);
int ipmi_sensor_read_ctx_set_flags (ipmi_sensor_read_ctx_t ctx, unsigned int flags);
/*
* return 1 - reading a success (although for some sensor types, a
* reading may not be returned. For example with discrete sensors, a
* reading is not returned but a sensor_event_bitmask is.)
*
* return 0 - cannot obtain reading, but sensor_event_bitmask still
* returned. This is most common because the sensor cannot be
* interpreted, b/c (for example) it is a non-analog or non-linear
* sensor. errnum will be set appropriately.
*
* return (-1) - error, neither a reading nor sensor_event_bitmask can
* be returned.
*
* if reading returned, must be free'd by caller
*
* 'sensor_reading_raw' is optional and need not be specified.
*
* under return of 0 or 1, the sensor_reading_raw will be filled with the raw reading
*
* Notes:
*
* shared_sensor_number_offset used for sensor record sharing in compact
* records. If not used or not available, must be set to 0.
*/
int ipmi_sensor_read (ipmi_sensor_read_ctx_t ctx,
const void *sdr_record,
unsigned int sdr_record_len,
uint8_t shared_sensor_number_offset,
uint8_t *sensor_reading_raw,
double **sensor_reading,
uint16_t *sensor_event_bitmask);
#ifdef __cplusplus
}
#endif
#endif /* IPMI_SENSOR_READ_H */

View File

@ -0,0 +1,56 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_AUTHENTICATION_TYPE_SPEC_H
#define IPMI_AUTHENTICATION_TYPE_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#define IPMI_AUTHENTICATION_TYPE_NONE 0x00
#define IPMI_AUTHENTICATION_TYPE_MD2 0x01
#define IPMI_AUTHENTICATION_TYPE_MD5 0x02
#define IPMI_AUTHENTICATION_TYPE_STRAIGHT_PASSWORD_KEY 0x04
#define IPMI_AUTHENTICATION_TYPE_OEM_PROP 0x05
#define IPMI_AUTHENTICATION_TYPE_RMCPPLUS 0x06
#define IPMI_AUTHENTICATION_TYPE_VALID(__authentication_type) \
(((__authentication_type) == IPMI_AUTHENTICATION_TYPE_NONE \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_MD2 \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_MD5 \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_STRAIGHT_PASSWORD_KEY \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_OEM_PROP \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_RMCPPLUS) ? 1 : 0)
#define IPMI_1_5_AUTHENTICATION_TYPE_VALID(__authentication_type) \
(((__authentication_type) == IPMI_AUTHENTICATION_TYPE_NONE \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_MD2 \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_MD5 \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_STRAIGHT_PASSWORD_KEY \
|| (__authentication_type) == IPMI_AUTHENTICATION_TYPE_OEM_PROP) ? 1 : 0)
#define IPMI_2_0_AUTHENTICATION_TYPE_VALID(__authentication_type) \
IPMI_AUTHENTICATION_TYPE_VALID ((__authentication_type))
#ifdef __cplusplus
}
#endif
#endif /* IPMI_AUTHENTICATION_TYPE_SPEC_H */

View File

@ -0,0 +1,101 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_CHANNEL_SPEC_H
#define IPMI_CHANNEL_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#define IPMI_CHANNEL_NUMBER_PRIMARY_IPMB 0x0
#define IPMI_CHANNEL_NUMBER_IMPLEMENTATION_SPECIFIC_MIN 0x01 /* 0x01 to 0x07 */
#define IPMI_CHANNEL_NUMBER_IMPLEMENTATION_SPECIFIC_MAX 0x07 /* 0x01 to 0x07 */
#define IPMI_CHANNEL_NUMBER_RESERVED_MIN 0x0C /* 0x0C to 0x0D */
#define IPMI_CHANNEL_NUMBER_RESERVED_MAX 0x0D /* 0x0C to 0x0D */
#define IPMI_CHANNEL_NUMBER_PRESENT_IF 0xE
#define IPMI_CHANNEL_NUMBER_CURRENT_CHANNEL IPMI_CHANNEL_NUMBER_PRESENT_IF
#define IPMI_CHANNEL_NUMBER_SYSTEM_INTERFACE 0xF
#define IPMI_CHANNEL_NUMBERS_MAX 16
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_CHANNEL_NUMBER_VALID(__channel_number) \
((((__channel_number + 1) >= (IPMI_CHANNEL_NUMBER_PRIMARY_IPMB + 1) \
&& (__channel_number) < IPMI_CHANNEL_NUMBER_RESERVED_MIN) \
|| ((__channel_number) > IPMI_CHANNEL_NUMBER_RESERVED_MAX \
&& (__channel_number) <= IPMI_CHANNEL_NUMBER_SYSTEM_INTERFACE)) ? 1 : 0)
#define IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED 0x0 /* 0x03, 0x0A to 0x1B */
#define IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED_1 IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED
#define IPMI_CHANNEL_PROTOCOL_TYPE_IPMB 0x1
#define IPMI_CHANNEL_PROTOCOL_TYPE_ICMB_10 0x2
#define IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED_2 0x0 /* 0x03, 0x0A to 0x1B */
#define IPMI_CHANNEL_PROTOCOL_TYPE_SMBUS_1X_2X 0x4
#define IPMI_CHANNEL_PROTOCOL_TYPE_KCS 0x5
#define IPMI_CHANNEL_PROTOCOL_TYPE_SMIC 0x6
#define IPMI_CHANNEL_PROTOCOL_TYPE_BT_10 0x7
#define IPMI_CHANNEL_PROTOCOL_TYPE_BT_15 0x8
#define IPMI_CHANNEL_PROTOCOL_TYPE_TMODE 0x9
#define IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED_MIN 0x0A /* 0x03, 0x0A to 0x1B */
#define IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED_MAX 0x1B /* 0x03, 0x0A to 0x1B */
#define IPMI_CHANNEL_PROTOCOL_TYPE_OEM_MIN 0x1C /* 0x1C to 0x1F */
#define IPMI_CHANNEL_PROTOCOL_TYPE_OEM_MAX 0x1F /* 0x1C to 0x1F */
#define IPMI_CHANNEL_PROTOCOL_TYPE_IS_RESERVED(__val) \
(((__val) == IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED_1 \
|| (__val) == IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED_2 \
|| ((__val) >= IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED_MIN \
&& (__val) <= IPMI_CHANNEL_PROTOCOL_TYPE_RESERVED_MAX)) ? 1 : 0)
#define IPMI_CHANNEL_PROTOCOL_TYPE_IS_OEM(__val) \
(((__val) >= IPMI_CHANNEL_PROTOCOL_TYPE_OEM_MIN \
&& (__val) <= IPMI_CHANNEL_PROTOCOL_TYPE_OEM_MAX) ? 1 : 0)
#define IPMI_CHANNEL_MEDIUM_TYPE_RESERVED 0x0 /* 0x0D to 0x5F */
#define IPMI_CHANNEL_MEDIUM_TYPE_IPMB 0x1
#define IPMI_CHANNEL_MEDIUM_TYPE_ICMB_10 0x2
#define IPMI_CHANNEL_MEDIUM_TYPE_ICMB_09 0x3
#define IPMI_CHANNEL_MEDIUM_TYPE_LAN_802_3 0x4
#define IPMI_CHANNEL_MEDIUM_TYPE_RS232 0x5
#define IPMI_CHANNEL_MEDIUM_TYPE_OTHER_LAN 0x6
#define IPMI_CHANNEL_MEDIUM_TYPE_PCI_SMBUS 0x7
#define IPMI_CHANNEL_MEDIUM_TYPE_SMBUS_10_11 0x8
#define IPMI_CHANNEL_MEDIUM_TYPE_SMBUS_20 0x9
#define IPMI_CHANNEL_MEDIUM_TYPE_USB_1X 0xA
#define IPMI_CHANNEL_MEDIUM_TYPE_USB_2X 0xB
#define IPMI_CHANNEL_MEDIUM_TYPE_SYSTEM_INTERFACE 0xC
#define IPMI_CHANNEL_MEDIUM_TYPE_RESERVED_MIN 0x0D /* 0x0D to 0x59 */
#define IPMI_CHANNEL_MEDIUM_TYPE_RESERVED_MAX 0x59 /* 0x0D to 0x59 */
#define IPMI_CHANNEL_MEDIUM_TYPE_OEM_MIN 0x60 /* 0x60 to 0x7F */
#define IPMI_CHANNEL_MEDIUM_TYPE_OEM_MAX 0x7F /* 0x60 to 0x7F */
#define IPMI_CHANNEL_MEDIUM_TYPE_IS_RESERVED(__val) \
(((__val) == IPMI_CHANNEL_MEDIUM_TYPE_RESERVED \
|| ((__val) >= IPMI_CHANNEL_MEDIUM_TYPE_RESERVED_MIN \
&& (__val) <= IPMI_CHANNEL_MEDIUM_TYPE_RESERVED_MAX)) ? 1 : 0)
#define IPMI_CHANNEL_MEDIUM_TYPE_IS_OEM(__val) \
(((__val) >= IPMI_CHANNEL_MEDIUM_TYPE_OEM_MIN \
&& (__val) <= IPMI_CHANNEL_MEDIUM_TYPE_OEM_MAX) ? 1 : 0)
#ifdef __cplusplus
}
#endif
#endif /* IPMI_CHANNEL_SPEC_H */

View File

@ -0,0 +1,69 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* LLNL-CODE-413270
*
* This file is part of Ipmi-Dcmi, tools and libraries to support the
* data center manageability interface (DCMI). For details, see
* http://www.llnl.gov/linux/.
*
* Ipmi-Dcmi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-Dcmi is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-Dcmi. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_CMD_DCMI_SPEC_H
#define IPMI_CMD_DCMI_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#define IPMI_CMD_DCMI_GET_DCMI_CAPABILITY_INFO 0x01
#define IPMI_CMD_DCMI_GET_POWER_READING 0x02
#define IPMI_CMD_DCMI_GET_POWER_LIMIT 0x03
#define IPMI_CMD_DCMI_SET_POWER_LIMIT 0x04
#define IPMI_CMD_DCMI_ACTIVATE_DEACTIVATE_POWER_LIMIT 0x05
#define IPMI_CMD_DCMI_GET_ASSET_TAG 0x06
#define IPMI_CMD_DCMI_GET_DCMI_SENSOR_INFO 0x07
#define IPMI_CMD_DCMI_SET_ASSET_TAG 0x08
#define IPMI_CMD_DCMI_GET_MANAGEMENT_CONTROLLER_IDENTIFIER_STRING 0x09
#define IPMI_CMD_DCMI_SET_MANAGEMENT_CONTROLLER_IDENTIFIER_STRING 0x0A
#define IPMI_CMD_DCMI_SET_THERMAL_LIMIT 0x0B
#define IPMI_CMD_DCMI_GET_THERMAL_LIMIT 0x0C
#define IPMI_CMD_DCMI_GET_TEMPERATURE_READING 0x10
#define IPMI_CMD_DCMI_SET_DCMI_CONFIGURATION_PARAMETERS 0x12
#define IPMI_CMD_DCMI_GET_DCMI_CONFIGURATION_PARAMETERS 0x13
#ifdef __cplusplus
}
#endif
#endif /* IPMI_CMD_DCMI_SPEC_H */

View File

@ -0,0 +1,271 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_CMD_SPEC_H
#define IPMI_CMD_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
/* Notes:
Refer to IPMIv1_5_rev1_1.pdf Table G-1, Command Number Assignments
and Privilege Levels for complete description
*/
/* IPMI Device Global Commands */
#define IPMI_CMD_RESERVED 0x00
#define IPMI_CMD_GET_DEVICE_ID 0x01
#define IPMI_CMD_GET_DEVICE_ID_BCST IPMI_CMD_GET_DEVICE_ID
#define IPMI_CMD_COLD_RESET 0x02
#define IPMI_CMD_WARM_RESET 0x03
#define IPMI_CMD_GET_SELF_TEST_RESULTS 0x04
#define IPMI_CMD_MANUFACTURING_TEST_ON 0x05
#define IPMI_CMD_SET_ACPI_POWER_STATE 0x06
#define IPMI_CMD_GET_ACPI_POWER_STATE 0x07
#define IPMI_CMD_GET_DEVICE_GUID 0x08
#define IPMI_CMD_GET_NETFN_SUPPORT 0x09
#define IPMI_CMD_GET_COMMAND_SUPPORT 0x0A
#define IPMI_CMD_GET_COMMAND_SUB_FUNCTION_SUPPORT 0x0B
#define IPMI_CMD_GET_CONFIGURABLE_COMMANDS 0x0C
#define IPMI_CMD_GET_CONFIGURABLE_COMMAND_SUB_FUNCTIONS 0x0D
/* RESERVED 0x0E to 0x0F */
#define IPMI_CMD_SET_COMMAND_ENABLES 0x60
#define IPMI_CMD_GET_COMMAND_ENABLES 0x61
#define IPMI_CMD_SET_COMMAND_SUB_FUNCTION_ENABLES 0x62
#define IPMI_CMD_GET_COMMAND_SUB_FUNCTION_ENABLES 0x63
#define IPMI_CMD_GET_OEM_NETFN_IANA_SUPPORT 0x64
/* BMC Watchdog Timer Commands */
#define IPMI_CMD_RESET_WATCHDOG_TIMER 0x22
#define IPMI_CMD_SET_WATCHDOG_TIMER 0x24
#define IPMI_CMD_GET_WATCHDOG_TIMER 0x25
/* BMC Device And Messaging Commands */
#define IPMI_CMD_SET_BMC_GLOBAL_ENABLES 0x2E
#define IPMI_CMD_GET_BMC_GLOBAL_ENABLES 0x2F
#define IPMI_CMD_CLEAR_MESSAGE_FLAGS 0x30
#define IPMI_CMD_GET_MESSAGE_FLAGS 0x31
#define IPMI_CMD_ENABLE_MESSAGE_CHANNEL_RECEIVE 0x32
#define IPMI_CMD_GET_MESSAGE 0x33
#define IPMI_CMD_SEND_MESSAGE 0x34
#define IPMI_CMD_READ_EVENT_MESSAGE_BUFFER 0x35
#define IPMI_CMD_GET_BT_INTERFACE_CAPABILITIES 0x36
#define IPMI_CMD_GET_SYSTEM_GUID 0x37
#define IPMI_CMD_SET_SYSTEM_INFO_PARAMETERS 0x58
#define IPMI_CMD_GET_SYSTEM_INFO_PARAMETERS 0x59
#define IPMI_CMD_GET_CHANNEL_AUTHENTICATION_CAPABILITIES 0x38
#define IPMI_CMD_GET_SESSION_CHALLENGE 0x39
#define IPMI_CMD_ACTIVATE_SESSION 0x3A
#define IPMI_CMD_SET_SESSION_PRIVILEGE_LEVEL 0x3B
#define IPMI_CMD_CLOSE_SESSION 0x3C
#define IPMI_CMD_GET_SESSION_INFO 0x3D
/* UNASSIGNED 0x3E */
#define IPMI_CMD_GET_AUTHCODE 0x3F
#define IPMI_CMD_SET_CHANNEL_ACCESS 0x40
#define IPMI_CMD_GET_CHANNEL_ACCESS 0x41
#define IPMI_CMD_GET_CHANNEL_INFO_COMMAND 0x42
#define IPMI_CMD_SET_USER_ACCESS_COMMAND 0x43
#define IPMI_CMD_GET_USER_ACCESS_COMMAND 0x44
#define IPMI_CMD_SET_USER_NAME 0x45
#define IPMI_CMD_GET_USER_NAME_COMMAND 0x46
#define IPMI_CMD_SET_USER_PASSWORD_COMMAND 0x47
#define IPMI_CMD_ACTIVATE_PAYLOAD 0x48
#define IPMI_CMD_DEACTIVATE_PAYLOAD 0x49
#define IPMI_CMD_GET_PAYLOAD_ACTIVATION_STATUS 0x4A
#define IPMI_CMD_GET_PAYLOAD_INSTANCE_INFO 0x4B
#define IPMI_CMD_SET_USER_PAYLOAD_ACCESS 0x4C
#define IPMI_CMD_GET_USER_PAYLOAD_ACCESS 0x4D
#define IPMI_CMD_GET_CHANNEL_PAYLOAD_SUPPORT 0x4E
#define IPMI_CMD_GET_CHANNEL_PAYLOAD_VERSION 0x4F
#define IPMI_CMD_GET_CHANNEL_OEM_PAYLOAD_INFO 0x50
/* unassigned 0x51 */
#define IPMI_CMD_MASTER_WRITE_READ 0x52
/* unassigned 0x53 */
#define IPMI_CMD_GET_CHANNEL_CIPHER_SUITES 0x54
#define IPMI_CMD_SUSPEND_RESUME_PAYLOAD_ENCRYPTION 0x53
#define IPMI_CMD_SET_CHANNEL_SECURITY_KEYS 0x56
#define IPMI_CMD_GET_SYSTEM_INTERFACE_CAPABILITIES 0x57
/* unassigned 0x58 to 0x5F */
/* Firmware Firewall Configuration 0x60 to 0x64 */
/* Chassis Device Commands */
/* achu: Cmd is named "set front panel enables", but cmd in appendix G is
* named "set front panel button enables". Go fig ...
*/
#define IPMI_CMD_GET_CHASSIS_CAPABILITIES 0x00
#define IPMI_CMD_GET_CHASSIS_STATUS 0x01
#define IPMI_CMD_CHASSIS_CONTROL 0x02
#define IPMI_CMD_CHASSIS_RESET 0x03
#define IPMI_CMD_CHASSIS_IDENTIFY 0x04
#define IPMI_CMD_SET_CHASSIS_CAPABILITIES 0x05
#define IPMI_CMD_SET_POWER_RESTORE_POLICY 0x06
#define IPMI_CMD_GET_SYSTEM_RESTART_CAUSE 0x07
#define IPMI_CMD_SET_SYSTEM_BOOT_OPTIONS 0x08
#define IPMI_CMD_GET_SYSTEM_BOOT_OPTIONS 0x09
#define IPMI_CMD_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A
#define IPMI_CMD_SET_FRONT_PANEL_ENABLES IPMI_CMD_SET_FRONT_PANEL_BUTTON_ENABLES
#define IPMI_CMD_SET_POWER_CYCLE_INTERVAL 0x0B
/* unassigned 0x0C to 0x0E */
#define IPMI_CMD_GET_POWER_ON_HOURS_COUNTER 0x0F
/* Event Commands */
#define IPMI_CMD_SET_EVENT_RECEIVER 0x00
#define IPMI_CMD_GET_EVENT_RECEIVER 0x01
#define IPMI_CMD_PLATFORM_EVENT 0x02 /* (a.k.a. Event Message) */
/* unassigned 0x03h to 0x0F */
/* PEF and Alerting Commands */
#define IPMI_CMD_GET_PEF_CAPABILITIES 0x10
#define IPMI_CMD_ARM_PEF_POSTPONE_TIMER 0x11
#define IPMI_CMD_SET_PEF_CONFIGURATION_PARAMETERS 0x12
#define IPMI_CMD_GET_PEF_CONFIGURATION_PARAMETERS 0x13
#define IPMI_CMD_SET_LAST_PROCESSED_EVENT_ID 0x14
#define IPMI_CMD_GET_LAST_PROCESSED_EVENT_ID 0x15
#define IPMI_CMD_ALERT_IMMEDIATE 0x16
#define IPMI_CMD_PET_ACKNOWLEDGE 0x17
/* Sensor Device Commands */
#define IPMI_CMD_GET_DEVICE_SDR_INFO 0x20
#define IPMI_CMD_GET_DEVICE_SDR 0x21
#define IPMI_CMD_RESERVE_DEVICE_SDR_REPOSITORY 0x22
#define IPMI_CMD_GET_SENSOR_READING_FACTORS 0x23
#define IPMI_CMD_SET_SENSOR_HYSTERESIS 0x24
#define IPMI_CMD_GET_SENSOR_HYSTERESIS 0x25
#define IPMI_CMD_SET_SENSOR_THRESHOLDS 0x26
#define IPMI_CMD_GET_SENSOR_THRESHOLDS 0x27
#define IPMI_CMD_SET_SENSOR_EVENT_ENABLE 0x28
#define IPMI_CMD_GET_SENSOR_EVENT_ENABLE 0x29
#define IPMI_CMD_RE_ARM_SENSOR_EVENTS 0x2A
#define IPMI_CMD_GET_SENSOR_EVENT_STATUS 0x2B
#define IPMI_CMD_GET_SENSOR_READING 0x2D
#define IPMI_CMD_SET_SENSOR_TYPE 0x2E
#define IPMI_CMD_GET_SENSOR_TYPE 0x2F
#define IPMI_CMD_SET_SENSOR_READING_AND_EVENT_STATUS 0x30
/* FRU Device Commands */
#define IPMI_CMD_GET_FRU_INVENTORY_AREA_INFO 0x10
#define IPMI_CMD_READ_FRU_DATA 0x11
#define IPMI_CMD_WRITE_FRU_DATA 0x12
/* SDR Device Commands */
#define IPMI_CMD_GET_SDR_REPOSITORY_INFO 0x20
#define IPMI_CMD_GET_SDR_REPOSITORY_ALLOCATION_INFO 0x21
#define IPMI_CMD_RESERVE_SDR_REPOSITORY 0x22
#define IPMI_CMD_GET_SDR 0x23
#define IPMI_CMD_ADD_SDR 0x24
#define IPMI_CMD_PARTIAL_ADD_SDR 0x25
#define IPMI_CMD_DELETE_SDR 0x26
#define IPMI_CMD_CLEAR_SDR_REPOSITORY 0x27
#define IPMI_CMD_GET_SDR_REPOSITORY_TIME 0x28
#define IPMI_CMD_SET_SDR_REPOSITORY_TIME 0x29
#define IPMI_CMD_ENTER_SDR_REPOSITORY_UPDATE_MODE 0x2A
#define IPMI_CMD_EXIT_SDR_REPOSITORY_UPDATE_MODE 0x2B
#define IPMI_CMD_RUN_INITIALIZATION_AGENT 0x2C
/* SEL Device Commands */
#define IPMI_CMD_GET_SEL_INFO 0x40
#define IPMI_CMD_GET_SEL_ALLOCATION_INFO 0x41
#define IPMI_CMD_RESERVE_SEL 0x42
#define IPMI_CMD_GET_SEL_ENTRY 0x43
#define IPMI_CMD_ADD_SEL_ENTRY 0x44
#define IPMI_CMD_PARTIAL_ADD_SEL_ENTRY 0x45
#define IPMI_CMD_DELETE_SEL_ENTRY 0x46
#define IPMI_CMD_CLEAR_SEL 0x47
#define IPMI_CMD_GET_SEL_TIME 0x48
#define IPMI_CMD_SET_SEL_TIME 0x49
#define IPMI_CMD_GET_AUXILIARY_LOG_STATUS 0x5A
#define IPMI_CMD_SET_AUXILIARY_LOG_STATUS 0x5B
#define IPMI_CMD_GET_SEL_TIME_UTC_OFFSET 0x5C
#define IPMI_CMD_SET_SEL_TIME_UTC_OFFSET 0x5D
/* LAN Device Commands */
#define IPMI_CMD_SET_LAN_CONFIGURATION_PARAMETERS 0x01
#define IPMI_CMD_GET_LAN_CONFIGURATION_PARAMETERS 0x02
#define IPMI_CMD_SUSPEND_BMC_ARPS 0x03
#define IPMI_CMD_GET_IP_UDP_RMCP_STATISTICS 0x04
/* Serial/Modem Device Commands */
#define IPMI_CMD_SET_SERIAL_MODEM_CONFIGURATION 0x10
#define IPMI_CMD_GET_SERIAL_MODEM_CONFIGURATION 0x11
#define IPMI_CMD_SET_SERIAL_MODEM_MUX 0x12
#define IPMI_CMD_GET_TAP_RESPONSE_CODES 0x13
#define IPMI_CMD_SET_PPP_UDP_PROXY_TRANSMIT_DATA 0x14
#define IPMI_CMD_GET_PPP_UDP_PROXY_TRANSMIT_DATA 0x15
#define IPMI_CMD_SEND_PPP_UDP_PROXY_PACKET 0x16
#define IPMI_CMD_GET_PPP_UDP_PROXY_RECEIVE_DATA 0x17
#define IPMI_CMD_SERIAL_MODEM_CONNECTION_ACTIVE 0x18
#define IPMI_CMD_CALLBACK 0x19
#define IPMI_CMD_SET_USER_CALLBACK_OPTIONS 0x1A
#define IPMI_CMD_GET_USER_CALLBACK_OPTIONS 0x1B
#define IPMI_CMD_SET_SERIAL_ROUTING_MUX 0x1C
#define IPMI_CMD_SOL_ACTIVATING 0x20
#define IPMI_CMD_SET_SOL_CONFIGURATION_PARAMETERS 0x21
#define IPMI_CMD_GET_SOL_CONFIGURATION_PARAMETERS 0x22
/* Command Forwarding Commands */
#define IPMI_CMD_FORWARDED_COMMAND 0x30
#define IPMI_CMD_SET_FORWARDED_COMMANDS 0x31
#define IPMI_CMD_GET_FORWARDED_COMMANDS 0x32
#define IPMI_CMD_ENABLE_FORWARDED_COMMANDS 0x33
/* Bridge Management Commands (ICMB) */
#define IPMI_CMD_GET_BRIDGE_STATE 0x00
#define IPMI_CMD_SET_BRIDGE_STATE 0x01
#define IPMI_CMD_GET_ICMB_ADDRESS 0x02
#define IPMI_CMD_SET_ICMB_ADDRESS 0x03
#define IPMI_CMD_SET_BRIDGE_PROXY_ADDRESS 0x04
#define IPMI_CMD_GET_BRIDGE_STATISTICS 0x05
#define IPMI_CMD_GET_ICMB_CAPABILITIES 0x06
#define IPMI_CMD_CLEAR_BRIDGE_STATISTICS 0x08
#define IPMI_CMD_GET_BRIDGE_PROXY_ADDRESS 0x09
#define IPMI_CMD_GET_ICMB_CONNECTOR_INFO 0x0A
#define IPMI_CMD_GET_ICMB_CONNECTION_ID 0x0B
#define IPMI_CMD_SEND_ICMB_CONNECTION_ID 0x0C
/* Discovery Commands (ICMB) */
#define IPMI_CMD_PREPARE_FOR_DISCOVERY 0x10
#define IPMI_CMD_GET_ADDRESSES 0x11
#define IPMI_CMD_SET_DISCOVERED 0x12
#define IPMI_CMD_GET_CHASSIS_DEVICE_ID 0x13
#define IPMI_CMD_SET_CHASSIS_DEVICE_ID 0x14
/* Bridging Commands (ICMB) */
#define IPMI_CMD_BRIDGE_REQUEST 0x20
#define IPMI_CMD_BRIDGE_MESSAGE 0x21
/* Event Commands (ICMB) */
#define IPMI_CMD_GET_EVENT_COUNT 0x30
#define IPMI_CMD_SET_EVENT_DESTINATION 0x31
#define IPMI_CMD_SET_EVENT_RECEPTION_STATE 0x32
#define IPMI_CMD_SEND_ICMB_EVENT_MESSAGE 0x33
#define IPMI_CMD_GET_EVENT_DESTINATION 0x34
#define IPMI_CMD_GET_EVENT_RECEPTION_STATE 0x35
/* OEM Commands for Bridge NetFn */
/* OEM Commands 0xC0 to 0xFE */
/* Other Bridge Commands */
#define IPMI_CMD_ERROR_REPORT 0xFF
#ifdef __cplusplus
}
#endif
#endif /* IPMI_CMD_SPEC_H */

View File

@ -0,0 +1,92 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* LLNL-CODE-413270
*
* This file is part of Ipmi-Dcmi, tools and libraries to support the
* data center manageability interface (DCMI). For details, see
* http://www.llnl.gov/linux/.
*
* Ipmi-Dcmi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-Dcmi is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-Dcmi. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_COMP_CODE_DCMI_SPEC_H
#define IPMI_COMP_CODE_DCMI_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
/* IPMI_CMD_DCMI_GET_POWER_LIMIT */
#define IPMI_COMP_CODE_DCMI_NO_SET_POWER_LIMIT 0x80
#define IPMI_COMP_CODE_DCMI_NO_SET_POWER_LIMIT_STR \
"No Set Power Limit"
/* IPMI_CMD_DCMI_SET_POWER_LIMIT */
#define IPMI_COMP_CODE_DCMI_POWER_LIMIT_OUT_OF_RANGE 0x84
#define IPMI_COMP_CODE_DCMI_POWER_LIMIT_OUT_OF_RANGE_STR \
"Power Limit out of range"
#define IPMI_COMP_CODE_DCMI_CORRECTION_TIME_OUT_OF_RANGE 0x85
#define IPMI_COMP_CODE_DCMI_CORRECTION_TIME_OUT_OF_RANGE_STR \
"Correction Time out of range"
#define IPMI_COMP_CODE_DCMI_STATISTICS_REPORTING_PERIOD_OUT_OF_RANGE 0x89 /* not a typo, is 0x89 */
#define IPMI_COMP_CODE_DCMI_STATISTICS_REPORTING_PERIOD_OUT_OF_RANGE_STR \
"Statistics Reporting Period out of range"
/* IPMI_CMD_DCMI_GET_ASSET_TAG */
#define IPMI_COMP_CODE_DCMI_ENCODING_TYPE_IN_FRU_IS_BINARY_UNSPECIFIED 0x80
#define IPMI_COMP_CODE_DCMI_ENCODING_TYPE_IN_FRU_IS_BINARY_UNSPECIFIED_STR \
"Encoding type in FRU is binary / unspecified"
#define IPMI_COMP_CODE_DCMI_ENCODING_TYPE_IN_FRU_IS_BCD_PLUS 0x81
#define IPMI_COMP_CODE_DCMI_ENCODING_TYPE_IN_FRU_IS_BCD_PLUS_STR \
"Encoding type in FRU is BCD Plus"
#define IPMI_COMP_CODE_DCMI_ENCODING_TYPE_IN_FRU_IS_6BIT_ASCII_PACKED 0x82
#define IPMI_COMP_CODE_DCMI_ENCODING_TYPE_IN_FRU_IS_6BIT_ASCII_PACKED_STR \
"Encoding type in FRU is 6-bit ASCII Packed"
#define IPMI_COMP_CODE_DCMI_ENCODING_TYPE_IN_FRU_IS_SET_TO_ASCII_LATIN1_NOT_ENGLISH 0x83
#define IPMI_COMP_CODE_DCMI_ENCODING_TYPE_IN_FRU_IS_SET_TO_ASCII_LATIN1_NOT_ENGLISH_STR \
"Encoding type in FRU is set to ASCII+Latin1 but language code is " \
"not set to English (indicating data is 2-byte UNICODE)"
#ifdef __cplusplus
}
#endif
#endif /* IPMI_COMP_CODE_DCMI_SPEC_H */

View File

@ -0,0 +1,38 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_COMP_CODE_OEM_SPEC_H
#define IPMI_COMP_CODE_OEM_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-comp-code-oem-spec.h header file is deprecated
#include <freeipmi/spec/oem/ipmi-comp-code-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-intel-node-manager-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-comp-code-oem-wistron-spec.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_COMP_CODE_OEM_SPEC_H */

View File

@ -0,0 +1,713 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_COMP_CODE_SPEC_H
#define IPMI_COMP_CODE_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#define IPMI_COMP_CODE_COMMAND_SUCCESS 0x00
#define IPMI_COMP_CODE_COMMAND_SUCCESS_STR \
"Command Completed Normally."
#define IPMI_COMP_CODE_NODE_BUSY 0xC0
#define IPMI_COMP_CODE_NODE_BUSY_STR \
"Node Busy. Command could not be processed because command " \
"processing resources are temporarily unavailable."
#define IPMI_COMP_CODE_INVALID_COMMAND 0xC1
#define IPMI_COMP_CODE_INVALID_COMMAND_STR \
"Invalid Command. Used to indicate an unrecognized or unsupported command."
#define IPMI_COMP_CODE_COMMAND_INVALID_FOR_LUN 0xC2
#define IPMI_COMP_CODE_COMMAND_INVALID_FOR_LUN_STR \
"Command invalid for given LUN."
#define IPMI_COMP_CODE_COMMAND_TIMEOUT 0xC3
#define IPMI_COMP_CODE_COMMAND_TIMEOUT_STR \
"Timeout while processing command. Response unavailable."
#define IPMI_COMP_CODE_OUT_OF_SPACE 0xC4
#define IPMI_COMP_CODE_OUT_OF_SPACE_STR \
"Out of space. Command could not be completed because of a " \
"lack of storage space required to execute the given command " \
"operation."
#define IPMI_COMP_CODE_RESERVATION_CANCELLED 0xC5
#define IPMI_COMP_CODE_RESERVATION_CANCELLED_STR \
"Reservation Canceled or Invalid Reservation ID."
#define IPMI_COMP_CODE_INVALID_RESERVATION_ID IPMI_COMP_CODE_RESERVATION_CANCELLED
#define IPMI_COMP_CODE_INVALID_RESERVATION_ID_STR IPMI_COMP_CODE_RESERVATION_CANCELLED_STR
#define IPMI_COMP_CODE_REQUEST_DATA_TRUNCATED 0xC6
#define IPMI_COMP_CODE_REQUEST_DATA_TRUNCATED_STR \
"Request data truncated."
#define IPMI_COMP_CODE_REQUEST_DATA_LENGTH_INVALID 0xC7
#define IPMI_COMP_CODE_REQUEST_DATA_LENGTH_INVALID_STR \
"Request data length invalid."
#define IPMI_COMP_CODE_REQUEST_DATA_LENGTH_LIMIT_EXCEEDED 0xC8
#define IPMI_COMP_CODE_REQUEST_DATA_LENGTH_LIMIT_EXCEEDED_STR \
"Request data field length limit exceeded."
#define IPMI_COMP_CODE_PARAMETER_OUT_OF_RANGE 0xC9
#define IPMI_COMP_CODE_PARAMETER_OUT_OF_RANGE_STR \
"Parameter out of range. One or more parameters in the data " \
"field of the Request are out of range. This is different from " \
"'Invalid data field' (CCh) code in that it indicates that the " \
"erroneous field(s) has a contiguous range of possible values."
#define IPMI_COMP_CODE_CANNOT_RETURN_REQUESTED_NUMBER_OF_BYTES 0xCA
#define IPMI_COMP_CODE_CANNOT_RETURN_REQUESTED_NUMBER_OF_BYTES_STR \
"Cannot return number of requested data bytes."
#define IPMI_COMP_CODE_REQUESTED_SENSOR_DATA_OR_RECORD_NOT_PRESENT 0xCB
#define IPMI_COMP_CODE_REQUESTED_SENSOR_DATA_OR_RECORD_NOT_PRESENT_STR \
"Requested Sensor, data, or record not present."
#define IPMI_COMP_CODE_INVALID_DATA_FIELD_IN_REQUEST 0xCC
#define IPMI_COMP_CODE_INVALID_DATA_FIELD_IN_REQUEST_STR \
"Invalid data field in Request"
#define IPMI_COMP_CODE_COMMAND_ILLEGAL_FOR_SENSOR_OR_RECORD_TYPE 0xCD
#define IPMI_COMP_CODE_COMMAND_ILLEGAL_FOR_SENSOR_OR_RECORD_TYPE_STR \
"Command illegal for specified sensor or record type."
#define IPMI_COMP_CODE_COMMAND_RESPONSE_COULD_NOT_BE_PROVIDED 0xCE
#define IPMI_COMP_CODE_COMMAND_RESPONSE_COULD_NOT_BE_PROVIDED_STR \
"Command response could not be provided."
#define IPMI_COMP_CODE_CANNOT_EXECUTE_DUPLICATE_REQUEST 0xCF
#define IPMI_COMP_CODE_CANNOT_EXECUTE_DUPLICATE_REQUEST_STR \
"Cannot execute duplicated request. This completion code is " \
"for devices which cannot return the response that was returned " \
"for the original instance of the request. Such devices should " \
"provide separate commands that allow the completion status of " \
"the original request to be determined. An Event Receiver does not " \
"use this completion code, but returns the 00h completion code in " \
"the response to (valid) duplicated requests."
#define IPMI_COMP_CODE_SDR_REPOSITORY_IN_UPDATE_MODE 0xD0
#define IPMI_COMP_CODE_SDR_REPOSITORY_IN_UPDATE_MODE_STR \
"Command response could not be provided. SDR Repository in " \
"update mode."
#define IPMI_COMP_CODE_DEVICE_IN_FIRMWARE_UPDATE_MODE 0xD1
#define IPMI_COMP_CODE_DEVICE_IN_FIRMWARE_UPDATE_MODE_STR \
"Command response could not be provided. Device in firmware " \
"update mode."
#define IPMI_COMP_CODE_BMC_INITIALIZATION_IN_PROGRESS 0xD2
#define IPMI_COMP_CODE_BMC_INITIALIZATION_IN_PROGRESS_STR \
"Command response could not be provided. BMC initialization or " \
"initialization agent in progress."
#define IPMI_COMP_CODE_DESTINATION_UNAVAILABLE 0xD3
#define IPMI_COMP_CODE_DESTINATION_UNAVAILABLE_STR \
"Destination unavailable. Cannot deliver request to selected " \
"destination. E.g. this code can be returned if a request message " \
"is targeted to SMS, but receive message queue reception is disabled " \
"for the particular channel."
#define IPMI_COMP_CODE_INSUFFICIENT_PRIVILEGE_LEVEL 0xD4
#define IPMI_COMP_CODE_INSUFFICIENT_PRIVILEGE_LEVEL_STR \
"Cannot execute command due to insufficient privilege level or other " \
"security-based restriction (e.g. disabled for 'firmware firewall')."
#define IPMI_COMP_CODE_REQUEST_PARAMETER_NOT_SUPPORTED 0xD5
#define IPMI_COMP_CODE_REQUEST_PARAMETER_NOT_SUPPORTED_STR \
"Cannot execute command. Command, or request parameter(s), not " \
"supported in present state."
#define IPMI_COMP_CODE_REQUEST_PARAMETER_ILLEGAL 0xD6
#define IPMI_COMP_CODE_REQUEST_PARAMETER_ILLEGAL_STR \
"Cannot execute command. Parameter is illegal because command " \
"sub-function has been disabled or is unavailable " \
"(e.g. disabled for 'firmware firewall')."
#define IPMI_COMP_CODE_UNSPECIFIED_ERROR 0xFF
#define IPMI_COMP_CODE_UNSPECIFIED_ERROR_STR \
"Unspecified error."
/* DEVICE-SPECIFIC (OEM) CODES 01h-7Eh
This range is used for command-specific codes that are also
specific for a particular device and version. A-priori knowledge of
the device command set is required for interpretation of these
codes. */
/* COMMAND-SPECIFIC CODES 80h-BEh 80h-BEh
Standard command-specific codes. This range is reserved for
command-specific completion codes for commands specified in this
document. */
/*
* IPMI Device "Global Commands"
*/
/* IPMI_CMD_SET_COMMAND_ENABLES */
#define IPMI_COMP_CODE_SET_COMMAND_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND 0x80
#define IPMI_COMP_CODE_SET_COMMAND_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND_STR \
"attempt to enable an unsupported or un-configurable command"
/* IPMI_CMD_SET_COMMAND_SUB_FUNCTION_ENABLES */
#define IPMI_COMP_CODE_SET_COMMAND_SUB_FUNCTION_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND 0x80
#define IPMI_COMP_CODE_SET_COMMAND_SUB_FUNCTION_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND_STR \
"attempt to enable an unsupported or un-configurable command"
/* IPMI_CMD_GET_COMMAND_SUB_FUNCTION_ENABLES */
#define IPMI_COMP_CODE_GET_COMMAND_SUB_FUNCTION_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND 0x80
#define IPMI_COMP_CODE_GET_COMMAND_SUB_FUNCTION_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND_STR \
"attempt to enable an unsupported or un-configurable command"
/*
* BMC Watchdog Timer Commands
*/
/* IPMI_CMD_RESET_WATCHDOG_TIMER */
#define IPMI_COMP_CODE_RESET_WATCHDOG_TIMER_ATTEMPT_TO_START_UNINITIALIZED_WATCHDOG 0x80
#define IPMI_COMP_CODE_RESET_WATCHDOG_TIMER_ATTEMPT_TO_START_UNINITIALIZED_WATCHDOG_STR \
"Attempt to start un-initialized watchdog."
/*
* BMC Device and Messaging Commands
*/
/* IPMI_CMD_GET_MESSAGE */
#define IPMI_COMP_CODE_GET_MESSAGE_DATA_NOT_AVAILABLE 0x80
#define IPMI_COMP_CODE_GET_MESSAGE_DATA_NOT_AVAILABLE_STR \
"data not available (queue/buffer empty)"
/* IPMI_CMD_SEND_MESSAGE */
#define IPMI_COMP_CODE_SEND_MESSAGE_INVALID_SESSION_HANDLE 0x80
#define IPMI_COMP_CODE_SEND_MESSAGE_INVALID_SESSION_HANDLE_STR \
"Invalid Session Handle. The session handle does not match up with any " \
"currently active sessions for this channel."
#define IPMI_COMP_CODE_SEND_MESSAGE_LOST_ARBITRATION 0x81
#define IPMI_COMP_CODE_SEND_MESSAGE_LOST_ARBITRATION_STR \
"Lost Arbitration"
#define IPMI_COMP_CODE_SEND_MESSAGE_BUS_ERROR 0x82
#define IPMI_COMP_CODE_SEND_MESSAGE_BUS_ERROR_STR \
"Bus Error"
#define IPMI_COMP_CODE_SEND_MESSAGE_NAK_ON_WRITE 0x83
#define IPMI_COMP_CODE_SEND_MESSAGE_NAK_ON_WRITE_STR \
"NAK on Write"
/* IPMI_CMD_MASTER_WRITE_READ */
#define IPMI_COMP_CODE_MASTER_WRITE_READ_LOST_ARBITRATION 0x81
#define IPMI_COMP_CODE_MASTER_WRITE_READ_LOST_ARBITRATION_STR \
"Lost Arbitration"
#define IPMI_COMP_CODE_MASTER_WRITE_READ_BUS_ERROR 0x82
#define IPMI_COMP_CODE_MASTER_WRITE_READ_BUS_ERROR_STR \
"Bus Error"
#define IPMI_COMP_CODE_MASTER_WRITE_READ_NAK_ON_WRITE 0x83
#define IPMI_COMP_CODE_MASTER_WRITE_READ_NAK_ON_WRITE_STR \
"NAK on Write"
#define IPMI_COMP_CODE_MASTER_WRITE_READ_TRUNCATED_READ 0x84
#define IPMI_COMP_CODE_MASTER_WRITE_READ_TRUNCATED_READ_STR \
"Truncated Read"
/* IPMI_CMD_SET_SYSTEM_INFO_PARAMETERS */
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_INVALID_SET_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_INVALID_SET_IN_PROGRESS_STR \
"attempt to set the 'set in progress' value (in parameter #0) " \
"when not int the 'set complete' state."
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_WRITE_READ_ONLY_PARAMETER 0x82
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_WRITE_READ_ONLY_PARAMETER_STR \
"attempt to write read-only parameter"
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_READ_WRITE_ONLY_PARAMETER 0x83
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_READ_WRITE_ONLY_PARAMETER_STR \
"attempt to read write-only parameter"
/* IPMI_CMD_GET_SYSTEM_INFO_PARAMETERS */
#define IPMI_COMP_CODE_GET_SYSTEM_INFO_PARAMETERS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_GET_SYSTEM_INFO_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
/* IPMI_CMD_GET_SESSION_CHALLENGE */
#define IPMI_COMP_CODE_GET_SESSION_CHALLENGE_INVALID_USERNAME 0x81
#define IPMI_COMP_CODE_GET_SESSION_CHALLENGE_INVALID_USERNAME_STR \
"Invalid user name"
#define IPMI_COMP_CODE_GET_SESSION_CHALLENGE_NULL_USERNAME_NOT_ENABLED 0x82
#define IPMI_COMP_CODE_GET_SESSION_CHALLENGE_NULL_USERNAME_NOT_ENABLED_STR \
"Null user name (User 1) not enabled"
/* IPMI_CMD_ACTIVATE_SESSION */
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SESSION_SLOT_AVAILABLE 0x81
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SESSION_SLOT_AVAILABLE_STR \
"No session slot available (BMC cannot accept any more sessions)"
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SLOT_AVAILABLE_FOR_GIVEN_USER 0x82
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SLOT_AVAILABLE_FOR_GIVEN_USER_STR \
"No slot available for given user. (Limit of user sessions " \
"allowed under that name has been reached)"
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SLOT_AVAILABLE_TO_SUPPORT_USER 0x83
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SLOT_AVAILALBE_TO_SUPPORT_USER_STR \
"No slot available to support user due to maximum privilege " \
"capability. (An implementation may only be able to support " \
"a certain number of sessions based on what authentication " \
"resources are required. For example, if User Level " \
"Authentication is disabled, an implementation may be able " \
"to allow a larger number of users that are limited to User " \
"Level privilege, than users that require higher privilege."
#define IPMI_COMP_CODE_ACTIVATE_SESSION_SESSION_SEQ_NUM_OUT_OF_RANGE 0x84
#define IPMI_COMP_CODE_ACTIVATE_SESSION_SESSION_SEQ_NUM_OUT_OF_RANGE_STR \
"Session sequence number out-of-range"
#define IPMI_COMP_CODE_ACTIVATE_SESSION_INVALID_SESSION_ID 0x85
#define IPMI_COMP_CODE_ACTIVATE_SESSION_INVALID_SESSION_ID_STR \
"Invalid session ID in request"
#define IPMI_COMP_CODE_ACTIVATE_SESSION_EXCEEDS_PRIVILEGE_LEVEL 0x86
#define IPMI_COMP_CODE_ACTIVATE_SESSION_EXCEEDS_PRIVILEGE_LEVEL_STR \
"Requested maximum privilege level exceeds user and/or " \
"channel privilege limit"
/* IPMI_CMD_SET_SESSION_PRIVILEGE_LEVEL */
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_NOT_AVAILABLE_FOR_USER 0x81
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_NOT_AVAILABLE_FOR_USER_STR \
"Requested level not available for this user"
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_EXCEEDS_USER_PRIVILEGE_LIMIT 0x82
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_EXCEEDS_USER_PRIVILEGE_LIMIT_STR \
"Requested level exceeds Channel and/or User Privilege Limit"
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_CANNOT_DISABLE_USER_LEVEL_AUTHENTICATION 0x83
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_CANNOT_DISABLE_USER_LEVEL_AUTHENTICATION_STR \
"Cannot disable User Level authentication"
/* IPMI_CMD_CLOSE_SESSION */
#define IPMI_COMP_CODE_CLOSE_SESSION_INVALID_SESSION_ID_IN_REQUEST 0x87
#define IPMI_COMP_CODE_CLOSE_SESSION_INVALID_SESSION_ID_IN_REQUEST_STR \
"Invalid session ID in request"
/* IPMI_CMD_SET_CHANNEL_ACCESS */
#define IPMI_COMP_CODE_SET_CHANNEL_ACCESS_SET_NOT_SUPPORTED_ON_SELECTED_CHANNEL 0x82
#define IPMI_COMP_CODE_SET_CHANNEL_ACCESS_SET_NOT_SUPPORTED_ON_SELECTED_CHANNEL_STR \
"set not supported on selected channel"
#define IPMI_COMP_CODE_SET_CHANNEL_ACCESS_ACCESS_MODE_NOT_SUPPORTED 0x83
#define IPMI_COMP_CODE_SET_CHANNEL_ACCESS_ACCESS_MODE_NOT_SUPPORTED_STR \
"access mode not supported"
/* IPMI_CMD_GET_CHANNEL_ACCESS */
#define IPMI_COMP_CODE_GET_CHANNEL_ACCESS_COMMAND_NOT_SUPPORTED_FOR_SELECTED_CHANNEL 0x82
#define IPMI_COMP_CODE_GET_CHANNEL_ACCESS_COMMAND_NOT_SUPPORTED_FOR_SELECTED_CHANNEL_STR \
"command not supported for selected channel"
/* IPMI_CMD_SET_USER_PASSWORD_COMMAND */
#define IPMI_COMP_CODE_SET_USER_PASSWORD_COMMAND_PASSWORD_TEST_FAILED_PASSWORD_SIZE_CORRECT 0x80
#define IPMI_COMP_CODE_SET_USER_PASSWORD_COMMAND_PASSWORD_TEST_FAILED_PASSWORD_SIZE_CORRECT_STR \
"password test failed. Password size correct, but password " \
"data does not match stored value."
#define IPMI_COMP_CODE_SET_USER_PASSWORD_COMMAND_PASSWORD_TEST_FAILED_PASSWORD_SIZE_INCORRECT 0x81
#define IPMI_COMP_CODE_SET_USER_PASSWORD_COMMAND_PASSWORD_TEST_FAILED_PASSWORD_SIZE_INCORRECT_STR \
"password test failed. Wrong password size was used."
/* IPMI_CMD_ACTIVATE_PAYLOAD */
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_ALREADY_ACTIVE_ON_ANOTHER_SESSION 0x80
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_ALREADY_ACTIVE_ON_ANOTHER_SESSION_STR \
"Payload already active on another session"
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_TYPE_IS_DISABLED 0x81
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_TYPE_IS_DISABLED_STR \
"Payload type disabled. Given payload type is not configured " \
"to be enabled for activation."
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_ACTIVATION_LIMIT_REACHED 0x82
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_ACTIVATION_LIMIT_REACHED_STR \
"Payload activation limit reached. Cannot activate given payload type " \
"because the maximum number of simultaneous instances of that payload type " \
"are already running."
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_CANNOT_ACTIVATE_PAYLOAD_WITH_ENCRYPTION 0x83
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_CANNOT_ACTIVATE_PAYLOAD_WITH_ENCRYPTION_STR \
"Cannot activate payload with encryption."
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_CANNOT_ACTIVATE_PAYLOAD_WITHOUT_ENCRYPTION 0x84
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_CANNOT_ACTIVATE_PAYLOAD_WITHOUT_ENCRYPTION_STR \
"Cannot activate payload without encryption. BMC requires encryption " \
"for all payloads for given privilege level."
/* IPMI_CMD_DEACTIVATE_PAYLOAD */
#define IPMI_COMP_CODE_DEACTIVATE_PAYLOAD_PAYLOAD_ALREADY_DEACTIVATED 0x80
#define IPMI_COMP_CODE_DEACTIVATE_PAYLOAD_PAYLOAD_ALREADY_DEACTIVATED_STR \
"Payload already deactivated"
#define IPMI_COMP_CODE_DEACTIVATE_PAYLOAD_PAYLOAD_TYPE_IS_DISABLED 0x81
#define IPMI_COMP_CODE_DEACTIVATE_PAYLOAD_PAYLOAD_TYPE_IS_DISABLED_STR \
"Payload type disabled. Given payload type is not configured " \
"to be enabled for activation."
/* IPMI_CMD_GET_CHANNEL_PAYLOAD_VERSION */
#define IPMI_COMP_CODE_GET_CHANNEL_PAYLOAD_VERSION_PAYLOAD_TYPE_NOT_AVAILABLE_ON_GIVEN_CHANNEL 0x80
#define IPMI_COMP_CODE_GET_CHANNEL_PAYLOAD_VERSION_PAYLOAD_TYPE_NOT_AVAILABLE_ON_GIVEN_CHANNEL_STR \
"Payload type not available on given channel"
/* IPMI_CMD_GET_CHANNEL_OEM_PAYLOAD_INFO */
#define IPMI_COMP_CODE_GET_CHANNEL_OEM_PAYLOAD_INFO_OEM_PAYLOAD_IANA_OR_PAYLOAD_ID_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_GET_CHANNEL_OEM_PAYLOAD_INFO_OEM_PAYLOAD_IANA_OR_PAYLOAD_ID_NOT_SUPPORTED_STR \
"OEM Payload IANA and/or Payload ID not supported"
/* IPMI_CMD_SUSPEND_RESUME_PAYLOAD_ENCRYPTION */
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_NOT_SUPPORTED_STR \
"Operation not supported for given payload type."
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_NOT_ALLOWED_UNDER_PRESENT_CONFIGURATION 0x81
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_NOT_ALLOWED_UNDER_PRESENT_CONFIGURATION_STR \
"Operation now allowed under present configuration for given payload type."
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_ENCRYPTION_IS_NOT_AVAILABLE_FOR_SESSION 0x82
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_ENCRYPTION_IS_NOT_AVAILABLE_FOR_SESSION_STR \
"Encryption is not available for session that payload type is active under."
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_PAYLOAD_INSTANCE_NOT_PRESENTLY_ACTIVE 0x83
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_PAYLOAD_INSTANCE_NOT_PRESENTLY_ACTIVE_STR \
"The payload instance is not presently active."
/* IPMI_CMD_SET_CHANNEL_SECURITY_KEYS */
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_CANNOT_PERFORM_SET_CONFIRM_KEY_IS_LOCKED 0x80
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_CANNOT_PERFORM_SET_CONFIRM_KEY_IS_LOCKED_STR \
"Cannot perform set/confirm. Key is locked"
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_INSUFFICIENT_KEY_BYTES 0x81
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_INSUFFICIENT_KEY_BYTES_STR \
"insufficient key bytes"
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_TOO_MANY_KEY_BYTES 0x82
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_TOO_MANY_KEY_BYTES_STR \
"too many key bytes"
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_KEY_VALUE_DOES_NOT_MEET_CRITERIA 0x83
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_KEY_VALUE_DOES_NOT_MEET_CRITERIA_STR \
"key value does not meet criteria for specified type of key"
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_KR_IS_NOT_USED 0x84
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_KR_IS_NOT_USED_STR \
"K_R is not used. BMC uses a random number generation approach " \
"that does not require a K_R value"
/*
* Chassis Device Commands
*/
/* IPMI_CMD_SET_SYSTEM_BOOT_OPTIONS */
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_INVALID_SET_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_INVALID_SET_IN_PROGRESS_STR \
"attempt to set the 'set in progress' value (in parameter #0) " \
"when not int the 'set complete' state."
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_WRITE_READ_ONLY_PARAMETER 0x82
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_WRITE_READ_ONLY_PARAMETER_STR \
"attempt to write read-only parameter"
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_READ_WRITE_ONLY_PARAMETER 0x83
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_READ_WRITE_ONLY_PARAMETER_STR \
"attempt to read write-only parameter"
/* IPMI_CMD_GET_SYSTEM_BOOT_OPTIONS */
#define IPMI_COMP_CODE_GET_BOOT_OPTIONS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_GET_BOOT_OPTIONS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
/*
* Event Commands
*/
/*
* PEF and Alerting Commands
*/
/* IPMI_CMD_SET_PEF_CONFIGURATION_PARAMETERS */
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS_STR \
"attempt to set the 'set in progress' value (in parameter #0) " \
"when not int the 'set complete' state."
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER 0x82
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER_STR \
"attempt to write read-only parameter"
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER 0x83
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER_STR \
"attempt to read write-only parameter"
/* IPMI_CMD_GET_PEF_CONFIGURATION_PARAMETERS */
#define IPMI_COMP_CODE_GET_PEF_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_GET_PEF_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
/* IPMI_CMD_SET_LAST_PROCESSED_EVENT_ID */
#define IPMI_COMP_CODE_SET_LAST_PROCESSED_EVENT_ID_SEL_ERASE_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_SET_LAST_PROCESSED_EVENT_ID_SEL_ERASE_IN_PROGRESS_STR \
"cannot execute command, SEL erase in progress"
/* IPMI_CMD_GET_LAST_PROCESSED_EVENT_ID */
#define IPMI_COMP_CODE_GET_LAST_PROCESSED_EVENT_ID_SEL_ERASE_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_GET_LAST_PROCESSED_EVENT_ID_SEL_ERASE_IN_PROGRESS_STR \
"cannot execute command, SEL erase in progress"
/* IPMI_CMD_ALERT_IMMEDIATE */
#define IPMI_COMP_CODE_ALERT_ALREADY_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_ALERT_ALREADY_IN_PROGRESS_STR \
"Alert Immediate rejected due to alert already in progress"
#define IPMI_COMP_CODE_ALERT_IPMI_MESSAGING_SESSION_ACTIVE 0x82
#define IPMI_COMP_CODE_ALERT_IPMI_MESSAGING_SESSION_ACTIVE_STR \
"Alert Immedate rejected due to IPMI messaging session active on this channel"
/*
* Sensor Device Commands
*/
/* IPMI_CMD_SET_SENSOR_READING_AND_EVENT_STATUS */
#define IPMI_COMP_CODE_SENSOR_READING_OR_STATUS_NOT_SETTABLE 0x80
#define IPMI_COMP_CODE_SENSOR_READING_OR_STATUS_NOT_SETTABLE_STR \
"Attempt to change reading or set or clear status bits that " \
"are not settable via this command"
#define IPMI_COMP_CODE_EVENT_DATA_BYTES_NOT_SETTABLE 0x81
#define IPMI_COMP_CODE_EVENT_DATA_BYTES_NOT_SETTABLE_STR \
"Attempted to set Event Data Bytes, but setting Event Data Bytes is not " \
"supported for this sensor."
/*
* FRU Device Commands
*/
/* IPMI_CMD_READ_FRU_DATA */
#define IPMI_COMP_CODE_READ_FRU_DATA_FRU_DEVICE_BUSY 0x81
#define IPMI_COMP_CODE_READ_FRU_DATA_FRU_DEVICE_BUSY_STR \
"FRU device busy. The requested cannot be completed because the " \
"implementation of the logical FRU device is in a state where the FRU " \
"information is temporarily unavailable. This could be due to a " \
"condition such as a loss of arbitration if the FRU is implemented as a " \
"device on a shared bus."
/* IPMI_CMD_WRITE_FRU_DATA */
#define IPMI_COMP_CODE_WRITE_FRU_DATA_WRITE_PROTECTED_OFFSET 0x80
#define IPMI_COMP_CODE_WRITE_FRU_DATA_WRITE_PROTECTED_OFFSET_STR \
"write-protected offset. Cannot complete write because one or more " \
"bytes of FRU data are to a write-protected offset in the FRU device. " \
"Note that an implementation may have allowed a 'partial write' of the " \
"data to occur."
#define IPMI_COMP_CODE_WRITE_FRU_DATA_FRU_DEVICE_BUSY 0x81
#define IPMI_COMP_CODE_WRITE_FRU_DATA_FRU_DEVICE_BUSY_STR \
"FRU device busy. The requested cannot be completed because the " \
"implementation of the logical FRU device is in a state where the FRU " \
"information is temporarily unavailable. This could be due to a " \
"condition such as a loss of arbitration if the FRU is implemented as a " \
"device on a shared bus."
/*
* SDR Device Commands
*/
/*
* SEL Device Commands
*/
/* IPMI_CMD_GET_SEL_ENTRY */
#define IPMI_COMP_CODE_GET_SEL_ENTRY_SEL_ERASE_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_GET_SEL_ENTRY_SEL_ERASE_IN_PROGRESS_STR \
"cannot execute command, SEL erase in progress"
/* IPMI_CMD_DELETE_SEL_ENTRY */
#define IPMI_COMP_CODE_DELETE_SEL_ENTRY_SEL_OPERATION_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_DELETE_SEL_ENTRY_SEL_OPERATION_NOT_SUPPORTED_STR \
"Operation not supported for this Record Type"
#define IPMI_COMP_CODE_DELETE_SEL_ENTRY_SEL_ERASE_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_DELETE_SEL_ENTRY_SEL_ERASE_IN_PROGRESS_STR \
"cannot execute command, SEL erase in progress"
/*
* LAN Device Commands
*/
/* IPMI_CMD_SET_LAN_CONFIGURATION_PARAMETERS */
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS_STR \
"attempt to set the 'set in progress' value (in parameter #0) " \
"when not int the 'set complete' state."
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER 0x82
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER_STR \
"attempt to write read-only parameter"
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER 0x83
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER_STR \
"attempt to read write-only parameter"
/* IPMI_CMD_GET_LAN_CONFIGURATION_PARAMETERS */
#define IPMI_COMP_CODE_GET_LAN_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_GET_LAN_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
/*
* Serial/Modem Device Commands
*/
/* IPMI_CMD_SET_SERIAL_MODEM_CONFIGURATION */
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_INVALID_SET_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_INVALID_SET_IN_PROGRESS_STR \
"attempt to set the 'set in progress' value (in parameter #0) " \
"when not int the 'set complete' state."
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_WRITE_READ_ONLY_PARAMETER 0x82
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_WRITE_READ_ONLY_PARAMETER_STR \
"attempt to write read-only parameter"
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_READ_WRITE_ONLY_PARAMETER 0x83
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_READ_WRITE_ONLY_PARAMETER_STR \
"attempt to read write-only parameter"
/* IPMI_CMD_GET_SERIAL_MODEM_CONFIGURATION */
#define IPMI_COMP_CODE_GET_SERIAL_MODEM_CONFIGURATION_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_GET_SERIAL_MODEM_CONFIGURATION_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
/* IPMI_CMD_SET_SOL_CONFIGURATION_PARAMETERS */
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS 0x81
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS_STR \
"attempt to set the 'set in progress' value (in parameter #0) " \
"when not int the 'set complete' state."
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER 0x82
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER_STR \
"attempt to write read-only parameter"
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER 0x83
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER_STR \
"attempt to read write-only parameter"
/* IPMI_CMD_GET_SOL_CONFIGURATION_PARAMETERS */
#define IPMI_COMP_CODE_GET_SOL_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED 0x80
#define IPMI_COMP_CODE_GET_SOL_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
"parameter not supported."
/*
* Bridge Management Commands (ICMB)
*/
/*
* Discovery Commands (ICMB)
*/
/*
* Bridging Commands (ICMB)
*/
/*
* Event Commands (ICMB)
*/
/*
* OEM Commands for Bridge NetFN
*/
/*
* OEM Bridge Commands
*/
#define IPMI_COMP_CODE_GENERIC_COMPLETION_CODES_MIN 0xC0
#define IPMI_COMP_CODE_GENERIC_COMPLETION_CODES_MAX 0xFF
#define IPMI_COMP_CODE_GENERIC_COMPLETION_CODES(__comp_code) \
(((__comp_code) == IPMI_COMP_CODE_COMMAND_SUCCESS \
|| ((__comp_code) >= IPMI_COMP_CODE_GENERIC_COMPLETION_CODES_MIN \
&& (__comp_code) <= IPMI_COMP_CODE_GENERIC_COMPLETION_CODES_MAX)) ? 1 : 0)
#define IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES_MIN 0x01
#define IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES_MAX 0x7E
#define IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES(__comp_code) \
(((__comp_code) >= IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES_MIN \
&& (__comp_code) <= IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES_MAX) ? 1 : 0)
#define IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES_MIN 0x80
#define IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES_MAX 0xBE
#define IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES(__comp_code) \
(((__comp_code) >= IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES_MIN \
&& (__comp_code) <= IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES_MAX) ? 1 : 0)
#ifdef __cplusplus
}
#endif
#endif /* IPMI_COMP_CODE_SPEC_H */

View File

@ -0,0 +1,32 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_DEVICE_TYPES_OEM_SPEC_H
#define IPMI_DEVICE_TYPES_OEM_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-device-types-oem-spec.h header file is deprecated
#ifdef __cplusplus
}
#endif
#endif /* IPMI_DEVICE_TYPES_OEM_SPEC_H */

View File

@ -0,0 +1,284 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_DEVICE_TYPES_SPEC_H
#define IPMI_DEVICE_TYPES_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
/* Note that the macros are not in sequential order, per spec table 43-12 */
#define IPMI_DEVICE_TYPE_DS1624_TEMPERATURE_SENSOR_EEPROM_OR_EQUIVALENT 0x02
#define IPMI_DEVICE_TYPE_DS1621_TEMPERATURE_SENSOR_OR_EQUIVALENT 0x03
#define IPMI_DEVICE_TYPE_LM75_TEMPERATURE_SENSOR_OR_EQUIVALENT 0x04
#define IPMI_DEVICE_TYPE_HECETA_ASIC_OR_SIMILAR 0x05
#define IPMI_DEVICE_TYPE_EEPROM_24C01_OR_EQUIVALENT 0x08
#define IPMI_DEVICE_TYPE_EEPROM_24C02_OR_EQUIVALENT 0x09
#define IPMI_DEVICE_TYPE_EEPROM_24C04_OR_EQUIVALENT 0x0A
#define IPMI_DEVICE_TYPE_EEPROM_24C08_OR_EQUIVALENT 0x0B
#define IPMI_DEVICE_TYPE_EEPROM_24C16_OR_EQUIVALENT 0x0C
#define IPMI_DEVICE_TYPE_EEPROM_24C17_OR_EQUIVALENT 0x0D
#define IPMI_DEVICE_TYPE_EEPROM_24C32_OR_EQUIVALENT 0x0E
#define IPMI_DEVICE_TYPE_EEPROM_24C64_OR_EQUIVALENT 0x0F
#define IPMI_DEVICE_TYPE_FRU_INVENTORY_DEVICE_BEHIND_MANAGEMENT_CONTROLLER 0x10
#define IPMI_DEVICE_TYPE_PCF_8570_256_BYTE_RAM_OR_EQUIVALENT 0x14
#define IPMI_DEVICE_TYPE_PCF_8573_CLOCK_CALENDAR_OR_EQUIVALENT 0x15
#define IPMI_DEVICE_TYPE_PCF_8574A_IO_PORT_OR_EQUIVALENT 0x16
#define IPMI_DEVICE_TYPE_PCF_8583_CLOCK_CALENDAR_OR_EQUIVALENT 0x17
#define IPMI_DEVICE_TYPE_PCF_8593_CLOCK_CALENDAR_OR_EQUIVALENT 0x18
#define IPMI_DEVICE_TYPE_CLOCK_CALENDAR_TYPE_NOT_SPECIFIED 0x19
#define IPMI_DEVICE_TYPE_PCF_8591_AD_DA_CONVERTER_OR_EQUIVALENT 0x1A
#define IPMI_DEVICE_TYPE_IO_PORT_SPECIFIC_DEVICE_NOT_SPECIFIED 0x1B
#define IPMI_DEVICE_TYPE_AD_CONVERTER_SPECIFIC_DEVICE_NOT_SPECIFIED 0x1C
#define IPMI_DEVICE_TYPE_DA_CONVERTER_SPECIFIC_DEVICE_NOT_SPECIFIED 0x1D
#define IPMI_DEVICE_TYPE_AD_DA_CONVERTER_SPECIFIC_DEVICE_NOT_SPECIFIED 0x1E
#define IPMI_DEVICE_TYPE_LCD_CONTROLLER_DRIVER_SPECIFIC_DEVICE_NOT_SPECIFIED 0x1F
#define IPMI_DEVICE_TYPE_CORE_LOGIC_DEVICE_SPECIFIC_DEVICE_NOT_SPECIFIED 0x20
#define IPMI_DEVICE_TYPE_LMC6874_INTELLIGENT_BATTERY_CONTROLLER_OR_EQUIVALENT 0x21
#define IPMI_DEVICE_TYPE_INTELLIGENT_BATTERY_CONTROLLER_SPECIFIC_DEVICE_NOT_SPECIFIED 0x22
#define IPMI_DEVICE_TYPE_COMBO_MANAGEMENT_ASIC_SPECIFIC_DEVICE_NOT_SPECIFIED 0x23
#define IPMI_DEVICE_TYPE_MAXIM_1617_TEMPERATURE_SENSOR 0x24
#define IPMI_DEVICE_TYPE_OTHER_UNSPECIFIED_DEVICE 0xBF
#define IPMI_DEVICE_TYPE_OEM_MIN 0xC0
#define IPMI_DEVICE_TYPE_OEM_MAX 0xFF
#define IPMI_DEVICE_TYPE_MODIFIER_DS1624_TEMPERATURE_SENSOR_EEPROM_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_DS1621_TEMPERATURE_SENSOR_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_LM75_TEMPERATURE_SENSOR_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_HECETA_ASIC_OR_SIMILAR_HECETA_1 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_HECETA_ASIC_OR_SIMILAR_HECETA_2 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_HECETA_ASIC_OR_SIMILAR_LM80 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_HECETA_ASIC_OR_SIMILAR_HECETA_3 0x03
#define IPMI_DEVICE_TYPE_MODIFIER_HECETA_ASIC_OR_SIMILAR_HECETA_4 0x04
#define IPMI_DEVICE_TYPE_MODIFIER_HECETA_ASIC_OR_SIMILAR_HECETA_5 0x05
/* PI = processor information */
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C01_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C01_OR_EQUIVALENT_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C01_OR_EQUIVALENT_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C01_OR_EQUIVALENT_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
/* PI = processor information */
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C02_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C02_OR_EQUIVALENT_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C02_OR_EQUIVALENT_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C02_OR_EQUIVALENT_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
/* PI = processor information */
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C04_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C04_OR_EQUIVALENT_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C04_OR_EQUIVALENT_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C04_OR_EQUIVALENT_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
/* PI = processor information */
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C08_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C08_OR_EQUIVALENT_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C08_OR_EQUIVALENT_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C08_OR_EQUIVALENT_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
/* PI = processor information */
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C16_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C16_OR_EQUIVALENT_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C16_OR_EQUIVALENT_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C16_OR_EQUIVALENT_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
/* PI = processor information */
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C17_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C17_OR_EQUIVALENT_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C17_OR_EQUIVALENT_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C17_OR_EQUIVALENT_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
/* PI = processor information */
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C32_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C32_OR_EQUIVALENT_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C32_OR_EQUIVALENT_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C32_OR_EQUIVALENT_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
/* PI = processor information */
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C64_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C64_OR_EQUIVALENT_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C64_OR_EQUIVALENT_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_EEPROM_24C64_OR_EQUIVALENT_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
/* achu: not a typo, 00h and 0x02 are same. 00h for backwards compatability, see spec */
#define IPMI_DEVICE_TYPE_MODIFIER_FRU_INVENTORY_DEVICE_BEHIND_MANAGEMENT_CONTROLLER_IPMI_FRU_INVENTORY_BACKWARDS_COMPATABILITY 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_FRU_INVENTORY_DEVICE_BEHIND_MANAGEMENT_CONTROLLER_DIMM_MEMORY_ID 0x01
#define IPMI_DEVICE_TYPE_MODIFIER_FRU_INVENTORY_DEVICE_BEHIND_MANAGEMENT_CONTROLLER_IPMI_FRU_INVENTORY 0x02
#define IPMI_DEVICE_TYPE_MODIFIER_FRU_INVENTORY_DEVICE_BEHIND_MANAGEMENT_CONTROLLER_SYSTEM_PROCESSOR_CARTRIDGE_FRU_PI_ROM 0x03
#define IPMI_DEVICE_TYPE_MODIFIER_FRU_INVENTORY_DEVICE_BEHIND_MANAGEMENT_CONTROLLER_UNSPECIFIED 0xFF
#define IPMI_DEVICE_TYPE_MODIFIER_PCF_8570_256_BYTE_RAM_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_PCF_8573_CLOCK_CALENDAR_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_PCF_8574A_IO_PORT_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_PCF_8583_CLOCK_CALENDAR_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_PCF_8593_CLOCK_CALENDAR_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_CLOCK_CALENDAR_TYPE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_PCF_8591_AD_DA_CONVERTER_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_IO_PORT_SPECIFIC_DEVICE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_AD_CONVERTER_SPECIFIC_DEVICE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_DA_CONVERTER_SPECIFIC_DEVICE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_AD_DA_CONVERTER_SPECIFIC_DEVICE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_LCD_CONTROLLER_DRIVER_SPECIFIC_DEVICE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_CORE_LOGIC_DEVICE_SPECIFIC_DEVICE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_LMC6874_INTELLIGENT_BATTERY_CONTROLLER_OR_EQUIVALENT_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_INTELLIGENT_BATTERY_CONTROLLER_SPECIFIC_DEVICE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_COMBO_MANAGEMENT_ASIC_SPECIFIC_DEVICE_NOT_SPECIFIED_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_MAXIM_1617_TEMPERATURE_SENSOR_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_MODIFIER_OTHER_UNSPECIFIED_DEVICE_UNSPECIFIED 0x00
#define IPMI_DEVICE_TYPE_VALID(__device_type) \
((((__device_type) >= IPMI_DEVICE_TYPE_DS1624_TEMPERATURE_SENSOR_EEPROM_OR_EQUIVALENT \
&& (__device_type) <= IPMI_DEVICE_TYPE_HECETA_ASIC_OR_SIMILAR) \
|| ((__device_type) >= IPMI_DEVICE_TYPE_EEPROM_24C01_OR_EQUIVALENT \
&& (__device_type) <= IPMI_DEVICE_TYPE_FRU_INVENTORY_DEVICE_BEHIND_MANAGEMENT_CONTROLLER) \
|| ((__device_type) >= IPMI_DEVICE_TYPE_PCF_8570_256_BYTE_RAM_OR_EQUIVALENT \
&& (__device_type) <= IPMI_DEVICE_TYPE_MAXIM_1617_TEMPERATURE_SENSOR) \
|| (__device_type) == IPMI_DEVICE_TYPE_OTHER_UNSPECIFIED_DEVICE) ? 1 : 0)
/* To avoid gcc warnings, subtract -1 in comparison */
#define IPMI_DEVICE_TYPE_IS_OEM(__device_type) \
(((__device_type) >= IPMI_DEVICE_TYPE_OEM_MIN \
&& (((__device_type) - 1) <= (IPMI_DEVICE_TYPE_OEM_MAX - 1))) ? 1 : 0)
/*
* String arrays for above
*/
extern const char *const ipmi_device_types[];
extern const char *const ipmi_oem_device_type;
extern const char * const ipmi_device_type_modifier_ds1624_temperature_sensor_eeprom_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_ds1624_temperature_sensor_eeprom_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_ds1621_temperature_sensor_eeprom_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_ds1621_temperature_sensor_eeprom_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_lm75_temperature_sensor_eeprom_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_lm75_temperature_sensor_eeprom_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_heceta_asic_or_similar[];
extern unsigned int ipmi_device_type_modifier_heceta_asic_or_similar_max_index;
extern const char * const ipmi_device_type_modifier_eeprom_24c01_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_eeprom_24c01_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_eeprom_24c02_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_eeprom_24c02_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_eeprom_24c04_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_eeprom_24c04_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_eeprom_24c08_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_eeprom_24c08_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_eeprom_24c16_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_eeprom_24c16_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_eeprom_24c17_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_eeprom_24c17_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_eeprom_24c32_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_eeprom_24c32_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_eeprom_24c64_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_eeprom_24c64_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_fru_inventory_device_behind_management_controller[];
extern unsigned int ipmi_device_type_modifier_fru_inventory_device_behind_management_controller_max_index;
extern const char * const ipmi_device_type_modifier_pcf_8570_256_byte_ram_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_pcf_8570_256_byte_ram_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_pcf_8573_clock_calendar_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_pcf_8573_clock_calendar_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_pcf_8574a_io_port_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_pcf_8574a_io_port_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_pcf_8583_clock_calendar_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_pcf_8583_clock_calendar_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_pcf_8593_clock_calendar_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_pcf_8593_clock_calendar_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_clock_calendar_type_not_specified[];
extern unsigned int ipmi_device_type_modifier_clock_calendar_type_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_pcf_8591_ad_da_converter_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_pcf_8591_ad_da_converter_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_io_port_specific_device_not_specified[];
extern unsigned int ipmi_device_type_modifier_io_port_specific_device_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_ad_converter_specific_device_not_specified[];
extern unsigned int ipmi_device_type_modifier_ad_converter_specific_device_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_da_converter_specific_device_not_specified[];
extern unsigned int ipmi_device_type_modifier_da_converter_specific_device_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_ad_da_converter_specific_device_not_specified[];
extern unsigned int ipmi_device_type_modifier_ad_da_converter_specific_device_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_lcd_controller_driver_specific_device_not_specified[];
extern unsigned int ipmi_device_type_modifier_lcd_controller_driver_specific_device_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_core_logic_device_specific_device_not_specified[];
extern unsigned int ipmi_device_type_modifier_core_logic_device_specific_device_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_lmc6874_intelligent_battery_controller_or_equivalent[];
extern unsigned int ipmi_device_type_modifier_lmc6874_intelligent_battery_controller_or_equivalent_max_index;
extern const char * const ipmi_device_type_modifier_intelligent_battery_controller_specific_device_not_specified[];
extern unsigned int ipmi_device_type_modifier_intelligent_battery_controller_specific_device_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_combo_management_asic_specific_device_not_specified[];
extern unsigned int ipmi_device_type_modifier_combo_management_asic_specific_device_not_specified_max_index;
extern const char * const ipmi_device_type_modifier_maxim_1617_temperature_sensor[];
extern unsigned int ipmi_device_type_modifier_maxim_1617_temperature_sensor_max_index;
extern const char * const ipmi_device_type_modifier_other_unspecified_device[];
extern unsigned int ipmi_device_type_modifier_other_unspecified_device_max_index;
#ifdef __cplusplus
}
#endif
#endif /* IPMI_DEVICE_TYPES_SPEC_H */

View File

@ -0,0 +1,150 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_ENTITY_IDS_SPEC_H
#define IPMI_ENTITY_IDS_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#define IPMI_ENTITY_ID_UNSPECIFIED 0x00
#define IPMI_ENTITY_ID_OTHER 0x01
#define IPMI_ENTITY_ID_UNKNOWN 0x02
#define IPMI_ENTITY_ID_PROCESSOR 0x03
#define IPMI_ENTITY_ID_DISK_OR_DISK_BAY 0x04
#define IPMI_ENTITY_ID_PERIPHERAL_BAY 0x05 /* "peripheral bay" in spec */
#define IPMI_ENTITY_ID_SYSTEM_MANAGEMENT_MODULE 0x06
#define IPMI_ENTITY_ID_SYSTEM_BOARD 0x07
#define IPMI_ENTITY_ID_MEMORY_MODULE 0x08
#define IPMI_ENTITY_ID_PROCESSOR_MODULE 0x09
#define IPMI_ENTITY_ID_POWER_SUPPLY 0x0A
#define IPMI_ENTITY_ID_ADD_IN_CARD 0x0B
#define IPMI_ENTITY_ID_FRONT_PANEL_BOARD 0x0C
#define IPMI_ENTITY_ID_BACK_PANEL_BOARD 0x0D
#define IPMI_ENTITY_ID_POWER_SYSTEM_BOARD 0x0E
#define IPMI_ENTITY_ID_DRIVE_BACKPLANE 0x0F
#define IPMI_ENTITY_ID_SYSTEM_INTERNAL_EXPANSION_BOARD 0x10
#define IPMI_ENTITY_ID_OTHER_SYSTEM_BOARD 0x11
#define IPMI_ENTITY_ID_PROCESSOR_BOARD 0x12
#define IPMI_ENTITY_ID_POWER_UNIT_POWER_DOMAIN 0x13
#define IPMI_ENTITY_ID_POWER_MODULE_DC_TO_DC_CONVERTER 0x14
#define IPMI_ENTITY_ID_POWER_MANAGEMENT_POWER_DISTRIBUTION_BOARD 0x15
#define IPMI_ENTITY_ID_CHASSI_BACK_PANEL_BOARD 0x16
#define IPMI_ENTITY_ID_SYSTEM_CHASSIS 0x17
#define IPMI_ENTITY_ID_SUB_CHASSIS 0x18
#define IPMI_ENTITY_ID_OTHER_CHASSIS_BOARD 0x19
#define IPMI_ENTITY_ID_DISK_DRIVE_BAY 0x1A
#define IPMI_ENTITY_ID_PERIPHERAL_BAY2 0x1B /* "Peripheral Bay" in spec */
#define IPMI_ENTITY_ID_DEVICE_BAY 0x1C
#define IPMI_ENTITY_ID_FAN_COOLING_DEVICE 0x1D
#define IPMI_ENTITY_ID_COOLING_UNIT_COOLING_DOMAIN 0x1E /* see errata */
#define IPMI_ENTITY_ID_CABLE_INTERCONNECT 0x1F
#define IPMI_ENTITY_ID_MEMORY_DEVICE 0x20
#define IPMI_ENTITY_ID_SYSTEM_MANAGEMENT_SOFTWARE 0x21
#define IPMI_ENTITY_ID_SYSTEM_FIRMWARE 0x22 /* see errata */
#define IPMI_ENTITY_ID_OPERATING_SYSTEM 0x23
#define IPMI_ENTITY_ID_SYSTEM_BUS 0x24
#define IPMI_ENTITY_ID_GROUP 0x25
#define IPMI_ENTITY_ID_REMOTE_MANAGEMENT_COMMUNICATION_DEVICE 0x26
#define IPMI_ENTITY_ID_EXTERNAL_ENVIRONMENT 0x27
#define IPMI_ENTITY_ID_BATTERY 0x28
#define IPMI_ENTITY_ID_PROCESSING_BLADE 0x29
#define IPMI_ENTITY_ID_CONNECTIVITY_SWTICH 0x2A
#define IPMI_ENTITY_ID_PROCESSOR_MEMORY_MODULE 0x2B
#define IPMI_ENTITY_ID_IO_MODULE 0x2C
#define IPMI_ENTITY_ID_PROCESSOR_IO_MODULE 0x2D
#define IPMI_ENTITY_ID_MANAGEMENT_CONTROLLER_FIRMWARE 0x2E
#define IPMI_ENTITY_ID_IPMI_CHANNEL 0x2F
#define IPMI_ENTITY_ID_PCI_BUS 0x30
#define IPMI_ENTITY_ID_PCI_EXPRESS_BUS 0x31
#define IPMI_ENTITY_ID_SCSI_BUS 0x32
#define IPMI_ENTITY_ID_SATA_SAS_BUS 0x33
#define IPMI_ENTITY_ID_PROCESSOR_FRONT_SIDE_BUS 0x34
#define IPMI_ENTITY_ID_REAL_TIME_CLOCK 0x35
/* 0x36 - reserved */
/* achu:
*
* Ugh .. 0x37 is listed as air inlet in markup 4 spec, but not in
* errata 4. Initial assumption was that it was a typo. Later, DCMI
* v1.5 spec lits 0x37 is inlet temperature.
*
* So the assumption is it's not a typo now, we'll list 0x37 as
* AIR_INLET "B"
*/
#define IPMI_ENTITY_ID_AIR_INLET_B 0x37
/* 0x38 - 0x3F - reserved */
#define IPMI_ENTITY_ID_AIR_INLET 0x40
#define IPMI_ENTITY_ID_AIR_INLET_A IPMI_ENTITY_ID_AIR_INLET
#define IPMI_ENTITY_ID_PROCESSOR_CPU 0x41 /* considered same as 0x03, to match DCMI */
#define IPMI_ENTITY_ID_BASEBOARD_MAIN_SYSTEM_BOARD 0x42 /* considered same as 0x07, to match DCMI */
#define IPMI_ENTITY_ID_CHASSIS_SPECIFIC_MIN 0x90
#define IPMI_ENTITY_ID_CHASSIS_SPECIFIC_MAX 0xAF
#define IPMI_ENTITY_ID_BOARD_SET_SPECIFIC_MIN 0xB0
#define IPMI_ENTITY_ID_BOARD_SET_SPECIFIC_MAX 0xCF
#define IPMI_ENTITY_ID_OEM_SYSTEM_INTEGRATOR_DEFINED_MIN 0xD0
#define IPMI_ENTITY_ID_OEM_SYSTEM_INTEGRATOR_DEFINED_MAX 0xFF
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_ENTITY_ID_VALID(__entity_id) \
((((__entity_id + 1) >= (IPMI_ENTITY_ID_UNSPECIFIED + 1) \
&& (__entity_id) <= IPMI_ENTITY_ID_REAL_TIME_CLOCK) \
|| ((__entity_id) >= IPMI_ENTITY_ID_AIR_INLET \
&& (__entity_id) <= IPMI_ENTITY_ID_BASEBOARD_MAIN_SYSTEM_BOARD)) ? 1 : 0)
#define IPMI_ENTITY_ID_IS_CHASSIS_SPECIFIC(__entity_id) \
(((__entity_id) >= IPMI_ENTITY_ID_CHASSIS_SPECIFIC_MIN \
&& ((__entity_id) <= IPMI_ENTITY_ID_CHASSIS_SPECIFIC_MAX)) ? 1 : 0)
#define IPMI_ENTITY_ID_IS_BOARD_SET_SPECIFIC(__entity_id) \
(((__entity_id) >= IPMI_ENTITY_ID_BOARD_SET_SPECIFIC_MIN \
&& ((__entity_id) <= IPMI_ENTITY_ID_BOARD_SET_SPECIFIC_MAX)) ? 1 : 0)
/* To avoid gcc warnings, subtract -1 in comparison */
#define IPMI_ENTITY_ID_IS_OEM_SYSTEM_INTEGRATOR_DEFINED(__entity_id) \
(((__entity_id) >= IPMI_ENTITY_ID_OEM_SYSTEM_INTEGRATOR_DEFINED_MIN \
&& ((__entity_id - 1) <= (IPMI_ENTITY_ID_OEM_SYSTEM_INTEGRATOR_DEFINED_MAX - 1))) ? 1 : 0)
#define IPMI_ENTITY_INSTANCE_SYSTEM_RELATIVE_MIN 0x00
#define IPMI_ENTITY_INSTANCE_SYSTEM_RELATIVE_MAX 0x5F
#define IPMI_ENTITY_INSTANCE_DEVICE_RELATIVE_MIN 0x60
#define IPMI_ENTITY_INSTANCE_DEVICE_RELATIVE_MAX 0x7F
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_ENTITY_INSTANCE_SYSTEM_RELATIVE(__entity_instance) \
(((__entity_instance + 1) >= (IPMI_ENTITY_INSTANCE_SYSTEM_RELATIVE_MIN + 1)) \
&& ((__entity_instance) >= IPMI_ENTITY_INSTANCE_SYSTEM_RELATIVE_MAX) ? 1 : 0)
#define IPMI_ENTITY_INSTANCE_DEVICE_RELATIVE(__entity_instance) \
(((__entity_instance) >= IPMI_ENTITY_INSTANCE_DEVICE_RELATIVE_MIN) \
&& ((__entity_instance) >= IPMI_ENTITY_INSTANCE_DEVICE_RELATIVE_MAX) ? 1 : 0)
extern const char *const ipmi_entity_ids[];
extern const char *const ipmi_entity_id_chassis_specific;
extern const char *const ipmi_entity_id_board_set_specific;
extern const char *const ipmi_entity_id_oem_system_integrator;
/* properly capitalize, for some entries if entity has an "or" or "/" remove it and pick one element, etc. */
extern const char *const ipmi_entity_ids_pretty[];
#ifdef __cplusplus
}
#endif
#endif /* IPMI_ENTITY_IDS_SPEC_H */

View File

@ -0,0 +1,39 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_EVENT_READING_TYPE_CODE_OEM_SPEC_H
#define IPMI_EVENT_READING_TYPE_CODE_OEM_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-event-reading-type-code-oem-spec.h header file is deprecated
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-hp-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-node-manager-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-event-reading-type-code-oem-supermicro-spec.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_EVENT_READING_TYPE_CODE_OEM_SPEC_H */

View File

@ -0,0 +1,66 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_EVENT_READING_TYPE_CODE_SPEC_H
#define IPMI_EVENT_READING_TYPE_CODE_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
/* Table 42-1 */
#define IPMI_EVENT_READING_TYPE_CODE_UNSPECIFIED 0x00
#define IPMI_EVENT_READING_TYPE_CODE_THRESHOLD 0x01
#define IPMI_EVENT_READING_TYPE_CODE_TRANSITION_STATE 0x02
#define IPMI_EVENT_READING_TYPE_CODE_STATE 0x03
#define IPMI_EVENT_READING_TYPE_CODE_PREDICTIVE_FAILURE 0x04
#define IPMI_EVENT_READING_TYPE_CODE_LIMIT 0x05
#define IPMI_EVENT_READING_TYPE_CODE_PERFORMANCE 0x06
#define IPMI_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY 0x07
#define IPMI_EVENT_READING_TYPE_CODE_DEVICE_PRESENT 0x08
#define IPMI_EVENT_READING_TYPE_CODE_DEVICE_ENABLED 0x09
#define IPMI_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY 0x0A
#define IPMI_EVENT_READING_TYPE_CODE_REDUNDANCY 0x0B
#define IPMI_EVENT_READING_TYPE_CODE_ACPI_POWER_STATE 0x0C
#define IPMI_EVENT_READING_TYPE_CODE_SENSOR_SPECIFIC 0x6F
#define IPMI_EVENT_READING_TYPE_CODE_OEM_MIN 0x70
#define IPMI_EVENT_READING_TYPE_CODE_OEM_MAX 0x7F
#define IPMI_EVENT_READING_TYPE_CODE_IS_UNSPECIFIED(__val) \
(((__val) == IPMI_EVENT_READING_TYPE_CODE_UNSPECIFIED) ? 1 : 0)
#define IPMI_EVENT_READING_TYPE_CODE_IS_THRESHOLD(__val) \
(((__val) == IPMI_EVENT_READING_TYPE_CODE_THRESHOLD) ? 1 : 0)
#define IPMI_EVENT_READING_TYPE_CODE_IS_GENERIC(__val) \
(((__val) >= IPMI_EVENT_READING_TYPE_CODE_TRANSITION_STATE \
&& (__val) <= IPMI_EVENT_READING_TYPE_CODE_ACPI_POWER_STATE) ? 1 : 0)
#define IPMI_EVENT_READING_TYPE_CODE_IS_SENSOR_SPECIFIC(__val) \
(((__val) == IPMI_EVENT_READING_TYPE_CODE_SENSOR_SPECIFIC) ? 1 : 0)
#define IPMI_EVENT_READING_TYPE_CODE_IS_OEM(__val) \
(((__val) >= IPMI_EVENT_READING_TYPE_CODE_OEM_MIN \
&& (__val) <= IPMI_EVENT_READING_TYPE_CODE_OEM_MAX) ? 1 : 0)
#ifdef __cplusplus
}
#endif
#endif /* IPMI_EVENT_READING_TYPE_CODE_SPEC_H */

View File

@ -0,0 +1,103 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
* Copyright (C) 2007 The Regents of the University of California.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* UCRL-CODE-232183
*
* This file is part of Ipmi-fru, a tool used for retrieving
* motherboard field replaceable unit (FRU) information. For details,
* see http://www.llnl.gov/linux/.
*
* Ipmi-fru is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-fru is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-fru. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_FRU_CHASSIS_TYPES_SPEC_H
#define IPMI_FRU_CHASSIS_TYPES_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
/*
* achu:
*
* Not in IPMI spec. In "Platform Management FRU Information Storage
* Definition" document.
*
* Starting w/ FRU Revision 1.2, this table is defined by SMBIOS
* specification, Table 16 - "System Enclosure or Chassis Types"
*/
#define IPMI_FRU_CHASSIS_TYPE_OTHER 0x01
#define IPMI_FRU_CHASSIS_TYPE_UNKNOWN 0x02
#define IPMI_FRU_CHASSIS_TYPE_DESKTOP 0x03
#define IPMI_FRU_CHASSIS_TYPE_LOW_PROFILE_DESKTOP 0x04
#define IPMI_FRU_CHASSIS_TYPE_PIZZA_BOX 0x05
#define IPMI_FRU_CHASSIS_TYPE_MINI_TOWER 0x06
#define IPMI_FRU_CHASSIS_TYPE_TOWER 0x07
#define IPMI_FRU_CHASSIS_TYPE_PORTABLE 0x08
#define IPMI_FRU_CHASSIS_TYPE_LAPTOP 0x09
#define IPMI_FRU_CHASSIS_TYPE_NOTEBOOK 0x0a
#define IPMI_FRU_CHASSIS_TYPE_HAND_HELD 0x0b
#define IPMI_FRU_CHASSIS_TYPE_DOCKING_STATION 0x0c
#define IPMI_FRU_CHASSIS_TYPE_ALL_IN_ONE 0x0d
#define IPMI_FRU_CHASSIS_TYPE_SUB_NOTEBOOK 0x0e
#define IPMI_FRU_CHASSIS_TYPE_SPACE_SAVING 0x0f
#define IPMI_FRU_CHASSIS_TYPE_LUNCH_BOX 0x10
#define IPMI_FRU_CHASSIS_TYPE_MAIN_SERVER_CHASSIS 0x11
#define IPMI_FRU_CHASSIS_TYPE_EXPANSION_CHASSIS 0x12
#define IPMI_FRU_CHASSIS_TYPE_SUBCHASSIS 0x13
#define IPMI_FRU_CHASSIS_TYPE_BUS_EXPANSION_CHASSIS 0x14
#define IPMI_FRU_CHASSIS_TYPE_PERIPHERAL_CHASSIS 0x15
#define IPMI_FRU_CHASSIS_TYPE_RAID_CHASSIS 0x16
#define IPMI_FRU_CHASSIS_TYPE_RACK_MOUNT_CHASSIS 0x17
#define IPMI_FRU_CHASSIS_TYPE_SEALED_CASE_PC 0x18
#define IPMI_FRU_CHASSIS_TYPE_MULTI_SYSTEM_CHASSIS 0x19
#define IPMI_FRU_CHASSIS_TYPE_COMPACT_PCI 0x1A
#define IPMI_FRU_CHASSIS_TYPE_ADVANCED_TCA 0x1B
#define IPMI_FRU_CHASSIS_TYPE_BLADE 0x1C
#define IPMI_FRU_CHASSIS_TYPE_BLADE_ENCLOSURE 0x1D
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_FRU_CHASSIS_TYPE_VALID(__chassis_type) \
(((__chassis_type + 1) >= (IPMI_FRU_CHASSIS_TYPE_OTHER + 1) \
&& (__chassis_type) <= IPMI_FRU_CHASSIS_TYPE_BLADE_ENCLOSURE) ? 1 : 0)
extern const char *const ipmi_fru_chassis_types[];
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_CHASSIS_TYPES_SPEC_H */

View File

@ -0,0 +1,210 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*****************************************************************************\
* Copyright (C) 2007-2015 Lawrence Livermore National Security, LLC.
* Copyright (C) 2007 The Regents of the University of California.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Albert Chu <chu11@llnl.gov>
* UCRL-CODE-232183
*
* This file is part of Ipmi-fru, a tool used for retrieving
* motherboard field replaceable unit (FRU) information. For details,
* see http://www.llnl.gov/linux/.
*
* Ipmi-fru is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 3 of the License, or (at your
* option) any later version.
*
* Ipmi-fru is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with Ipmi-fru. If not, see <http://www.gnu.org/licenses/>.
\*****************************************************************************/
#ifndef IPMI_FRU_LANGUAGE_CODES_SPEC_H
#define IPMI_FRU_LANGUAGE_CODES_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/fiid/fiid.h>
/*
* achu:
*
* Not in IPMI spec. In "Platform Management FRU Information Storage
* Definition" document.
*/
#define IPMI_FRU_LANGUAGE_CODE_ENGLISH_LEGACY 0
#define IPMI_FRU_LANGUAGE_CODE_AFAR 1
#define IPMI_FRU_LANGUAGE_CODE_ABKHAZIAN 2
#define IPMI_FRU_LANGUAGE_CODE_AFRIKAANS 3
#define IPMI_FRU_LANGUAGE_CODE_AMHARIC 4
#define IPMI_FRU_LANGUAGE_CODE_ARABIC 5
#define IPMI_FRU_LANGUAGE_CODE_ASSAMESE 6
#define IPMI_FRU_LANGUAGE_CODE_AYMARA 7
#define IPMI_FRU_LANGUAGE_CODE_AZERBAIJANI 8
#define IPMI_FRU_LANGUAGE_CODE_BASHKIR 9
#define IPMI_FRU_LANGUAGE_CODE_BYELORUSSIAN 10
#define IPMI_FRU_LANGUAGE_CODE_BULGARIAN 11
#define IPMI_FRU_LANGUAGE_CODE_BIHARI 12
#define IPMI_FRU_LANGUAGE_CODE_BISLAMA 13
#define IPMI_FRU_LANGUAGE_CODE_BENGALI_BANGLA 14
#define IPMI_FRU_LANGUAGE_CODE_TIBETAN 15
#define IPMI_FRU_LANGUAGE_CODE_BRETON 16
#define IPMI_FRU_LANGUAGE_CODE_CATALAN 17
#define IPMI_FRU_LANGUAGE_CODE_CORSICAN 18
#define IPMI_FRU_LANGUAGE_CODE_CZECH 19
#define IPMI_FRU_LANGUAGE_CODE_WELSH 20
#define IPMI_FRU_LANGUAGE_CODE_DANISH 21
#define IPMI_FRU_LANGUAGE_CODE_GERMAN 22
#define IPMI_FRU_LANGUAGE_CODE_BHUTANI 23
#define IPMI_FRU_LANGUAGE_CODE_GREEK 24
#define IPMI_FRU_LANGUAGE_CODE_ENGLISH 25
#define IPMI_FRU_LANGUAGE_CODE_ESPERANTO 26
#define IPMI_FRU_LANGUAGE_CODE_SPANISH 27
#define IPMI_FRU_LANGUAGE_CODE_ESTONIAN 28
#define IPMI_FRU_LANGUAGE_CODE_BASQUE 29
#define IPMI_FRU_LANGUAGE_CODE_PERSIAN 30
#define IPMI_FRU_LANGUAGE_CODE_FINNISH 31
#define IPMI_FRU_LANGUAGE_CODE_FIJI 32
#define IPMI_FRU_LANGUAGE_CODE_FAEROESE 33
#define IPMI_FRU_LANGUAGE_CODE_FRENCH 34
#define IPMI_FRU_LANGUAGE_CODE_FRISIAN 35
#define IPMI_FRU_LANGUAGE_CODE_IRISH 36
#define IPMI_FRU_LANGUAGE_CODE_SCOTS_GAELIC 37
#define IPMI_FRU_LANGUAGE_CODE_GALICIAN 38
#define IPMI_FRU_LANGUAGE_CODE_GUARANI 39
#define IPMI_FRU_LANGUAGE_CODE_GUJARATI 40
#define IPMI_FRU_LANGUAGE_CODE_HAUSA 41
#define IPMI_FRU_LANGUAGE_CODE_HINDI 42
#define IPMI_FRU_LANGUAGE_CODE_CROATIAN 43
#define IPMI_FRU_LANGUAGE_CODE_HUNGARIAN 44
#define IPMI_FRU_LANGUAGE_CODE_ARMENIAN 45
#define IPMI_FRU_LANGUAGE_CODE_INTERLINGUA 46
#define IPMI_FRU_LANGUAGE_CODE_INTERLINGUE 47
#define IPMI_FRU_LANGUAGE_CODE_INUPIAK 48
#define IPMI_FRU_LANGUAGE_CODE_INDONESIAN 49
#define IPMI_FRU_LANGUAGE_CODE_ICELANDIC 50
#define IPMI_FRU_LANGUAGE_CODE_ITALIAN 51
#define IPMI_FRU_LANGUAGE_CODE_HEBREW 52
#define IPMI_FRU_LANGUAGE_CODE_JAPANESE 53
#define IPMI_FRU_LANGUAGE_CODE_YIDDISH 54
#define IPMI_FRU_LANGUAGE_CODE_JAVANESE 55
#define IPMI_FRU_LANGUAGE_CODE_GEORGIAN 56
#define IPMI_FRU_LANGUAGE_CODE_KAZAKH 57
#define IPMI_FRU_LANGUAGE_CODE_GREENLANDIC 58
#define IPMI_FRU_LANGUAGE_CODE_CAMBODIAN 59
#define IPMI_FRU_LANGUAGE_CODE_KANNADA 60
#define IPMI_FRU_LANGUAGE_CODE_KOREAN 61
#define IPMI_FRU_LANGUAGE_CODE_KASHMIRI 62
#define IPMI_FRU_LANGUAGE_CODE_KURDISH 63
#define IPMI_FRU_LANGUAGE_CODE_KIRGHIZ 64
#define IPMI_FRU_LANGUAGE_CODE_LATIN 65
#define IPMI_FRU_LANGUAGE_CODE_LINGALA 66
#define IPMI_FRU_LANGUAGE_CODE_LAOTHIAN 67
#define IPMI_FRU_LANGUAGE_CODE_LITHUANIAN 68
#define IPMI_FRU_LANGUAGE_CODE_LATVIAN_LETTISH 69
#define IPMI_FRU_LANGUAGE_CODE_MALAGASY 70
#define IPMI_FRU_LANGUAGE_CODE_MAORI 71
#define IPMI_FRU_LANGUAGE_CODE_MACEDONIAN 72
#define IPMI_FRU_LANGUAGE_CODE_MALAYALAM 73
#define IPMI_FRU_LANGUAGE_CODE_MONGOLIAN 74
#define IPMI_FRU_LANGUAGE_CODE_MOLDAVIAN 75
#define IPMI_FRU_LANGUAGE_CODE_MARATHI 76
#define IPMI_FRU_LANGUAGE_CODE_MALAY 77
#define IPMI_FRU_LANGUAGE_CODE_MALTESE 78
#define IPMI_FRU_LANGUAGE_CODE_BURMESE 79
#define IPMI_FRU_LANGUAGE_CODE_NAURU 80
#define IPMI_FRU_LANGUAGE_CODE_NEPALI 81
#define IPMI_FRU_LANGUAGE_CODE_DUTCH 82
#define IPMI_FRU_LANGUAGE_CODE_NORWEGIAN 83
#define IPMI_FRU_LANGUAGE_CODE_OCCITAN 84
#define IPMI_FRU_LANGUAGE_CODE_AFAN_OROMO 85
#define IPMI_FRU_LANGUAGE_CODE_ORIYA 86
#define IPMI_FRU_LANGUAGE_CODE_PUNJABI 87
#define IPMI_FRU_LANGUAGE_CODE_POLISH 88
#define IPMI_FRU_LANGUAGE_CODE_PASHTO_PUSHTO 89
#define IPMI_FRU_LANGUAGE_CODE_PORTUGUESE 90
#define IPMI_FRU_LANGUAGE_CODE_QUECHUA 91
#define IPMI_FRU_LANGUAGE_CODE_RHAETO_ROMANCE 92
#define IPMI_FRU_LANGUAGE_CODE_KIRUNDI 93
#define IPMI_FRU_LANGUAGE_CODE_ROMANIAN 94
#define IPMI_FRU_LANGUAGE_CODE_RUSSIAN 95
#define IPMI_FRU_LANGUAGE_CODE_KINYARWANDA 96
#define IPMI_FRU_LANGUAGE_CODE_SANSKRIT 97
#define IPMI_FRU_LANGUAGE_CODE_SINDHI 98
#define IPMI_FRU_LANGUAGE_CODE_SANGRO 99
#define IPMI_FRU_LANGUAGE_CODE_SERBO_CROATION 100
#define IPMI_FRU_LANGUAGE_CODE_SINGHALESE 101
#define IPMI_FRU_LANGUAGE_CODE_SLOVAK 102
#define IPMI_FRU_LANGUAGE_CODE_SLOVENIAN 103
#define IPMI_FRU_LANGUAGE_CODE_SAMOAN 104
#define IPMI_FRU_LANGUAGE_CODE_SHONA 105
#define IPMI_FRU_LANGUAGE_CODE_SOMALI 106
#define IPMI_FRU_LANGUAGE_CODE_ALBANIAN 107
#define IPMI_FRU_LANGUAGE_CODE_SERBIAN 108
#define IPMI_FRU_LANGUAGE_CODE_SISWATI 109
#define IPMI_FRU_LANGUAGE_CODE_SESOTHO 110
#define IPMI_FRU_LANGUAGE_CODE_SUDANESE 111
#define IPMI_FRU_LANGUAGE_CODE_SWEDISH 112
#define IPMI_FRU_LANGUAGE_CODE_SWAHILI 113
#define IPMI_FRU_LANGUAGE_CODE_TAMIL 114
#define IPMI_FRU_LANGUAGE_CODE_TELUGU 115
/* Spec has "Tegulu", likely a typo */
#define IPMI_FRU_LANGUAGE_CODE_TEGULU IPMI_FRU_LANGUAGE_CODE_TELUGU
#define IPMI_FRU_LANGUAGE_CODE_TAJIK 116
#define IPMI_FRU_LANGUAGE_CODE_THAI 117
#define IPMI_FRU_LANGUAGE_CODE_TIGRINYA 118
#define IPMI_FRU_LANGUAGE_CODE_TURKMEN 119
#define IPMI_FRU_LANGUAGE_CODE_TAGALOG 120
#define IPMI_FRU_LANGUAGE_CODE_SETSWANA 121
#define IPMI_FRU_LANGUAGE_CODE_TONGA 122
#define IPMI_FRU_LANGUAGE_CODE_TURKISH 123
#define IPMI_FRU_LANGUAGE_CODE_TSONGA 124
#define IPMI_FRU_LANGUAGE_CODE_TATAR 125
#define IPMI_FRU_LANGUAGE_CODE_TWI 126
#define IPMI_FRU_LANGUAGE_CODE_UKRANIAN 127
#define IPMI_FRU_LANGUAGE_CODE_URDU 128
#define IPMI_FRU_LANGUAGE_CODE_UZBEK 129
#define IPMI_FRU_LANGUAGE_CODE_VIETNAMESE 130
#define IPMI_FRU_LANGUAGE_CODE_VOLAPUK 131
#define IPMI_FRU_LANGUAGE_CODE_WOLOF 132
#define IPMI_FRU_LANGUAGE_CODE_XHOSA 133
#define IPMI_FRU_LANGUAGE_CODE_YORUBA 134
#define IPMI_FRU_LANGUAGE_CODE_CHINESE 135
#define IPMI_FRU_LANGUAGE_CODE_ZULU 136
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_FRU_LANGUAGE_CODE_VALID(__language_code) \
(((__language_code + 1) >= (IPMI_FRU_LANGUAGE_CODE_ENGLISH_LEGACY + 1) \
&& (__language_code) <= IPMI_FRU_LANGUAGE_CODE_ZULU) ? 1 : 0)
extern const char *const ipmi_fru_language_codes[];
#ifdef __cplusplus
}
#endif
#endif /* IPMI_FRU_LANGUAGE_CODES_SPEC_H */

View File

@ -0,0 +1,64 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_IANA_ENTERPRISE_NUMBERS_SPEC_H
#define IPMI_IANA_ENTERPRISE_NUMBERS_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
/* Convenience macros, will be added as needed in code */
#define IPMI_IANA_ENTERPRISE_ID_IBM 2
#define IPMI_IANA_ENTERPRISE_ID_HP 11
#define IPMI_IANA_ENTERPRISE_ID_SUN_MICROSYSTEMS 42
#define IPMI_IANA_ENTERPRISE_ID_INTEL 343
#define IPMI_IANA_ENTERPRISE_ID_DELL 674
#define IPMI_IANA_ENTERPRISE_ID_MAGNUM_TECHNOLOGIES 5593
#define IPMI_IANA_ENTERPRISE_ID_QUANTA 7244
#define IPMI_IANA_ENTERPRISE_ID_FUJITSU 10368
#define IPMI_IANA_ENTERPRISE_ID_PEPPERCON 10437
#define IPMI_IANA_ENTERPRISE_ID_SUPERMICRO 10876
#define IPMI_IANA_ENTERPRISE_ID_WISTRON 11161
#define IPMI_IANA_ENTERPRISE_ID_INVENTEC 20569
/* Workarounds for motherboards with invalid enterprise IDs */
#define IPMI_IANA_ENTERPRISE_ID_SUPERMICRO_WORKAROUND 47488
/* As of this writing min = 0, max = 34214 */
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_IANA_ENTERPRISE_ID_VALID(__iana_enterprise_id) \
(((__iana_enterprise_id + 1) >= (0 + 1) \
&& (__iana_enterprise_id) <= 44603) ? 1 : 0)
#define IPMI_IANA_ENTERPRISE_ID_RECOGNIZED(__iana_enterprise_id) \
(IPMI_IANA_ENTERPRISE_ID_VALID((__iana_enterprise_id)) \
|| (__iana_enterprise_id) == IPMI_IANA_ENTERPRISE_ID_SUPERMICRO_WORKAROUND)
/* Some fields can be NULL if they were not assigned/removed by IANA */
/* consider using ipmi_iana_enerprise_numbers_string() function to
* handle some workaround situations this array will not have.
*/
extern const char *const ipmi_iana_enterprise_numbers[];
#ifdef __cplusplus
}
#endif
#endif /* IPMI_IANA_ENTERPRISE_NUMBERS_SPEC_H */

View File

@ -0,0 +1,63 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_IPMB_LUN_SPEC_H
#define IPMI_IPMB_LUN_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
/* BMC IPMI LUNs */
/* BMC commands and Event Request Messages:
Event Request Messages received on this LUN are routed to the Event
Receiver function in the BMC, and automatically logged if SEL
logging is enabled
*/
#define IPMI_BMC_IPMB_LUN_BMC 0x00
/* OEM LUN 1:
OEM reserved for BMC implementer / system integrator definition.
*/
#define IPMI_BMC_IPMB_LUN_OEM_LUN1 0x01
/* SMS Message LUN (Intended for messages to System Management
Software):
Messages received on this LUN are routed to the Receive Message
Queue and retrieved using a Read Message command. The SMS_Avail
flag is set whenever the Receive Message Queue has valid contents.
*/
#define IPMI_BMC_IPMB_LUN_SMS_MSG_LUN 0x02
/* OEM LUN 2:
OEM reserved for BMC implementer / system integrator definition.
*/
#define IPMI_BMC_IPMB_LUN_OEM_LUN2 0x03
#define IPMI_BMC_LUN_VALID(__lun) \
(((__lun) == IPMI_BMC_IPMB_LUN_BMC \
|| (__lun) == IPMI_BMC_IPMB_LUN_OEM_LUN1 \
|| (__lun) == IPMI_BMC_IPMB_LUN_SMS_MSG_LUN \
|| (__lun) == IPMI_BMC_IPMB_LUN_OEM_LUN2) ? 1 : 0)
#ifdef __cplusplus
}
#endif
#endif /* IPMI_IPMB_LUN_SPEC_H */

View File

@ -0,0 +1,55 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_JEDEC_MANUFACTURER_IDENTIFICATION_CODE_SPEC_H
#define IPMI_JEDEC_MANUFACTURER_IDENTIFICATION_CODE_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#define IPMI_JEDEC_MANUFACTURER_CONTINUATION_CODES_MIN 0
#define IPMI_JEDEC_MANUFACTURER_CONTINUATION_CODES_MAX 8
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_JEDEC_MANUFACTURER_CONTINUATION_CODES_VALID(__manufacturer_continuation_codes) \
(((__manufacturer_continuation_codes + 1) >= (IPMI_JEDEC_MANUFACTURER_CONTINUATION_CODES_MIN + 1) \
&& (__manufacturer_continuation_codes) <= IPMI_JEDEC_MANUFACTURER_CONTINUATION_CODES_MAX) ? 1 : 0)
struct ipmi_jedec_manufacturer_id_pair {
uint8_t id;
char *str;
};
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank1[];
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank2[];
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank3[];
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank4[];
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank5[];
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank6[];
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank7[];
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank8[];
extern const struct ipmi_jedec_manufacturer_id_pair ipmi_jedec_manufacturer_id_bank9[];
#ifdef __cplusplus
}
#endif
#endif /* IPMI_JEDEC_MANUFACTURER_IDENTIFICATION_CODE_SPEC_H */

View File

@ -0,0 +1,33 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_LAN_CONFIGURATION_PARAMETERS_OEM_SPEC_H
#define IPMI_LAN_CONFIGURATION_PARAMETERS_OEM_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#include <freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-wistron-spec.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_LAN_CONFIGURATION_PARAMETERS_SPEC_H */

View File

@ -0,0 +1,70 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_LAN_CONFIGURATION_PARAMETERS_SPEC_H
#define IPMI_LAN_CONFIGURATION_PARAMETERS_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#define IPMI_LAN_CONFIGURATION_PARAMETER_SET_IN_PROGRESS 0
#define IPMI_LAN_CONFIGURATION_PARAMETER_AUTHENTICATION_TYPE_SUPPORT 1
#define IPMI_LAN_CONFIGURATION_PARAMETER_AUTHENTICATION_TYPE_ENABLES 2
#define IPMI_LAN_CONFIGURATION_PARAMETER_IP_ADDRESS 3
#define IPMI_LAN_CONFIGURATION_PARAMETER_IP_ADDRESS_SOURCE 4
#define IPMI_LAN_CONFIGURATION_PARAMETER_MAC_ADDRESS 5
#define IPMI_LAN_CONFIGURATION_PARAMETER_SUBNET_MASK 6
#define IPMI_LAN_CONFIGURATION_PARAMETER_IPV4_HEADER_PARAMETERS 7
#define IPMI_LAN_CONFIGURATION_PARAMETER_PRIMARY_RMCP_PORT_NUMBER 8
#define IPMI_LAN_CONFIGURATION_PARAMETER_SECONDARY_RMCP_PORT_NUMBER 9
#define IPMI_LAN_CONFIGURATION_PARAMETER_BMC_GENERATED_ARP_CONTROL 10
#define IPMI_LAN_CONFIGURATION_PARAMETER_GRATUITOUS_ARP_INTERVAL 11
#define IPMI_LAN_CONFIGURATION_PARAMETER_DEFAULT_GATEWAY_ADDRESS 12
#define IPMI_LAN_CONFIGURATION_PARAMETER_DEFAULT_GATEWAY_MAC_ADDRESS 13
#define IPMI_LAN_CONFIGURATION_PARAMETER_BACKUP_GATEWAY_ADDRESS 14
#define IPMI_LAN_CONFIGURATION_PARAMETER_BACKUP_GATEWAY_MAC_ADDRESS 15
#define IPMI_LAN_CONFIGURATION_PARAMETER_COMMUNITY_STRING 16
#define IPMI_LAN_CONFIGURATION_PARAMETER_NUMBER_OF_DESTINATIONS 17
#define IPMI_LAN_CONFIGURATION_PARAMETER_DESTINATION_TYPE 18
#define IPMI_LAN_CONFIGURATION_PARAMETER_DESTINATION_ADDRESSES 19
#define IPMI_LAN_CONFIGURATION_PARAMETER_VLAN_ID 20
#define IPMI_LAN_CONFIGURATION_PARAMETER_VLAN_PRIORITY 21
#define IPMI_LAN_CONFIGURATION_PARAMETER_RMCPPLUS_MESSAGING_CIPHER_SUITE_ENTRY_SUPPORT 22
#define IPMI_LAN_CONFIGURATION_PARAMETER_RMCPPLUS_MESSAGING_CIPHER_SUITE_ENTRIES 23
#define IPMI_LAN_CONFIGURATION_PARAMETER_RMCPPLUS_MESSAGING_CIPHER_SUITE_PRIVILEGE_LEVELS 24
#define IPMI_LAN_CONFIGURATION_PARAMETER_DESTINATION_ADDRESS_VLAN_TAGS 25
#define IPMI_LAN_CONFIGURATION_PARAMETER_BAD_PASSWORD_THRESHOLD 26
#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_MIN 192
#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_MAX 255
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_LAN_CONFIGURATION_PARAMETER_SELECTOR_VALID(__parameter_selector) \
((((__parameter_selector) + 1) > (IPMI_LAN_CONFIGURATION_PARAMETER_SET_IN_PROGRESS + 1) \
&& (__parameter_selector) <= IPMI_LAN_CONFIGURATION_PARAMETER_BAD_PASSWORD_THRESHOLD) ? 1 : 0)
/* To avoid gcc warnings, subtract -1 in comparison */
#define IPMI_LAN_CONFIGURATION_PARAMETER_SELECTOR_IS_OEM(__parameter_selector) \
(((__parameter_selector) >= IPMI_LAN_CONFIGURATION_PARAMETER_OEM_MIN \
&& ((__parameter_selector) - 1) <= (IPMI_LAN_CONFIGURATION_PARAMETER_OEM_MAX - 1)) ? 1 : 0)
#ifdef __cplusplus
}
#endif
#endif /* IPMI_LAN_CONFIGURATION_PARAMETERS_SPEC_H */

View File

@ -0,0 +1,41 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_NETFN_OEM_SPEC_H
#define IPMI_NETFN_OEM_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-netfn-oem-spec.h header file is deprecated
#include <freeipmi/spec/oem/ipmi-netfn-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-ibm-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-quanta-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-supermicro-spec.h>
#include <freeipmi/spec/oem/ipmi-netfn-oem-wistron-spec.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_NETFN_OEM_SPEC_H */

View File

@ -0,0 +1,90 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_NETFN_SPEC_H
#define IPMI_NETFN_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
/* Notes:
Refer to IPMIv1_5_rev1_1.pdf Table 5-1, Network Function Codes
for complete description
*/
#define IPMI_NET_FN_CHASSIS_RQ 0x00
#define IPMI_NET_FN_CHASSIS_RS 0x01
#define IPMI_NET_FN_BRIDGE_RQ 0x02
#define IPMI_NET_FN_BRIDGE_RS 0x03
#define IPMI_NET_FN_SENSOR_EVENT_RQ 0x04
#define IPMI_NET_FN_SENSOR_EVENT_RS 0x05
#define IPMI_NET_FN_APP_RQ 0x06
#define IPMI_NET_FN_APP_RS 0x07
#define IPMI_NET_FN_FIRMWARE_RQ 0x08
#define IPMI_NET_FN_FIRMWARE_RS 0x09
#define IPMI_NET_FN_STORAGE_RQ 0x0A
#define IPMI_NET_FN_STORAGE_RS 0x0B
#define IPMI_NET_FN_TRANSPORT_RQ 0x0C
#define IPMI_NET_FN_TRANSPORT_RS 0x0D
#define IPMI_NET_FN_GROUP_EXTENSION_RQ 0x2C
#define IPMI_NET_FN_GROUP_EXTENSION_RS 0x2D
#define IPMI_NET_FN_OEM_GROUP_RQ 0x2E
#define IPMI_NET_FN_OEM_GROUP_RS 0x2F
#define IPMI_NET_FN_CONTROLLER_SPECIFIC_OEM_GROUP_MIN 0x30
#define IPMI_NET_FN_CONTROLLER_SPECIFIC_OEM_GROUP_MAX 0x3F
#define IPMI_NET_FN_RQ_RS_MASK 0x1
#define IPMI_NET_FN_GROUP_EXTENSION_IDENTIFICATION_PICMG 0x00
#define IPMI_NET_FN_GROUP_EXTENSION_IDENTIFICATION_DMTF 0x01
#define IPMI_NET_FN_GROUP_EXTENSION_IDENTIFICATION_SSI 0x02
#define IPMI_NET_FN_GROUP_EXTENSION_IDENTIFICATION_VITA 0x03
#define IPMI_NET_FN_GROUP_EXTENSION_IDENTIFICATION_DCMI 0xDC
/* To avoid gcc warnings, add +1 in comparison */
/* Include checks for possible oem network functions */
#define IPMI_NET_FN_VALID(__net_fn) \
((((__net_fn+1) >= IPMI_NET_FN_CHASSIS_RS \
&& (__net_fn) <= IPMI_NET_FN_TRANSPORT_RS) \
|| ((__net_fn) >= IPMI_NET_FN_GROUP_EXTENSION_RQ \
&& (__net_fn) <= IPMI_NET_FN_CONTROLLER_SPECIFIC_OEM_GROUP_MAX)) ? 1 : 0)
#define IPMI_NET_FN_RQ_VALID(__net_fn) \
((IPMI_NET_FN_VALID (__net_fn) \
&& (!((__net_fn) & IPMI_NET_FN_RQ_RS_MASK))) ? 1 : 0)
#define IPMI_NET_FN_RS_VALID(__net_fn) \
((IPMI_NET_FN_VALID (__net_fn) \
&& ((__net_fn) & IPMI_NET_FN_RQ_RS_MASK)) ? 1 : 0)
#define IPMI_NET_FN_GROUP_EXTENSION(__net_fn) \
(((__net_fn) == IPMI_NET_FN_GROUP_EXTENSION_RQ \
|| (__net_fn) == IPMI_NET_FN_GROUP_EXTENSION_RS) ? 1 : 0)
#define IPMI_NET_FN_OEM_GROUP(__net_fn) \
(((__net_fn) == IPMI_NET_FN_OEM_GROUP_RQ \
|| (__net_fn) == IPMI_NET_FN_OEM_GROUP_RS) ? 1 : 0)
#define IPMI_NET_FN_CONTROLLER_SPECIFIC_OEM_GROUP(__net_fn) \
(((__net_fn) >= IPMI_NET_FN_CONTROLLER_SPECIFIC_OEM_GROUP_MIN \
&& (__net_fn) <= IPMI_NET_FN_CONTROLLER_SPECIFIC_OEM_GROUP_MAX) ? 1 : 0)
#ifdef __cplusplus
}
#endif
#endif /* IPMI_NETFN_SPEC_H */

View File

@ -0,0 +1,42 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_OEM_SPEC_H
#define IPMI_OEM_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#warning ipmi-oem-spec.h header file is deprecated
#include <freeipmi/spec/oem/ipmi-oem-dell-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-fujitsu-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-ibm-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-intel-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-inventec-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-quanta-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-sun-microsystems-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-supermicro-spec.h>
#include <freeipmi/spec/oem/ipmi-oem-wistron-spec.h>
#ifdef __cplusplus
}
#endif
#endif /* IPMI_OEM_SPEC_H */

View File

@ -0,0 +1,31 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_PEF_CONFIGURATION_PARAMETERS_OEM_SPEC_H
#define IPMI_PEF_CONFIGURATION_PARAMETERS_OEM_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,58 @@
/*
* Copyright (C) 2003-2015 FreeIPMI Core Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef IPMI_PEF_CONFIGURATION_PARAMETERS_SPEC_H
#define IPMI_PEF_CONFIGURATION_PARAMETERS_SPEC_H
#ifdef __cplusplus
extern "C" {
#endif
#define IPMI_PEF_CONFIGURATION_PARAMETER_SET_IN_PROGRESS 0
#define IPMI_PEF_CONFIGURATION_PARAMETER_PEF_CONTROL 1
#define IPMI_PEF_CONFIGURATION_PARAMETER_PEF_ACTION_GLOBAL_CONTROL 2
#define IPMI_PEF_CONFIGURATION_PARAMETER_PEF_STARTUP_DELAY 3
#define IPMI_PEF_CONFIGURATION_PARAMETER_PEF_ALERT_STARTUP_DELAY 4
#define IPMI_PEF_CONFIGURATION_PARAMETER_NUMBER_OF_EVENT_FILTERS 5
#define IPMI_PEF_CONFIGURATION_PARAMETER_EVENT_FILTER_TABLE 6
#define IPMI_PEF_CONFIGURATION_PARAMETER_EVENT_FILTER_TABLE_DATA_1 7
#define IPMI_PEF_CONFIGURATION_PARAMETER_NUMBER_OF_ALERT_POLICY_ENTRIES 8
#define IPMI_PEF_CONFIGURATION_PARAMETER_ALERT_POLICY_TABLE 9
#define IPMI_PEF_CONFIGURATION_PARAMETER_SYSTEM_GUID 10
#define IPMI_PEF_CONFIGURATION_PARAMETER_NUMBER_OF_ALERT_STRINGS 11
#define IPMI_PEF_CONFIGURATION_PARAMETER_ALERT_STRING_KEYS 12
#define IPMI_PEF_CONFIGURATION_PARAMETER_ALERT_STRINGS 13
#define IPMI_PEF_CONFIGURATION_PARAMETER_NUMBER_OF_GROUP_CONTROL_TABLE_ENTRIES 14
#define IPMI_PEF_CONFIGURATION_PARAMETER_GROUP_CONTROL_TABLE 15
#define IPMI_PEF_CONFIGURATION_PARAMETER_OEM_MIN 96
#define IPMI_PEF_CONFIGURATION_PARAMETER_OEM_MAX 127
/* To avoid gcc warnings, add +1 in comparison */
#define IPMI_PEF_CONFIGURATION_PARAMETER_SELECTOR_VALID(__parameter_selector) \
((((__parameter_selector) + 1) > (IPMI_PEF_CONFIGURATION_PARAMETER_SET_IN_PROGRESS + 1) \
&& (__parameter_selector) <= IPMI_PEF_CONFIGURATION_PARAMETER_GROUP_CONTROL_TABLE) ? 1 : 0)
#define IPMI_PEF_CONFIGURATION_PARAMETER_SELECTOR_IS_OEM(__parameter_selector) \
(((__parameter_selector) >= IPMI_PEF_CONFIGURATION_PARAMETER_OEM_MIN \
&& (__parameter_selector) <= IPMI_PEF_CONFIGURATION_PARAMETER_OEM_MAX) ? 1 : 0)
#ifdef __cplusplus
}
#endif
#endif

Some files were not shown because too many files have changed in this diff Show More