diff --git a/source/freeipmi/install/doinst.sh b/source/freeipmi/install/doinst.sh new file mode 100644 index 00000000..9bc9f4ca --- /dev/null +++ b/source/freeipmi/install/doinst.sh @@ -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 ) diff --git a/source/freeipmi/install/slack-desc b/source/freeipmi/install/slack-desc new file mode 100644 index 00000000..9de3c2db --- /dev/null +++ b/source/freeipmi/install/slack-desc @@ -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 diff --git a/source/freeipmi/install/slack-required b/source/freeipmi/install/slack-required new file mode 100644 index 00000000..c8afc2e5 --- /dev/null +++ b/source/freeipmi/install/slack-required @@ -0,0 +1,3 @@ +glibc-solibs >= 2.17 +libgcrypt >= 1.6.5 +libgpg-error >= 1.21 diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-api.h new file mode 100644 index 00000000..cf533542 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-api.h @@ -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 . + * + */ + +#ifndef IPMI_API_H +#define IPMI_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-chassis-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-chassis-cmds-api.h new file mode 100644 index 00000000..df1224d0 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-chassis-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_CHASSIS_CMDS_API_H +#define IPMI_CHASSIS_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-dcmi-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-dcmi-cmds-api.h new file mode 100644 index 00000000..7b4a0884 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-dcmi-cmds-api.h @@ -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 . + * + */ +/*****************************************************************************\ + * Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Albert Chu + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_DCMI_CMDS_API_H +#define IPMI_DCMI_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-device-global-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-device-global-cmds-api.h new file mode 100644 index 00000000..cf5b22d2 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-device-global-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_DEVICE_GLOBAL_CMDS_API_H +#define IPMI_DEVICE_GLOBAL_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-event-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-event-cmds-api.h new file mode 100644 index 00000000..e47888e5 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-event-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_EVENT_CMDS_API_H +#define IPMI_EVENT_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-firmware-firewall-command-discovery-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-firmware-firewall-command-discovery-cmds-api.h new file mode 100644 index 00000000..a828818e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-firmware-firewall-command-discovery-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_API_H +#define IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-fru-inventory-device-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-fru-inventory-device-cmds-api.h new file mode 100644 index 00000000..baec66a8 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-fru-inventory-device-cmds-api.h @@ -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 . + * + */ +/*****************************************************************************\ + * 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_FRU_INVENTORY_DEVICE_CMDS_API_H +#define IPMI_FRU_INVENTORY_DEVICE_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-lan-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-lan-cmds-api.h new file mode 100644 index 00000000..fe57ede6 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-lan-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_LAN_CMDS_API_H +#define IPMI_LAN_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-messaging-support-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-messaging-support-cmds-api.h new file mode 100644 index 00000000..cc434d92 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-messaging-support-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_MESSAGING_SUPPORT_CMDS_API_H +#define IPMI_MESSAGING_SUPPORT_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-oem-intel-node-manager-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-oem-intel-node-manager-cmds-api.h new file mode 100644 index 00000000..bf3d4b7b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-oem-intel-node-manager-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_OEM_INTEL_NODE_MANAGER_CMDS_API_H +#define IPMI_OEM_INTEL_NODE_MANAGER_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-pef-and-alerting-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-pef-and-alerting-cmds-api.h new file mode 100644 index 00000000..52b27e81 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-pef-and-alerting-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_PEF_AND_ALERTING_CMDS_API_H +#define IPMI_PEF_AND_ALERTING_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-rmcpplus-support-and-payload-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-rmcpplus-support-and-payload-cmds-api.h new file mode 100644 index 00000000..03414705 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-rmcpplus-support-and-payload-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_API_H +#define IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-sdr-repository-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-sdr-repository-cmds-api.h new file mode 100644 index 00000000..cdf41c80 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-sdr-repository-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_SDR_REPOSITORY_CMDS_API_H +#define IPMI_SDR_REPOSITORY_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-sel-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-sel-cmds-api.h new file mode 100644 index 00000000..46f30d18 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-sel-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_SEL_CMDS_API_H +#define IPMI_SEL_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-sensor-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-sensor-cmds-api.h new file mode 100644 index 00000000..e8de9583 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-sensor-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_CMDS_API_H +#define IPMI_SENSOR_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-serial-modem-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-serial-modem-cmds-api.h new file mode 100644 index 00000000..f04e9cde --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-serial-modem-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_SERIAL_MODEM_CMDS_API_H +#define IPMI_SERIAL_MODEM_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/api/ipmi-sol-cmds-api.h b/source/freeipmi/usr/include/freeipmi/api/ipmi-sol-cmds-api.h new file mode 100644 index 00000000..1a0bc876 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/api/ipmi-sol-cmds-api.h @@ -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 . + * + */ + +#ifndef IPMI_SOL_CMDS_API_H +#define IPMI_SOL_CMDS_API_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-bmc-watchdog-timer-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-bmc-watchdog-timer-cmds.h new file mode 100644 index 00000000..6d5d6d35 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-bmc-watchdog-timer-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_BMC_WATCHDOG_TIMER_CMDS_H +#define IPMI_BMC_WATCHDOG_TIMER_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-chassis-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-chassis-cmds.h new file mode 100644 index 00000000..c0d7fa26 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-chassis-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_CHASSIS_CMDS_H +#define IPMI_CHASSIS_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-dcmi-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-dcmi-cmds.h new file mode 100644 index 00000000..61c664b1 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-dcmi-cmds.h @@ -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 . + * + */ +/*****************************************************************************\ + * Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Albert Chu + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_DCMI_CMDS_H +#define IPMI_DCMI_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-dcmi-oem-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-dcmi-oem-cmds.h new file mode 100644 index 00000000..bb078ed5 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-dcmi-oem-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_DCMI_OEM_CMDS_H +#define IPMI_DCMI_OEM_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_DCMI_OEM_CMDS_H */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-device-global-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-device-global-cmds.h new file mode 100644 index 00000000..8c9e0604 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-device-global-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_DEVICE_GLOBAL_CMDS_H +#define IPMI_DEVICE_GLOBAL_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-event-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-event-cmds.h new file mode 100644 index 00000000..07cd1b47 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-event-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_EVENT_CMDS_H +#define IPMI_EVENT_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-firmware-firewall-command-discovery-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-firmware-firewall-command-discovery-cmds.h new file mode 100644 index 00000000..cd865369 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-firmware-firewall-command-discovery-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_H +#define IPMI_FIRMWARE_FIREWALL_COMMAND_DISCOVERY_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-fru-inventory-device-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-fru-inventory-device-cmds.h new file mode 100644 index 00000000..eb650c8e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-fru-inventory-device-cmds.h @@ -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 . + * + */ +/*****************************************************************************\ + * 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_FRU_INVENTORY_DEVICE_CMDS_H +#define IPMI_FRU_INVENTORY_DEVICE_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-lan-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-lan-cmds.h new file mode 100644 index 00000000..e9121fd0 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-lan-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_LAN_CMDS_H +#define IPMI_LAN_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-messaging-support-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-messaging-support-cmds.h new file mode 100644 index 00000000..aae81ffb --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-messaging-support-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_MESSAGING_SUPPORT_CMDS_H +#define IPMI_MESSAGING_SUPPORT_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-oem-intel-node-manager-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-oem-intel-node-manager-cmds.h new file mode 100644 index 00000000..fd360cbf --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-oem-intel-node-manager-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_OEM_INTEL_NODE_MANAGER_CMDS_H +#define IPMI_OEM_INTEL_NODE_MANAGER_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-pef-and-alerting-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-pef-and-alerting-cmds.h new file mode 100644 index 00000000..fe49424e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-pef-and-alerting-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_PEF_AND_ALERTING_CMDS_H +#define IPMI_PEF_AND_ALERTING_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h new file mode 100644 index 00000000..dc74b447 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_H +#define IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sdr-repository-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sdr-repository-cmds.h new file mode 100644 index 00000000..de022595 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sdr-repository-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_SDR_REPOSITORY_CMDS_H +#define IPMI_SDR_REPOSITORY_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sel-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sel-cmds.h new file mode 100644 index 00000000..bc542045 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sel-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_SEL_CMDS_H +#define IPMI_SEL_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sensor-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sensor-cmds.h new file mode 100644 index 00000000..52ddf287 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sensor-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_CMDS_H +#define IPMI_SENSOR_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-serial-modem-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-serial-modem-cmds.h new file mode 100644 index 00000000..fec0e0ef --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-serial-modem-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_SERIAL_MODEM_CMDS_H +#define IPMI_SERIAL_MODEM_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sol-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sol-cmds.h new file mode 100644 index 00000000..ae599cec --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/ipmi-sol-cmds.h @@ -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 . + * + */ + +#ifndef IPMI_SOL_CMDS_H +#define IPMI_SOL_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/cmds/rmcp-cmds.h b/source/freeipmi/usr/include/freeipmi/cmds/rmcp-cmds.h new file mode 100644 index 00000000..9800f338 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/cmds/rmcp-cmds.h @@ -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 . + * + */ + + +#ifndef RMCP_CMDS_H +#define RMCP_CMDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/debug/ipmi-debug.h b/source/freeipmi/usr/include/freeipmi/debug/ipmi-debug.h new file mode 100644 index 00000000..d184f468 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/debug/ipmi-debug.h @@ -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 . + * + */ + +#ifndef IPMI_DEBUG_H +#define IPMI_DEBUG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +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 */ diff --git a/source/freeipmi/usr/include/freeipmi/driver/ipmi-inteldcmi-driver.h b/source/freeipmi/usr/include/freeipmi/driver/ipmi-inteldcmi-driver.h new file mode 100644 index 00000000..ada667d8 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/driver/ipmi-inteldcmi-driver.h @@ -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 . + * + */ + +#ifndef IPMI_INTELDCMI_DRIVER_H +#define IPMI_INTELDCMI_DRIVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/driver/ipmi-kcs-driver.h b/source/freeipmi/usr/include/freeipmi/driver/ipmi-kcs-driver.h new file mode 100644 index 00000000..2d62977b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/driver/ipmi-kcs-driver.h @@ -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 . + * + */ + +#ifndef IPMI_KCS_DRIVER_H +#define IPMI_KCS_DRIVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/driver/ipmi-openipmi-driver.h b/source/freeipmi/usr/include/freeipmi/driver/ipmi-openipmi-driver.h new file mode 100644 index 00000000..925113ac --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/driver/ipmi-openipmi-driver.h @@ -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 . + * + */ + +#ifndef IPMI_OPENIPMI_DRIVER_H +#define IPMI_OPENIPMI_DRIVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/driver/ipmi-ssif-driver.h b/source/freeipmi/usr/include/freeipmi/driver/ipmi-ssif-driver.h new file mode 100644 index 00000000..47e1659a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/driver/ipmi-ssif-driver.h @@ -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 . + * + */ + +#ifndef IPMI_SSIF_DRIVER_H +#define IPMI_SSIF_DRIVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/driver/ipmi-sunbmc-driver.h b/source/freeipmi/usr/include/freeipmi/driver/ipmi-sunbmc-driver.h new file mode 100644 index 00000000..d8ed4cc7 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/driver/ipmi-sunbmc-driver.h @@ -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 . + * + */ + +#ifndef IPMI_SUNBMC_DRIVER_H +#define IPMI_SUNBMC_DRIVER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/fiid/fiid.h b/source/freeipmi/usr/include/freeipmi/fiid/fiid.h new file mode 100644 index 00000000..2ddea8b0 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/fiid/fiid.h @@ -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 . + * + */ + +#ifndef FIID_H +#define FIID_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/freeipmi.h b/source/freeipmi/usr/include/freeipmi/freeipmi.h new file mode 100644 index 00000000..c8a04028 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/freeipmi.h @@ -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 . + * + */ + +#ifndef FREEIPMI_H +#define FREEIPMI_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 */ + diff --git a/source/freeipmi/usr/include/freeipmi/fru/ipmi-fru.h b/source/freeipmi/usr/include/freeipmi/fru/ipmi-fru.h new file mode 100644 index 00000000..e9947d66 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/fru/ipmi-fru.h @@ -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 . + * + */ + +#ifndef IPMI_FRU_H +#define IPMI_FRU_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/interface/ipmi-interface.h b/source/freeipmi/usr/include/freeipmi/interface/ipmi-interface.h new file mode 100644 index 00000000..16f991a9 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/interface/ipmi-interface.h @@ -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 . + * + */ + +#ifndef IPMI_INTERFACE_H +#define IPMI_INTERFACE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/interface/ipmi-ipmb-interface.h b/source/freeipmi/usr/include/freeipmi/interface/ipmi-ipmb-interface.h new file mode 100644 index 00000000..4791ea73 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/interface/ipmi-ipmb-interface.h @@ -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 . + * + */ + +#ifndef IPMI_IPMB_INTERFACE_H +#define IPMI_IPMB_INTERFACE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/interface/ipmi-kcs-interface.h b/source/freeipmi/usr/include/freeipmi/interface/ipmi-kcs-interface.h new file mode 100644 index 00000000..e071d523 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/interface/ipmi-kcs-interface.h @@ -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 . + * + */ + +#ifndef IPMI_KCS_INTERFACE_H +#define IPMI_KCS_INTERFACE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/interface/ipmi-lan-interface.h b/source/freeipmi/usr/include/freeipmi/interface/ipmi-lan-interface.h new file mode 100644 index 00000000..ca3f26fe --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/interface/ipmi-lan-interface.h @@ -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 . + * + */ + +#ifndef IPMI_LAN_INTERFACE_H +#define IPMI_LAN_INTERFACE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/interface/ipmi-rmcpplus-interface.h b/source/freeipmi/usr/include/freeipmi/interface/ipmi-rmcpplus-interface.h new file mode 100644 index 00000000..b9419179 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/interface/ipmi-rmcpplus-interface.h @@ -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 . + * + */ + +#ifndef IPMI_RMCPPLUS_INTERFACE_H +#define IPMI_RMCPPLUS_INTERFACE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include +#include + +/************************** +* 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/interface/rmcp-interface.h b/source/freeipmi/usr/include/freeipmi/interface/rmcp-interface.h new file mode 100644 index 00000000..c33535bb --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/interface/rmcp-interface.h @@ -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 . + * + */ + + +#ifndef RMCP_INTERFACE_H +#define RMCP_INTERFACE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/interpret/ipmi-interpret.h b/source/freeipmi/usr/include/freeipmi/interpret/ipmi-interpret.h new file mode 100644 index 00000000..f62883e6 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/interpret/ipmi-interpret.h @@ -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 . + * + */ + +#ifndef IPMI_INTERPRET_H +#define IPMI_INTERPRET_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/locate/ipmi-locate.h b/source/freeipmi/usr/include/freeipmi/locate/ipmi-locate.h new file mode 100644 index 00000000..06b0fca7 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/locate/ipmi-locate.h @@ -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 . + * + */ + +#ifndef IPMI_LOCATE_H +#define IPMI_LOCATE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/payload/ipmi-sol-payload.h b/source/freeipmi/usr/include/freeipmi/payload/ipmi-sol-payload.h new file mode 100644 index 00000000..3cf32d7c --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/payload/ipmi-sol-payload.h @@ -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 . + * + */ + +#ifndef IPMI_SOL_PAYLOAD_H +#define IPMI_SOL_PAYLOAD_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-cipher-suite-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-cipher-suite-record-format.h new file mode 100644 index 00000000..afea60d7 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-cipher-suite-record-format.h @@ -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 . + * + */ + +#ifndef IPMI_CIPHER_SUITE_RECORD_FORMAT_H +#define IPMI_CIPHER_SUITE_RECORD_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-dimmspd-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-dimmspd-record-format.h new file mode 100644 index 00000000..5c118326 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-dimmspd-record-format.h @@ -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 . + * + */ + +#ifndef IPMI_FRU_DIMMSPD_RECORD_FORMAT_H +#define IPMI_FRU_DIMMSPD_RECORD_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-information-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-information-record-format.h new file mode 100644 index 00000000..a46d54f9 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-information-record-format.h @@ -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 . + * + */ +/*****************************************************************************\ + * 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_FRU_INFORMATION_RECORD_FORMAT_H +#define IPMI_FRU_INFORMATION_RECORD_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-oem-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-oem-record-format.h new file mode 100644 index 00000000..de9f575a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-fru-oem-record-format.h @@ -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 . + * + */ + +#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 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_FRU_OEM_RECORD_FORMAT_H */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-platform-event-trap-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-platform-event-trap-record-format.h new file mode 100644 index 00000000..af1a3d13 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-platform-event-trap-record-format.h @@ -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 . + * + */ + +#ifndef IPMI_PLATFORM_EVENT_TRAP_RECORD_FORMAT_H +#define IPMI_PLATFORM_EVENT_TRAP_RECORD_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sdr-oem-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sdr-oem-record-format.h new file mode 100644 index 00000000..ecfc0d5a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sdr-oem-record-format.h @@ -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 . + * + */ + +#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 +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SDR_OEM_RECORD_FORMAT_H */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sdr-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sdr-record-format.h new file mode 100644 index 00000000..8405d3d2 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sdr-record-format.h @@ -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 . + * + */ + +#ifndef IPMI_SDR_RECORD_FORMAT_H +#define IPMI_SDR_RECORD_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sel-oem-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sel-oem-record-format.h new file mode 100644 index 00000000..7a67737c --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sel-oem-record-format.h @@ -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 . + * + */ + +#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 +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SEL_OEM_RECORD_FORMAT_H */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sel-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sel-record-format.h new file mode 100644 index 00000000..770ba222 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/ipmi-sel-record-format.h @@ -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 . + * + */ + +#ifndef IPMI_SEL_RECORD_FORMAT_H +#define IPMI_SEL_RECORD_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-fru-wistron-oem-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-fru-wistron-oem-record-format.h new file mode 100644 index 00000000..3282fb21 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-fru-wistron-oem-record-format.h @@ -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 . + * + */ + +#ifndef IPMI_FRU_OEM_WISTRON_RECORD_FORMAT_H +#define IPMI_FRU_OEM_WISTRON_RECORD_FORMAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sdr-oem-intel-node-manager-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sdr-oem-intel-node-manager-record-format.h new file mode 100644 index 00000000..dbbaf350 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sdr-oem-intel-node-manager-record-format.h @@ -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 . + * + */ + +#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 + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sdr-oem-intel-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sdr-oem-intel-record-format.h new file mode 100644 index 00000000..9bd3f751 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sdr-oem-intel-record-format.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sel-oem-intel-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sel-oem-intel-record-format.h new file mode 100644 index 00000000..7f094498 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sel-oem-intel-record-format.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sel-oem-linux-kernel-record-format.h b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sel-oem-linux-kernel-record-format.h new file mode 100644 index 00000000..40a12164 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/record-format/oem/ipmi-sel-oem-linux-kernel-record-format.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/sdr/ipmi-sdr-oem.h b/source/freeipmi/usr/include/freeipmi/sdr/ipmi-sdr-oem.h new file mode 100644 index 00000000..f30e0b05 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/sdr/ipmi-sdr-oem.h @@ -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 . + * + */ + +#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 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SDR_OEM_H */ diff --git a/source/freeipmi/usr/include/freeipmi/sdr/ipmi-sdr.h b/source/freeipmi/usr/include/freeipmi/sdr/ipmi-sdr.h new file mode 100644 index 00000000..53be6a95 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/sdr/ipmi-sdr.h @@ -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 . + * + */ +/*****************************************************************************\ + * 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_SDR_H +#define IPMI_SDR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/sdr/oem/ipmi-sdr-oem-intel-node-manager.h b/source/freeipmi/usr/include/freeipmi/sdr/oem/ipmi-sdr-oem-intel-node-manager.h new file mode 100644 index 00000000..97108094 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/sdr/oem/ipmi-sdr-oem-intel-node-manager.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/sel/ipmi-sel.h b/source/freeipmi/usr/include/freeipmi/sel/ipmi-sel.h new file mode 100644 index 00000000..54df2a0e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/sel/ipmi-sel.h @@ -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 . + * + */ + +#ifndef IPMI_SEL_H +#define IPMI_SEL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/sensor-read/ipmi-sensor-read.h b/source/freeipmi/usr/include/freeipmi/sensor-read/ipmi-sensor-read.h new file mode 100644 index 00000000..a6839e6e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/sensor-read/ipmi-sensor-read.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_READ_H +#define IPMI_SENSOR_READ_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-authentication-type-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-authentication-type-spec.h new file mode 100644 index 00000000..dc85c745 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-authentication-type-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-channel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-channel-spec.h new file mode 100644 index 00000000..9e8f5204 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-channel-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-cmd-dcmi-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-cmd-dcmi-spec.h new file mode 100644 index 00000000..a1d4d520 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-cmd-dcmi-spec.h @@ -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 . + * + */ +/*****************************************************************************\ + * Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Albert Chu + * 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 . +\*****************************************************************************/ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-cmd-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-cmd-spec.h new file mode 100644 index 00000000..85afb8c8 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-cmd-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-dcmi-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-dcmi-spec.h new file mode 100644 index 00000000..84cae146 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-dcmi-spec.h @@ -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 . + * + */ +/*****************************************************************************\ + * Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Albert Chu + * 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 . +\*****************************************************************************/ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-oem-spec.h new file mode 100644 index 00000000..63d630b6 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-oem-spec.h @@ -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 . + * + */ + +#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 +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_COMP_CODE_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-spec.h new file mode 100644 index 00000000..2b7f1cf8 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-comp-code-spec.h @@ -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 . + * + */ + + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-device-types-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-device-types-oem-spec.h new file mode 100644 index 00000000..405a55c6 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-device-types-oem-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-device-types-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-device-types-spec.h new file mode 100644 index 00000000..fca898d4 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-device-types-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-entity-ids-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-entity-ids-spec.h new file mode 100644 index 00000000..4cded580 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-entity-ids-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-event-reading-type-code-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-event-reading-type-code-oem-spec.h new file mode 100644 index 00000000..c2e3583f --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-event-reading-type-code-oem-spec.h @@ -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 . + * + */ + +#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 +#include +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_READING_TYPE_CODE_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-event-reading-type-code-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-event-reading-type-code-spec.h new file mode 100644 index 00000000..9380d9a2 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-event-reading-type-code-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-fru-chassis-types-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-fru-chassis-types-spec.h new file mode 100644 index 00000000..c586e95b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-fru-chassis-types-spec.h @@ -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 . + * + */ +/*****************************************************************************\ + * 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_FRU_CHASSIS_TYPES_SPEC_H +#define IPMI_FRU_CHASSIS_TYPES_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-fru-language-codes-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-fru-language-codes-spec.h new file mode 100644 index 00000000..7ee5fd70 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-fru-language-codes-spec.h @@ -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 . + * + */ +/*****************************************************************************\ + * 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_FRU_LANGUAGE_CODES_SPEC_H +#define IPMI_FRU_LANGUAGE_CODES_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * 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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-iana-enterprise-numbers-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-iana-enterprise-numbers-spec.h new file mode 100644 index 00000000..d386c238 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-iana-enterprise-numbers-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-ipmb-lun-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-ipmb-lun-spec.h new file mode 100644 index 00000000..5c77dff6 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-ipmb-lun-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-jedec-manufacturer-identification-code-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-jedec-manufacturer-identification-code-spec.h new file mode 100644 index 00000000..d5d3f68a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-jedec-manufacturer-identification-code-spec.h @@ -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 . + * + */ + +#ifndef IPMI_JEDEC_MANUFACTURER_IDENTIFICATION_CODE_SPEC_H +#define IPMI_JEDEC_MANUFACTURER_IDENTIFICATION_CODE_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-lan-configuration-parameters-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-lan-configuration-parameters-oem-spec.h new file mode 100644 index 00000000..253f89cb --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-lan-configuration-parameters-oem-spec.h @@ -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 . + * + */ + +#ifndef IPMI_LAN_CONFIGURATION_PARAMETERS_OEM_SPEC_H +#define IPMI_LAN_CONFIGURATION_PARAMETERS_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_LAN_CONFIGURATION_PARAMETERS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-lan-configuration-parameters-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-lan-configuration-parameters-spec.h new file mode 100644 index 00000000..843b2799 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-lan-configuration-parameters-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-netfn-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-netfn-oem-spec.h new file mode 100644 index 00000000..71d0317b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-netfn-oem-spec.h @@ -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 . + * + */ + +#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 +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-netfn-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-netfn-spec.h new file mode 100644 index 00000000..d6c75338 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-netfn-spec.h @@ -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 . + * + */ + +#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 */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-oem-spec.h new file mode 100644 index 00000000..67de4bcc --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-oem-spec.h @@ -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 . + * + */ + +#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 +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-pef-configuration-parameters-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-pef-configuration-parameters-oem-spec.h new file mode 100644 index 00000000..00d77253 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-pef-configuration-parameters-oem-spec.h @@ -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 . + * + */ + +#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 diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-pef-configuration-parameters-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-pef-configuration-parameters-spec.h new file mode 100644 index 00000000..a24aa330 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-pef-configuration-parameters-spec.h @@ -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 . + * + */ + +#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 diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-privilege-level-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-privilege-level-spec.h new file mode 100644 index 00000000..ffe55986 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-privilege-level-spec.h @@ -0,0 +1,54 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_PRIVILEGE_LEVEL_SPEC_H +#define IPMI_PRIVILEGE_LEVEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_PRIVILEGE_LEVEL_RESERVED 0x00 +#define IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL 0x00 /* IPMI 2.0 */ +#define IPMI_PRIVILEGE_LEVEL_UNSPECIFIED 0x00 /* RMCP+ Cipher Suite Priv Config */ +#define IPMI_PRIVILEGE_LEVEL_CALLBACK 0x01 +#define IPMI_PRIVILEGE_LEVEL_USER 0x02 +#define IPMI_PRIVILEGE_LEVEL_OPERATOR 0x03 +#define IPMI_PRIVILEGE_LEVEL_ADMIN 0x04 +#define IPMI_PRIVILEGE_LEVEL_OEM 0x05 +#define IPMI_PRIVILEGE_LEVEL_NO_ACCESS 0x0F + +#define IPMI_PRIVILEGE_LEVEL_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) ? 1 : 0) + +#define IPMI_1_5_PRIVILEGE_LEVEL_VALID(__privilege_level) \ + IPMI_PRIVILEGE_LEVEL_VALID (__privilege_level) + +#define IPMI_2_0_PRIVILEGE_LEVEL_VALID(__privilege_level) \ + (((__privilege_level) == IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL \ + || IPMI_PRIVILEGE_LEVEL_VALID (__privilege_level)) ? 1 : 0) + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_PRIVILEGE_LEVEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-product-id-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-product-id-spec.h new file mode 100644 index 00000000..c3b6db5d --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-product-id-spec.h @@ -0,0 +1,277 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_PRODUCT_ID_SPEC_H +#define IPMI_PRODUCT_ID_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************* + * Dell * + *******************************************/ + +/* achu: I believe 256 to be the poweredge "family" of products, but + * I'm not sure. At minimum, it covers the 2900, 2950, R610, and + * R710. + */ +#define IPMI_DELL_PRODUCT_ID_POWEREDGE_BASE 256 +#define IPMI_DELL_PRODUCT_ID_POWEREDGE_2900 IPMI_DELL_PRODUCT_ID_POWEREDGE_BASE +#define IPMI_DELL_PRODUCT_ID_POWEREDGE_2950 IPMI_DELL_PRODUCT_ID_POWEREDGE_BASE +#define IPMI_DELL_PRODUCT_ID_POWEREDGE_R610 IPMI_DELL_PRODUCT_ID_POWEREDGE_BASE +#define IPMI_DELL_PRODUCT_ID_POWEREDGE_R710 IPMI_DELL_PRODUCT_ID_POWEREDGE_BASE +#define IPMI_DELL_PRODUCT_ID_POWEREDGE_R720 IPMI_DELL_PRODUCT_ID_POWEREDGE_BASE + +/* achu: 0 doesn't seem right? Did the manufacturer not burn the + * right ID in? + */ +#define IPMI_DELL_PRODUCT_ID_POWEREDGE_C410X 0 + +/******************************************* + * Fujitsu * + *******************************************/ + +/* + * Fujitsu Siemens Computers + * Fujitsu Technology Solutions + * iRMC S1 / iRMC S2 + */ +#define IPMI_FUJITSU_PRODUCT_ID_MIN 0x0200 +#define IPMI_FUJITSU_PRODUCT_ID_MAX 0x03FF + +// iRMC-S1 based systems +#define IPMI_FUJITSU_PRODUCT_ID_TX200S3 0x0200 +#define IPMI_FUJITSU_PRODUCT_ID_TX300S3 0x0201 +#define IPMI_FUJITSU_PRODUCT_ID_RX200S3 0x0202 +#define IPMI_FUJITSU_PRODUCT_ID_RX300S3 0x0203 +#define IPMI_FUJITSU_PRODUCT_ID_UNUSEDS3 0x0204 +#define IPMI_FUJITSU_PRODUCT_ID_RX100S4 0x0205 +#define IPMI_FUJITSU_PRODUCT_ID_TX150S5 0x0206 +#define IPMI_FUJITSU_PRODUCT_ID_TX120S1 0x0207 +#define IPMI_FUJITSU_PRODUCT_ID_BX630S2 0x0208 +#define IPMI_FUJITSU_PRODUCT_ID_RX330S1 0x0209 +#define IPMI_FUJITSU_PRODUCT_ID_E230RN1 0x0210 +#define IPMI_FUJITSU_PRODUCT_ID_E230RSL 0x0211 +#define IPMI_FUJITSU_PRODUCT_ID_RX330S1_SHA 0x0212 +#define IPMI_FUJITSU_PRODUCT_ID_BX630S2_SHA 0x0213 + +#define IPMI_FUJITSU_PRODUCT_ID_IS_IRMC_S1(__product_id) \ + (((__product_id) == IPMI_FUJITSU_PRODUCT_ID_TX200S3 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_TX300S3 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_RX200S3 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_RX300S3 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_UNUSEDS3 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_RX100S4 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_TX150S5 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_TX120S1 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_BX630S2 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_RX330S1 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_E230RN1 \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_E230RSL \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_RX330S1_SHA \ + || (__product_id) == IPMI_FUJITSU_PRODUCT_ID_BX630S2_SHA) ? 1 : 0) + +// iRMC-S2 based systems +#define IPMI_FUJITSU_PRODUCT_ID_RX600S4 0x0218 +#define IPMI_FUJITSU_PRODUCT_ID_TX200S4 0x0220 +#define IPMI_FUJITSU_PRODUCT_ID_TX300S4 0x0221 +#define IPMI_FUJITSU_PRODUCT_ID_RX200S4 0x0222 +#define IPMI_FUJITSU_PRODUCT_ID_RX300S4 0x0223 +#define IPMI_FUJITSU_PRODUCT_ID_UNUSEDS4 0x0224 +#define IPMI_FUJITSU_PRODUCT_ID_RX100S5 0x0225 +#define IPMI_FUJITSU_PRODUCT_ID_TX150S6 0x0226 +#define IPMI_FUJITSU_PRODUCT_ID_TX120S2 0x0227 + +#define IPMI_FUJITSU_PRODUCT_ID_TX150S6_64K 0x0233 +#define IPMI_FUJITSU_PRODUCT_ID_TX200S4_64K 0x0234 +#define IPMI_FUJITSU_PRODUCT_ID_TX300S4_64K 0x0235 + +#define IPMI_FUJITSU_PRODUCT_ID_TX200S5 0x0240 +#define IPMI_FUJITSU_PRODUCT_ID_TX300S5 0x0241 +#define IPMI_FUJITSU_PRODUCT_ID_RX200S5 0x0242 +#define IPMI_FUJITSU_PRODUCT_ID_RX300S5 0x0243 +#define IPMI_FUJITSU_PRODUCT_ID_BX620S5 0x0244 +#define IPMI_FUJITSU_PRODUCT_ID_RX100S6 0x0245 +#define IPMI_FUJITSU_PRODUCT_ID_TX150S7 0x0246 +#define IPMI_FUJITSU_PRODUCT_ID_BX960S1 0x0254 +#define IPMI_FUJITSU_PRODUCT_ID_BX924S1 0x0255 +#define IPMI_FUJITSU_PRODUCT_ID_BX920S1 0x0256 +#define IPMI_FUJITSU_PRODUCT_ID_BX922S1 0x0257 +#define IPMI_FUJITSU_PRODUCT_ID_RX600S5 0x0258 + +#define IPMI_FUJITSU_PRODUCT_ID_TX200S6 0x0260 +#define IPMI_FUJITSU_PRODUCT_ID_TX300S6 0x0261 +#define IPMI_FUJITSU_PRODUCT_ID_RX200S6 0x0262 +#define IPMI_FUJITSU_PRODUCT_ID_RX300S6 0x0263 + +/******************************************* + * HP * + *******************************************/ + +#define IPMI_HP_PRODUCT_ID_PROLIANT_DL160_G8 8192 + +/******************************************* + * Intel * + *******************************************/ + +#define IPMI_INTEL_PRODUCT_ID_SR870BN4 256 +#define IPMI_INTEL_PRODUCT_ID_TIGER4 IPMI_INTEL_PRODUCT_ID_SR870BN4 + +#define IPMI_INTEL_PRODUCT_ID_S5500WB 62 +#define IPMI_INTEL_PRODUCT_ID_SR1625 62 + +/* Quanta motherboard, but listed under a Intel manufacturer ID, why?? */ +#define IPMI_INTEL_PRODUCT_ID_QUANTA_QSSC_S4R 64 + +#define IPMI_INTEL_PRODUCT_ID_S2600JF 77 + +#define IPMI_INTEL_PRODUCT_ID_S5000PAL 40 + +#define IPMI_INTEL_PRODUCT_ID_WINDMILL 2818 + +#define IPMI_INTEL_PRODUCT_ID_S2600KP 111 +#define IPMI_INTEL_PRODUCT_ID_S2600WT2 112 +#define IPMI_INTEL_PRODUCT_ID_S2600WTT 112 + +/* + * Intel derived + */ + +#define IPMI_CALIFORNIA_DIGITAL_PRODUCT_ID_6440 IPMI_INTEL_PRODUCT_ID_SR870BN4 + +#define IPMI_PENGUIN_COMPUTING_PRODUCT_ID_RELION_700 IPMI_INTEL_PRODUCT_ID_S5500WB + +#define IPMI_APPRO_PRODUCT_ID_512X IPMI_INTEL_PRODUCT_ID_S2600JF + +#define IPMI_APPRO_PRODUCT_ID_QG812X_CN IPMI_INTEL_PRODUCT_ID_QUANTA_QSSC_S4R + +#define IPMI_QUANTA_PRODUCT_ID_WINTERFELL IPMI_INTEL_PRODUCT_ID_WINDMILL + +#define IPMI_WIWYNN_PRODUCT_ID_WINDMILL IPMI_INTEL_PRODUCT_ID_WINDMILL + +/******************************************* + * IBM * + *******************************************/ + +#define IPMI_IBM_PRODUCT_ID_X3455 20566 +#define IPMI_IBM_PRODUCT_ID_X3755 14 + +/******************************************* + * Inventec * + *******************************************/ + +#define IPMI_INVENTEC_PRODUCT_ID_5441 51 +#define IPMI_INVENTEC_PRODUCT_ID_5442 52 + +/* + * Inventec derived + */ + +#define IPMI_DELL_PRODUCT_ID_XANADU_II IPMI_INVENTEC_PRODUCT_ID_5441 +#define IPMI_DELL_PRODUCT_ID_XANADU_III IPMI_INVENTEC_PRODUCT_ID_5442 + +/******************************************* + * Quanta * + *******************************************/ + +#define IPMI_QUANTA_PRODUCT_ID_S99Q 21401 + +/* + * Quanta derived + */ + +#define IPMI_DELL_PRODUCT_ID_FS12_TY IPMI_QUANTA_PRODUCT_ID_S99Q + +/******************************************* + * Sun Microsystems * + *******************************************/ + +#define IPMI_SUN_MICROSYSTEMS_PRODUCT_ID_X4140 18177 + +/******************************************* + * Supermicro * + *******************************************/ + +/* Seen in the wild w/ Peppercon IANA number 10437 */ +/* achu: there is no product name pattern here, what gives Supermicro? */ +#define IPMI_SUPERMICRO_PRODUCT_ID_FOUR_BASE 4 +#define IPMI_SUPERMICRO_PRODUCT_ID_X7DBR_3 IPMI_SUPERMICRO_PRODUCT_ID_FOUR_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X7DB8 IPMI_SUPERMICRO_PRODUCT_ID_FOUR_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTN IPMI_SUPERMICRO_PRODUCT_ID_FOUR_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X7SBI_LN4 IPMI_SUPERMICRO_PRODUCT_ID_FOUR_BASE + +#define IPMI_SUPERMICRO_PRODUCT_ID_PEPPERCON_X7DBR_3 IPMI_SUPERMICRO_PRODUCT_ID_X7DBR_3 +#define IPMI_SUPERMICRO_PRODUCT_ID_PEPPERCON_X7DB8 IPMI_SUPERMICRO_PRODUCT_ID_X7DB8 +#define IPMI_SUPERMICRO_PRODUCT_ID_PEPPERCON_X8DTN IPMI_SUPERMICRO_PRODUCT_ID_X8DTN +#define IPMI_SUPERMICRO_PRODUCT_ID_PEPPERCON_X7SBI_LN4 IPMI_SUPERMICRO_PRODUCT_ID_X7SBI_LN4 + +/* Seen in the wild w/ Supermicro workaround IANA number 47488 */ +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DT_BASE 43707 +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTH IPMI_SUPERMICRO_PRODUCT_ID_X8DT_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTG IPMI_SUPERMICRO_PRODUCT_ID_X8DT_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTU IPMI_SUPERMICRO_PRODUCT_ID_X8DT_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DT3_LN4F IPMI_SUPERMICRO_PRODUCT_ID_X8DT_BASE +/* achu: X8DTU-6+, why not same as above? Not sure, possibly created + * specifically for vendor or vendor changed for themselves. + */ +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTU_6PLUS 1549 +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTL_BASE 6 +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTL IPMI_SUPERMICRO_PRODUCT_ID_X8DTL_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTL_3F IPMI_SUPERMICRO_PRODUCT_ID_X8DTL_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X8SIL_F 1541 +#define IPMI_SUPERMICRO_PRODUCT_ID_X9SC_BASE 1572 +#define IPMI_SUPERMICRO_PRODUCT_ID_X9SCL IPMI_SUPERMICRO_PRODUCT_ID_X9SC_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X9SCM IPMI_SUPERMICRO_PRODUCT_ID_X9SC_BASE +#define IPMI_SUPERMICRO_PRODUCT_ID_X8DTNPLUS_F 1551 +#define IPMI_SUPERMICRO_PRODUCT_ID_X8SIE 1037 +#define IPMI_SUPERMICRO_PRODUCT_ID_X9SCA_F_O 1585 +#define IPMI_SUPERMICRO_PRODUCT_ID_H8DGU_F 43025 +#define IPMI_SUPERMICRO_PRODUCT_ID_H8DG6 48145 +#define IPMI_SUPERMICRO_PRODUCT_ID_H8DGU 4520 +#define IPMI_SUPERMICRO_PRODUCT_ID_X9DRI_LN4F_PLUS 1574 + +/* Seen in the wild w/ proper IANA number 10876 */ +/* defined above: IPMI_SUPERMICRO_PRODUCT_ID_X9SCM */ +#define IPMI_SUPERMICRO_PRODUCT_ID_X9DRI_F 1576 +#define IPMI_SUPERMICRO_PRODUCT_ID_X9SPU_F_O 1603 +#define IPMI_SUPERMICRO_PRODUCT_ID_X9SCM_IIF 1600 + +/* Seen in the wild w/ Magnum Technologies IANA number 5593 */ +#define IPMI_SUPERMICRO_PRODUCT_ID_MAGNUM_TECHNOLOGIES_X8DTL IPMI_SUPERMICRO_PRODUCT_ID_X8DTL + +/******************************************* + * Wistron * + *******************************************/ + +/* achu: don't know original product name, so just using C6220. + * Will readjust as needed if learned later. + */ +#define IPMI_WISTRON_PRODUCT_ID_C6220 131 + +/* + * Wistron derived + */ + +#define IPMI_DELL_PRODUCT_ID_POWEREDGE_C6220 IPMI_WISTRON_PRODUCT_ID_C6220 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_PRODUCT_ID_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-rmcpplus-status-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-rmcpplus-status-spec.h new file mode 100644 index 00000000..ebf1c402 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-rmcpplus-status-spec.h @@ -0,0 +1,116 @@ +/* + * 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 . + * + */ + + +#ifndef IPMI_RMCPPLUS_STATUS_SPEC_H +#define IPMI_RMCPPLUS_STATUS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* RMCP+ and RAKP Message Status Codes + -------------------------------- */ +#define RMCPPLUS_STATUS_NO_ERRORS 0x00 +#define RMCPPLUS_STATUS_NO_ERRORS_STR \ + "No errors." + +#define RMCPPLUS_STATUS_INSUFFICIENT_RESOURCES_TO_CREATE_A_SESSION 0x01 +#define RMCPPLUS_STATUS_INSUFFICIENT_RESOURCES_TO_CREATE_A_SESSION_STR \ + "Insufficient resources to create a session." + +#define RMCPPLUS_STATUS_INVALID_SESSION_ID 0x02 +#define RMCPPLUS_STATUS_INVALID_SESSION_ID_STR \ + "Invalid Session ID." + +#define RMCPPLUS_STATUS_INVALID_PAYLOAD_TYPE 0x03 +#define RMCPPLUS_STATUS_INVALID_PAYLOAD_TYPE_STR \ + "Invalid payload type." + +#define RMCPPLUS_STATUS_INVALID_AUTHENTICATION_ALGORITHM 0x04 +#define RMCPPLUS_STATUS_INVALID_AUTHENTICATION_ALGORITHM_STR \ + "Invalid authentication algorithm." + +#define RMCPPLUS_STATUS_INVALID_INTEGRITY_ALGORITHM 0x05 +#define RMCPPLUS_STATUS_INVALID_INTEGRITY_ALGORITHM_STR \ + "Invalid integrity algorithm." + +#define RMCPPLUS_STATUS_NO_MATCHING_AUTHENTICATION_PAYLOAD 0x06 +#define RMCPPLUS_STATUS_NO_MATCHING_AUTHENTICATION_PAYLOAD_STR \ + "No matching authentication payload." + +#define RMCPPLUS_STATUS_NO_MATCHING_INTEGRITY_PAYLOAD 0x07 +#define RMCPPLUS_STATUS_NO_MATCHING_INTEGRITY_PAYLOAD_STR \ + "No mathing integrity payload." + +#define RMCPPLUS_STATUS_INACTIVE_SESSION_ID 0x08 +#define RMCPPLUS_STATUS_INACTIVE_SESSION_ID_STR \ + "Inactive Session ID" + +#define RMCPPLUS_STATUS_INVALID_ROLE 0x09 +#define RMCPPLUS_STATUS_INVALID_ROLE_STR \ + "Invalid role." + +#define RMCPPLUS_STATUS_UNAUTHORIZED_ROLE_OR_PRIVILEGE_LEVEL_REQUESTED 0x0A +#define RMCPPLUS_STATUS_UNAUTHORIZED_ROLE_OR_PRIVILEGE_LEVEL_REQUESTED_STR \ + "Unauthorized role or privelege level requested." + +#define RMCPPLUS_STATUS_INSUFFICIENT_RESOURCES_TO_CREATE_A_SESSION_AT_THE_REQUESTED_TIME 0x0B +#define RMCPPLUS_STATUS_INSUFFICIENT_RESOURCES_TO_CREATE_A_SESSION_AT_THE_REQUESTED_TIME_STR \ + "Insufficient resources to create a session at the requested time." + +#define RMCPPLUS_STATUS_INVALID_NAME_LENGTH 0x0C +#define RMCPPLUS_STATUS_INVALID_NAME_LENGTH_STR \ + "Invalid name length." + +#define RMCPPLUS_STATUS_UNAUTHORIZED_NAME 0x0D +#define RMCPPLUS_STATUS_UNAUTHORIZED_NAME_STR \ + "Unauthorized name." + +#define RMCPPLUS_STATUS_UNAUTHORIZED_GUID 0x0E +#define RMCPPLUS_STATUS_UNAUTHORIZED_GUID_STR \ + "Unauthorized GUID. (GUID that BMC submitted in " \ + "RAKP Message 2 was not accepted by remote console)." + +#define RMCPPLUS_STATUS_INVALID_INTEGRITY_CHECK_VALUE 0x0F +#define RMCPPLUS_STATUS_INVALID_INTEGRITY_CHECK_VALUE_STR \ + "Invalid integrity check value." + +#define RMCPPLUS_STATUS_INVALID_CONFIDENTIALITY_ALGORITHM 0x10 +#define RMCPPLUS_STATUS_INVALID_CONFIDENTIALITY_ALGORITHM_STR \ + "Invalid confidentiality algorithm." + +#define RMCPPLUS_STATUS_NO_CIPHER_SUITE_MATCH_WITH_PROPOSED_SECURITY_ALGORITHMS 0x11 +#define RMCPPLUS_STATUS_NO_CIPHER_SUITE_MATCH_WITH_PROPOSED_SECURITY_ALGORITHMS_STR \ + "No Cipher Suite match with proposed security algorithms." + +#define RMCPPLUS_STATUS_ILLEGAL_OR_UNRECOGNIZED_PARAMETER 0x12 +#define RMCPPLUS_STATUS_ILLEGAL_OR_UNRECOGNIZED_PARAMETER_STR \ + "Illegal or Unrecognized parameter." +/* Reserved - all others */ + +/* To avoid gcc warnings, add +1 in comparison */ +#define RMCPPLUS_STATUS_VALID(__status) \ + (((__status + 1) >= RMCPPLUS_STATUS_INSUFFICIENT_RESOURCES_TO_CREATE_A_SESSION \ + && (__status) <= RMCPPLUS_STATUS_ILLEGAL_OR_UNRECOGNIZED_PARAMETER) ? 1 : 0) + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_RMCPPLUS_STATUS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h new file mode 100644 index 00000000..2833c05c --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h new file mode 100644 index 00000000..2a17a0fa --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h @@ -0,0 +1,907 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/************************************************ + * Generic Event Reading Type Code Offsets * + ************************************************/ + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_LOWER_NON_CRITICAL_GOING_LOW 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_LOWER_NON_CRITICAL_GOING_HIGH 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_LOWER_CRITICAL_GOING_LOW 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_LOWER_CRITICAL_GOING_HIGH 0x03 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_LOWER_NON_RECOVERABLE_GOING_LOW 0x04 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_LOWER_NON_RECOVERABLE_GOING_HIGH 0x05 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_UPPER_NON_CRITICAL_GOING_LOW 0x06 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_UPPER_NON_CRITICAL_GOING_HIGH 0x07 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_UPPER_CRITICAL_GOING_LOW 0x08 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_UPPER_CRITICAL_GOING_HIGH 0x09 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_UPPER_NON_RECOVERABLE_GOING_LOW 0x0A +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_THRESHOLD_UPPER_NON_RECOVERABLE_GOING_HIGH 0x0B + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_STATE_TRANSITION_TO_IDLE 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_STATE_TRANSITION_TO_ACTIVE 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_STATE_TRANSITION_TO_BUSY 0x02 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_DEASSERTED 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED 0x01 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_PREDICTIVE_FAILURE_DEASSERTED 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_PREDICTIVE_FAILURE_ASSERTED 0x01 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_LIMIT_NOT_EXCEEDED 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_LIMIT_EXCEEDED 0x01 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_PERFORMANCE_MET 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_PERFORMANCE_LAGS 0x01 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_TRANSITION_TO_OK 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_TRANSITION_TO_NON_CRITICAL_FROM_OK 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_TRANSITION_TO_CRITICAL_FROM_LESS_SEVERE 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_TRANSITION_TO_NON_RECOVERABLE_FROM_LESS_SEVERE 0x03 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_TRANSITION_TO_NON_CRITICAL_FROM_MORE_SEVERE 0x04 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_TRANSITION_TO_CRITICAL_FROM_NON_RECOVERABLE 0x05 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_TRANSITION_TO_NON_RECOVERABLE 0x06 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_MONITOR 0x07 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_SEVERITY_INFORMATIONAL 0x08 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_DEVICE_PRESENT_DEVICE_PRESENT 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_DEVICE_PRESENT_DEVICE_ABSENT 0x01 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_DEVICE_ENABLED_DEVICE_DISABLED 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_DEVICE_ENABLED_DEVICE_ENABLED 0x01 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_TRANSITION_TO_RUNNING 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_TRANSITION_TO_IN_TEST 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_TRANSITION_TO_POWER_OFF 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_TRANSITION_TO_ON_LINE 0x03 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_TRANSITION_TO_OFF_LINE 0x04 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_TRANSITION_TO_OFF_DUTY 0x05 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_TRANSITION_TO_DEGRADED 0x06 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_TRANSITION_TO_POWER_SAVE 0x07 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_TRANSITION_AVAILABILITY_INSTALL_ERROR 0x08 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_REDUNDANCY_FULLY_REDUNDANT 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_REDUNDANCY_REDUNDANCY_LOST 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_REDUNDANCY_REDUNDANCY_DEGRADED 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_REDUNDANCY_NON_REDUNDANT_SUFFICIENT_RESOURCES_FROM_REDUNDANT 0x03 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_REDUNDANCY_NON_REDUNDANT_SUFFICIENT_RESOURCES_FROM_INSUFFICIENT_RESOURCES 0x04 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_REDUNDANCY_NON_REDUNDANT_INSUFFICIENT_RESOURCES 0x05 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_REDUNDANCY_REDUNDANCY_DEGRADED_FROM_FULLY_REDUNDANT 0x06 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_REDUNDANCY_REDUNDANCY_DEGRADED_FROM_NON_REDUNDANT 0x07 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_ACPI_POWER_STATE_D0_POWER_STATE 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_ACPI_POWER_STATE_D1_POWER_STATE 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_ACPI_POWER_STATE_D2_POWER_STATE 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_ACPI_POWER_STATE_D3_POWER_STATE 0x03 + +/* + * String arrays for above + */ + +extern const char * const ipmi_generic_event_reading_type_code_threshold[]; +extern unsigned int ipmi_generic_event_reading_type_code_threshold_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_transition_state[]; +extern unsigned int ipmi_generic_event_reading_type_code_transition_state_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_state[]; +extern unsigned int ipmi_generic_event_reading_type_code_state_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_predictive_failure[]; +extern unsigned int ipmi_generic_event_reading_type_code_predictive_failure_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_limit[]; +extern unsigned int ipmi_generic_event_reading_type_code_limit_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_performance[]; +extern unsigned int ipmi_generic_event_reading_type_code_performance_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_transition_severity[]; +extern unsigned int ipmi_generic_event_reading_type_code_transition_severity_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_device_present[]; +extern unsigned int ipmi_generic_event_reading_type_code_device_present_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_device_enabled[]; +extern unsigned int ipmi_generic_event_reading_type_code_device_enabled_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_transition_availability[]; +extern unsigned int ipmi_generic_event_reading_type_code_transition_availability_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_redundancy[]; +extern unsigned int ipmi_generic_event_reading_type_code_redundancy_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_acpi_power_state[]; +extern unsigned int ipmi_generic_event_reading_type_code_acpi_power_state_max_index; + +/* + * "short" arrays are same strings, but shortened to more reasonble lengths for output + */ +extern const char * const ipmi_generic_event_reading_type_code_threshold_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_threshold_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_transition_state_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_transition_state_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_state_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_state_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_predictive_failure_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_predictive_failure_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_limit_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_limit_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_performance_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_performance_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_transition_severity_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_transition_severity_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_device_present_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_device_present_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_device_enabled_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_device_enabled_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_transition_availability_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_transition_availability_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_redundancy_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_redundancy_short_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_acpi_power_state_short[]; +extern unsigned int ipmi_generic_event_reading_type_code_acpi_power_state_short_max_index; + +/************************************************ + * Sensor Type Code Offsets * + ************************************************/ + +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_GENERAL_CHASSIS_INTRUSION 0x00 +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_DRIVE_BAY_INTRUSION 0x01 +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_IO_CARD_AREA_INTRUSION 0x02 +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_PROCESSOR_AREA_INTRUSION 0x03 +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_LAN_LEASH_LOST 0x04 +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_UNAUTHORIZED_DOCK 0x05 +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_FAN_AREA_INTRUSION 0x06 + +#define IPMI_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT_SECURE_MODE_VIOLATION_ATTEMPT 0x00 +#define IPMI_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_USER_PASSWORD 0x01 +#define IPMI_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_ATTEMPT_SETUP_PASSWORD 0x02 +#define IPMI_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_NETWORK_BOOT_PASSWORD 0x03 +#define IPMI_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT_OTHER_PRE_BOOT_PASSWORD_VIOLATION 0x04 +#define IPMI_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT_OUT_OF_BAND_ACCESS_PASSWORD_VIOLATION 0x05 + +#define IPMI_SENSOR_TYPE_PROCESSOR_IERR 0x00 +#define IPMI_SENSOR_TYPE_PROCESSOR_THERMAL_TRIP 0x01 +#define IPMI_SENSOR_TYPE_PROCESSOR_FRB1_BIST_FAILURE 0x02 +#define IPMI_SENSOR_TYPE_PROCESSOR_FRB2_HANG_IN_POST_FAILURE 0x03 +#define IPMI_SENSOR_TYPE_PROCESSOR_FRB3_PROCESSOR_STARTUP_INITIALIZATION_FAILURE 0x04 +#define IPMI_SENSOR_TYPE_PROCESSOR_CONFIGURATION_ERROR 0x05 +#define IPMI_SENSOR_TYPE_PROCESSOR_SMBIOS_UNCORRECTABLE_CPU_COMPLEX_ERROR 0x06 +#define IPMI_SENSOR_TYPE_PROCESSOR_PROCESSOR_PRESENCE_DETECTED 0x07 +#define IPMI_SENSOR_TYPE_PROCESSOR_PROCESSOR_DISABLED 0x08 +#define IPMI_SENSOR_TYPE_PROCESSOR_TERMINATOR_PRESENCE_DETECTED 0x09 +#define IPMI_SENSOR_TYPE_PROCESSOR_PROCESSOR_AUTOMATICALLY_THROTTLED 0x0A +#define IPMI_SENSOR_TYPE_PROCESSOR_MACHINE_CHECK_EXCEPTION 0x0B +#define IPMI_SENSOR_TYPE_PROCESSOR_CORRECTABLE_MACHINE_CHECK_ERROR 0x0C + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PRESENCE_DETECTED 0x00 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_FAILURE_DETECTED 0x01 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE 0x02 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_INPUT_LOST_AC_DC 0x03 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_INPUT_LOST_OR_OUT_OF_RANGE 0x04 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_INPUT_OUT_OF_RANGE_BUT_PRESENT 0x05 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_CONFIGURATION_ERROR 0x06 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_INACTIVE 0x07 + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OFFSET_CONFIGURATION_ERROR_ERROR_TYPE_VENDOR_MISMATCH 0x00 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OFFSET_CONFIGURATION_ERROR_ERROR_TYPE_REVISION_MISMATCH 0x01 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OFFSET_CONFIGURATION_ERROR_ERROR_TYPE_PROCESSOR_MISSING 0x02 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OFFSET_CONFIGURATION_ERROR_ERROR_TYPE_POWER_SUPPLY_RATING_MISMATCH 0x03 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OFFSET_CONFIGURATION_ERROR_ERROR_TYPE_VOLTAGE_RATING_MISMATCH 0x04 + +#define IPMI_SENSOR_TYPE_POWER_UNIT_POWER_OFF_POWER_DOWN 0x00 +#define IPMI_SENSOR_TYPE_POWER_UNIT_POWER_CYCLE 0x01 +#define IPMI_SENSOR_TYPE_POWER_UNIT_240VA_POWER_DOWN 0x02 +#define IPMI_SENSOR_TYPE_POWER_UNIT_INTERLOCK_POWER_DOWN 0x03 +#define IPMI_SENSOR_TYPE_POWER_UNIT_AC_LOST 0x04 +#define IPMI_SENSOR_TYPE_POWER_UNIT_SOFT_POWER_CONTROL_FAILURE 0x05 +#define IPMI_SENSOR_TYPE_POWER_UNIT_POWER_UNIT_FAILURE_DETECTED 0x06 +#define IPMI_SENSOR_TYPE_POWER_UNIT_PREDICTIVE_FAILURE 0x07 + +#define IPMI_SENSOR_TYPE_MEMORY_CORRECTABLE_MEMORY_ERROR 0x00 +#define IPMI_SENSOR_TYPE_MEMORY_UNCORRECTABLE_MEMORY_ERROR 0x01 +#define IPMI_SENSOR_TYPE_MEMORY_PARITY 0x02 +#define IPMI_SENSOR_TYPE_MEMORY_MEMORY_SCRUB_FAILED 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_MEMORY_DEVICE_DISABLED 0x04 +#define IPMI_SENSOR_TYPE_MEMORY_CORRECTABLE_MEMORY_ERROR_LOGGING_LIMIT_REACHED 0x05 +#define IPMI_SENSOR_TYPE_MEMORY_PRESENCE_DETECTED 0x06 +#define IPMI_SENSOR_TYPE_MEMORY_CONFIGURATION_ERROR 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_SPARE 0x08 +#define IPMI_SENSOR_TYPE_MEMORY_MEMORY_AUTOMATICALLY_THROTTLED 0x09 +#define IPMI_SENSOR_TYPE_MEMORY_CRITICAL_OVERTEMPERATURE 0x0A + +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_DRIVE_PRESENCE 0x00 +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_DRIVE_FAULT 0x01 +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_PREDICTIVE_FAILURE 0x02 +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_HOT_SPARE 0x03 +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_CONSISTENCY_CHECK_PARITY_CHECK_IN_PROGRESS 0x04 +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_IN_CRITICAL_ARRAY 0x05 +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_IN_FAILED_ARRAY 0x06 +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_REBUILD_REMAP_IN_PROGRESS 0x07 +#define IPMI_SENSOR_TYPE_DRIVE_SLOT_REBUILD_REMAP_ABORTED 0x08 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_ERROR 0x00 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_HANG 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_PROGRESS 0x02 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_UNSPECIFIED 0x00 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_NO_SYSTEM_MEMORY 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_NO_USABLE_SYSTEM_MEMORY 0x02 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_UNRECOVERABLE_HARD_DISK_ATPI_IDE_DEVICE_FAILURE 0x03 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_UNRECOVERABLE_SYSTEM_BOARD_FAILURE 0x04 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_UNRECOVERABLE_DISKETTE_SUBSYSTEM_FAILURE 0x05 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_UNRECOVERABLE_HARD_DISK_CONTROLLER_FAILURE 0x06 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_UNRECOVERABLE_PS2_OR_USB_KEYBOARD_FAILURE 0x07 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_REMOVABLE_BOOT_MEDIA_NOT_FOUND 0x08 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_UNRECOVERABLE_VIDEO_CONTROLLER_FAILURE 0x09 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_NO_VIDEO_DEVICE_DETECTED 0x0A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_FIRMWARE_ROM_CORRUPTION_DETECTED 0x0B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_CPU_VOLTAGE_MISMATCH 0x0C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_ERROR_CPU_SPEED_MATCHING_FAILURE 0x0D + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_UNSPECIFIED 0x00 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_MEMORY_INITIALIZATION 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_HARD_DISK_INITIALIZATION 0x02 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_SECONDARY_PROCESSORS_INITIALIZATION 0x03 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_USER_AUTHENTICATION 0x04 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_USER_INITIATED_SYSTEM_SETUP 0x05 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_USB_RESOURCE_CONFIGURATION 0x06 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_PCI_RESOURCE_CONFIGURATION 0x07 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_OPTION_ROM_INITIALIZATION 0x08 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_VIDEO_INITIALIZATION 0x09 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_CACHE_INITIALIZATION 0x0A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_SM_BUS_INITIALIZATION 0x0B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_KEYBOARD_CONTROLLER_INITIALIZATION 0x0C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_EMBEDDED_CONTROLLER_MANAGEMENT_CONTROLLER_INITIALIZATION 0x0D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_DOCKING_STATION_ATTACHMENT 0x0E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_ENABLING_DOCKING_STATION 0x0F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_DOCKING_STATION_EJECTION 0x10 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_DISABLING_DOCKING_STATION 0x11 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_CALLING_OPERATING_SYSTEM_WAKE_UP_VECTOR 0x12 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_STARTING_OPERATING_SYSTEM_BOOT_PROCESS 0x13 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_BASEBOARD_OR_MOTHERBOARD_INITIALIZATION 0x14 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_RESERVED 0x15 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_FLOPPY_INITIALIZATION 0x16 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_KEYBOARD_TEST 0x17 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_POINTING_DEVICE_TEST 0x18 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_HANG_PRIMARY_PROCESSOR_INITIALIZATION 0x19 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_UNSPECIFIED 0x00 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_MEMORY_INITIALIZATION 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_HARD_DISK_INITIALIZATION 0x02 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_SECONDARY_PROCESSORS_INITIALIZATION 0x03 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_USER_AUTHENTICATION 0x04 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_USER_INITIATED_SYSTEM_SETUP 0x05 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_USB_RESOURCE_CONFIGURATION 0x06 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_PCI_RESOURCE_CONFIGURATION 0x07 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_OPTION_ROM_INITIALIZATION 0x08 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_VIDEO_INITIALIZATION 0x09 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_CACHE_INITIALIZATION 0x0A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_SM_BUS_INITIALIZATION 0x0B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_KEYBOARD_CONTROLLER_INITIALIZATION 0x0C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_EMBEDDED_CONTROLLER_MANAGEMENT_CONTROLLER_INITIALIZATION 0x0D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_DOCKING_STATION_ATTACHMENT 0x0E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_ENABLING_DOCKING_STATION 0x0F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_DOCKING_STATION_EJECTION 0x10 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_DISABLING_DOCKING_STATION 0x11 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_CALLING_OPERATING_SYSTEM_WAKE_UP_VECTOR 0x12 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_STARTING_OPERATING_SYSTEM_BOOT_PROCESS 0x13 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_BASEBOARD_OR_MOTHERBOARD_INITIALIZATION 0x14 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_RESERVED 0x15 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_FLOPPY_INITIALIZATION 0x16 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_KEYBOARD_TEST 0x17 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_POINTING_DEVICE_TEST 0x18 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA2_OFFSET_SYSTEM_FIRMWARE_PROGRESS_PRIMARY_PROCESSOR_INITIALIZATION 0x19 + +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_CORRECTABLE_MEMORY_ERROR_LOGGING_DISABLED 0x00 +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_EVENT_TYPE_LOGGING_DISABLED 0x01 +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_LOG_AREA_RESET_CLEARED 0x02 +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_ALL_EVENT_LOGGING_DISABLED 0x03 +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_SEL_FULL 0x04 +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_SEL_ALMOST_FULL 0x05 +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_CORRECTABLE_MACHINE_CHECK_ERROR_LOGGING_DISABLED 0x06 + +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_EVENT_DATA3_OFFSET_EVENT_TYPE_LOGGING_DISABLED_DEASSERTION_EVENT 0x0 +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_EVENT_DATA3_OFFSET_EVENT_TYPE_LOGGING_DISABLED_ASSERTION_EVENT 0x1 + +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_EVENT_DATA3_OFFSET_EVENT_TYPE_LOGGING_DISABLED_LOGGING_HAS_BEEN_DISABLED_FOR_ALL_EVENTS_OF_A_GIVEN_TYPE 0x1 + +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_EVENT_DATA3_OFFSET_CORRECTABLE_MACHINE_CHECK_ERROR_LOGGING_DISABLED_ENTITY_INSTANCE_NUMBER 0x0 +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED_EVENT_DATA3_OFFSET_CORRECTABLE_MACHINE_CHECK_ERROR_LOGGING_DISABLED_VENDOR_SPECIFIC_PROCESSOR_NUMBER 0x1 + +#define IPMI_SENSOR_TYPE_WATCHDOG1_BIOS_WATCHDOG_RESET 0x00 +#define IPMI_SENSOR_TYPE_WATCHDOG1_OS_WATCHDOG_RESET 0x01 +#define IPMI_SENSOR_TYPE_WATCHDOG1_OS_WATCHDOG_SHUT_DOWN 0x02 +#define IPMI_SENSOR_TYPE_WATCHDOG1_OS_WATCHDOG_POWER_DOWN 0x03 +#define IPMI_SENSOR_TYPE_WATCHDOG1_OS_WATCHDOG_POWER_CYCLE 0x04 +#define IPMI_SENSOR_TYPE_WATCHDOG1_OS_WATCHDOG_NMI_DIAGNOSTIC_INTERRUPT 0x05 +#define IPMI_SENSOR_TYPE_WATCHDOG1_OS_WATCHDOG_EXPIRED_STATUS_ONLY 0x06 +#define IPMI_SENSOR_TYPE_WATCHDOG1_OS_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NON_NMI 0x07 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_SYSTEM_RECONFIGURED 0x00 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_OEM_SYSTEM_BOOT_EVENT 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_UNDETERMINED_SYSTEM_HARDWARE_FAILURE 0x02 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_ENTRY_ADDED_TO_AUXILIARY_LOG 0x03 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_PEF_ACTION 0x04 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_TIMESTAMP_CLOCK_SYNCH 0x05 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_ENTRY_ACTION_ENTRY_ADDED 0x0 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_ENTRY_ACTION_ENTRY_ADDED_BECAUSE_EVENT_DID_NOT_BE_MAP_TO_STANDARD_IPMI_EVENT 0x1 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_ENTRY_ACTION_ENTRY_ADDED_ALONG_WITH_ONE_OR_MORE_CORRESPONDING_SEL_ENTRIES 0x2 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_ENTRY_ACTION_LOG_CLEARED 0x3 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_ENTRY_ACTION_LOG_DISABLED 0x4 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_ENTRY_ACTION_LOG_ENABLED 0x5 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_TYPE_MCA 0x0 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_TYPE_OEM1 0x1 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_ENTRY_ADDED_TO_AUXILIARY_LOG_LOG_TYPE_OEM2 0x2 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_PEF_ACTION_BITMASK_ALERT 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_PEF_ACTION_BITMASK_POWER_OFF 0x02 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_PEF_ACTION_BITMASK_RESET 0x04 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_PEF_ACTION_BITMASK_POWER_CYCLE 0x08 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_PEF_ACTION_BITMASK_OEM_ACTION 0x10 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_PEF_ACTION_BITMASK_DIAGNOSTIC_INTERRUPT 0x20 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_TIMESTAMP_CLOCK_SYNCH_EVENT_IS_FIRST_OF_PAIR 0x0 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_TIMESTAMP_CLOCK_SYNCH_EVENT_IS_SECOND_OF_PAIR 0x1 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_TIMESTAMP_CLOCK_SYNCH_SEL_TIMESTAMP_CLOCK_UPDATED 0x0 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OFFSET_TIMESTAMP_CLOCK_SYNCH_SDR_TIMESTAMP_CLOCK_UPDATED 0x1 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_FRONT_PANEL_NMI_DIAGNOSTIC_INTERRUPT 0x00 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_BUS_TIMEOUT 0x01 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_IO_CHANNEL_CHECK_NMI 0x02 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_SOFTWARE_NMI 0x03 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_PCI_PERR 0x04 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_PCI_SERR 0x05 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EISA_FAIL_SAFE_TIMEOUT 0x06 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_BUS_CORRECTABLE_ERROR 0x07 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_BUS_UNCORRECTABLE_ERROR 0x08 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_FATAL_NMI 0x09 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_BUS_FATAL_ERROR 0x0A +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_BUS_DEGRADED 0x0B + +#define IPMI_SENSOR_TYPE_BUTTON_SWITCH_POWER_BUTTON_PRESSED 0x00 +#define IPMI_SENSOR_TYPE_BUTTON_SWITCH_SLEEP_BUTTON_PRESSED 0x01 +#define IPMI_SENSOR_TYPE_BUTTON_SWITCH_RESET_BUTTON_PRESSED 0x02 +#define IPMI_SENSOR_TYPE_BUTTON_SWITCH_FRU_LATCH_OPEN 0x03 +#define IPMI_SENSOR_TYPE_BUTTON_SWITCH_FRU_SERVICE_REQUEST_BUTTON 0x04 + +#define IPMI_SENSOR_TYPE_CHIP_SET_SOFT_POWER_CONTROL_FAILURE 0x00 +#define IPMI_SENSOR_TYPE_CHIP_SET_THERMAL_TRIP 0x01 + +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_S0_G0 0x00 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_S1 0x01 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_S2 0x02 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_S3 0x03 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_S4 0x04 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_S5_G2 0x05 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_S4_S5_SOFT_OFF 0x06 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_G3 0x07 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_SLEEPING_S1_S2_S3 0x08 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_G1_SLEEPING 0x09 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_S5_ENTERED_BY_OVERRIDE 0x0A +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_LEGACY_ON_STATE 0x0B +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA2_LEGACY_OFF_STATE 0x0C + +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_S0_G0 0x00 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_S1 0x01 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_S2 0x02 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_S3 0x03 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_S4 0x04 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_S5_G2 0x05 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_S4_S5_SOFT_OFF 0x06 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_G3 0x07 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_SLEEPING_S1_S2_S3 0x08 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_G1_SLEEPING 0x09 +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_S5_ENTERED_BY_OVERRIDE 0x0A +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_LEGACY_ON_STATE 0x0B +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_LEGACY_OFF_STATE 0x0C +#define IPMI_SENSOR_TYPE_CHIP_EVENT_DATA3_UNKNOWN 0x0D + +#define IPMI_SENSOR_TYPE_CABLE_INTERCONNECT_IS_CONNECTED 0x00 +#define IPMI_SENSOR_TYPE_CABLE_INTERCONNECT_CONFIGURATION_ERROR 0x01 + +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_INITIATED_BY_POWER_UP 0x00 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_INITIATED_BY_HARD_RESET 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_INITIATED_BY_WARM_RESET 0x02 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_USER_REQUESTED_PXE_BOOT 0x03 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_AUTOMATIC_BOOT_TO_DIAGNOSTIC 0x04 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_OS_RUN_TIME_SOFTWARE_INITIATED_HARD_RESET 0x05 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_OS_RUN_TIME_SOFTWARE_INITIATED_WARM_RESET 0x06 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_SYSTEM_RESTART 0x07 + +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_UNKNOWN 0x00 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_CHASSIS_CONTROL_COMMAND 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_RESET_VIA_PUSHBUTTON 0x02 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_POWER_UP_VIA_POWER_PUSHBUTTON 0x03 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_WATCHDOG_EXPIRATION 0x04 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_OEM 0x05 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_AUTOMATIC_POWER_UP_DUE_TO_ALWAYS_RESTORE_POWER_RESTORE_POLICY 0x06 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_AUTOMATIC_POWER_UP_DUE_TO_RESTORE_PREVIOUS_POWER_STATE_POWER_RESTORE_POLICY 0x07 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_RESET_VIA_PEF 0x08 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_POWER_CYCLE_VIA_PEF 0x09 +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_SOFT_RESET 0x0A +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED_EVENT_DATA2_OFFSET_SYSTEM_RESTART_POWER_UP_VIA_RTC_WAKEUP 0x0B + +#define IPMI_SENSOR_TYPE_BOOT_ERROR_NO_BOOTABLE_MEDIA 0x00 +#define IPMI_SENSOR_TYPE_BOOT_ERROR_NON_BOOTABLE_DISKETTE_LEFT_IN_DRIVE 0x01 +#define IPMI_SENSOR_TYPE_BOOT_ERROR_PXE_SERVER_NOT_FOUND 0x02 +#define IPMI_SENSOR_TYPE_BOOT_ERROR_INVALID_BOOT_SECTOR 0x03 +#define IPMI_SENSOR_TYPE_BOOT_ERROR_TIMEOUT_WAITING_FOR_USER_SELECTION_OF_BOOT_SOURCE 0x04 + +#define IPMI_SENSOR_TYPE_OS_BOOT_A_BOOT_COMPLETED 0x00 +#define IPMI_SENSOR_TYPE_OS_BOOT_C_BOOT_COMPLETED 0x01 +#define IPMI_SENSOR_TYPE_OS_BOOT_PXE_BOOT_COMPLETED 0x02 +#define IPMI_SENSOR_TYPE_OS_BOOT_DIAGNOSTIC_BOOT_COMPLETED 0x03 +#define IPMI_SENSOR_TYPE_OS_BOOT_CD_ROM_BOOT_COMPLETED 0x04 +#define IPMI_SENSOR_TYPE_OS_BOOT_ROM_BOOT_COMPLETED 0x05 +#define IPMI_SENSOR_TYPE_OS_BOOT_BOOT_COMPLETED_BOOT_DEVICE_NOT_SPECIFIED 0x06 +#define IPMI_SENSOR_TYPE_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_STARTED 0x07 +#define IPMI_SENSOR_TYPE_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_COMPLETED 0x08 +#define IPMI_SENSOR_TYPE_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_ABORTED 0x09 +#define IPMI_SENSOR_TYPE_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_FAILED 0x0A + +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_CRITICAL_STOP_DURING_OS_LOAD 0x00 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_RUN_TIME_CRITICAL_STOP 0x01 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OS_GRACEFUL_STOP 0x02 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OS_GRACEFUL_SHUTDOWN 0x03 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_SOFT_SHUTDOWN_INITIATED_BY_PEF 0x04 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_AGENT_NOT_RESPONDING 0x05 + +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_FAULT_STATUS_ASSERTED 0x00 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_IDENTIFY_STATUS_ASSERTED 0x01 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_SLOT_CONNECTOR_DEVICE_INSTALLED_ATTACHED 0x02 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_SLOT_CONNECTOR_READY_FOR_DEVICE_INSTALLATION 0x03 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_SLOT_CONNECTOR_READY_FOR_DEVICE_REMOVAL 0x04 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_SLOT_POWER_IS_OFF 0x05 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_SLOT_CONNECTOR_DEVICE_REMOVAL_REQUEST 0x06 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_INTERLOCK_ASSERTED 0x07 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_SLOT_IS_DISABLED 0x08 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_SLOT_HOLDS_SPARE_DEVICE 0x09 + +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_PCI 0x00 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_DRIVE_ARRAY 0x01 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_EXTERNAL_PERIPHERAL_CONNECTOR 0x02 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_DOCKING 0x03 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_OTHER_STANDARD_INTERNAL_EXPANSION_SLOT 0x04 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_SLOT_ASSOCIATED_WITH_ENTITY_SPECIFIED_BY_ENTITY_ID_FOR_SENSOR 0x05 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_ADVANCEDTCA 0x06 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_DIMM_MEMORY_DEVICE 0x07 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_FAN 0x08 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_PCI_EXPRESS 0x09 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_SCSI 0x0A +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_SATA_SAS 0x0B +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR_EVENT_DATA2_USB 0x0C + +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_S0_G0 0x00 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_S1 0x01 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_S2 0x02 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_S3 0x03 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_S4 0x04 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_S5_G2 0x05 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_S4_S5_SOFT_OFF 0x06 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_G3_MECHANICAL_OFF 0x07 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_SLEEPING_IN_AN_S1_S2_OR_S3_STATES 0x08 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_G1_SLEEPING 0x09 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_S5_ENTERED_BY_OVERRIDE 0x0A +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_LEGACY_ON_STATE 0x0B +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_LEGACY_OFF_STATE 0x0C +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_UNSPECIFIED 0x0D +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE_UNKNOWN 0x0E + +#define IPMI_SENSOR_TYPE_WATCHDOG2_TIMER_EXPIRED 0x00 +#define IPMI_SENSOR_TYPE_WATCHDOG2_HARD_RESET 0x01 +#define IPMI_SENSOR_TYPE_WATCHDOG2_POWER_DOWN 0x02 +#define IPMI_SENSOR_TYPE_WATCHDOG2_POWER_CYCLE 0x03 +#define IPMI_SENSOR_TYPE_WATCHDOG2_RESERVED1 0x04 +#define IPMI_SENSOR_TYPE_WATCHDOG2_RESERVED2 0x05 +#define IPMI_SENSOR_TYPE_WATCHDOG2_RESERVED3 0x06 +#define IPMI_SENSOR_TYPE_WATCHDOG2_RESERVED4 0x07 +#define IPMI_SENSOR_TYPE_WATCHDOG2_TIMER_INTERRUPT 0x08 + +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_INTERRUPT_TYPE_NONE 0x0 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_INTERRUPT_TYPE_SMI 0x1 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_INTERRUPT_TYPE_NMI 0x2 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_INTERRUPT_TYPE_MESSAGE_INTERRUPT 0x3 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_INTERRUPT_TYPE_UNSPECIFIED 0xF + +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_TIMER_USE_AT_EXPIRATION_RESERVED 0x0 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_TIMER_USE_AT_EXPIRATION_BIOS_FRB2 0x1 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_TIMER_USE_AT_EXPIRATION_BIOS_POST 0x2 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_TIMER_USE_AT_EXPIRATION_OS_LOAD 0x3 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_TIMER_USE_AT_EXPIRATION_SMS_OS 0x4 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_TIMER_USE_AT_EXPIRATION_OEM 0x5 +#define IPMI_SENSOR_TYPE_WATCHDOG2_EVENT_DATA2_TIMER_USE_AT_EXPIRATION_UNSPECIFIED 0xF + +#define IPMI_SENSOR_TYPE_PLATFORM_ALERT_PLATFORM_GENERATED_PAGE 0x00 +#define IPMI_SENSOR_TYPE_PLATFORM_ALERT_PLATFORM_GENERATED_LAN_ALERT 0x01 +#define IPMI_SENSOR_TYPE_PLATFORM_ALERT_PLATFORM_EVENT_TRAP_GENERATED 0x02 +#define IPMI_SENSOR_TYPE_PLATFORM_ALERT_PLATFORM_GENERATED_SNMP_TRAP 0x03 + +#define IPMI_SENSOR_TYPE_ENTITY_PRESENCE_ENTITY_PRESENT 0x00 +#define IPMI_SENSOR_TYPE_ENTITY_PRESENCE_ENTITY_ABSENT 0x01 +#define IPMI_SENSOR_TYPE_ENTITY_PRESENCE_ENTITY_DISABLED 0x02 + +#define IPMI_SENSOR_TYPE_LAN_HEARTBEAT_LOST 0x00 +#define IPMI_SENSOR_TYPE_LAN_HEARTBEAT 0x01 + +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH_SENSOR_ACCESS_DEGRADED_OR_UNAVAILABLE 0x00 +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH_CONTROLLER_ACCESS_DEGRADED_OR_UNAVAILABLE 0x01 +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH_MANAGEMENT_CONTROLLER_OFF_LINE 0x02 +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH_MANAGEMENT_CONTROLLER_UNAVAILABLE 0x03 +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH_SENSOR_FAILURE 0x04 +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH_FRU_FAILURE 0x05 + +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH_EVENT_DATA2_OFFSET_FRU_FAILURE_DEVICE_IS_NOT_A_LOGICAL_FRU_DEVICE 0x0 +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH_EVENT_DATA2_OFFSET_FRU_FAILURE_DEVICE_IS_LOGICAL_FRU_DEVICE 0x1 + +#define IPMI_SENSOR_TYPE_BATTERY_BATTERY_LOW 0x00 +#define IPMI_SENSOR_TYPE_BATTERY_BATTERY_FAILED 0x01 +#define IPMI_SENSOR_TYPE_BATTERY_BATTERY_PRESENCE_DETECTED 0x02 + +#define IPMI_SENSOR_TYPE_SESSION_AUDIT_SESSION_ACTIVATED 0x00 +#define IPMI_SENSOR_TYPE_SESSION_AUDIT_SESSION_DEACTIVATED 0x01 +#define IPMI_SENSOR_TYPE_SESSION_AUDIT_INVALID_USERNAME_OR_PASSWORD 0x02 +#define IPMI_SENSOR_TYPE_SESSION_AUDIT_INVALID_PASSWORD_DISABLE 0x03 + +#define IPMI_SENSOR_TYPE_SESSION_AUDIT_EVENT_DATA3_OFFSET_SESSION_DEACTIVATED_DEACTIVATION_CAUSE_UNSPECIFIED 0x0 +#define IPMI_SENSOR_TYPE_SESSION_AUDIT_EVENT_DATA3_OFFSET_SESSION_DEACTIVATED_DEACTIVATION_CAUSE_CLOSE_SESSION_COMMAND 0x1 +#define IPMI_SENSOR_TYPE_SESSION_AUDIT_EVENT_DATA3_OFFSET_SESSION_DEACTIVATED_DEACTIVATION_CAUSE_TIMEOUT 0x2 +#define IPMI_SENSOR_TYPE_SESSION_AUDIT_EVENT_DATA3_OFFSET_SESSION_DEACTIVATED_DEACTIVATION_CAUSE_CONFIGURATION_CHANGE 0x3 + +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_HARDWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY 0x00 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_FIRMWARE_OR_SOFTWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY 0x01 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_HARDWARE_INCOMPATABILITY_DETECTED_WITH_ASSOCIATED_ENTITY 0x02 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_FIRMWARE_OR_SOFTWARE_INCOMPATABILITY_DETECTED_WITH_ASSOCIATED_ENTITY 0x03 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_ENTITY_IS_OF_AN_INVALID_OR_UNSUPPORTED_HARDWARE_VERSION 0x04 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_ENTITY_CONTAINS_AN_INVALID_OR_UNSUPPORTED_FIRMWARE_OR_SOFTWARE_VERSION 0x05 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_HARDWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL 0x06 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL 0x07 + +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_UNSPECIFIED 0x00 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_CONTROLLER_DEVICE_ID 0x01 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_CONTROLLER_FIRMWARE_REVISION 0x02 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_CONTROLLER_DEVICE_REVISION 0x03 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_CONTROLLER_MANUFACTURER_ID 0x04 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_CONTROLLER_IPMI_VERSION 0x05 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_CONTROLLER_AUXILIARY_FIRMWARE_ID 0x06 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_CONTROLLER_FIRMWARE_BOOT_BLOCK 0x07 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_OTHER_MANAGEMENT_CONTROLLER_FIRMWARE 0x08 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_SYSTEM_FIRMWARE_CHANGE 0x09 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_SMBIOS_CHANGE 0x0A +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_OPERATING_SYSTEM_CHANGE 0x0B +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_OPERATING_SYSTEM_LOADER_CHANGE 0x0C +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_SERVICE_OR_DIAGNOSTIC_PARTITION_CHANGE 0x0D +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_SOFTWARE_AGENT_CHANGE 0x0E +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_SOFTWARE_APPLICATION_CHANGE 0x0F +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_MANAGEMENT_SOFTWARE_MIDDLEWARE_CHANGE 0x10 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_PROGRAMMABLE_HARDWARE_CHANGE 0x11 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_BOARD_FRU_MODULE_CHANGE 0x12 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_BOARD_FRU_COMPONENT_CHANGE 0x13 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_BOARD_FRU_REPLACED_WITH_EQUIVALENT_VERSION 0x14 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_BOARD_FRU_REPLACED_WITH_NEWER_VERSION 0x15 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_BOARD_FRU_REPLACED_WITH_OLDER_VERSION 0x16 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OFFSET_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL_BOARD_FRU_HARDWARE_CONFIGURATION_CHANGE 0x17 + +#define IPMI_SENSOR_TYPE_FRU_STATE_FRU_NOT_INSTALLED 0x00 +#define IPMI_SENSOR_TYPE_FRU_STATE_FRU_INACTIVE 0x01 +#define IPMI_SENSOR_TYPE_FRU_STATE_FRU_ACTIVATION_REQUESTED 0x02 +#define IPMI_SENSOR_TYPE_FRU_STATE_FRU_ACTIVATION_IN_PROGRESS 0x03 +#define IPMI_SENSOR_TYPE_FRU_STATE_FRU_ACTIVE 0x04 +#define IPMI_SENSOR_TYPE_FRU_STATE_FRU_DEACTIVATION_REQUESTED 0x05 +#define IPMI_SENSOR_TYPE_FRU_STATE_FRU_DEACTIVATION_IN_PROGRESS 0x06 +#define IPMI_SENSOR_TYPE_FRU_STATE_FRU_COMMUNICATION_LOST 0x07 + +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_NORMAL_STATE_CHANGE 0x0 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_CHANGE_COMMAND_BY_SOFTWARE_EXTERNAL_TO_FRU 0x1 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_STATE_CHANGE_DUE_TO_OPERATOR_CHANGING_A_HANDLE_LATCH 0x2 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_STATE_CHANGE_DUE_TO_OPERATOR_PRESSING_THE_HOTSWAP_PUSH_BUTTON 0x3 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_STATE_CHANGE_DUE_TO_FRU_PROGRAMMATIC_ACTION 0x4 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_COMMUNICATION_LOST 0x5 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_COMMUNICATION_LOST_DUE_TO_LOCAL_FAILURE 0x6 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_STATE_CHANGE_DUE_TO_UNEXPECTED_EXTRACTION 0x7 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_STATE_CHANGE_DUE_TO_OPERATOR_INTERVENTION_UPDATE 0x8 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_UNABLE_TO_COMPUTE_IPMB_ADDRESS 0x9 +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_UNEXPECTED_DEACTIVATION 0xA +#define IPMI_SENSOR_TYPE_FRU_STATE_EVENT_DATA2_OFFSET_COMMUNICATION_LOST_CAUSE_OF_STATE_CHANGE_STATE_CHANGE_CAUSE_UNKNOWN 0xF + +/* + * String arrays for above + */ + +extern const char * const ipmi_sensor_type_physical_security[]; +extern unsigned int ipmi_sensor_type_physical_security_max_index; + +extern const char * const ipmi_sensor_type_platform_security_violation_attempt[]; +extern unsigned int ipmi_sensor_type_platform_security_violation_attempt_max_index; + +extern const char * const ipmi_sensor_type_processor[]; +extern unsigned int ipmi_sensor_type_processor_max_index; + +extern const char * const ipmi_sensor_type_power_supply[]; +extern unsigned int ipmi_sensor_type_power_supply_max_index; + +extern const char * const ipmi_sensor_type_power_unit[]; +extern unsigned int ipmi_sensor_type_power_unit_max_index; + +extern const char * const ipmi_sensor_type_memory[]; +extern unsigned int ipmi_sensor_type_memory_max_index; + +extern const char * const ipmi_sensor_type_drive_slot[]; +extern unsigned int ipmi_sensor_type_drive_slot_max_index; + +extern const char * const ipmi_sensor_type_system_firmware_progress[]; +extern unsigned int ipmi_sensor_type_system_firmware_progress_max_index; + +extern const char * const ipmi_sensor_type_event_logging_disabled[]; +extern unsigned int ipmi_sensor_type_event_logging_disabled_max_index; + +extern const char * const ipmi_sensor_type_watchdog1[]; +extern unsigned int ipmi_sensor_type_watchdog1_max_index; + +extern const char * const ipmi_sensor_type_system_event[]; +extern unsigned int ipmi_sensor_type_system_event_max_index; + +extern const char * const ipmi_sensor_type_critical_interrupt[]; +extern unsigned int ipmi_sensor_type_critical_interrupt_max_index; + +extern const char * const ipmi_sensor_type_button_switch[]; +extern unsigned int ipmi_sensor_type_button_switch_max_index; + +extern const char * const ipmi_sensor_type_chip_set[]; +extern unsigned int ipmi_sensor_type_chip_set_max_index; + +extern const char * const ipmi_sensor_type_cable_interconnect[]; +extern unsigned int ipmi_sensor_type_cable_interconnect_max_index; + +extern const char * const ipmi_sensor_type_system_boot_initiated[]; +extern unsigned int ipmi_sensor_type_system_boot_initiated_max_index; + +extern const char * const ipmi_sensor_type_boot_error[]; +extern unsigned int ipmi_sensor_type_boot_error_max_index; + +extern const char * const ipmi_sensor_type_os_boot[]; +extern unsigned int ipmi_sensor_type_os_boot_max_index; + +extern const char * const ipmi_sensor_type_os_critical_stop[]; +extern unsigned int ipmi_sensor_type_os_critical_stop_max_index; + +extern const char * const ipmi_sensor_type_slot_connector[]; +extern unsigned int ipmi_sensor_type_slot_connector_max_index; + +extern const char * const ipmi_sensor_type_acpi_power_state[]; +extern unsigned int ipmi_sensor_type_acpi_power_state_max_index; + +extern const char * const ipmi_sensor_type_watchdog2[]; +extern unsigned int ipmi_sensor_type_watchdog2_max_index; + +extern const char * const ipmi_sensor_type_platform_alert[]; +extern unsigned int ipmi_sensor_type_platform_alert_max_index; + +extern const char * const ipmi_sensor_type_entity_presence[]; +extern unsigned int ipmi_sensor_type_entity_presence_max_index; + +extern const char * const ipmi_sensor_type_lan[]; +extern unsigned int ipmi_sensor_type_lan_max_index; + +extern const char * const ipmi_sensor_type_management_subsystem_health[]; +extern unsigned int ipmi_sensor_type_management_subsystem_health_max_index; + +extern const char * const ipmi_sensor_type_battery[]; +extern unsigned int ipmi_sensor_type_battery_max_index; + +extern const char * const ipmi_sensor_type_session_audit[]; +extern unsigned int ipmi_sensor_type_session_audit_max_index; + +extern const char * const ipmi_sensor_type_version_change[]; +extern unsigned int ipmi_sensor_type_version_change_max_index; + +extern const char * const ipmi_sensor_type_fru_state[]; +extern unsigned int ipmi_sensor_type_fru_state_max_index; + +/* + * "short" arrays are same strings, but shortened to more reasonble lengths for output + */ +extern const char * const ipmi_sensor_type_physical_security_short[]; +extern unsigned int ipmi_sensor_type_physical_security_short_max_index; + +extern const char * const ipmi_sensor_type_platform_security_violation_attempt_short[]; +extern unsigned int ipmi_sensor_type_platform_security_violation_attempt_short_max_index; + +extern const char * const ipmi_sensor_type_processor_short[]; +extern unsigned int ipmi_sensor_type_processor_short_max_index; + +extern const char * const ipmi_sensor_type_power_supply_short[]; +extern unsigned int ipmi_sensor_type_power_supply_short_max_index; + +extern const char * const ipmi_sensor_type_power_unit_short[]; +extern unsigned int ipmi_sensor_type_power_unit_short_max_index; + +extern const char * const ipmi_sensor_type_memory_short[]; +extern unsigned int ipmi_sensor_type_memory_short_max_index; + +extern const char * const ipmi_sensor_type_drive_slot_short[]; +extern unsigned int ipmi_sensor_type_drive_slot_short_max_index; + +extern const char * const ipmi_sensor_type_system_firmware_progress_short[]; +extern unsigned int ipmi_sensor_type_system_firmware_progress_short_max_index; + +extern const char * const ipmi_sensor_type_event_logging_disabled_short[]; +extern unsigned int ipmi_sensor_type_event_logging_disabled_short_max_index; + +extern const char * const ipmi_sensor_type_watchdog1_short[]; +extern unsigned int ipmi_sensor_type_watchdog1_short_max_index; + +extern const char * const ipmi_sensor_type_system_event_short[]; +extern unsigned int ipmi_sensor_type_system_event_short_max_index; + +extern const char * const ipmi_sensor_type_critical_interrupt_short[]; +extern unsigned int ipmi_sensor_type_critical_interrupt_short_max_index; + +extern const char * const ipmi_sensor_type_button_switch_short[]; +extern unsigned int ipmi_sensor_type_button_switch_short_max_index; + +extern const char * const ipmi_sensor_type_chip_set_short[]; +extern unsigned int ipmi_sensor_type_chip_set_short_max_index; + +extern const char * const ipmi_sensor_type_cable_interconnect_short[]; +extern unsigned int ipmi_sensor_type_cable_interconnect_short_max_index; + +extern const char * const ipmi_sensor_type_system_boot_initiated_short[]; +extern unsigned int ipmi_sensor_type_system_boot_initiated_short_max_index; + +extern const char * const ipmi_sensor_type_boot_error_short[]; +extern unsigned int ipmi_sensor_type_boot_error_short_max_index; + +extern const char * const ipmi_sensor_type_os_boot_short[]; +extern unsigned int ipmi_sensor_type_os_boot_short_max_index; + +extern const char * const ipmi_sensor_type_os_critical_stop_short[]; +extern unsigned int ipmi_sensor_type_os_critical_stop_short_max_index; + +extern const char * const ipmi_sensor_type_slot_connector_short[]; +extern unsigned int ipmi_sensor_type_slot_connector_short_max_index; + +extern const char * const ipmi_sensor_type_acpi_power_state_short[]; +extern unsigned int ipmi_sensor_type_acpi_power_state_short_max_index; + +extern const char * const ipmi_sensor_type_watchdog2_short[]; +extern unsigned int ipmi_sensor_type_watchdog2_short_max_index; + +extern const char * const ipmi_sensor_type_platform_alert_short[]; +extern unsigned int ipmi_sensor_type_platform_alert_short_max_index; + +extern const char * const ipmi_sensor_type_entity_presence_short[]; +extern unsigned int ipmi_sensor_type_entity_presence_short_max_index; + +extern const char * const ipmi_sensor_type_lan_short[]; +extern unsigned int ipmi_sensor_type_lan_short_max_index; + +extern const char * const ipmi_sensor_type_management_subsystem_health_short[]; +extern unsigned int ipmi_sensor_type_management_subsystem_health_short_max_index; + +extern const char * const ipmi_sensor_type_battery_short[]; +extern unsigned int ipmi_sensor_type_battery_short_max_index; + +extern const char * const ipmi_sensor_type_session_audit_short[]; +extern unsigned int ipmi_sensor_type_session_audit_short_max_index; + +extern const char * const ipmi_sensor_type_version_change_short[]; +extern unsigned int ipmi_sensor_type_version_change_short_max_index; + +extern const char * const ipmi_sensor_type_fru_state_short[]; +extern unsigned int ipmi_sensor_type_fru_state_short_max_index; + +/* + * event data 2 + */ +extern const char * const ipmi_sensor_type_system_firmware_progress_event_data2_offset_system_firmware_error[]; +extern unsigned int ipmi_sensor_type_system_firmware_progress_event_data2_offset_system_firmware_error_max_index; + +extern const char * const ipmi_sensor_type_system_firmware_progress_event_data2_offset_system_firmware_hang[]; +extern unsigned int ipmi_sensor_type_system_firmware_progress_event_data2_offset_system_firmware_hang_max_index; + +extern const char * const ipmi_sensor_type_system_firmware_progress_event_data2_offset_system_firmware_progress[]; +extern unsigned int ipmi_sensor_type_system_firmware_progress_event_data2_offset_system_firmware_progress_max_index; + +extern const char * const ipmi_sensor_type_system_event_event_data2_offset_entry_added_to_auxiliary_log_log_entry_action[]; +extern unsigned int ipmi_sensor_type_system_event_event_data2_offset_entry_added_to_auxiliary_log_log_entry_action_max_index; + +extern const char * const ipmi_sensor_type_system_event_event_data2_offset_entry_added_to_auxiliary_log_log_type[]; +extern unsigned int ipmi_sensor_type_system_event_event_data2_offset_entry_added_to_auxiliary_log_log_type_max_index; + +extern const char * const ipmi_sensor_type_system_event_event_data2_offset_pef_action[]; +extern unsigned int ipmi_sensor_type_system_event_event_data2_offset_pef_action_max_index; + +extern const char * const ipmi_sensor_type_system_event_event_data2_offset_timestamp_clock_synch_first_second[]; +extern unsigned int ipmi_sensor_type_system_event_event_data2_offset_timestamp_clock_synch_first_second_max_index; + +extern const char * const ipmi_sensor_type_system_event_event_data2_offset_timestamp_clock_synch_timestamp_clock_type[]; +extern unsigned int ipmi_sensor_type_system_event_event_data2_offset_timestamp_clock_synch_timestamp_clock_type_max_index; + +extern const char * const ipmi_sensor_type_chip_set_event_data2_offset_soft_power_control_failure[]; +extern unsigned int ipmi_sensor_type_chip_set_event_data2_offset_soft_power_control_failure_max_index; + +extern const char * const ipmi_sensor_type_system_boot_initiated_event_data2_offset_system_restart_restart_cause[]; +extern unsigned int ipmi_sensor_type_system_boot_initiated_event_data2_offset_system_restart_restart_cause_max_index; + +extern const char * const ipmi_sensor_type_slot_connector_event_data2_offset_slot_holds_spare_device_slot_connector_type[]; +extern unsigned int ipmi_sensor_type_slot_connector_event_data2_offset_slot_holds_spare_device_slot_connector_type_max_index; + +extern const char * const ipmi_sensor_type_watchdog2_event_data2_interrupt_type[]; +extern unsigned int ipmi_sensor_type_watchdog2_event_data2_interrupt_type_max_index; + +extern const char * const ipmi_sensor_type_watchdog2_event_data2_timer_use_at_expiration[]; +extern unsigned int ipmi_sensor_type_watchdog2_event_data2_timer_use_at_expiration_max_index; + +extern const char * const ipmi_sensor_type_management_subsystem_health_event_data2_offset_fru_failure_logical_fru_device[]; +extern unsigned int ipmi_sensor_type_management_subsystem_health_event_data2_offset_fru_failure_logical_fru_device_max_index; + +extern const char * const ipmi_sensor_type_version_change_event_data2_offset_software_or_fw_change_detected_with_associated_entity_was_successful_version_change_type[]; +extern unsigned int ipmi_sensor_type_version_change_event_data2_offset_software_or_fw_change_detected_with_associated_entity_was_successful_version_change_type_max_index; + +extern const char * const ipmi_sensor_type_fru_state_event_data2_offset_communication_lost_cause_of_state_change[]; +extern unsigned int ipmi_sensor_type_fru_state_event_data2_offset_communication_lost_cause_of_state_change_max_index; + +/* + * event data 2 + */ + +extern const char * const ipmi_sensor_type_power_supply_event_data3_offset_configuration_error_error_type[]; +extern unsigned int ipmi_sensor_type_power_supply_event_data3_offset_configuration_error_error_type_max_index; + +extern const char * const ipmi_sensor_type_event_logging_disabled_event_data3_offset_event_type_logging_disabled_assertion_event[]; +extern unsigned int ipmi_sensor_type_event_logging_disabled_event_data3_offset_event_type_logging_disabled_assertion_event_max_index; + +extern const char * const ipmi_sensor_type_event_logging_disabled_event_data3_offset_event_type_logging_disabled_logging_disabled_all_events[]; +extern unsigned int ipmi_sensor_type_event_logging_disabled_event_data3_offset_event_type_logging_disabled_logging_disabled_all_events_max_index; + +extern const char * const ipmi_sensor_type_chip_set_event_data3_offset_soft_power_control_failure[]; +extern unsigned int ipmi_sensor_type_chip_set_event_data3_offset_soft_power_control_failure_max_index; + +extern const char * const ipmi_sensor_type_session_audit_event_data3_offset_session_deactivated_deactivation_cause[]; +extern unsigned int ipmi_sensor_type_session_audit_event_data3_offset_session_deactivated_deactivation_cause_max_index; + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-numbers-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-numbers-oem-spec.h new file mode 100644 index 00000000..0bdd7f69 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-numbers-oem-spec.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_NUMBERS_OEM_SPEC_H +#define IPMI_SENSOR_NUMBERS_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_NUMBERS_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-types-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-types-oem-spec.h new file mode 100644 index 00000000..16e95afa --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-types-oem-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-types-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-types-spec.h new file mode 100644 index 00000000..6cc1c0fd --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-types-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_SPEC_H +#define IPMI_SENSOR_TYPES_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_SENSOR_TYPE_RESERVED 0x00 +#define IPMI_SENSOR_TYPE_TEMPERATURE 0x01 +#define IPMI_SENSOR_TYPE_VOLTAGE 0x02 +#define IPMI_SENSOR_TYPE_CURRENT 0x03 +#define IPMI_SENSOR_TYPE_FAN 0x04 +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY 0x05 +#define IPMI_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT 0x06 +#define IPMI_SENSOR_TYPE_PROCESSOR 0x07 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY 0x08 +#define IPMI_SENSOR_TYPE_POWER_UNIT 0x09 +#define IPMI_SENSOR_TYPE_COOLING_DEVICE 0x0A +#define IPMI_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR 0x0B +#define IPMI_SENSOR_TYPE_MEMORY 0x0C +#define IPMI_SENSOR_TYPE_DRIVE_SLOT 0x0D +#define IPMI_SENSOR_TYPE_POST_MEMORY_RESIZE 0x0E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS 0x0F +#define IPMI_SENSOR_TYPE_EVENT_LOGGING_DISABLED 0x10 +#define IPMI_SENSOR_TYPE_WATCHDOG1 0x11 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT 0x12 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT 0x13 +#define IPMI_SENSOR_TYPE_BUTTON_SWITCH 0x14 +#define IPMI_SENSOR_TYPE_MODULE_BOARD 0x15 +#define IPMI_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR 0x16 +#define IPMI_SENSOR_TYPE_ADD_IN_CARD 0x17 +#define IPMI_SENSOR_TYPE_CHASSIS 0x18 +#define IPMI_SENSOR_TYPE_CHIP_SET 0x19 +#define IPMI_SENSOR_TYPE_OTHER_FRU 0x1A +#define IPMI_SENSOR_TYPE_CABLE_INTERCONNECT 0x1B +#define IPMI_SENSOR_TYPE_TERMINATOR 0x1C +#define IPMI_SENSOR_TYPE_SYSTEM_BOOT_INITIATED 0x1D +#define IPMI_SENSOR_TYPE_BOOT_ERROR 0x1E +/* OS BOOT renamed Base OS Boot/Installation Status, but gonna keep legacy name for ease */ +#define IPMI_SENSOR_TYPE_OS_BOOT 0x1F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP 0x20 +#define IPMI_SENSOR_TYPE_SLOT_CONNECTOR 0x21 +#define IPMI_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE 0x22 +#define IPMI_SENSOR_TYPE_WATCHDOG2 0x23 +#define IPMI_SENSOR_TYPE_PLATFORM_ALERT 0x24 +#define IPMI_SENSOR_TYPE_ENTITY_PRESENCE 0x25 +#define IPMI_SENSOR_TYPE_MONITOR_ASIC_IC 0x26 +#define IPMI_SENSOR_TYPE_LAN 0x27 +#define IPMI_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH 0x28 +#define IPMI_SENSOR_TYPE_BATTERY 0x29 +#define IPMI_SENSOR_TYPE_SESSION_AUDIT 0x2A +#define IPMI_SENSOR_TYPE_VERSION_CHANGE 0x2B +#define IPMI_SENSOR_TYPE_FRU_STATE 0x2C +#define IPMI_SENSOR_TYPE_OEM_MIN 0xC0 +#define IPMI_SENSOR_TYPE_OEM_MAX 0xFF + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SENSOR_TYPE_VALID(__sensor_type) \ + ((((__sensor_type) + 1) >= (IPMI_SENSOR_TYPE_RESERVED + 1) \ + && (__sensor_type) <= IPMI_SENSOR_TYPE_FRU_STATE) ? 1 : 0) + +/* To avoid gcc warnings, subtract -1 in comparison */ +#define IPMI_SENSOR_TYPE_IS_OEM(__sensor_type) \ + (((__sensor_type) >= IPMI_SENSOR_TYPE_OEM_MIN \ + && (((__sensor_type) - 1) <= (IPMI_SENSOR_TYPE_OEM_MAX - 1))) ? 1 : 0) + +extern const char *const ipmi_sensor_types[]; +extern const char *const ipmi_oem_sensor_type; + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-units-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-units-spec.h new file mode 100644 index 00000000..167e5f52 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sensor-units-spec.h @@ -0,0 +1,146 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_UNITS_SPEC_H +#define IPMI_SENSOR_UNITS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_SENSOR_UNIT_UNSPECIFIED 0 +#define IPMI_SENSOR_UNIT_DEGREES_C 1 +#define IPMI_SENSOR_UNIT_DEGREES_F 2 +#define IPMI_SENSOR_UNIT_DEGREES_K 3 +#define IPMI_SENSOR_UNIT_VOLTS 4 +#define IPMI_SENSOR_UNIT_AMPS 5 +#define IPMI_SENSOR_UNIT_WATTS 6 +#define IPMI_SENSOR_UNIT_JOULES 7 +#define IPMI_SENSOR_UNIT_COULOMBS 8 +#define IPMI_SENSOR_UNIT_VA 9 +#define IPMI_SENSOR_UNIT_NITS 10 +#define IPMI_SENSOR_UNIT_LUMEN 11 +#define IPMI_SENSOR_UNIT_LUX 12 +#define IPMI_SENSOR_UNIT_CANDELA 13 +#define IPMI_SENSOR_UNIT_KPA 14 +#define IPMI_SENSOR_UNIT_PSI 15 +#define IPMI_SENSOR_UNIT_NEWTON 16 +#define IPMI_SENSOR_UNIT_CFM 17 +#define IPMI_SENSOR_UNIT_RPM 18 +#define IPMI_SENSOR_UNIT_HZ 19 +#define IPMI_SENSOR_UNIT_MICROSECOND 20 +#define IPMI_SENSOR_UNIT_MILLISECOND 21 +#define IPMI_SENSOR_UNIT_SECOND 22 +#define IPMI_SENSOR_UNIT_MINUTE 23 +#define IPMI_SENSOR_UNIT_HOUR 24 +#define IPMI_SENSOR_UNIT_DAY 25 +#define IPMI_SENSOR_UNIT_WEEK 26 +#define IPMI_SENSOR_UNIT_MIL 27 +#define IPMI_SENSOR_UNIT_INCHES 28 +#define IPMI_SENSOR_UNIT_FEET 29 +#define IPMI_SENSOR_UNIT_CU_IN 30 +#define IPMI_SENSOR_UNIT_CU_FEET 31 +#define IPMI_SENSOR_UNIT_MM 32 +#define IPMI_SENSOR_UNIT_CM 33 +#define IPMI_SENSOR_UNIT_M 34 +#define IPMI_SENSOR_UNIT_CU_CM 35 +#define IPMI_SENSOR_UNIT_CU_M 36 +#define IPMI_SENSOR_UNIT_LITERS 37 +#define IPMI_SENSOR_UNIT_FLUID_OUNCE 38 +#define IPMI_SENSOR_UNIT_RADIANS 39 +#define IPMI_SENSOR_UNIT_STERADIANS 40 +#define IPMI_SENSOR_UNIT_REVOLUTIONS 41 +#define IPMI_SENSOR_UNIT_CYCLES 42 +#define IPMI_SENSOR_UNIT_GRAVITIES 43 +#define IPMI_SENSOR_UNIT_OUNCE 44 +#define IPMI_SENSOR_UNIT_POUND 45 +#define IPMI_SENSOR_UNIT_FT_LB 46 +#define IPMI_SENSOR_UNIT_OZ_IN 47 +#define IPMI_SENSOR_UNIT_GAUSS 48 +#define IPMI_SENSOR_UNIT_GILBERTS 49 +#define IPMI_SENSOR_UNIT_HENRY 50 +#define IPMI_SENSOR_UNIT_MILLIHENRY 51 +#define IPMI_SENSOR_UNIT_FARAD 52 +#define IPMI_SENSOR_UNIT_MICROFARAD 53 +#define IPMI_SENSOR_UNIT_OHMS 54 +#define IPMI_SENSOR_UNIT_SIEMENS 55 +#define IPMI_SENSOR_UNIT_MOLE 56 +#define IPMI_SENSOR_UNIT_BECQUEREL 57 +#define IPMI_SENSOR_UNIT_PPM 58 +#define IPMI_SENSOR_UNIT_RESERVED 59 +#define IPMI_SENSOR_UNIT_DECIBELS 60 +#define IPMI_SENSOR_UNIT_DBA 61 +#define IPMI_SENSOR_UNIT_DBC 62 +#define IPMI_SENSOR_UNIT_GRAY 63 +#define IPMI_SENSOR_UNIT_SIEVERT 64 +#define IPMI_SENSOR_UNIT_COLOR_TEMP_DEG_K 65 +#define IPMI_SENSOR_UNIT_BIT 66 +#define IPMI_SENSOR_UNIT_KILOBIT 67 +#define IPMI_SENSOR_UNIT_MEGABIT 68 +#define IPMI_SENSOR_UNIT_GIGABIT 69 +#define IPMI_SENSOR_UNIT_BYTE 70 +#define IPMI_SENSOR_UNIT_KILOBYTE 71 +#define IPMI_SENSOR_UNIT_MEGABYTE 72 +#define IPMI_SENSOR_UNIT_GIGABYTE 73 +#define IPMI_SENSOR_UNIT_WORD 74 +#define IPMI_SENSOR_UNIT_DWORD 75 +#define IPMI_SENSOR_UNIT_QWORD 76 +#define IPMI_SENSOR_UNIT_LINE 77 +#define IPMI_SENSOR_UNIT_HIT 78 +#define IPMI_SENSOR_UNIT_MISS 79 +#define IPMI_SENSOR_UNIT_RETRY 80 +#define IPMI_SENSOR_UNIT_RESET 81 +#define IPMI_SENSOR_UNIT_OVERRUN_OVERFLOW 82 +#define IPMI_SENSOR_UNIT_UNDERRUN 83 +#define IPMI_SENSOR_UNIT_COLLISION 84 +#define IPMI_SENSOR_UNIT_PACKETS 85 +#define IPMI_SENSOR_UNIT_MESSAGES 86 +#define IPMI_SENSOR_UNIT_CHARACTERS 87 +#define IPMI_SENSOR_UNIT_ERROR 88 +#define IPMI_SENSOR_UNIT_CORRECTABLE_ERROR 89 +#define IPMI_SENSOR_UNIT_UNCORRECTABLE_ERROR 90 +#define IPMI_SENSOR_UNIT_FATAL_ERROR 91 +#define IPMI_SENSOR_UNIT_GRAMS 92 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SENSOR_UNIT_VALID(__sensor_unit) \ + (((__sensor_unit + 1) >= (IPMI_SENSOR_UNIT_UNSPECIFIED + 1) \ + && (__sensor_unit) <= IPMI_SENSOR_UNIT_GRAMS) ? 1 : 0) + +#define IPMI_SENSOR_RATE_UNIT_NONE 0 +#define IPMI_SENSOR_RATE_UNIT_PER_US 1 +#define IPMI_SENSOR_RATE_UNIT_PER_MS 2 +#define IPMI_SENSOR_RATE_UNIT_PER_S 3 +#define IPMI_SENSOR_RATE_UNIT_PER_MINUTE 4 +#define IPMI_SENSOR_RATE_UNIT_PER_HOUR 5 +#define IPMI_SENSOR_RATE_UNIT_PER_DAY 6 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SENSOR_RATE_UNIT_VALID(__sensor_rate_unit) \ + (((__sensor_rate_unit + 1) >= (IPMI_SENSOR_RATE_UNIT_NONE + 1) \ + && (__sensor_rate_unit) <= IPMI_SENSOR_RATE_UNIT_PER_DAY) ? 1 : 0) + +extern const char *const ipmi_sensor_units[]; +extern const char *const ipmi_sensor_units_abbreviated[]; +extern const char *const ipmi_sensor_rate_units[]; + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_UNITS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-serial-modem-configuration-parameters-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-serial-modem-configuration-parameters-oem-spec.h new file mode 100644 index 00000000..156d6075 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-serial-modem-configuration-parameters-oem-spec.h @@ -0,0 +1,30 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_OEM_SPEC_H +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-serial-modem-configuration-parameters-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-serial-modem-configuration-parameters-spec.h new file mode 100644 index 00000000..ddf0b90e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-serial-modem-configuration-parameters-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SPEC_H +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_SET_IN_PROGRESS 0 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_AUTH_TYPE_SUPPORT 1 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_AUTH_TYPE_ENABLES 2 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_CONNECTION_MODE 3 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_SESSION_INACTIVITY_TIMEOUT 4 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_CHANNEL_CALLBACK_CONTROL 5 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_SESSION_TERMINATION 6 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_IPMI_MESSAGING_COMM_SETTINGS 7 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_MUX_SWITCH_CONTROL 8 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_MODEM_RING_TIME 9 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_MODEM_INIT_STRING 10 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_MODEM_ESCAPE_SEQUENCE 11 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_MODEM_HANG_UP_SEQUENCE 12 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_MODEM_DIAL_COMMAND 13 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PAGE_BLACKOUT_INTERVAL 14 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_COMMUNITY_STRING 15 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_NO_OF_ALERT_DESTINATIONS 16 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_DESTINATION_INFO 17 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_CALL_RETRY_INTERVAL 18 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_DESTINATION_COMM_SETTINGS 19 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_NO_OF_DIAL_STRINGS 20 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_DESTINATION_DIAL_STRINGS 21 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_NO_OF_ALERT_DESTINATION_IP_ADDRS 22 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_DESTINATION_IP_ADDRS 23 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_NO_OF_TAP_ACCOUNTS 24 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_TAP_ACCOUNT 25 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_TAP_PASSWORDS 26 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_TAP_PAGER_ID_STRINGS 27 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_TAP_SERVICE_SETTINGS 28 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_TERMINAL_MODE_CONF 29 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_PROTOCOL_OPTIONS 30 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_PRIMARY_RMCP_PORT_NO 31 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_SECONDARY_RMCP_PORT_NO 32 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_LINK_AUTH 33 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_CHAP_NAME 34 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_ACCM 35 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_SNOOP_ACCM 36 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_NO_OF_PPP_ACCOUNT 37 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_ACCOUNT_DIAL_STRING_SELECTOR 38 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_ACCOUNT_BMC_IP_ADDRESSES 39 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_ACCOUNT_USER_NAMES 40 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_ACCOUNT_USER_DOMAINS 41 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_ACCOUNT_USER_PASSWORDS 42 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_ACCOUNT_AUTH_SETTINGS 43 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_ACCOUNT_CONNECTION_HOLD_TIMES 44 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_UDP_PROXY_IP_HEADER_DATA 45 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_UDP_PROXY_TRANSMIT_BUFFER_SIZE 46 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_UDP_PROXY_RECEIVE_BUFFER_SIZE 47 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_REMOTE_CONSOLE_IP_ADDRESS 48 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_OEM_MIN 192 +#define IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_OEM_MAX 255 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SERIAL_PARAMETER_SELECTOR_VALID(__parameter_selector) \ + ((((__parameter_selector) + 1) > (IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_SET_IN_PROGRESS + 1) \ + && (__parameter_selector) <= IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_PPP_REMOTE_CONSOLE_IP_ADDRESS) ? 1 : 0) + +/* To avoid gcc warnings, subtract -1 in comparison */ +#define IPMI_SERIAL_PARAMETER_SELECTOR_IS_OEM(__parameter_selector) \ + (((__parameter_selector) >= IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_OEM_MIN \ + && ((__parameter_selector) - 1) <= (IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETER_OEM_MAX - 1)) ? 1 : 0) + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SERIAL_MODEM_CONFIGURATION_PARAMETERS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-slave-address-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-slave-address-oem-spec.h new file mode 100644 index 00000000..d06dd4df --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-slave-address-oem-spec.h @@ -0,0 +1,36 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SLAVE_ADDRESS_OEM_SPEC_H +#define IPMI_SLAVE_ADDRESS_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SLAVE_ADDRESS_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-slave-address-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-slave-address-spec.h new file mode 100644 index 00000000..936f2d5a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-slave-address-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SLAVE_ADDRESS_SPEC_H +#define IPMI_SLAVE_ADDRESS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + Slave Addresses - 7 bits + + BIOS 0x00 to 0x0F + SMI HANDLER 0x10 to 0x1F + System Management Software 0x20 to 0x2F + OEM 0x30 to 0x3F + Remote Console Software 0x40 to 0x46 + Terminal Mode Remote Console Software 0x47 + */ + +/* + Software IDs - 8 bits, Least Significant Bit is 0x1 + + BIOS 0x01 to 0x1F + SMI HANDLER 0x21 to 0x3F + System Management Software 0x41 to 0x5F + OEM 0x61 to 0x7F + Remote Console Software 0x81 to 0x8D + Terminal Mode Remote Console Software 0x8F + */ + +#define IPMI_SLAVE_ADDRESS_BMC 0x20 +#define IPMI_LAN_SLAVE_ADDRESS_BMC IPMI_SLAVE_ADDRESS_BMC +#define IPMI_SSIF_SMBUS_SLAVE_ADDRESS 0x42 + +#define IPMI_LAN_SOFTWARE_ID_REMOTE_CONSOLE_SOFTWARE 0x81 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SLAVE_ADDRESS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-sol-configuration-parameters-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sol-configuration-parameters-oem-spec.h new file mode 100644 index 00000000..d6c5caed --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sol-configuration-parameters-oem-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SOL_CONFIGURATION_PARAMETERS_OEM_SPEC_H +#define IPMI_SOL_CONFIGURATION_PARAMETERS_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SOL_CONFIGURATION_PARAMETERS_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-sol-configuration-parameters-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sol-configuration-parameters-spec.h new file mode 100644 index 00000000..77a65a30 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-sol-configuration-parameters-spec.h @@ -0,0 +1,52 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SOL_CONFIGURATION_PARAMETERS_SPEC_H +#define IPMI_SOL_CONFIGURATION_PARAMETERS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_SOL_CONFIGURATION_PARAMETER_SET_IN_PROGRESS 0 +#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_ENABLE 1 +#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_AUTHENTICATION 2 +#define IPMI_SOL_CONFIGURATION_PARAMETER_CHARACTER_ACCUMULATE_INTERVAL_AND_SEND_THRESHOLD 3 +#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_RETRY 4 +#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_NON_VOLATILE_BIT_RATE 5 +#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_VOLATILE_BIT_RATE 6 +#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_CHANNEL 7 +#define IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_PORT_NUMBER 8 +#define IPMI_SOL_CONFIGURATION_PARAMETER_OEM_MIN 192 +#define IPMI_SOL_CONFIGURATION_PARAMETER_OEM_MAX 255 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SOL_CONFIGURATION_PARAMETER_SELECTOR_VALID(__parameter_selector) \ + ((((__parameter_selector) + 1) > (IPMI_SOL_CONFIGURATION_PARAMETER_SET_IN_PROGRESS + 1) \ + && (__parameter_selector) <= IPMI_SOL_CONFIGURATION_PARAMETER_SOL_PAYLOAD_PORT_NUMBER) ? 1 : 0) + +/* To avoid gcc warnings, subtract -1 in comparison */ +#define IPMI_SOL_CONFIGURATION_PARAMETER_SELECTOR_IS_OEM(__parameter_selector) \ + (((__parameter_selector) >= IPMI_SOL_CONFIGURATION_PARAMETER_OEM_MIN \ + && ((__parameter_selector) - 1) <= (IPMI_SOL_CONFIGURATION_PARAMETER_OEM_MAX - 1)) ? 1 : 0) + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SOL_CONFIGURATION_PARAMETERS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-boot-option-parameters-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-boot-option-parameters-oem-spec.h new file mode 100644 index 00000000..aa1a1cb3 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-boot-option-parameters-oem-spec.h @@ -0,0 +1,29 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SYSTEM_BOOT_OPTION_PARAMETERS_OEM_SPEC_H +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETERS_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif +#endif /* IPMI_SYSTEM_BOOT_OPTION_PARAMETERS_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-boot-option-parameters-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-boot-option-parameters-spec.h new file mode 100644 index 00000000..0f769af5 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-boot-option-parameters-spec.h @@ -0,0 +1,46 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SYSTEM_BOOT_OPTION_PARAMETERS_SPEC_H +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETERS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_SET_IN_PROGRESS 0x0 +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_SERVICE_PARTITION_SELECTOR 0x1 +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_SERVICE_PARTITION_SCAN 0x2 +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_BMC_BOOT_FLAG_VALID_BIT_CLEARING 0x3 +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_BOOT_INFO_ACKNOWLEDGE 0x4 +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_BOOT_FLAGS 0x5 +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_BOOT_INITIATOR_INFO 0x6 +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_BOOT_INITIATOR_MAILBOX 0x7 + +/* Add +1 to avoid compiler warnings */ +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_SELECTOR_VALID(__parameter_selector) \ + ((((__parameter_selector + 1)) > (IPMI_SYSTEM_BOOT_OPTION_PARAMETER_SET_IN_PROGRESS+1) && \ + (__parameter_selector) <= IPMI_SYSTEM_BOOT_OPTION_PARAMETER_BOOT_INITIATOR_MAILBOX) ? 1 : 0) + +#define IPMI_SYSTEM_BOOT_OPTION_PARAMETER_SELECTOR_IS_OEM(__parameter_selector) \ + (((__parameter_selector) >= 96 && (__parameter_selector) <= 127) ? 1 : 0) + +#ifdef __cplusplus +} +#endif +#endif /* IPMI_SYSTEM_BOOT_OPTION_PARAMETERS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-info-parameters-oem-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-info-parameters-oem-spec.h new file mode 100644 index 00000000..be02f371 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-info-parameters-oem-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SYSTEM_INFO_PARAMETERS_OEM_SPEC_H +#define IPMI_SYSTEM_INFO_PARAMETERS_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#ifdef __cplusplus +} +#endif +#endif /* IPMI_SYSTEM_INFO_PARAMETERS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-info-parameters-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-info-parameters-spec.h new file mode 100644 index 00000000..ff3c31ba --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-info-parameters-spec.h @@ -0,0 +1,50 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SYSTEM_INFO_PARAMETERS_SPEC_H +#define IPMI_SYSTEM_INFO_PARAMETERS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_SYSTEM_INFO_PARAMETER_SET_IN_PROGRESS 0 +#define IPMI_SYSTEM_INFO_PARAMETER_SYSTEM_FIRMWARE_VERSION 1 +#define IPMI_SYSTEM_INFO_PARAMETER_SYSTEM_NAME 2 +#define IPMI_SYSTEM_INFO_PARAMETER_PRIMARY_OPERATING_SYSTEM_NAME 3 +#define IPMI_SYSTEM_INFO_PARAMETER_OPERATING_SYSTEM_NAME 4 +#define IPMI_SYSTEM_INFO_PARAMETER_PRESENT_OS_VERSION_NUMBER 5 +#define IPMI_SYSTEM_INFO_PARAMETER_BMC_URL 6 +#define IPMI_SYSTEM_INFO_PARAMETER_BASE_OS_HYPERVISOR_URL 7 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_MIN 192 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_MAX 255 + +/* Add +1 to avoid compiler warnings */ +#define IPMI_SYSTEM_INFO_PARAMETER_SELECTOR_VALID(__parameter_selector) \ + ((((__parameter_selector) + 1) > (IPMI_SYSTEM_INFO_PARAMETER_SET_IN_PROGRESS + 1) \ + && (__parameter_selector) <= IPMI_SYSTEM_INFO_PARAMETER_BASE_OS_HYPERVISOR_URL) ? 1 : 0) + +/* To avoid gcc warnings, subtract -1 in comparison */ +#define IPMI_SYSTEM_INFO_PARAMETER_SELECTOR_IS_OEM(__parameter_selector) \ + (((__parameter_selector) >= IPMI_SYSTEM_INFO_PARAMETER_OEM_MIN \ + && ((__parameter_selector) - 1) <= (IPMI_SYSTEM_INFO_PARAMETER_OEM_MAX - 1)) ? 1 : 0) + +#ifdef __cplusplus +} +#endif +#endif /* IPMI_SYSTEM_INFO_PARAMETERS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-software-id-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-software-id-spec.h new file mode 100644 index 00000000..03128ca5 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-system-software-id-spec.h @@ -0,0 +1,78 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SYSTEM_SOFTWARE_ID_SPEC_H +#define IPMI_SYSTEM_SOFTWARE_ID_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Table 5-4 */ + +#define IPMI_SYSTEM_SOFTWARE_TYPE_BIOS_MIN 0x01 +#define IPMI_SYSTEM_SOFTWARE_TYPE_BIOS_MAX 0x0F + +#define IPMI_SYSTEM_SOFTWARE_TYPE_SMI_HANDLER_MIN 0x10 +#define IPMI_SYSTEM_SOFTWARE_TYPE_SMI_HANDLER_MAX 0x1F + +#define IPMI_SYSTEM_SOFTWARE_TYPE_SYSTEM_MANAGEMENT_SOFTWARE_MIN 0x20 +#define IPMI_SYSTEM_SOFTWARE_TYPE_SYSTEM_MANAGEMENT_SOFTWARE_MAX 0x2F + +#define IPMI_SYSTEM_SOFTWARE_TYPE_OEM_MIN 0x30 +#define IPMI_SYSTEM_SOFTWARE_TYPE_OEM_MAX 0x3F + +#define IPMI_SYSTEM_SOFTWARE_TYPE_REMOTE_CONSOLE_SOFTWARE_MIN 0x40 +#define IPMI_SYSTEM_SOFTWARE_TYPE_REMOTE_CONSOLE_SOFTWARE_MAX 0x46 + +#define IPMI_SYSTEM_SOFTWARE_TYPE_TERMINAL_MODE_REMOTE_CONSOLE_SOFTWARE 0x47 + +#define IPMI_SYSTEM_SOFTWARE_TYPE_RESERVED_MIN 0x48 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SYSTEM_SOFTWARE_TYPE_IS_BIOS(__val) \ + (((__val + 1) >= IPMI_SYSTEM_SOFTWARE_TYPE_BIOS_MIN \ + && (__val) <= IPMI_SYSTEM_SOFTWARE_TYPE_BIOS_MAX) ? 1 : 0) + +#define IPMI_SYSTEM_SOFTWARE_TYPE_IS_SMI_HANDLER(__val) \ + (((__val) >= IPMI_SYSTEM_SOFTWARE_TYPE_SMI_HANDLER_MIN \ + && (__val) <= IPMI_SYSTEM_SOFTWARE_TYPE_SMI_HANDLER_MAX) ? 1 : 0) + +#define IPMI_SYSTEM_SOFTWARE_TYPE_IS_SYSTEM_MANAGEMENT_SOFTWARE(__val) \ + (((__val) >= IPMI_SYSTEM_SOFTWARE_TYPE_SYSTEM_MANAGEMENT_SOFTWARE_MIN \ + && (__val) <= IPMI_SYSTEM_SOFTWARE_TYPE_SYSTEM_MANAGEMENT_SOFTWARE_MAX) ? 1 : 0) + +#define IPMI_SYSTEM_SOFTWARE_TYPE_IS_OEM(__val) \ + (((__val) >= IPMI_SYSTEM_SOFTWARE_TYPE_OEM_MIN \ + && (__val) <= IPMI_SYSTEM_SOFTWARE_TYPE_OEM_MAX) ? 1 : 0) + +#define IPMI_SYSTEM_SOFTWARE_TYPE_IS_REMOTE_CONSOLE_SOFTWARE(__val) \ + (((__val) >= IPMI_SYSTEM_SOFTWARE_TYPE_REMOTE_CONSOLE_SOFTWARE_MIN \ + && (__val) <= IPMI_SYSTEM_SOFTWARE_TYPE_REMOTE_CONSOLE_SOFTWARE_MAX) ? 1 : 0) + +#define IPMI_SYSTEM_SOFTWARE_TYPE_IS_TERMINAL_MODE_REMOTE_CONSOLE_SOFTWARE(__val) \ + (((__val) == IPMI_SYSTEM_SOFTWARE_TYPE_TERMINAL_MODE_REMOTE_CONSOLE_SOFTWARE)) ? 1 : 0) + +#define IPMI_SYSTEM_SOFTWARE_TYPE_IS_RESERVED(__val) \ + (((__val) >= IPMI_SYSTEM_SOFTWARE_TYPE_RESERVED_MIN) ? 1 : 0) + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SYSTEM_SOFTWARE_ID_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/ipmi-timestamp-spec.h b/source/freeipmi/usr/include/freeipmi/spec/ipmi-timestamp-spec.h new file mode 100644 index 00000000..7925ad38 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/ipmi-timestamp-spec.h @@ -0,0 +1,40 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_TIMESTAMP_SPEC_H +#define IPMI_TIMESTAMP_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_TIMESTAMP_UNSPECIFIED 0xFFFFFFFF + +#define IPMI_TIMESTAMP_POST_INIT_MIN 0x00000000 +#define IPMI_TIMESTAMP_POST_INIT_MAX 0x20000000 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_TIMESTAMP_POST_INIT(__timestamp) \ + ((((__timestamp + 1) >= (IPMI_TIMESTAMP_POST_INIT_MIN + 1) \ + && (__timestamp) <= IPMI_TIMESTAMP_POST_INIT_MAX)) ? 1 : 0) + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_TIMESTAMP_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-dell-spec.h new file mode 100644 index 00000000..7fa5fc2a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-dell-spec.h @@ -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 . + * + */ + +#ifndef IPMI_CMD_OEM_DELL_SPEC_H +#define IPMI_CMD_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Dell Poweredge R610 + * Dell Poweredge R710 + * Dell Poweredge R720 + */ + +/* IPMI_NET_FN_OEM_GROUP_RQ / IPMI_NET_FN_OEM_GROUP_RS */ +#define IPMI_CMD_OEM_DELL_RESERVED_EXTENDED_CONFIGURATION 0x01 +#define IPMI_CMD_OEM_DELL_GET_EXTENDED_CONFIGURATION 0x02 +#define IPMI_CMD_OEM_DELL_SET_EXTENDED_CONFIGURATION 0x03 + +/* IPMI_NET_FN_OEM_DELL_GENERIC_RQ / IPMI_NET_FN_OEM_DELL_GENERIC_RS */ +#define IPMI_CMD_OEM_DELL_RESET_TO_DEFAULTS 0x21 +#define IPMI_CMD_OEM_DELL_SET_NIC_SELECTION 0x24 +#define IPMI_CMD_OEM_DELL_GET_NIC_SELECTION 0x25 +#define IPMI_CMD_OEM_DELL_QUERY_CHASSIS_IDENTIFY_STATUS 0x32 +#define IPMI_CMD_OEM_DELL_GET_CPLD_VERSION 0x33 +#define IPMI_CMD_OEM_DELL_GET_POWER_CONSUMPTION_DATA 0x9C +#define IPMI_CMD_OEM_DELL_RESET_POWER_CONSUMPTION_DATA 0x9D +#define IPMI_CMD_OEM_DELL_POWER_SUPPLY_INFO 0xB0 +#define IPMI_CMD_OEM_DELL_POWER_MONITORING_OVER_A_SPECIFIED_AVERAGING_INTERVAL 0xB1 +#define IPMI_CMD_OEM_DELL_POWER_MONITORING_AVERAGING_INTERVAL_RANGE 0xB2 +#define IPMI_CMD_OEM_DELL_POWER_CONSUMPTION 0xB3 +#define IPMI_CMD_OEM_DELL_FRONT_PANEL_INFO 0xB5 +/* renamed "front panel info" in 12g */ +#define IPMI_CMD_OEM_DELL_LCD_INFO IPMI_CMD_OEM_DELL_FRONT_PANEL_INFO +/* achu: this one is taken from code, is correct name? */ +#define IPMI_CMD_OEM_DELL_POWER_CAPACITY_STATUS 0xBA +#define IPMI_CMD_OEM_DELL_GET_POWER_HEAD_ROOM 0xBB +#define IPMI_CMD_OEM_DELL_ROLLBACK_FIRMWARE_VERSION 0xBE +#define IPMI_CMD_OEM_DELL_GET_IDRAC_FIRMWARE_VERSION_NUMBER 0xBF +#define IPMI_CMD_OEM_DELL_GET_ACTIVE_LOM_STATUS 0xC1 +#define IPMI_CMD_OEM_DELL_IDRAC_VIRTUAL_MAC 0xC9 + +/* + * Dell Poweredge R720 + */ + +#define IPMI_CMD_OEM_DELL_GET_BLADE_SLOT_ID 0x18 +#define IPMI_CMD_OEM_DELL_SET_NIC_SELECTION_FAILOVER 0x28 +#define IPMI_CMD_OEM_DELL_GET_NIC_SELECTION_FAILOVER 0x29 +#define IPMI_CMD_OEM_DELL_FRESH_AIR 0x35 +#define IPMI_CMD_OEM_DELL_GET_LAST_POST_CODE 0x99 +#define IPMI_CMD_OEM_DELL_POWER_MONITORING_OVER_A_SPECIFIED_AVERAGING_INTERVAL2 0xCC +#define IPMI_CMD_OEM_DELL_POWER_MONITORING_AVERAGING_INTERVAL_RANGE2 0xCD + +/* + * Dell Poweredge C410x + */ + +/* IPMI_NET_FN_OEM_DELL_GENERIC_RQ / IPMI_NET_FN_OEM_DELL_GENERIC_RS */ +#define IPMI_CMD_OEM_DELL_SLOT_POWER_CONTROL 0xF0 + +/* IPMI_NET_FN_OEM_DELL_GENERIC_PORT_MAP_RQ / IPMI_NET_FN_OEM_DELL_GENERIC_PORT_MAP_RS */ +#define IPMI_CMD_OEM_DELL_PORT_MAP 0xC8 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_DELL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-fujitsu-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-fujitsu-spec.h new file mode 100644 index 00000000..30d9c377 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-fujitsu-spec.h @@ -0,0 +1,50 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CMD_OEM_FUJITSU_SPEC_H +#define IPMI_CMD_OEM_FUJITSU_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Fujitsu iRMC S1 / iRMC S2 + * + * http://manuals.ts.fujitsu.com/file/4390/irmc_s2-en.pdf + */ +/* IPMI_NET_FN_OEM_GROUP_RQ / IPMI_NET_FN_OEM_GROUP_RS */ +#define IPMI_CMD_OEM_FUJITSU_POWER 0x01 +#define IPMI_CMD_OEM_FUJITSU_COMMUNICATION 0x02 +#define IPMI_CMD_OEM_FUJITSU_FAN_TEST 0x10 +#define IPMI_CMD_OEM_FUJITSU_BIOS 0xF1 +#define IPMI_CMD_OEM_FUJITSU_SYSTEM 0xF5 + +/* IPMI_NET_FN_FIRMWARE_RQ / IPMI_NET_FN_FIRMWARE_RS */ +#define IPMI_CMD_OEM_FUJITSU_SET_FIRMWARE_SELECTOR 0x04 +#define IPMI_CMD_OEM_FUJITSU_GET_FIRMWARE_SELECTOR 0x05 + +/* IPMI_NET_FN_OEM_FUJITSU_GENERIC_RQ / IPMI_NET_FN_OEM_FUJITSU_GENERIC_RS */ +#define IPMI_CMD_OEM_FUJITSU_GET_REMOTE_STORAGE_CONNECTION_OR_STATUS 0x19 +#define IPMI_CMD_OEM_FUJITSU_SET_VIDEO_DISPLAY_ON_OFF 0x1A + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_FUJITSU_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-ibm-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-ibm-spec.h new file mode 100644 index 00000000..4e617b68 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-ibm-spec.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CMD_OEM_IBM_SPEC_H +#define IPMI_CMD_OEM_IBM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * IBM x3455/x3755 + */ +/* IPMI_NET_FN_OEM_IBM_LED_RQ / IPMI_NET_FN_OEM_IBM_LED_RS */ +/* achu: not official names, named based on use context */ +#define IPMI_CMD_OEM_IBM_GET_LED 0xC0 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_IBM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-intel-node-manager-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-intel-node-manager-spec.h new file mode 100644 index 00000000..3d11603c --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-intel-node-manager-spec.h @@ -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 . + * + */ + +#ifndef IPMI_CMD_OEM_INTEL_NODE_MANAGER_SPEC_H +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_SPEC_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 + */ + +/* IPMI_NET_FN_OEM_GROUP_RQ / IPMI_NET_FN_OEM_GROUP_RS */ +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_ENABLE_DISABLE_NODE_MANAGER_POLICY_CONTROL 0xC0 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY 0xC1 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_POLICY 0xC2 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS 0xC3 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS 0xC4 +/* legacy names */ +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_ALERT_THRESHOLDS IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_ALERT_THRESHOLDS IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_SUSPEND_PERIODS 0xC5 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_POLICY_SUSPEND_PERIODS 0xC6 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_RESET_NODE_MANAGER_STATISTICS 0xC7 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_STATISTICS 0xC8 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_CAPABILITIES 0xC9 +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_VERSION 0xCA +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POWER_DRAW_RANGE 0xCB +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_TURBO_SYNCHRONIZATION_RATIO 0xCC +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_TURBO_SYNCHRONIZATION_RATIO 0xCD +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_ALERT_DESTINATION 0xCE +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_ALERT_DESTINATION 0xCF +#define IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_LIMITING_POLICY_ID 0xF2 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_INTEL_NODE_MANAGER_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-intel-spec.h new file mode 100644 index 00000000..5d7aece2 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-intel-spec.h @@ -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 . + * + */ + +#ifndef IPMI_CMD_OEM_INTEL_SPEC_H +#define IPMI_CMD_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Intel S5500WB/Penguin Computing Relion 700 + * Intel S2600JF/Appro 512X + */ + +/* IPMI_NET_FN_OEM_INTEL_GENERIC_RQ / IPMI_NET_FN_OEM_INTEL_GENERIC_RS */ +#define IPMI_CMD_OEM_INTEL_RESTORE_CONFIGURATION 0x02 +#define IPMI_CMD_OEM_INTEL_SET_FAULT_INDICATION 0x57 + +/* IPMI_NET_FN_OEM_INTEL_CONFIG_RQ / IPMI_NET_FN_OEM_INTEL_CONFIG_RS */ +#define IPMI_CMD_OEM_INTEL_SET_SMTP_CONFIGURATION 0x37 +#define IPMI_CMD_OEM_INTEL_GET_SMTP_CONFIGURATION 0x38 + +/* + * Intel S2600JF/Appro 512X + */ + +/* IPMI_NET_FN_OEM_INTEL_GENERIC_RQ / IPMI_NET_FN_OEM_INTEL_GENERIC_RS */ +#define IPMI_CMD_OEM_INTEL_SET_POWER_RESTORE_DELAY 0x54 +#define IPMI_CMD_OEM_INTEL_GET_POWER_RESTORE_DELAY 0x55 +#define IPMI_CMD_OEM_INTEL_GET_BMC_SERVICE_STATUS 0xB2 +#define IPMI_CMD_OEM_INTEL_CONTROL_BMC_SERVICES 0xB1 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-inventec-spec.h new file mode 100644 index 00000000..ec094650 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-inventec-spec.h @@ -0,0 +1,77 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CMD_OEM_INVENTEC_SPEC_H +#define IPMI_CMD_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ + +/* IPMI_NET_FN_FIRMWARE_RQ / IPMI_NET_FN_FIRMWARE_RS */ +#define IPMI_CMD_OEM_INVENTEC_UPDATE_FIRMARE 0x01 +#define IPMI_CMD_OEM_INVENTEC_GET_UPDATE_STATUS 0x02 +#define IPMI_CMD_OEM_INVENTEC_COPY_IMAGE_DATA 0x03 + +/* IPMI_NET_FN_OEM_GROUP_RQ / IPMI_NET_FN_OEM_GROUP_RS */ +/* achu: not official names, named based on use context */ +#define IPMI_CMD_OEM_INVENTEC_SET_DEDICATED_MAC_ADDRESS 0x21 +#define IPMI_CMD_OEM_INVENTEC_SET_SHARED_MAC_ADDRESS 0x23 + +/* IPMI_NET_FN_OEM_INVENTEC_GENERIC_RQ / IPMI_NET_FN_OEM_INVENTEC_GENERIC_RS */ +#define IPMI_CMD_OEM_INVENTEC_RESERVED_EXTENDED_CONFIGURATION 0x01 +#define IPMI_CMD_OEM_INVENTEC_GET_EXTENDED_CONFIGURATION 0x02 +#define IPMI_CMD_OEM_INVENTEC_SET_EXTENDED_CONFIGURATION 0x03 +#define IPMI_CMD_OEM_INVENTEC_RESTORE_TO_DEFAULTS 0x04 +#define IPMI_CMD_OEM_INVENTEC_GET_RESTORE_STATUS 0x05 +#define IPMI_CMD_OEM_INVENTEC_SET_SYSTEM_GUID 0xB3 + +/* IPMI_NET_FN_OEM_INVENTEC_SPECIFIC_RQ / IPMI_NET_FN_OEM_INVENTEC_SPECIFIC_RS */ +#define IPMI_CMD_OEM_INVENTEC_SET_WEB_PORT_NUM 0x02 +#define IPMI_CMD_OEM_INVENTEC_GET_WEB_PORT_NUM 0x03 +#define IPMI_CMD_OEM_INVENTEC_SET_BOARD_ID 0x10 +#define IPMI_CMD_OEM_INVENTEC_GET_BOARD_ID 0x11 +#define IPMI_CMD_OEM_INVENTEC_SET_ASSET_TAG 0x12 +#define IPMI_CMD_OEM_INVENTEC_SET_LAN_SOURCE 0x13 +#define IPMI_CMD_OEM_INVENTEC_GET_LAN_SOURCE 0x14 +#define IPMI_CMD_OEM_INVENTEC_SET_FCB_FW_VERSION 0x15 +#define IPMI_CMD_OEM_INVENTEC_GET_FCB_FW_VERSION 0x16 +#define IPMI_CMD_OEM_INVENTEC_SET_FAN_CONTROL 0x61 +#define IPMI_CMD_OEM_INVENTEC_GET_FAN_CONTROL 0x62 +#define IPMI_CMD_OEM_INVENTEC_SET_FSC_TABLE 0x63 +#define IPMI_CMD_OEM_INVENTEC_GET_FSC_TABLE 0x64 +#define IPMI_CMD_OEM_INVENTEC_GET_FCB_SKU_INFO 0x6A +#define IPMI_CMD_OEM_INVENTEC_GET_FCB_POWER_THROTTLING_STATUS 0x6B +#define IPMI_CMD_OEM_INVENTEC_OEM_GET_PIC_MODEL 0x70 +#define IPMI_CMD_OEM_INVENTEC_OEM_SET_FLASH_PIN 0x71 +#define IPMI_CMD_OEM_INVENTEC_OEM_GET_FLASH_PIN 0x72 +#define IPMI_CMD_OEM_INVENTEC_OEM_NEW_MASTER_WRITE_READ 0x73 +#define IPMI_CMD_OEM_INVENTEC_SET_POWER_THROTTLING_BEHAVIOR 0xB1 +#define IPMI_CMD_OEM_INVENTEC_GET_POWER_THROTTLING_BEHAVIOR 0xB2 +#define IPMI_CMD_OEM_INVENTEC_GET_PSU_MISMATCH_AND_TYPE 0xB3 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-quanta-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-quanta-spec.h new file mode 100644 index 00000000..0054485e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-quanta-spec.h @@ -0,0 +1,50 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CMD_OEM_QUANTA_SPEC_H +#define IPMI_CMD_OEM_QUANTA_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Quanta S99Q/Dell FS12-TY + */ + +/* IPMI_NET_FN_FIRMWARE_RQ / IPMI_NET_FN_FIRMWARE_RS */ +#define IPMI_CMD_OEM_QUANTA_UPDATE_FIRMARE 0x01 +#define IPMI_CMD_OEM_QUANTA_GET_UPDATE_STATUS 0x02 +#define IPMI_CMD_OEM_QUANTA_COPY_IMAGE_DATA 0x03 +#define IPMI_CMD_OEM_QUANTA_USB_FIRMWARE_UPDATE 0x04 + +/* IPMI_NET_FN_OEM_QUANTA_GENERIC_RQ / IPMI_NET_FN_OEM_QUANTA_GENERIC_RS */ +#define IPMI_CMD_OEM_QUANTA_RESERVED_EXTENDED_CONFIGURATION 0x01 +#define IPMI_CMD_OEM_QUANTA_GET_EXTENDED_CONFIGURATION 0x02 +#define IPMI_CMD_OEM_QUANTA_SET_EXTENDED_CONFIGURATION 0x03 +#define IPMI_CMD_OEM_QUANTA_RESET_TO_DEFAULTS 0x04 +#define IPMI_CMD_OEM_QUANTA_GET_RESTORE_STATUS 0x05 +#define IPMI_CMD_OEM_QUANTA_GET_SENSOR_TEMPERATURE_READING 0x10 +#define IPMI_CMD_OEM_QUANTA_GET_PROCESSOR_INFORMATION 0x18 +#define IPMI_CMD_OEM_QUANTA_SET_POWER_ON_BY_WAKE_ON_LAN_EVENT 0x1B + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_QUANTA_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-sun-microsystems-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-sun-microsystems-spec.h new file mode 100644 index 00000000..ba335ee5 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-sun-microsystems-spec.h @@ -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 . + * + */ + +#ifndef IPMI_CMD_OEM_SUN_MICROSYSTEMS_SPEC_H +#define IPMI_CMD_OEM_SUN_MICROSYSTEMS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Sun 4140 + */ + +/* IPMI_NET_FN_OEM_GROUP_RQ / IPMI_NET_FN_OEM_GROUP_RS */ +#define IPMI_CMD_OEM_SUN_GET_LED 0x21 +#define IPMI_CMD_OEM_SUN_SET_LED 0x22 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_SUN_MICROSYSTEMS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-supermicro-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-supermicro-spec.h new file mode 100644 index 00000000..d247cc82 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-supermicro-spec.h @@ -0,0 +1,45 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CMD_OEM_SUPERMICRO_SPEC_H +#define IPMI_CMD_OEM_SUPERMICRO_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Supermicro H8QME + */ + +/* achu: not official names, named based on use context */ +#define IPMI_CMD_OEM_SUPERMICRO_EXTRA_FIRMWARE_INFO 0x20 +#define IPMI_CMD_OEM_SUPERMICRO_RESET_INTRUSION 0x03 + +/* + * Supermicro X8DTG + */ + +/* achu: not official names, named based on use context */ +#define IPMI_CMD_OEM_SUPERMICRO_GENERIC_EXTENSION 0x70 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_SUPERMICRO_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-wistron-spec.h new file mode 100644 index 00000000..5111dc16 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-cmd-oem-wistron-spec.h @@ -0,0 +1,78 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CMD_OEM_WISTRON_SPEC_H +#define IPMI_CMD_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +/* IPMI_NET_FN_FIRMWARE_RQ / IPMI_NET_FN_FIRMWARE_RS */ +#define IPMI_CMD_OEM_WISTRON_UPDATE_FIRMARE 0x01 +#define IPMI_CMD_OEM_WISTRON_GET_UPDATE_STATUS 0x02 +#define IPMI_CMD_OEM_WISTRON_COPY_IMAGE_DATA 0x03 +#define IPMI_CMD_OEM_WISTRON_USB_FIRMWARE_UPDATE 0x04 +#define IPMI_CMD_OEM_WISTRON_WRITE_PROPRIETARY_STRING 0x0B +#define IPMI_CMD_OEM_WISTRON_READ_PROPRIETARY_STRING 0x0C +#define IPMI_CMD_OEM_WISTRON_CLEAR_PROPRIETARY_STRING 0x0D + +/* IPMI_NET_FN_OEM_WISTRON_GENERIC_RQ / IPMI_NET_FN_OEM_WISTRON_GENERIC_RS */ +#define IPMI_CMD_OEM_WISTRON_RESERVED_EXTENDED_CONFIGURATION 0x01 +#define IPMI_CMD_OEM_WISTRON_GET_EXTENDED_CONFIGURATION 0x02 +#define IPMI_CMD_OEM_WISTRON_SET_EXTENDED_CONFIGURATION 0x03 +#define IPMI_CMD_OEM_WISTRON_RESET_TO_DEFAULTS 0x04 +#define IPMI_CMD_OEM_WISTRON_GET_RESTORE_STATUS 0x05 +#define IPMI_CMD_OEM_WISTRON_SET_CHASSIS_CONFIGURATION 0x11 +#define IPMI_CMD_OEM_WISTRON_GET_CHASSIS_CONFIGURATION 0x12 +#define IPMI_CMD_OEM_WISTRON_SET_CHASSIS_NAME 0x13 +#define IPMI_CMD_OEM_WISTRON_GET_CHASSIS_NAME 0x14 +#define IPMI_CMD_OEM_WISTRON_SET_SENSOR_INFO 0x15 +#define IPMI_CMD_OEM_WISTRON_GET_SENSOR_INFO 0x16 +#define IPMI_CMD_OEM_WISTRON_SET_CHASSIS_ENCLOSURE_POWER_CAPPING 0x17 +#define IPMI_CMD_OEM_WISTRON_GET_CHASSIS_ENCLOSURE_POWER_CAPPING 0x18 +#define IPMI_CMD_OEM_WISTRON_SET_FAN_SPEED_CONTROL 0x19 +#define IPMI_CMD_OEM_WISTRON_GET_FAN_SPEED_CONTROL 0x1A +#define IPMI_CMD_OEM_WISTRON_SET_CHASSIS_LED_STATUS 0x1B +#define IPMI_CMD_OEM_WISTRON_GET_CHASSIS_LED_STATUS 0x1C +#define IPMI_CMD_OEM_WISTRON_SET_HDD_INFO 0x1D +#define IPMI_CMD_OEM_WISTRON_SET_PSU_INFO 0x1E +#define IPMI_CMD_OEM_WISTRON_GET_PSU_INFO 0x1F +#define IPMI_CMD_OEM_WISTRON_SET_CHASSIS_SERVICE_TAG 0x20 +#define IPMI_CMD_OEM_WISTRON_GET_CHASSIS_SERVICE_TAG 0x25 +#define IPMI_CMD_OEM_WISTRON_SYNCHRONIZE CHASSIS_SERVICE_TAG 0x26 +#define IPMI_CMD_OEM_WISTRON_SET_PSU_CONFIGURATION 0x27 +#define IPMI_CMD_OEM_WISTRON_GET_PSU_CONFIGURATION 0x28 +#define IPMI_CMD_OEM_WISTRON_SYNCHRONIZE_CHASSIS_ENCLOSURE_POWER 0x29 +#define IPMI_CMD_OEM_WISTRON_SET_THERMAL_THROTTLING 0x2A +#define IPMI_CMD_OEM_WISTRON_GET_THERMAL_THROTTLING 0x2B +#define IPMI_CMD_OEM_WISTRON_GET_BMC_SC_BMC_PROTOCOL_VERSION 0x2C +#define IPMI_CMD_OEM_WISTRON_GET_SC_SC_BMC_PROTOCOL_VERSION 0x2D +#define IPMI_CMD_OEM_WISTRON_GET_CHASSIS_POWER_READINGS 0x2E +#define IPMI_CMD_OEM_WISTRON_SET_CHASSIS_POWER_READINGS 0x2F +#define IPMI_CMD_OEM_WISTRON_SET_PASSWORD_POLICY 0x51 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CMD_OEM_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-dell-spec.h new file mode 100644 index 00000000..ffeafaf1 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-dell-spec.h @@ -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 . + * + */ + +#ifndef IPMI_COMP_CODE_OEM_DELL_SPEC_H +#define IPMI_COMP_CODE_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Dell Poweredge R720 + */ + +/* w/ IPMI_CMD_OEM_DELL_GET_EXTENDED_CONFIGURATION + * IPMI_CMD_OEM_DELL_SET_EXTENDED_CONFIGURATION + * IPMI_CMD_OEM_DELL_SET_NIC_SELECTION_FAILOVER + * IPMI_CMD_OEM_DELL_POWER_MONITORING_OVER_A_SPECIFIED_AVERAGING_INTERVAL2 + * IPMI_CMD_OEM_DELL_POWER_MONITORING_AVERAGING_INTERVAL_RANGE2 + * IPMI_CMD_SET_SYSTEM_INFO_PARAMETERS + * IPMI_CMD_GET_SYSTEM_INFO_PARAMETERS + */ +#define IPMI_COMP_CODE_OEM_DELL_NOT_LICENSED 0x6F +#define IPMI_COMP_CODE_OEM_DELL_NOT_LICENSED_STR \ + "Not licensed" + +/* w/ IPMI_CMD_OEM_DELL_POWER_MONITORING_OVER_A_SPECIFIED_AVERAGING_INTERVAL2 + * IPMI_CMD_OEM_DELL_POWER_MONITORING_AVERAGING_INTERVAL_RANGE2 + */ +#define IPMI_COMP_CODE_OEM_DELL_SUBSYSTEM_LEVEL_POWER_IS_NOT_SUPPORTED 0x81 +#define IPMI_COMP_CODE_OEM_DELL_SUBSYSTEM_LEVEL_POWER_IS_NOT_SUPPORTED_STR \ + "subsystem-level power is not supported" + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_COMP_CODE_OEM_DELL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-fujitsu-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-fujitsu-spec.h new file mode 100644 index 00000000..4454f74f --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-fujitsu-spec.h @@ -0,0 +1,40 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_COMP_CODE_OEM_FUJITSU_SPEC_H +#define IPMI_COMP_CODE_OEM_FUJITSU_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Fujitsu RX100 S5 + * + * http://manuals.ts.fujitsu.com/file/4390/irmc_s2-en.pdf + */ +/* IPMI_CMD_OEM_FUJITSU_BIOS - w/ GET_CPU_INFO Command Specifier */ +#define IPMI_COMP_CODE_OEM_FUJITSU_BIOS_UNPOPULATED_CPU_SOCKET 0x01 +#define IPMI_COMP_CODE_OEM_FUJITSU_BIOS_UNPOPULATED_CPU_SOCKET_STR \ + "Unpopulated CPU Socket" + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_COMP_CODE_OEM_FUJITSU_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-intel-node-manager-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-intel-node-manager-spec.h new file mode 100644 index 00000000..1ef18f22 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-intel-node-manager-spec.h @@ -0,0 +1,205 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SPEC_H +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SPEC_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 + */ + +/* IPMI_CMD_OEM_INTEL_ENABLE_DISABLE_NODE_MANAGER_POLICY_CONTROL */ +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_POLICY */ +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS */ +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY_SUSPEND_PERIODS */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_POLICY_SUSPEND_PERIODS */ +/* IPMI_CMD_OEM_INTEL_RESET_NODE_MANAGER_STATISTICS */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_STATISTICS */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_POLICY_ID 0x80 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_POLICY_ID_STR \ + "Invalid Policy Id" + +/* IPMI_CMD_OEM_INTEL_ENABLE_DISABLE_NODE_MANAGER_POLICY_CONTROL */ +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_POLICY */ +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS */ +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY_SUSPEND_PERIODS */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_POLICY_SUSPEND_PERIODS */ +/* IPMI_CMD_OEM_INTEL_RESET_NODE_MANAGER_STATISTICS */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_STATISTICS */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_CAPABILITIES */ +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POWER_DRAW_RANGE */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_DOMAIN_ID 0x81 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_DOMAIN_ID_STR \ + "Invalid Domain Id" + +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY */ +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_UNKNOWN_OR_UNSUPPORTED_POLICY_TRIGGER_TYPE 0x82 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_UNKNOWN_OR_UNSUPPORTED_POLICY_TRIGGER_TYPE_STR \ + "unknown or unsupported Policy Trigger Type" + +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_UNKNOWN_OR_UNSUPPORTED_POLICY_CONFIGURATION_ACTION 0x83 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_UNKNOWN_OR_UNSUPPORTED_POLICY_CONFIGURATION_ACTION_STR \ + "unknown or unsupported Policy Configuration Action" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_POWER_LIMIT_OUT_OF_RANGE 0x84 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_POWER_LIMIT_OUT_OF_RANGE_STR \ + "Power Limit out of range" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_CORRECTION_TIME_OUT_OF_RANGE 0x85 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_CORRECTION_TIME_OUT_OF_RANGE_STR \ + "Correction Time out of range" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_VALUE_OUT_OF_RANGE 0x86 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_POLICY_TRIGGER_VALUE_OUT_OF_RANGE_STR \ + "Policy Trigger value out of range" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_STATISTICS_REPORTING_PERIOD_OUT_OF_RANGE 0x89 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_STATISTICS_REPORTING_PERIOD_OUT_OF_RANGE_STR \ + "Statistics Reporting Period out of range" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_VALUE_OF_AGGRESSIVE_CPU_POWER_CORRECTION_FIELD 0x8B +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_VALUE_OF_AGGRESSIVE_CPU_POWER_CORRECTION_FIELD_STR \ + "Invalid value of Aggressive CPU Power Correction field" + +/* Standard error with special meaning */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_REQUEST_PARAMETER_NOT_SUPPORTED 0xD5 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_REQUEST_PARAMETER_NOT_SUPPORTED_STR \ + "Policy could not be updated since PolicyId already exists and is enabled" + +/* Standard error with special meaning */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_SUSPEND_PERIODS_REQUEST_PARAMETER_ILLEGAL 0xD6 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_SUSPEND_PERIODS_REQUEST_PARAMETER_ILLEGAL_STR \ + "Command disabled/unavailable due to lack of RTC synchronization" + +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS */ +/* No longer in 3.0 */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_LIMIT_IN_ONE_OF_THRESHOLDS_IS_INVALID 0x84 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_LIMIT_IN_ONE_OF_THRESHOLDS_IS_INVALID_STR \ + "Limit in one of thresholds is invalid" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_NUMBER_OF_THRESHOLDS_IS_TOO_LARGE_OR_POWER_LIMITS_ARE_INVALID 0x87 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_NUMBER_OF_THRESHOLDS_IS_TOO_LARGE_OR_POWER_LIMITS_ARE_INVALID_STR \ + "Number of thresholds is too large or power limits are invalid" + +/* legacy name */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_NUMBER_OF_POLICY_THRESHOLDS IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_NUMBER_OF_THRESHOLDS_IS_TOO_LARGE_OR_POWER_LIMITS_ARE_INVALID +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_NUMBER_OF_POLICY_THRESHOLDS_STR IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_NUMBER_OF_THRESHOLDS_IS_TOO_LARGE_OR_POWER_LIMITS_ARE_INVALID_STR + +/* Standard error with special meaning */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS_REQUEST_PARAMETER_NOT_SUPPORTED 0xD5 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS_REQUEST_PARAMETER_NOT_SUPPORTED_STR \ + "Alert thresholds can not be changed for enabled policy, disable it first" + +/* legacy name */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_ALERT_THRESHOLDS_REQUEST_PARAMETER_NOT_SUPPORTED IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS_REQUEST_PARAMETER_NOT_SUPPORTED +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_ALERT_THRESHOLDS_REQUEST_PARAMETER_NOT_SUPPORTED_STR IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_ALERT_THRESHOLDS_REQUEST_PARAMETER_NOT_SUPPORTED_STR + +/* IPMI_CMD_OEM_INTEL_SET_NODE_MANAGER_POLICY_SUSPEND_PERIODS */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_ONE_OF_PERIODS_IN_THE_TABLE_IS_INCONSISTENT 0x85 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_ONE_OF_PERIODS_IN_THE_TABLE_IS_INCONSISTENT_STR \ + "One of the periods in the table is inconsistent. Start time is greater than or " \ + "equal to stop time or stop time sets time beyond 1 day" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_NUMBER_OF_POLICY_SUSPEND_PERIODS 0x87 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_NUMBER_OF_POLICY_SUSPEND_PERIODS_STR \ + "Invalid Number of policy suspend periods" + +/* Standard error with special meaning */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_SUSPEND_PERIODS_REQUEST_PARAMETER_NOT_SUPPORTED 0xD5 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_POLICY_SUSPEND_PERIODS_REQUEST_PARAMETER_NOT_SUPPORTED_STR \ + "Suspend periods can not be changed for enabled policy, disable it first" + +/* IPMI_CMD_OEM_INTEL_RESET_NODE_MANAGER_STATISTICS */ +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_STATISTICS */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_MODE 0x88 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INVALID_MODE_STR \ + "Invalid Mode" + +/* IPMI_CMD_OEM_INTEL_GET_NODE_MANAGER_CAPABILITIES */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_UNKNOWN_POLICY_TRIGGER_TYPE 0x82 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_UNKNOWN_POLICY_TRIGGER_TYPE_STR \ + "unknown Policy Trigger Type" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_UNKNOWN_POLICY_TYPE 0x83 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_UNKNOWN_POLICY_TYPE_STR \ + "unknown Policy Type" + +/* IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_LIMITING_POLICY_ID */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_NO_POLICY_IS_CURRENTLY_LIMITING 0xA1 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_NO_POLICY_IS_CURRENTLY_LIMITING_STR \ + "No policy is currently limiting for the specified DomainID" + +/* IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_TURBO_SYNCHRONIZATION_RATIO */ +/* IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_TURBO_SYNChRONIZATION_RATIO */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_WRONG_CPU_SOCKET_NUMBER 0xA1 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_WRONG_CPU_SOCKET_NUMBER_STR \ + "Wrong CPU socket number" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_COMMAND_RESPONSE_TIMEOUT 0xA2 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_COMMAND_RESPONSE_TIMEOUT_STR \ + "Command response timeout" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_BAD_READ_FSC_IN_THE_RESPONSE 0xA4 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_BAD_READ_FSC_IN_THE_RESPONSE_STR \ + "Bad read FSC in the response" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_BAD_WRITE_FCS_FIELD_IN_THE_RESPONSE 0xA5 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_BAD_WRITE_FCS_FIELD_IN_THE_RESPONSE_STR \ + "Bad write FCS field in the response" + +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_CPU_NOT_PRESENT 0xAC +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_CPU_NOT_PRESENT_STR \ + "CPU not present" + +/* standard error with special meaning */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_PLATFORM_NOT_IN_S0_S1_STATE 0xD5 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_PLATFORM_NOT_IN_S0_S1_STATE_STR \ + "Platform not in the S0/S1 state " + +/* standard error with special meaning */ +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INCORRECT_ACTIVE_CORES_CONFIGURATION 0xC9 +#define IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_INCORRECT_ACTIVE_CORES_CONFIGURATION_STR \ + "Incorrect active cores configuration. Number of active cores exceeding number of cores on CPU" + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_COMP_CODE_OEM_INTEL_NODE_MANAGER_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-intel-spec.h new file mode 100644 index 00000000..143c317b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-intel-spec.h @@ -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 . + * + */ + +#ifndef IPMI_COMP_CODE_OEM_INTEL_SPEC_H +#define IPMI_COMP_CODE_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Intel S5500WB/Penguin Computing Relion 700 + */ + +/* IPMI_CMD_OEM_INTEL_SET_SMTP_CONFIGURATION */ + +#define IPMI_COMP_CODE_SET_SMTP_CONFIGURATION_PARAMETER_NOT_SUPPORTED 0x80 +#define IPMI_COMP_CODE_SET_SMTP_CONFIGURATION_PARAMETER_NOT_SUPPORTED_STR \ + "parameter not supported." + +#define IPMI_COMP_CODE_SET_SMTP_CONFIGURATION_WRITE_READ_ONLY_PARAMETER 0x82 +#define IPMI_COMP_CODE_SET_SMTP_CONFIGURATION_WRITE_READ_ONLY_PARAMETER_STR \ + "attempt to write read-only parameter" + +/* IPMI_CMD_OEM_INTEL_GET_SMTP_CONFIGURATION */ + +/* achu: document from Intel also sites a "write read-only parameter" + * error code, but I assume that is a cut and paste typo. Shouldn't + * be possible for the "get" command + */ + +#define IPMI_COMP_CODE_GET_SMTP_CONFIGURATION_PARAMETER_NOT_SUPPORTED 0x80 +#define IPMI_COMP_CODE_GET_SMTP_CONFIGURATION_PARAMETER_NOT_SUPPORTED_STR \ + "parameter not supported." + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_COMP_CODE_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-wistron-spec.h new file mode 100644 index 00000000..4357bd65 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-comp-code-oem-wistron-spec.h @@ -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 . + * + */ + +#ifndef IPMI_COMP_CODE_OEM_WISTRON_SPEC_H +#define IPMI_COMP_CODE_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +/* IPMI_CMD_OEM_WISTRON_GET_CHASSIS_LED_STATUS */ +#define IPMI_COMP_CODE_OEM_WISTON_GET_CHASSIS_LED_STATUS_NOT_YET_RECEIVED_ANY_INFORMATION_FROM_SATELLITE_CONTROLLER 0x80 +#define IPMI_COMP_CODE_OEM_WISTON_GET_CHASSIS_LED_STATUS_NOT_YET_RECEIVED_ANY_INFORMATION_FROM_SATELLITE_CONTROLLER_STR \ + "Not yet received any information from Satellite Controller" + +#define IPMI_COMP_CODE_OEM_WISTON_GET_CHASSIS_LED_STATUS_SATELLITE_CONTROLLER_NOT_REPORTING_FOR_MORE_THAN_10_CONSECUTIVE_SECONDS 0x81 +#define IPMI_COMP_CODE_OEM_WISTON_GET_CHASSIS_LED_STATUS_SATELLITE_CONTROLLER_NOT_REPORTING_FOR_MORE_THAN_10_CONSECUTIVE_SECONDS_STR \ + "Satellite Controller Not Reporting for more than 10 consecutive seconds, but SC was alive before" + +/* IPMI_CMD_OEM_WISTRON_SET_CHASSIS_LED_STATUS */ +#define IPMI_COMP_CODE_OEM_WISTON_SET_CHASSIS_LED_STATUS_NOT_YET_RECEIVED_ANY_INFORMATION_FROM_SATELLITE_CONTROLLER 0x80 +#define IPMI_COMP_CODE_OEM_WISTON_SET_CHASSIS_LED_STATUS_NOT_YET_RECEIVED_ANY_INFORMATION_FROM_SATELLITE_CONTROLLER_STR \ + "Not yet received any information from Satellite Controller" + +#define IPMI_COMP_CODE_OEM_WISTON_SET_CHASSIS_LED_STATUS_SATELLITE_CONTROLLER_NOT_REPORTING_FOR_MORE_THAN_10_CONSECUTIVE_SECONDS 0x81 +#define IPMI_COMP_CODE_OEM_WISTON_SET_CHASSIS_LED_STATUS_SATELLITE_CONTROLLER_NOT_REPORTING_FOR_MORE_THAN_10_CONSECUTIVE_SECONDS_STR \ + "Satellite Controller Not Reporting for more than 10 consecutive seconds, but SC was alive before" + +#define IPMI_COMP_CODE_OEM_WISTON_SET_CHASSIS_LED_STATUS_SATELLITE_CONTROLLER_DOES_NOT_SUPPORT_CHASSIS_LED_REQUESTED 0x82 +#define IPMI_COMP_CODE_OEM_WISTON_SET_CHASSIS_LED_STATUS_SATELLITE_CONTROLLER_DOES_NOT_SUPPORT_CHASSIS_LED_REQUESTED_STR \ + "Satellite Controller does not support one or many chassis LED requested" + +/* IPMI_CMD_OEM_WISTRON_GET_CHASSIS_POWER_READINGS */ +#define IPMI_COMP_CODE_OEM_WISTRON_GET_CHASSIS_POWER_READINGS_BMC_HAS_NOT_YET_RECEIVED_ANY_COMMANDS_FROM_SC 0x81 +#define IPMI_COMP_CODE_OEM_WISTRON_GET_CHASSIS_POWER_READINGS_BMC_HAS_NOT_YET_RECEIVED_ANY_COMMANDS_FROM_SC_STR \ + "BMC has not yet received any commands from SC" + +/* achu: spec says "timeout" I'm going to say "timedout" */ +#define IPMI_COMP_CODE_OEM_WISTRON_GET_CHASSIS_POWER_READINGS_SC_HAS_TIMEDOUT 0x82 +#define IPMI_COMP_CODE_OEM_WISTRON_GET_CHASSIS_POWER_READINGS_SC_HAS_TIMEDOUT_STR \ + "BMC has received Set Chassis Power Readings/Set Sensor Info from SC, but SC has timedout and is considered offline now." + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_COMP_CODE_OEM_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-dell-spec.h new file mode 100644 index 00000000..c04c4004 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-dell-spec.h @@ -0,0 +1,51 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_EVENT_READING_TYPE_CODE_OEM_DELL_SPEC_H +#define IPMI_EVENT_READING_TYPE_CODE_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Dell Poweredge R610 + * Dell Poweredge R710 + */ + +/* achu: not official names, named based on use context */ + +/* achu: the strings are all over the place, "status" is the best name + * I can think of + */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS 0x70 + +/* achu: names taken from code, are correct names? */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_DELL_OEM_DIAGNOSTIC_EVENT_DATA 0x7E + +/* + * Dell Poweredge R720 + */ + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_DELL_FAILURE 0x8A + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_READING_TYPE_CODE_OEM_DELL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-hp-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-hp-spec.h new file mode 100644 index 00000000..89a385c0 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-hp-spec.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_EVENT_READING_TYPE_CODE_OEM_HP_SPEC_H +#define IPMI_EVENT_READING_TYPE_CODE_OEM_HP_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * HP Proliant DL160 G8 + */ + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_HP_UID_LIGHT 0x70 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_HP_HEALTH_LED 0x71 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_READING_TYPE_CODE_OEM_HP_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-node-manager-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-node-manager-spec.h new file mode 100644 index 00000000..e5d04e78 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-node-manager-spec.h @@ -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 . + * + */ + +#ifndef IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_SPEC_H +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_SPEC_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 + */ + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_EXCEPTION_EVENT 0x72 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT 0x73 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT 0x74 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED 0x72 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_ME_FIRMWARE_HEALTH_EVENT 0x75 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_SERVER_PLATFORM_SERVICES_FIRMWARE_HEALTH IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_ME_FIRMWARE_HEALTH_EVENT +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_THERMAL_SENSOR_ON_DIMM 0x76 + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_CUPS_EVENT 0x72 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-spec.h new file mode 100644 index 00000000..688cb2ce --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-intel-spec.h @@ -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 . + * + */ + +#ifndef IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_SPEC_H +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Intel S5500WB/Penguin Computing Relion 700 + */ + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_PCIE_FATAL_SENSOR 0x70 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_PCIE_CORRECTABLE_SENSOR 0x71 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QPI_CORRECTABLE_SENSOR 0x72 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QPI_NON_FATAL_SENSOR 0x73 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QPI_FATAL_SENSOR 0x74 + +/* + * Quanta QSSC-S4R/Appro GB812X-CN + * (Quanta motherboard contains Intel manufacturer ID) + */ +/* achu: Similar to above, but some events changed and some new ones, + * so new macros to differentiate + */ +/* achu: not official names, named based on use context */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_PCIE_FATAL_SENSOR 0x70 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_PCIE_CORRECTABLE_SENSOR 0x71 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_QPI_CORRECTABLE_SENSOR 0x72 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_QPI_NON_FATAL_SENSOR 0x73 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_QPI_FATAL_SENSOR 0x74 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_CORRECTABLE_ERROR 0x76 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_UNCORRECTABLE_ERROR 0x77 + +/* + * Intel S2600JF/Appro 512X + */ +/* achu: some are similar to above, but different names, new events, + * new numbers, so making new macros to differentiate */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_PCIE_FATAL_ERROR 0x70 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_PCIE_CORRECTABLE_ERROR 0x71 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_QPI_CORRECTABLE_ERRORS 0x72 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_OPI_FATAL_ERROR 0x73 +/* continuation for IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_OPI_FATAL_ERROR for more offsets */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_OPI_FATAL_ERROR_2 0x74 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_CHIPSET_PROPRIETARY 0x75 +/* continuation for IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_PCIE_FATAL_ERROR for more offsets */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_PCIE_FATAL_ERROR_2 0x76 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_QPI_LINK_WIDTH_REDUCED 0x77 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_MEMORY_ERROR_EXTENSION 0x7F + +/* + * Intel Windmill + * (Quanta Winterfell) + * (Wiwynn Windmill) + */ +/* achu: Like Intel Node Manager, but no Intel Node Manager on these nodes, so cut & paste to differentiate */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_WINDMILL_ME_FW_HEALTH_SENSOR 0x75 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_WINDMILL_OTHER_IIO_ERROR_SENSOR 0x70 + +/* + * Intel S2600KP + * Intel S2600WT2 + * Intel S2600WTT + */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_QPI_CORRECTABLE_ERROR 0x72 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_QPI_FATAL_ERROR 0x73 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_QPI_FATAL_ERROR_2 0x74 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_QPI_LINK_WIDTH_REDUCED 0x77 + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_PCI_EXPRESS_FATAL_ERRORS 0x70 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_PCI_EXPRESS_FATAL_ERRORS_2 0x76 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_PCI_EXPRESS_CORRECTABLE_ERRORS 0x71 + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_FIRMWARE_UPDATE_STATUS_SENSOR 0x70 + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_BIOS_RECOVERY_START 0x70 +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_BIOS_RECOVERY_FINISH 0xF0 + +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO 0x70 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-inventec-spec.h new file mode 100644 index 00000000..2dd7571d --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-inventec-spec.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_EVENT_READING_TYPE_CODE_OEM_INVENTEC_SPEC_H +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ +/* achu: not official names, named based on use context */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_INVENTEC_BIOS 0x70 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_READING_TYPE_CODE_OEM_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-supermicro-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-supermicro-spec.h new file mode 100644 index 00000000..c0744471 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-event-reading-type-code-oem-supermicro-spec.h @@ -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 . + * + */ + +#ifndef IPMI_EVENT_READING_TYPE_CODE_OEM_SUPERMICRO_SPEC_H +#define IPMI_EVENT_READING_TYPE_CODE_OEM_SUPERMICRO_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Supermicro X7DBR-3 (X7DBR_3) + * Supermicro X7DB8 + * Supermicro X8DTN + * Supermicro X7SBI-LN4 (X7SBI_LN4) + * Supermicro X8DTH + * Supermicro X8DTG + * Supermicro X8DTU + * Supermicro X8DT3-LN4F (X8DT3_LN4F) + * Supermicro X8DTU-6+ (X8DTU_6PLUS) + * Supermicro X8DTL + * Supermicro X8DTL-3F (X8DTL_3F) + * Supermicro X8SIL-F (X8SIL_F) + * Supermicro X9SCL + * Supermicro X9SCM + * Supermicro X8DTN+-F (X8DTNPLUS_F) + * Supermicro X8SIE + * Supermicro X9SCA-F-O (X9SCA_F_O) + * Supermicro H8DGU-F (H8DGU_F) + * Supermicro X9DRi-F (X9DRI_F) + * Supermicro X9DRI-LN4F+ (X9DRI_LN4F_PLUS) + * Supermicro X9SPU-F-O (X9SPU_F_O) + * Supermicro X9SCM-iiF (X9SCM_IIF) + */ + +/* achu: not official names, named based on use context */ +#define IPMI_EVENT_READING_TYPE_CODE_OEM_SUPERMICRO_GENERIC 0x70 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_READING_TYPE_CODE_OEM_SUPERMICRO_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-inventec-spec.h new file mode 100644 index 00000000..77c7e551 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-inventec-spec.h @@ -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 . + * + */ + +#ifndef IPMI_LAN_CONFIGURATION_PARAMETERS_OEM_INVENTEC_SPEC_H +#define IPMI_LAN_CONFIGURATION_PARAMETERS_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ + +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_INVENTEC_DHCP_RETRY 192 + +/* w/ IPMI_LAN_CONFIGURATION_PARAMETER_OEM_INVENTEC_DHCP_RETRY */ +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_INVENTEC_DHCP_RETRY_NO_RETRIES 0x00 +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_INVENTEC_DHCP_RETRY_INDEFINITE_RETRY 0xFF + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_LAN_CONFIGURATION_PARAMETERS_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-wistron-spec.h new file mode 100644 index 00000000..731c633a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-lan-configuration-parameters-oem-wistron-spec.h @@ -0,0 +1,48 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_LAN_CONFIGURATION_PARAMETERS_OEM_WISTRON_SPEC_H +#define IPMI_LAN_CONFIGURATION_PARAMETERS_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_DHCP_RETRY 192 +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_LINK_STATUS_CHANGE_CONTROL 193 + +/* w/ IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_DHCP_RETRY */ +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_DHCP_RETRY_NO_RETRIES 0x00 +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_DHCP_RETRY_INDEFINITE_RETRY 0xFF + +/* w/ IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_LINK_STATUS_CHANGE_CONTROL */ +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_LINK_STATUS_CHANGE_CONTROL_BITMASK 0x80 +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_LINK_STATUS_CHANGE_CONTROL_SHIFT 7 + +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_LINK_STATUS_CHANGE_CONTROL_LINK_DOWN_RESILIENCE_ENABLED 1 +#define IPMI_LAN_CONFIGURATION_PARAMETER_OEM_WISTRON_LINK_STATUS_CHANGE_CONTROL_DHCP_RE_DISCOVERY_ENABLED 0 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_LAN_CONFIGURATION_PARAMETERS_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-dell-spec.h new file mode 100644 index 00000000..d72d82c4 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-dell-spec.h @@ -0,0 +1,47 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_NETFN_OEM_DELL_SPEC_H +#define IPMI_NETFN_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Dell Poweredge R610 + * Dell Poweredge R710 + * Dell Poweredge R720 + * Dell Poweredge C410x + */ +/* achu: not official names, named based on use context */ +#define IPMI_NET_FN_OEM_DELL_GENERIC_RQ 0x30 +#define IPMI_NET_FN_OEM_DELL_GENERIC_RS 0x31 + +/* + * Dell Poweredge C410x + */ +/* achu: not official names, named based on use context */ +#define IPMI_NET_FN_OEM_DELL_GENERIC_PORT_MAP_RQ 0x34 +#define IPMI_NET_FN_OEM_DELL_GENERIC_PORT_MAP_RS 0x35 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_DELL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-fujitsu-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-fujitsu-spec.h new file mode 100644 index 00000000..69307570 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-fujitsu-spec.h @@ -0,0 +1,36 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_NETFN_OEM_FUJITSU_SPEC_H +#define IPMI_NETFN_OEM_FUJITSU_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Fujitsu RX100 S5 + */ +#define IPMI_NET_FN_OEM_FUJITSU_GENERIC_RQ 0x30 +#define IPMI_NET_FN_OEM_FUJITSU_GENERIC_RS 0x31 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_FUJITSU_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-ibm-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-ibm-spec.h new file mode 100644 index 00000000..60dedfef --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-ibm-spec.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_NETFN_OEM_IBM_SPEC_H +#define IPMI_NETFN_OEM_IBM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * IBM x3455/x3755 + */ +/* achu: not official names, named based on use context */ +#define IPMI_NET_FN_OEM_IBM_LED_RQ 0x3A +#define IPMI_NET_FN_OEM_IBM_LED_RS 0x3B + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_IBM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-intel-spec.h new file mode 100644 index 00000000..79c519da --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-intel-spec.h @@ -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 . + * + */ + +#ifndef IPMI_NETFN_OEM_INTEL_SPEC_H +#define IPMI_NETFN_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Intel S5500WB/Penguin Computing Relion 700 + * Intel S2600JF/Appro 512X + */ + +/* achu: not official names, named based on use context */ +#define IPMI_NET_FN_OEM_INTEL_GENERIC_RQ 0x30 +#define IPMI_NET_FN_OEM_INTEL_GENERIC_RS 0x31 + +#define IPMI_NET_FN_OEM_INTEL_CONFIG_RQ 0x32 +#define IPMI_NET_FN_OEM_INTEL_CONFIG_RS 0x33 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-inventec-spec.h new file mode 100644 index 00000000..0d1d6a1b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-inventec-spec.h @@ -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 . + * + */ + +#ifndef IPMI_NETFN_OEM_INVENTEC_SPEC_H +#define IPMI_NETFN_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ +/* achu: not official names, named based on use context */ +#define IPMI_NET_FN_OEM_INVENTEC_GENERIC_RQ 0x30 +#define IPMI_NET_FN_OEM_INVENTEC_GENERIC_RS 0x31 + +#define IPMI_NET_FN_OEM_INVENTEC_SPECIFIC_RQ 0x34 +#define IPMI_NET_FN_OEM_INVENTEC_SPECIFIC_RS 0x35 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-quanta-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-quanta-spec.h new file mode 100644 index 00000000..b5c72cb8 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-quanta-spec.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_NETFN_OEM_QUANTA_SPEC_H +#define IPMI_NETFN_OEM_QUANTA_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Quanta S99Q/Dell FS12-TY + */ +/* achu: not official names, named based on use context */ +#define IPMI_NET_FN_OEM_QUANTA_GENERIC_RQ 0x30 +#define IPMI_NET_FN_OEM_QUANTA_GENERIC_RS 0x31 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_QUANTA_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-supermicro-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-supermicro-spec.h new file mode 100644 index 00000000..3d05b997 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-supermicro-spec.h @@ -0,0 +1,40 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_NETFN_OEM_SUPERMICRO_SPEC_H +#define IPMI_NETFN_OEM_SUPERMICRO_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Supermicro H8QME + */ +/* achu: not official names, named based on use context */ +#define IPMI_NET_FN_OEM_SUPERMICRO_GENERIC_RQ 0x30 +#define IPMI_NET_FN_OEM_SUPERMICRO_GENERIC_RS 0x31 + +#define IPMI_NET_FN_OEM_SUPERMICRO_PEPPERCON_RQ 0x3C +#define IPMI_NET_FN_OEM_SUPERMICRO_PEPPERCON_RS 0x3D + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_SUPERMICRO_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-wistron-spec.h new file mode 100644 index 00000000..df278ee7 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-netfn-oem-wistron-spec.h @@ -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 . + * + */ + +#ifndef IPMI_NETFN_OEM_WISTRON_SPEC_H +#define IPMI_NETFN_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +/* achu: not official names, named based on use context */ +#define IPMI_NET_FN_OEM_WISTRON_GENERIC_RQ 0x30 +#define IPMI_NET_FN_OEM_WISTRON_GENERIC_RS 0x31 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_NETFN_OEM_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-dell-spec.h new file mode 100644 index 00000000..0094898a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-dell-spec.h @@ -0,0 +1,1312 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_DELL_SPEC_H +#define IPMI_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Dell Poweredge R610 + * Dell Poweredge R710 + * Dell Poweredge R720 + * + * Support of below varies by system. Will be noted as appropriate. + */ + +/* w/ IPMI_CMD_OEM_DELL_GET_EXTENDED_CONFIGURATION / IPMI_CMD_OEM_DELL_SET_EXTENDED_CONFIGURATION */ +#define IPMI_OEM_DELL_TOKEN_ID_NIC_LINK_SETTING_GROUP 0x02 +#define IPMI_OEM_DELL_TOKEN_ID_RAC_USER_PRIVILEGE 0x04 +#define IPMI_OEM_DELL_TOKEN_ID_SNMP_GROUP 0x05 +#define IPMI_OEM_DELL_TOKEN_ID_DNS_AND_DDNS_GROUP 0x06 +#define IPMI_OEM_DELL_TOKEN_ID_AD_CONFIGURATION 0x07 +#define IPMI_OEM_DELL_TOKEN_ID_EMAIL_ALERT_CONFIGURATION 0x08 +#define IPMI_OEM_DELL_TOKEN_ID_SSL_CONFIGURATION 0x09 +#define IPMI_OEM_DELL_TOKEN_ID_SSH_CONFIGURATION 0x0A +#define IPMI_OEM_DELL_TOKEN_ID_TELNET_CONFIGURATION 0x0B +#define IPMI_OEM_DELL_TOKEN_ID_WEB_SERVER_CONFIGURATION 0x0C +#define IPMI_OEM_DELL_TOKEN_ID_CR_CONFIGURATION 0x0D +#define IPMI_OEM_DELL_TOKEN_ID_VM_CONFIGURATION 0x0E +#define IPMI_OEM_DELL_TOKEN_ID_RAC_INFO 0x0F +#define IPMI_OEM_DELL_TOKEN_ID_RAC_FW_UPDATE 0x10 +#define IPMI_OEM_DELL_TOKEN_ID_RAC_SERIAL_SHELL 0x11 +#define IPMI_OEM_DELL_TOKEN_ID_MISC 0x12 +#define IPMI_OEM_DELL_TOKEN_ID_OOB_SECURITY 0x13 +#define IPMI_OEM_DELL_TOKEN_ID_RAC_CONTROL 0x14 +#define IPMI_OEM_DELL_TOKEN_ID_RAC_LOG_FILES 0x15 +#define IPMI_OEM_DELL_TOKEN_ID_RAC_CERTIFICATE_FILES 0x16 +#define IPMI_OEM_DELL_TOKEN_ID_RAC_SESSION_INFO 0x17 +#define IPMI_OEM_DELL_TOKEN_ID_RAC_TIME 0x19 +#define IPMI_OEM_DELL_TOKEN_ID_RAC_SSAD_CONFIGURATION 0x1B +#define IPMI_OEM_DELL_TOKEN_ID_RAC_USER_CERT_FILES 0x1C +#define IPMI_OEM_DELL_TOKEN_ID_RAC_LOCAL_CONFIGURATION 0x1D +#define IPMI_OEM_DELL_TOKEN_ID_RAC_VKVM_CONFIGURATION 0x1E +#define IPMI_OEM_DELL_TOKEN_ID_IPV6_EXTENDED_GROUP 0x20 +#define IPMI_OEM_DELL_TOKEN_ID_IPV6_URL_GROUP 0x23 +#define IPMI_OEM_DELL_TOKEN_ID_ACTIVE_DIRECTORY_USER_DOMAIN_GROUP 0x24 +#define IPMI_OEM_DELL_TOKEN_ID_SMART_CARD_GROUP 0x25 +#define IPMI_OEM_DELL_TOKEN_ID_VMEDIA_SHARING_VIA_CMC 0x27 +/* achu: renamed in r720 docs, dunno why */ +#define IPMI_OEM_DELL_TOKEN_ID_REMOTE_FILE_SHARE IPMI_OEM_DELL_TOKEN_ID_VMEDIA_SHARING_VIA_CMC +#define IPMI_OEM_DELL_TOKEN_ID_REMOTE_SYSLOG 0x28 +#define IPMI_OEM_DELL_TOKEN_ID_GENERIC_LDAP_GROUP 0x29 +#define IPMI_OEM_DELL_TOKEN_ID_LDAP_ROLE_GROUP 0x2A +#define IPMI_OEM_DELL_TOKEN_ID_SSH_PK_GROUP 0x2B +#define IPMI_OEM_DELL_TOKEN_ID_AD_SRV_LOOKUP_GROUP 0x2D +#define IPMI_OEM_DELL_TOKEN_ID_CLOSE_RAC_SESSION_INFO 0x2E +#define IPMI_OEM_DELL_TOKEN_ID_IPV4_STATIC_EXTENDED_GROUP 0x30 +#define IPMI_OEM_DELL_TOKEN_ID_IPV6_STATIC_EXTENDED_GROUP 0x31 +#define IPMI_OEM_DELL_TOKEN_ID_STATIC_DNS_DOMAIN_NAME_GROUP 0x32 + +#define IPMI_OEM_DELL_TOKEN_VERSION 0x01 + +#define IPMI_OEM_DELL_TOKEN_DATA_MAX 65536 + +#define IPMI_OEM_DELL_TOKEN_STRING_MAX 255 + +/* IPMI over LAN has a max payload length of 255 total. So we round + * down to some reasonable guestimate of what is good. + */ +#define IPMI_OEM_DELL_TOKEN_WRITE_MAX 128 + +#define IPMI_OEM_DELL_TOKEN_DATA_COMMON_HEADER_LEN 5 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_READ_ALL_BYTES 0xFF + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IN_PROGRESS 0x00 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_LAST_TOKEN 0x01 + +/* w/ IPMI_OEM_DELL_TOKEN_ID_NIC_LINK_SETTING_GROUP + * + * dedicated nic full duplex - boolean + * dedicated nic auto negotiation - boolean + * dedicated nic 10b/100b/1000b - boolean (achu: uint8?) + * nic selection - uint8 + * nic enable - boolean + * ipv4 enable - boolean + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_DEDICATED_NIC_FULL_DUPLEX_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_DEDICATED_NIC_AUTO_NEGOTIATION_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_DEDICATED_NIC_BANDWIDTH_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_NIC_SELECTION_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_NIC_ENABLE_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_IPV4_ENABLE_MASK 0x0020 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_DEDICATED_NIC_FULL_DUPLEX_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_DEDICATED_NIC_AUTO_NEGOTIATION_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_DEDICATED_NIC_BANDWIDTH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_NIC_SELECTION_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_NIC_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_NIC_LINK_SETTING_GROUP_IPV4_ENABLE_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_USER_PRIVILEGE + * + * rac style privilege - uint32 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_USER_PRIVILEGE_RAC_STYLE_PRIVILEGE_MASK 0x0001 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_USER_PRIVILEGE_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_USER_PRIVILEGE_RAC_STYLE_PRIVILEGE_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_SNMP_GROUP + * + * snmp agent enable - boolean + * community name for get string length - uint8 + * community name for get string - 0-31 + * community name for set string length - uint8 + * community name for set string - 0-31 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SNMP_GROUP_SNMP_AGENT_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SNMP_GROUP_COMMUNITY_NAME_FOR_GET_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SNMP_GROUP_COMMUNITY_NAME_FOR_SET_MASK 0x0004 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SNMP_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_SNMP_GROUP_SNMP_AGENT_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SNMP_GROUP_COMMUNITY_NAME_FOR_GET_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SNMP_GROUP_COMMUNITY_NAME_FOR_SET_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_DNS_AND_DDNS_GROUP + * + * dns dhcp enable - boolean + * dnsserver1 - uint8 * 4 + * dnsserver2 - uint8 * 4 + * dnsregister rac - boolean + * dns rac name string length - uint8 + * dns rac name string - 0-63 + * dns domain name dhcp enable - boolean + * dns domain name string length - uint8 + * dns domain name string - 0-255 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_DHCP_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_SERVER_1_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_SERVER_2_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_REGISTER_RAC_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_RAC_NAME_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_DOMAIN_NAME_DHCP_ENABLE_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_DOMAIN_NAME_MASK 0x0040 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_DHCP_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_SERVER_1_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_SERVER_2_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_REGISTER_RAC_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_RAC_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_DOMAIN_NAME_DHCP_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_AND_DDNS_GROUP_DNS_DOMAIN_NAME_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_AD_CONFIGURATION + * + * ad enable - boolean + * ad timeout - uint32 + * ad root domain string length - uint8 + * ad root domain + * ad rac domain string length - uint8 + * ad rac domain string - 0-255 + * ad rac name string length - uint8 + * ad rac name string - 0-255 + * ad type - uint8 + * scl state - uint8 (drac5) + * crl state - uint8 (drac5) + * ad sso enable - boolean + * ad dc filter1 string length - uint8 + * ad dc filter1 string - 0-255 + * ad dc filter2 string length - uint8 + * ad dc filter2 string - 0-255 + * ad dc filter3 string length - uint8 + * ad dc filter3 string - 0-255 + * ad gc filter1 string length - uint8 + * ad gc filter1 string - 0-255 + * ad gc filter2 string length - uint8 + * ad gc filter2 string - 0-255 + * ad gc filter3 string length - uint8 + * ad gc filter3 string - 0-255 + * ad certificate validation enable - boolean + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_ENABLE_FIELD_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_TIMEOUT_FIELD_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_ROOT_DOMAIN_FIELD_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_RAC_DOMAIN_FIELD_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_RAC_NAME_FIELD_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_TYPE_FIELD_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_SCL_STATE_FIELD_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_CRL_STATE_FIELD_MASK 0x0080 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_SSO_ENABLE_FIELD_MASK 0x0100 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_DC_FILTER1_FIELD_MASK 0x0200 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_DC_FILTER2_FIELD_MASK 0x0400 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_DC_FILTER3_FIELD_MASK 0x0800 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_GC_FILTER1_FIELD_MASK 0x1000 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_GC_FILTER2_FIELD_MASK 0x2000 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_GC_FILTER3_FIELD_MASK 0x4000 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_CERTIFICATE_VALIDATION_ENABLE_FIELD_MASK 0x8000 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_ENABLE_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_TIMEOUT_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_ROOT_DOMAIN_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_RAC_DOMAIN_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_RAC_NAME_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_TYPE_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_SCL_STATE_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_CRL_STATE_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_SSO_ENABLE_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_DC_FILTER1_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_DC_FILTER2_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_DC_FILTER3_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_GC_FILTER1_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_GC_FILTER2_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_GC_FILTER3_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_AD_CERTIFICATE_VALIDATION_ENABLE_FIELD_MASK) + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_TYPE_EXTENDED 1 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_CONFIGURATION_TYPE_STANDARD 2 + +/* w/ IPMI_OEM_DELL_TOKEN_ID_EMAIL_ALERT_CONFIGURATION + * + * indexed 1-4 + * + * email alert enable - boolean + * email address string length - uint8 + * email address string - 0-63 + * email alert custon message string length - uint8 + * email alert custom message string - 0-31 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_EMAIL_ALERT_CONFIGURATION_EMAIL_ALERT_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_EMAIL_ALERT_CONFIGURATION_EMAIL_ADDRESS_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_EMAIL_ALERT_CONFIGURATION_EMAIL_ALERT_CUSTOM_MSG_MASK 0x0004 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_EMAIL_ALERT_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_EMAIL_ALERT_CONFIGURATION_EMAIL_ALERT_ENABLE \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_EMAIL_ALERT_CONFIGURATION_EMAIL_ADDRESS \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_EMAIL_ALERT_CONFIGURATION_EMAIL_ALERT_CUSTOM_MSG) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_SSL_CONFIGURATION + * + * csr key size - uint32 + * csr common name string length - uint8 + * csr comomn name string - 0-255 + * csr organization name string length - uint8 + * csr organization name string - 0-255 + * csr organization unit string length - uint8 + * csr organization unit string - 0-255 + * csr locality name string length - uint8 + * csr locality name string - 0-255 + * csr state name string length - uint8 + * csr state name string - 0-255 + * csr country code string length - uint8 + * csr country code string - 0-4 + * csr email address string length - uint8 + * csr email address string - 0-255 + * csr data set type - uint8 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_KEY_SIZE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_COMMON_NAME_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_ORGANIZATION_NAME_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_ORGANIZATION_UNIT_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_LOCALITY_NAME_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_STATE_NAME_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_COUNTRY_CODE_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_EMAIL_ADDRESS_MASK 0x0080 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_DATA_SET_TYPE_MASK 0x0100 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_KEY_SIZE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_COMMON_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_ORGANIZATION_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_ORGANIZATION_UNIT_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_LOCALITY_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_STATE_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_COUNTRY_CODE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_EMAIL_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSL_CONFIGURATION_CSR_DATA_SET_TYPE_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_SSH_CONFIGURATION + * + * ssh enable - boolean + * max connections - uint8 (read only) + * active connections - uint8 (read only) + * idle timeout - uint32 + * port number - uint16 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_ENABLE_FIELD_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_MAX_CONNECTIONS_FIELD_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_ACTIVE_CONNECTIONS_FIELD_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_IDLE_TIMEOUT_FIELD_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_PORT_NUMBER_FIELD_MASK 0x0010 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_ENABLE_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_MAX_CONNECTIONS_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_ACTIVE_CONNECTIONS_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_IDLE_TIMEOUT_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_CONFIGURATION_PORT_NUMBER_FIELD_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_TELNET_CONFIGURATION + * + * ssh enable - boolean + * max session - uint8 (read only) + * active session - uint8 (read only) + * session timeout - uint32 + * port number - uint16 + * 7fls backspace - boolean + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_ENABLE_FIELD_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_MAX_SESSIONS_FIELD_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_ACTIVE_SESSIONS_FIELD_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_SESSION_TIMEOUT_FIELD_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_PORT_NUMBER_FIELD_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_7FLS_BACKSPACE_FIELD_MASK 0x0020 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_ENABLE_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_MAX_SESSIONS_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_ACTIVE_SESSIONS_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_SESSION_TIMEOUT_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_PORT_NUMBER_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_TELNET_CONFIGURATION_7FLS_BACKSPACE_FIELD_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_WEB_SERVER_CONFIGURATION + * + * web server enable - boolean + * max sessions - uint8 (read only) + * active session - uint8 (read only) + * session timeout - uint32 + * http port num - uint16 + * https port num - uint16 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_ENABLE_FIELD_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_MAX_SESSIONS_FIELD_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_ACTIVE_SESSIONS_FIELD_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_SESSION_TIMEOUT_FIELD_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_HTTP_PORT_NUMBER_FIELD_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_HTTPS_PORT_NUMBER_FIELD_MASK 0x0020 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_ENABLE_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_MAX_SESSIONS_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_ACTIVE_SESSIONS_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_SESSION_TIMEOUT_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_HTTP_PORT_NUMBER_FIELD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_WEB_SERVER_CONFIGURATION_HTTPS_PORT_NUMBER_FIELD_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_CR_CONFIGURATION + * + * CR enable - boolean + * max sessions - uint8 + * active sessions - uint8 + * km portnum - uint16 + * cr encryption - boolean + * asr enable - boolean + * video portnum - uint16 + * local server video - boolean + * ie console use java - boolean + * authorize multiple sessions - uint8 (drac5 only) + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_CR_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_MAX_SESSIONS_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_ACTIVE_SESSIONS_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_KM_PORT_NUMBER_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_CR_ENCRYPTION_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_ASR_ENABLE_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_VIDEO_PORT_NUMBER_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_LOCAL_SERVER_VIDEO_MASK 0x0080 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_IE_CONSOLE_USE_JAVA_MASK 0x0100 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_AUTHORIZE_MULTIPLE_SESSIONS_MASK 0x0200 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_CR_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_MAX_SESSIONS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_ACTIVE_SESSIONS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_KM_PORT_NUMBER_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_CR_ENCRYPTION_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_ASR_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_VIDEO_PORT_NUMBER_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_LOCAL_SERVER_VIDEO_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_IE_CONSOLE_USE_JAVA_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CR_CONFIGURATION_AUTHORIZE_MULTIPLE_SESSIONS_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_VM_CONFIGURATION + * + * vm enable - uint8 (achu: boolean??) + * max sessions - uint8 + * active sessions - uint8 + * portnum - uint16 + * vm key enable - boolean + * ssl port num - uint16 + * vm image type - uint8 + * vm image path string length - uint8 + * vm image path string - 0-255 + * vm image filename string length - uint8 + * vm image filename string - 0-255 + * vm auto-eject enable - boolean + * vm floppy emul - boolean + * sd card read write status - boolean (read only) + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_MAX_SESSIONS_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_ACTIVE_SESSIONS_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_PORT_NUMBER_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_KEY_ENABLE_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_SSL_PORT_NUMBER_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_IMAGE_TYPE_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_IMAGE_PATH_MASK 0x0080 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_IMAGE_FILENAME_MASK 0x0100 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_AUTO_EJECT_ENABLE_MASK 0x0200 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_FLOPPY_EMUL_MASK 0x0400 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_SD_CARD_READ_WRITE_STATUS_MASK 0x0800 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_MAX_SESSIONS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_ACTIVE_SESSIONS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_PORT_NUMBER_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_KEY_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_SSL_PORT_NUMBER_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_IMAGE_TYPE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_IMAGE_PATH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_IMAGE_FILENAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_AUTO_EJECT_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_VM_FLOPPY_EMUL_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VM_CONFIGURATION_SD_CARD_READ_WRITE_STATUS_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_INFO + * + * rac name string length - uint8 + * rac name string - 0-31 + * rac description string length - uint8 + * rac description string - 0-255 + * rac type string length - uint8 + * rac type string - 1-10 + * rac product info string length - uint8 + * rac product info string - 0-63 + * rac hw version string length - uint8 + * rac hw version string - 0-10 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_NAME_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_DESCRIPTION_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_TYPE_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_PRODUCT_INFO_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_HW_VERSION_MASK 0x0010 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_DESCRIPTION_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_TYPE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_PRODUCT_INFO_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_INFO_RAC_HW_VERSION_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_FW_UPDATE + * + * version string length - uint8 + * version string - 0-16 + * build number string length - uint8 + * build number string - 0-131 + * tftp fw update enable - boolean + * tftp fw update ip address - uint8 * 4 + * tftp fw update path string length - uint8 + * tftp fw update path string - 0-255 + * last fw update time string length - uint8 + * last fw update time string - 0-32 + * tftp server address string length - uint8 + * tftp server address string - 0-39 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_VERSION_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_BUILD_NUMBER_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_TFTP_FW_UPDATE_ENABLE_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_TFTP_FW_UPDATE_IP_ADDRESS_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_TFTP_FW_UPDATE_PATH_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_LAST_FW_UPDATE_PATH_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_TFTP_SERVER_ADDRESS_MASK 0x0040 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_VERSION_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_BUILD_NUMBER_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_TFTP_FW_UPDATE_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_TFTP_FW_UPDATE_IP_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_TFTP_FW_UPDATE_PATH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_LAST_FW_UPDATE_PATH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_FW_UPDATE_TFTP_SERVER_ADDRESS_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_SERIAL_SHELL + * + * enable - boolean + * shell type - uint8 + * com2 redirect enable - boolean + * sessions timeout - uint32 + * baud rate - uint32 + * console no auth - boolean + * escape key string length - uint8 + * escape key string - 0-31 + * history buffer size - uint32 + * login cmd string length - uint8 (achu: doc says uint32, doubt it) + * login cmd string - 0-128 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_SHELL_TYPE_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_COM2_REDIRECT_ENABLE_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_SESSION_TIMEOUT_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_BAUD_RATE_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_CONSOLE_NO_AUTH_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_ESCAPE_KEY_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_HISTORY_BUFFER_SIZE_MASK 0x0080 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_LOGIN_CMD_MASK 0x0100 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_SHELL_TYPE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_COM2_REDIRECT_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_SESSION_TIMEOUT_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_BAUD_RATE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_CONSOLE_NO_AUTH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_ESCAPE_KEY_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_HISTORY_BUFFER_SIZE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SERIAL_SHELL_LOGIN_CMD_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_MISC + * + * remote racadm enable - boolean + * smtp sever ip address - uint8 * 4 (obsolete) + * remote racadm max sessions - uint8 + * remote racadm session timeout - uint32 + * smtp server ipv4/ipv6/dns address string length + * smtp server ipv4/ipv6/dns address string - 0-255 + * smtp alerting source email name string length - uint8 + * smtp alerting source email name string - 0-255 + * lc drive enable - boolean + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_REMOTE_RACADM_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_SMTP_SERVER_IP_ADDRESS_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_REMOTE_RACADM_MAX_SESSIONS_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_REMOTE_RACADM_SESSION_TIMEOUT_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_SMTP_SERVER_ADDRESS_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_SMTP_ALERTING_SOURCE_EMAIL_NAME_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_LC_DRIVE_ENABLE 0x0040 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_REMOTE_RACADM_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_SMTP_SERVER_IP_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_REMOTE_RACADM_MAX_SESSIONS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_REMOTE_RACADM_SESSION_TIMEOUT_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_SMTP_SERVER_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_SMTP_ALERTING_SOURCE_EMAIL_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_MISC_LC_DRIVE_ENABLE) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_OOB_SECURITY + * + * enforced client ip enable - boolean + * enforced client ip address - uint8 * 4 + * enforced client ip mask - uint8 * 4 + * enforced ip block enable - boolean + * enforced ip block failure count - uint8 + * enforce dip block failure window - uint32 + * enforced ip block penalty time - uint32 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_CLIENT_IP_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_CLIENT_IP_ADDRESS_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_CLIENT_IP_MASK_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_IP_BLOCK_ENABLE_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_IP_BLOCK_FAILURE_COUNT_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_IP_BLOCK_FAILURE_WINDOW_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_IP_BLOCK_PENALTY_TIME_MASK 0x0040 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_CLIENT_IP_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_CLIENT_IP_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_CLIENT_IP_MASK_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_IP_BLOCK_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_IP_BLOCK_FAILURE_COUNT_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_IP_BLOCK_FAILURE_WINDOW_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_OOB_SECURITY_ENFORCED_IP_BLOCK_PENALTY_TIME_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_CONTROL + * + * indexed ?-? + * + * control command - uint8 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_MASK 0x0001 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_MASK) + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_HARD_RESET 1 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_SOFT_RESET 2 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_GRACEFUL_RESET 3 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_RESET_CONFIG_TO_DEFAULT 4 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_CLEAR_RACLOG 5 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_CLEAR_COREDUMP 6 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_START_FIRMWARE_UPDATE_PHASE1 7 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_START_FIRMWARE_UPDATE_PHASE2 8 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_TEST_EMAIL_ALERT 9 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_GENERATES_CSR 10 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_CLEAR_ASR_SCREEN 11 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_VM_DISCONNECT 12 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_RESET_RAC_CONFIG 13 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_START_TFTP_FWUPDATE 14 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_RESET_VM_KEYSIZE 15 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_GENERATES_KMC_SELF_ASSIGNED_CERTIFICATE 16 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_GENERATES_KMC_CSR 17 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CONTROL_CONTROL_COMMAND_RAC_RESET_SSL_CERTIFICATE 18 + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_LOG_FILES + * + * data - uint8 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOG_FILES_DATA_MASK 0x0001 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOG_FILES_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOG_FILES_DATA_MASK) + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOG_FILES_RACLOG_FILE 1 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOG_FILES_COREDUMP_FILE 2 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOG_FILES_TRACELOG_FILE 3 + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_CERTIFICATE_FILES + * + * indexed ?-? + * + * data - uint8 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_DATA_MASK 0x0001 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_DATA_MASK) + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_SERVER_CERTIFICATE_FILE 1 /* r/w */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_CA_CERTIFICATE_FILE 2 /* r/w */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_CSR_FILE 3 /* r */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_CSR_STATUS 4 /* r */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_SERVER_CERTIFICATE_FORMATTED_VIEW 5 /* r */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_CA_CERTIFICATE_FORMATTED_VIEW 6 /* r */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_CA_CERTIFICATE_FILE_FOR_GENERIC_LDAP 7 /* r/w */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_CA_CERTIFICATE_FILE_FOR_GENERIC_LDAP_FORMATTED_VIEW 8 /* r */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_KERBEROS_KEYTAB_UPLOAD 9 /* r */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_KMS_SERVER_CERTIFICATE 10 /* r/w */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_KMS_CA_SERVER_CERTIFICATE 11 /* r/w */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_KMS_SERVER_CERTIFICATE_FORMATTED_VIEW 12 /* r */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_CERTIFICATE_FILES_KMS_CA_CERTIFICATE_FORMATTED_VIEW 13 /* r */ + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_SESSION_INFO + * + * login time - uint32 + * client ipv4 - uint8 * 4 + * associated console - uint8 + * login user id string length - uint8 + * login user id string - 0-255 + * client ipv6/ipv4 address string length - uint8 + * client ipv5/ipv4 address string - 0-39 + * session id uint16 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_SESSION_TYPE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_LOGIN_TIME_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_CLIENT_IPV4_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_ASSOCIATED_CONSOLE_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_LOGIN_USER_ID_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_CLIENT_IP_ADDRESS_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_SESSION_ID_MASK 0x0040 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_SESSION_TYPE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_LOGIN_TIME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_CLIENT_IPV4_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_ASSOCIATED_CONSOLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_LOGIN_USER_ID_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_CLIENT_IP_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SESSION_INFO_SESSION_ID_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_TIME + * + * time zone - int32 (minutes west of greenwich) + * daylight saving - uint8 (adjust minutes) + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_TIME_TIME_ZONE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_TIME_DAYLIGHT_SAVING_MASK 0x0002 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_TIME_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_TIME_TIME_ZONE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_TIME_DAYLIGHT_SAVING_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_SSAD_CONFIGURATION + * + * ssad role group name string length - uint8 + * ssad role group name string - 0-255 + * ssad role group domain string length - uint8 + * ssad role group domain string - 0-255 + * ssad role group privilege - uint32 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SSAD_CONFIGURATION_SSAD_ROLE_GROUP_NAME_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SSAD_CONFIGURATION_SSAD_ROLE_GROUP_DOMAIN_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SSAD_CONFIGURATION_SSAD_ROLE_GROUP_PRIVILEGE_MASK 0x0004 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SSAD_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SSAD_CONFIGURATION_SSAD_ROLE_GROUP_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SSAD_CONFIGURATION_SSAD_ROLE_GROUP_DOMAIN_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_SSAD_CONFIGURATION_SSAD_ROLE_GROUP_PRIVILEGE_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_USER_CERT_FILES + * + * data - uint8 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_USER_CERT_FILES_DATA_MASK 0x0001 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_USER_CERT_FILES_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_USER_CERT_FILES_DATA_MASK) + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_USER_CERT_FILES_SERVER_CERTIFICATE_FILE 1 /* r/w */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_USER_CERT_FILES_CA_CERTIFICATE_FILE 2 /* r/w */ +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_LOCAL_CONFIGURATION + * + * bbb config disable - boolean + * local config disable - boolean + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOCAL_CONFIGURATION_BBB_CONFIG_DISABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOCAL_CONFIGURATION_LOCAL_CONFIG_DISABLE_MASK 0x0002 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOCAL_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOCAL_CONFIGURATION_BBB_CONFIG_DISABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_LOCAL_CONFIGURATION_LOCAL_CONFIG_DISABLE_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_RAC_VKVM_CONFIGURATION + * + * cr local consred disable - boolean + * cr post consred disable - boolean + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_VKVM_CONFIGURATION_CR_LOCAL_CONSRED_DISABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_VKVM_CONFIGURATION_CR_POST_CONSRED_DISABLE_MASK 0x0002 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_VKVM_CONFIGURATION_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_VKVM_CONFIGURATION_CR_LOCAL_CONSRED_DISABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_RAC_VKVM_CONFIGURATION_CR_POST_CONSRED_DISABLE_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_IPV6_EXTENDED_GROUP + * + * ipv6 enable - boolean + * ipv6 addr string length - uint8 + * ipv6 addr string - 0-39 + * ipv6 gateway ip string length - uint8 + * ipv6 gateway ip string - 0-39 + * ipv6 prefix lenth - uint8 + * ipv6 auto config - boolean + * ipv6 link local addr string length - uint8 + * ipv6 link locl address string - 0-39 (read only) + * ipv6 addr2 string length - uint8 + * ipv6 addr2 string 0 0-39 (read only) + * ipv6 auto dns - uin8 (achu: boolean??) + * ipv6 dns server1 address string length - uint8 + * ipv6 dns server1 address string - 0-39 + * ipv6 dns server2 address string length - uint8 + * ipv6 dns server2 address string - 0-39 + * reserved - uint8 + * ipv6 addr2 prefix length - uint8 (read only) + * ipv6 link local prefix length - uint8 (read only) + * reserved - uint8 * 12 + * total number of extended ip - uint8 (read only) + * ipv6 extended addr X prefix length - uint8 (read only) + * ipv6 extended addr X string length - uint8 (read only) + * ipv6 extended addr X string - 0-39 + * + * achu: doc says 1-13 extended address possible. have to use index? + * unclear. + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_ADDRESS_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_GATEWAYY_IP_ADDRESS_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_PREFIX_LENGTH_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_AUTO_CONFIG_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_LINK_LOCAL_ADDRESS_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_ADDRESS2_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_AUTO_DNS_MASK 0x0080 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_DNS_SERVER1_ADDRESS_MASK 0x0100 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_DNS_SERVER2_ADDRESS_MASK 0x0200 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_ADDRESS2_PREFIX_LENGTH_MASK 0x0400 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_LINK_LOCAL_PREFIX_LENGTH_MASK 0x0800 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_TOTAL_NUMBER_OF_EXTENDED_IP_MASK 0x1000 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_EXTENDED_ADDRESS_X_PREFIX_LENGTH_MASK 0x2000 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_EXTENDED_ADDRESS_X_MASK 0x4000 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_GATEWAYY_IP_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_PREFIX_LENGTH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_AUTO_CONFIG_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_LINK_LOCAL_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_ADDRESS2_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_AUTO_DNS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_DNS_SERVER1_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_DNS_SERVER2_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_ADDRESS2_PREFIX_LENGTH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_LINK_LOCAL_PREFIX_LENGTH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_TOTAL_NUMBER_OF_EXTENDED_IP_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_EXTENDED_ADDRESS_X_PREFIX_LENGTH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_EXTENDED_GROUP_IPV6_EXTENDED_ADDRESS_X_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_IPV6_URL_GROUP + * + * ldrac ipv6 url string length - uint8 + * ldrac ipv6 url string - 0-80 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_URL_GROUP_LDRAC_IPV6_URL_MASK 0x0001 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_URL_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_URL_GROUP_LDRAC_IPV6_URL_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_ACTIVE_DIRECTORY_USER_DOMAIN_GROUP + * + * indexed 1-40 + * + * ad user domain name string length - uint8 + * ad user domain name string - 0-255 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_ACTIVE_DIRECTORY_USER_DOMAIN_GROUP_AD_USER_DOMAIN_NAME_MASK 0x0001 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_ACTIVE_DIRECTORY_USER_DOMAIN_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_ACTIVE_DIRECTORY_USER_DOMAIN_GROUP_AD_USER_DOMAIN_NAME_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_SMART_CARD_GROUP + * + * scl state - uint8 (0,1,2) + * crl state - uint8 + * + * used only by ldrac (achu: what is ldrac?) + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SMART_CARD_GROUP_SCL_STATE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SMART_CARD_GROUP_CRL_STATE_MASK 0x0002 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SMART_CARD_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_SMART_CARD_GROUP_SCL_STATE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SMART_CARD_GROUP_CRL_STATE_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_VMEDIA_SHARING_VIA_CMC + * + * status - boolean - 0 = disconnect, 1 = connect + * image type - uint8 - 0 = use file extensions, 1 = floppy, 2 = cd + * user name string length - uint8 + * user name string - 0-255 + * password string length - uint8 + * password string - 0-255 + * share and image name string length - uint16 + * share and image name string - 0-511 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_STATUS_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_IMAGE_TYPE_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_USER_NAME_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_PASSWORD_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_SHARE_AND_IMAGE_NAME_MASK 0x0010 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_STATUS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_IMAGE_TYPE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_USER_NAME_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_PASSWORD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_SHARE_AND_IMAGE_NAME_MASK) + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_STATUS_DISCONNECT 0 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_STATUS_CONNECT 1 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_IMAGE_TYPE_USE_FILE_EXTENSIONS 0 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_IMAGE_TYPE_FLOPPY 1 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_VMEDIA_SHARING_VIA_CMC_IMAGE_TYPE_CD 2 + +/* w/ IPMI_OEM_DELL_TOKEN_ID_REMOTE_SYSLOG + * + * remote syslog enable - boolean + * syslog port number - uint16 + * remote syslog server1 string length - uint16 + * remote syslog server1 string - 0-256 + * remote syslog server2 string length - uint16 + * remote syslog server2 string - 0-256 + * remote syslog server3 string length - uint16 + * remote syslog server3 string - 0-256 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_REMOTE_SYSLOG_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_SYSLOG_PORT_NUMBER_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_REMOTE_SYSLOG_SERVER1_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_REMOTE_SYSLOG_SERVER2_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_REMOTE_SYSLOG_SERVER3_MASK 0x0010 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_REMOTE_SYSLOG_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_SYSLOG_PORT_NUMBER_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_REMOTE_SYSLOG_SERVER1_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_REMOTE_SYSLOG_SERVER2_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_REMOTE_SYSLOG_REMOTE_SYSLOG_SERVER3_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_GENERIC_LDAP_GROUP + * + * ldap enable - boolean + * ldap server string length - uint16 + * ladp server string - 0-1023 + * ldap port - uint16 + * ldap base dn string length - uint8 + * ldap base dn string - 0-253 + * ldap user attribute string length - uint8 + * ldap user attribute string - 0-253 + * ldap group attribute string length - uint8 + * ldap group attribute string - 0-253 + * ldap group attribute ls dn - boolean (achu: ??) + * ldap bind dn string length - uint8 + * ldap bind dn string - 0-253 + * ldap bind password string length - uint8 + * ldap bind password string - 0-253 + * ldap search filter string length - uint16 + * ldap search filter string - 0-1023 + * + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_SERVER_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_PORT_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_BASE_DN_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_USER_ATTRIBUTE_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_GROUP_ATTRIBUTE_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_ATTRIBUTE_LS_DN_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_BIND_DN_MASK 0x0080 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_BIND_PASSWORD_MASK 0x0100 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_SEARCH_FILTER_MASK 0x0200 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_SERVER_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_PORT_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_BASE_DN_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_USER_ATTRIBUTE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_GROUP_ATTRIBUTE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_ATTRIBUTE_LS_DN_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_BIND_DN_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_BIND_PASSWORD_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_GENERIC_LDAP_GROUP_LDAP_SEARCH_FILTER_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_LDAP_ROLE_GROUP + * + * indexed 1-5 + * + * ldap role group dn string length - uint16 + * ldap role group dn string - 0-1023 + * ldap role group privilege - uint32 (0x00000000 - 0x000001FF) + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_LDAP_ROLE_GROUP_LDAP_ROLE_GROUP_DN_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_LDAP_ROLE_GROUP_LDAP_ROLE_GROUP_PRIVILEGE_MASK 0x0002 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_LDAP_ROLE_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_LDAP_ROLE_GROUP_LDAP_ROLE_GROUP_DN_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_LDAP_ROLE_GROUP_LDAP_ROLE_GROUP_PRIVILEGE_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_SSH_PK_GROUP + * + * indexed 2-16 + * + * pk key number delete - uint8 (range 1-4) + * pk key text string1 length - uint16 + * pk key text string1 - 0-1023 + * pk key text string2 length - uint16 + * pk key text string2 - 0-1023 + * pk key text string3 length - uint16 + * pk key text string3 - 0-1023 + * pk key text string4 length - uint16 + * pk key text string4 - 0-1023 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_NUMBER_DELETE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_TEXT1_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_TEXT2_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_TEXT3_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_TEXT4_MASK 0x0010 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_NUMBER_DELETE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_TEXT1_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_TEXT2_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_TEXT3_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_SSH_PK_GROUP_PK_KEY_TEXT4_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_AD_SRV_LOOKUP_GROUP + * + * addc srv lookup enable - uint8 (achu: boolean??) + * addc srv lookup by userdomain - uint8 (achu: boolean??) + * addc srv lookup domain name string length - uint8 + * addc srv lookup domain name string - 0-255 + * adgc srv lookup enable - uint8 (achu: boolean??) + * adgc srv root domain string length - uint8 + * adgc srv root domain string - 0-255 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADDC_SRV_LOOKUP_ENABLE 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADDC_SRV_LOOKUP_BY_USERDOMAIN 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADDC_SRV_LOOKUP_DOMAIN_NAME 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADGC_SRV_LOOKUP_ENABLE 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADGC_ROOT_DOMAIN 0x0010 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADDC_SRV_LOOKUP_ENABLE \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADDC_SRV_LOOKUP_BY_USERDOMAIN \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADDC_SRV_LOOKUP_DOMAIN_NAME \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADGC_SRV_LOOKUP_ENABLE \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_AD_SRV_LOOKUP_GROUP_ADGC_ROOT_DOMAIN) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_CLOSE_RAC_SESSION_INFO + * + * session id - uint16 + * login user id string length - uint8 + * login user id string - 0-255 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CLOSE_RAC_SESSION_INFO_SESSION_ID_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CLOSE_RAC_SESSION_INFO_LOGIN_USER_ID_MASK 0x0002 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_CLOSE_RAC_SESSION_INFO_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_CLOSE_RAC_SESSION_INFO_SESSION_ID_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_CLOSE_RAC_SESSION_INFO_LOGIN_USER_ID_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_IPV4_STATIC_EXTENDED_GROUP + * + * ipv4 static enable - boolean + * ipv4 static dhcp enable - boolean + * ipv4 static address - uint8 * 4 + * ipv4 static netmask - uint8 * 4 + * ipv4 static gateway ip address - uint8 * 4 + * ipv4 static auto dns - boolean + * ipv4 static dns server1 address - uint8 * 4 + * ipv4 static dns server2 address - uint8 * 4 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_DHCP_ENABLE_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_ADDRESS_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_NETMASK_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_GATEWAY_IP_ADDRESS_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_AUTO_DNS_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_DNS_SERVER1_ADDRESS_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_DNS_SERVER2_ADDRESS_MASK 0x0080 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_DHCP_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_NETMASK_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_GATEWAY_IP_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_AUTO_DNS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_DNS_SERVER1_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV4_STATIC_EXTENDED_GROUP_IPV4_STATIC_DNS_SERVER2_ADDRESS_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_IPV6_STATIC_EXTENDED_GROUP + * + * ipv6 static enable - boolean + * ipv6 static auto config - boolean + * ipv6 static address string length - uint8 + * ipv6 static address string - 0-39 + * ipv6 static gateway ip address string length - uint8 + * ipv6 static gateway ip address string - 0-39 + * ipv6 static prefix length - uint8 + * ipv6 static auto dns - uint8 + * ipv6 static dns server1 address string length - uint8 + * ipv6 static dns server1 address string - 0-39 + * ipv6 static dns server2 address string length - uint8 + * ipv6 static dns server2 address string - 0-39 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_AUTO_CONFIG_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_ADDRESS_STRING_MASK 0x0004 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_GATEWAY_IP_ADDRESS_STRING_MASK 0x0008 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_PREFIX_LENGTH_MASK 0x0010 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_AUTO_DNS_MASK 0x0020 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_DNS_SERVER1_ADDRESS_MASK 0x0040 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_DNS_SERVER2_ADDRESS_MASK 0x0080 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_AUTO_CONFIG_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_ADDRESS_STRING_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_GATEWAY_IP_ADDRESS_STRING_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_PREFIX_LENGTH_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_AUTO_DNS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_DNS_SERVER1_ADDRESS_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_IPV6_STATIC_EXTENDED_GROUP_IPV6_STATIC_DNS_SERVER2_ADDRESS_MASK) + +/* w/ IPMI_OEM_DELL_TOKEN_ID_STATIC_DNS_DOMAIN_NAME_GROUP + * + * nic static enable - boolean + * nic static domain name dhcp enable - boolean + * nic static domain name string length - uint8 + * nic static domain name string - 0-255 + */ +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_DOMAIN_NAME_GROUP_NIC_STATIC_ENABLE_MASK 0x0001 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_DOMAIN_NAME_GROUP_NIC_STATIC_DHCP_ENABLE_MASK 0x0002 +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_DOMAIN_NAME_GROUP_NIC_STATIC_DOMAIN_NAME_MASK 0x0004 + +#define IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_DOMAIN_NAME_GROUP_ALL_FIELD_MASK \ + (IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_DOMAIN_NAME_GROUP_NIC_STATIC_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_DOMAIN_NAME_GROUP_NIC_STATIC_DHCP_ENABLE_MASK \ + | IPMI_OEM_DELL_EXTENDED_CONFIG_DNS_DOMAIN_NAME_GROUP_NIC_STATIC_DOMAIN_NAME_MASK) + +/* w/ IPMI_CMD_OEM_DELL_RESET_TO_DEFAULTS */ +#define IPMI_OEM_DELL_RESET_TO_DEFAULTS_GET_STATUS 0x00 +#define IPMI_OEM_DELL_RESET_TO_DEFAULTS_INITIATE_RESULT_TO_DEFAULTS 0xAA + +#define IPMI_OEM_DELL_RESET_TO_DEFAULTS_IN_PROGRESS 0x00 +#define IPMI_OEM_DELL_RESET_TO_DEFAULTS_COMPLETE 0x01 + +/* w/ IPMI_CMD_OEM_DELL_SET_NIC_SELECTION / IPMI_CMD_OEM_DELL_GET_NIC_SELECTION */ +#define IPMI_OEM_DELL_NIC_SELECTION_SHARED 0x00 +#define IPMI_OEM_DELL_NIC_SELECTION_SHARED_WITH_FAILOVER_TO_NIC2 0x01 +#define IPMI_OEM_DELL_NIC_SELECTION_DEDICATED 0x02 +#define IPMI_OEM_DELL_NIC_SELECTION_SHARED_WITH_FAILOVER_TO_ALL_NICS 0x03 + +/* w/ IPMI_CMD_OEM_DELL_QUERY_CHASSIS_IDENTIFY_STATUS */ +#define IPMI_OEM_DELL_QUERY_CHASSIS_IDENTIFY_STATUS_OFF 0x00 +#define IPMI_OEM_DELL_QUERY_CHASSIS_IDENTIFY_STATUS_ON 0x01 + +/* w/ IPMI_CMD_OEM_DELL_GET_ACTIVE_LOM_STATUS */ +#define IPMI_OEM_DELL_GET_ACTIVE_LOM_STATUS_GET_STATUS 0x00 +#define IPMI_OEM_DELL_GET_ACTIVE_LOM_STATUS_LINK_STATUS 0x01 +#define IPMI_OEM_DELL_GET_ACTIVE_LOM_STATUS_LINK_SPEED 0x02 +#define IPMI_OEM_DELL_GET_ACTIVE_LOM_STATUS_LINK_MODE 0x03 + +#define IPMI_OEM_DELL_LOM_STATUS_NO_ACTIVE_LOM 0x00 +#define IPMI_OEM_DELL_LOM_STATUS_LOM_1 0x01 +#define IPMI_OEM_DELL_LOM_STATUS_LOM_2 0x02 +#define IPMI_OEM_DELL_LOM_STATUS_LOM_3 0x03 +#define IPMI_OEM_DELL_LOM_STATUS_LOM_4 0x04 +#define IPMI_OEM_DELL_LOM_STATUS_DEDICATED 0x05 +#define IPMI_OEM_DELL_LOM_STATUS_UNKNOWN 0xFF + +#define IPMI_OEM_DELL_LOM_LINK_STATUS_BITMASK 0x0F +#define IPMI_OEM_DELL_LOM_LINK_STATUS_SHIFT 0 + +#define IPMI_OEM_DELL_LOM_LINK_STATUS_NO_LINK 0 +#define IPMI_OEM_DELL_LOM_LINK_STATUS_LINK_PRESENT 1 + +#define IPMI_OEM_DELL_LOM_LINK_SPEED_BITMASK 0x0F +#define IPMI_OEM_DELL_LOM_LINK_SPEED_SHIFT 0 + +#define IPMI_OEM_DELL_LOM_LINK_SPEED_10MBPS 0x00 +#define IPMI_OEM_DELL_LOM_LINK_SPEED_100MBPS 0x01 +#define IPMI_OEM_DELL_LOM_LINK_SPEED_1GBPS 0x02 +#define IPMI_OEM_DELL_LOM_LINK_SPEED_UNKNOWN 0x0F + +#define IPMI_OEM_DELL_LOM_LINK_MODE_BITMASK 0x0F +#define IPMI_OEM_DELL_LOM_LINK_MODE_SHIFT 0 + +#define IPMI_OEM_DELL_LOM_LINK_MODE_HALF_DUPLEX 0x00 +#define IPMI_OEM_DELL_LOM_LINK_MODE_FULL_DUPLEX 0x01 +#define IPMI_OEM_DELL_LOM_LINK_MODE_UNKNOWN 0x0F + +/* w/ IPMI_CMD_OEM_DELL_RESET_POWER_CONSUMPTION_DATA */ +#define IPMI_OEM_DELL_RESET_POWER_CONSUMPTION_DATA_CUMULATIVE 0x01 +#define IPMI_OEM_DELL_RESET_POWER_CONSUMPTION_DATA_PEAK 0x02 +#define IPMI_OEM_DELL_RESET_POWER_CONSUMPTION_DATA_ALL 0x04 + +/* w/ IPMI_CMD_OEM_DELL_POWER_SUPPLY_INFO */ +#define IPMI_OEM_DELL_POWER_SUPPLY_INFO_AC 0x00 +#define IPMI_OEM_DELL_POWER_SUPPLY_INFO_DC 0x01 + +/* w/ IPMI_CMD_OEM_DELL_POWER_CONSUMPTION */ +#define IPMI_OEM_DELL_POWER_CONSUMPTION_ENTITY_INSTANCE_ALL 0x00 + +/* w/ IPMI_CMD_OEM_DELL_POWER_CAPACITY_STATUS */ +#define IPMI_OEM_DELL_GET_POWER_CAPACITY_STATUS_BITMASK 0x01 +#define IPMI_OEM_DELL_GET_POWER_CAPACITY_STATUS_SHIFT 0 + +#define IPMI_OEM_DELL_GET_POWER_CAPACITY_IS_SETTABLE_BITMASK 0x02 +#define IPMI_OEM_DELL_GET_POWER_CAPACITY_IS_SETTABLE_SHIFT 1 + +#define IPMI_OEM_DELL_SET_POWER_CAPACITY_STATUS_ENABLE 0x01 +#define IPMI_OEM_DELL_SET_POWER_CAPACITY_STATUS_DISABLE 0x00 + +/* + * Dell Poweredge R720 + */ + +/* w/ IPMI_CMD_OEM_DELL_GET_BLADE_SLOT_ID */ +#define IPMI_OEM_DELL_SLEEVE_BASED_BLADE_BITMASK 0x80 +#define IPMI_OEM_DELL_SLEEVE_BASED_BLADE_SHIFT 7 + +#define IPMI_OEM_DELL_BLADE_SLOT_NUMBER_BITMASK 0x3F +#define IPMI_OEM_DELL_BLADE_SLOT_NUMBER_SHIFT 0 + +#define IPMI_OEM_DELL_SLEEVE_BASED_BLADE_YES 1 +#define IPMI_OEM_DELL_SLEEVE_BASED_BLADE_NO 0 + +#define IPMI_OEM_DELL_SLEEVE_A_RANGE_MIN 1 +#define IPMI_OEM_DELL_SLEEVE_A_RANGE_MAX 8 + +#define IPMI_OEM_DELL_SLEEVE_B_RANGE_MIN 17 +#define IPMI_OEM_DELL_SLEEVE_B_RANGE_MAX 24 + +#define IPMI_OEM_DELL_SLEEVE_C_RANGE_MIN 9 +#define IPMI_OEM_DELL_SLEEVE_C_RANGE_MAX 16 + +#define IPMI_OEM_DELL_SLEEVE_D_RANGE_MIN 25 +#define IPMI_OEM_DELL_SLEEVE_D_RANGE_MAX 32 + +/* w/ IPMI_CMD_OEM_DELL_SET_NIC_SELECTION_FAILOVER + * IPMI_CMD_OEM_DELL_GET_NIC_SELECTION_FAILOVER + */ +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_NIC_DEDICATED 0x01 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_NIC_LOM1 0x02 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_NIC_LOM2 0x03 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_NIC_LOM3 0x04 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_NIC_LOM4 0x05 + +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_FAILOVER_NONE 0x00 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_FAILOVER_LOM1 0x02 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_FAILOVER_LOM2 0x03 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_FAILOVER_LOM3 0x04 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_FAILOVER_LOM4 0x05 +#define IPMI_OEM_DELL_NIC_SELECTION_FAILOVER_FAILOVER_ALL 0x06 + +/* w/ IPMI_CMD_OEM_DELL_POWER_MONITORING_OVER_A_SPECIFIED_AVERAGING_INTERVAL2 + * IPMI_CMD_OEM_DELL_POWER_MONITORING_AVERAGING_INTERVAL_RANGE2 + */ +#define IPMI_OEM_DELL_POWER_MONITORING_SYSTEM_POWER 0x00 +#define IPMI_OEM_DELL_POWER_MONITORING_CPU1_SUBSYSTEM 0x01 +#define IPMI_OEM_DELL_POWER_MONITORING_CPU2_SUBSYSTEM 0x02 +#define IPMI_OEM_DELL_POWER_MONITORING_CPU3_SUBSYSTEM 0x03 +#define IPMI_OEM_DELL_POWER_MONITORING_CPU4_SUBSYSTEM 0x04 +#define IPMI_OEM_DELL_POWER_MONITORING_MEMORY_POWER_OF_CPU_DOMAIN1 0x05 +#define IPMI_OEM_DELL_POWER_MONITORING_MEMORY_POWER_OF_CPU_DOMAIN2 0x06 +#define IPMI_OEM_DELL_POWER_MONITORING_MEMORY_POWER_OF_CPU_DOMAIN3 0x07 +#define IPMI_OEM_DELL_POWER_MONITORING_MEMORY_POWER_OF_CPU_DOMAIN4 0x08 +#define IPMI_OEM_DELL_POWER_MONITORING_DRIVES 0x09 +#define IPMI_OEM_DELL_POWER_MONITORING_FANS 0x0A +#define IPMI_OEM_DELL_POWER_MONITORING_PCIE_ADD_IN_CARDS 0x0B +#define IPMI_OEM_DELL_POWER_MONITORING_GPU_CABLES 0x0C + +/* averaging interval 30-900s */ +#define IPMI_OEM_DELL_POWER_MONITORING_RETURN_AVG_MIN_MAX_POWER 0x00 +/* averaging interval 5-900s */ +#define IPMI_OEM_DELL_POWER_MONITORING_RETURN_ONLY_AVG_POWER 0x01 + +#define IPMI_OEM_DELL_POWER_MONITORING_INTERVAL_MIN 5 +#define IPMI_OEM_DELL_POWER_MONITORING_INTERVAL_MAX 900 +#define IPMI_OEM_DELL_POWER_MONITORING_INTERVAL_AVG_MIN_MAX_MIN 30 + +/* + * Dell Poweredge C410x + */ + +/* w/ IPMI_CMD_OEM_DELL_SLOT_POWER_CONTROL */ +#define IPMI_OEM_DELL_SLOT_POWER_CONTROL_SLOT_NUMBER_MIN 1 +#define IPMI_OEM_DELL_SLOT_POWER_CONTROL_SLOT_NUMBER_MAX 16 + +/* w/ IPMI_CMD_OEM_DELL_PORT_MAP */ +#define IPMI_OEM_DELL_PORT_MAP_GET_SET_BITMASK 0x80 +#define IPMI_OEM_DELL_PORT_MAP_GET_SET_SHIFT 7 + +#define IPMI_OEM_DELL_PORT_MAP_GET 0 +#define IPMI_OEM_DELL_PORT_MAP_SET 1 + +#define IPMI_OEM_DELL_PORT_MAP_CONTROL_TYPE_REQUEST_BITMASK 0x70 +#define IPMI_OEM_DELL_PORT_MAP_CONTROL_TYPE_REQUEST_SHIFT 4 + +#define IPMI_OEM_DELL_PORT_MAP_CONTROL_TYPE_RESPONSE_BITMASK 0xF0 +#define IPMI_OEM_DELL_PORT_MAP_CONTROL_TYPE_RESPONSE_SHIFT 4 + +#define IPMI_OEM_DELL_PORT_MAP_CONTROL_TYPE_JUMPER 1 +#define IPMI_OEM_DELL_PORT_MAP_CONTROL_TYPE_BMC 2 + +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_1_BITMASK 0x08 +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_1_SHIFT 3 + +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_2_BITMASK 0x04 +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_2_SHIFT 2 + +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_3_BITMASK 0x02 +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_3_SHIFT 1 + +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_4_BITMASK 0x01 +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_4_SHIFT 0 + +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_1_2 1 +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_1_4 0 + +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_MIN 1 +#define IPMI_OEM_DELL_PORT_MAP_IPASS_MAPPING_MAX 16 + +#define IPMI_OEM_DELL_PORT_MAP_SLOT_MAPPING_1_BITMASK 0xF0 +#define IPMI_OEM_DELL_PORT_MAP_SLOT_MAPPING_1_SHIFT 4 + +#define IPMI_OEM_DELL_PORT_MAP_SLOT_MAPPING_2_BITMASK 0x0F +#define IPMI_OEM_DELL_PORT_MAP_SLOT_MAPPING_2_SHIFT 0 + +#define IPMI_OEM_DELL_PORT_MAP_SLOT_MAPPING_1_8_NOT_SUPPORTED 0 +#define IPMI_OEM_DELL_PORT_MAP_SLOT_MAPPING_1_2_OR_1_4 1 +#define IPMI_OEM_DELL_PORT_MAP_SLOT_MAPPING_1_8 2 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_DELL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-fujitsu-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-fujitsu-spec.h new file mode 100644 index 00000000..1022ba53 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-fujitsu-spec.h @@ -0,0 +1,244 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_FUJITSU_SPEC_H +#define IPMI_OEM_FUJITSU_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Fujitsu iRMC S1 / iRMC S2 + * + * All of the below are from + * + * http://manuals.ts.fujitsu.com/file/4390/irmc_s2-en.pdf + */ + +/* w/ IPMI_CMD_OEM_FUJITSU_POWER */ +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_POWER_ON_SOURCE 0x15 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_POWER_OFF_SOURCE 0x16 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_SET_POWER_OFF_INHIBIT 0x1C +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_POWER_OFF_INHIBIT 0x1D +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_SET_NEXT_POWER_ON_TIME 0x20 + +/* w/ IPMI_CMD_OEM_FUJITSU_COMMUNICATION */ +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_SYSTEM_OS_SHUTDOWN_REQUEST 0x05 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_SYSTEM_OS_SHUTDOWN_REQUEST_AND_RESET 0x06 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_AGENT_CONNECT_STATUS 0x08 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_SHUTDOWN_REQUEST_CANCELLED 0x09 + +/* w/ IPMI_CMD_OEM_FUJITSU_FAN_TEST */ +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_WRITE_TO_SYSTEM_DISPLAY 0x02 + +/* w/ IPMI_CMD_OEM_FUJITSU_BIOS */ +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_BIOS_POST_STATE 0x09 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_CPU_INFO 0x15 + +/* w/ IPMI_CMD_OEM_FUJITSU_SYSTEM */ +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_SYSTEM_STATUS 0x10 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_EEPROM_VERSION_INFO 0x12 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_SEL_ENTRY_LONG_TEXT 0x43 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_SEL_ENTRY_TEXT 0x45 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_SET_IDENTIFY_LED 0xB0 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_IDENTIFY_LED 0xB1 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_ERROR_LED 0xB3 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_RESET_NONVOLATILE_CFG_VARIABLES_TO_DEFAULT 0xDF +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_RESET_CONFIGSPACE_VARIABLES_TO_DEFAULT 0xE0 + +/* w/ IPMI_CMD_OEM_FUJITSU_GET_REMOTE_STORAGE_CONNECTION_OR_STATUS */ +/* achu: making up names, not listed in documents */ +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_REMOTE_STORAGE_CONNECTED 0x01 +#define IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_REMOTE_STORAGE_STATUS 0x02 + +/* w/ IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_POWER_ON_SOURCE */ +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_SOFTWARE_OR_COMMAND 0x00 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_POWER_SWITCH 0x01 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_AUTOMATIC_RESTART_AFTER_POWER_FAILURE 0x02 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_CLOCK_OR_TIMER 0x03 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_AUTOMATIC_RESTART_AFTER_FAN_FAILURE_SHUTDOWN 0x04 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_AUTOMATIC_RESTART_AFTER_CRITICAL_TEMPERATURE_SHUTDOWN 0x05 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_REBOOT_AFTER_WATCHDOG_TIMEOUT 0x08 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_REMOTE_ON 0x09 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_REBOOT_AFTER_A_CPU_ERROR 0x0C +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_REBOOT_BY_HARDWARE_RESET 0x15 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_REBOOT_AFTER_WARM_START 0x16 +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_POWERED_ON_BY_A_PCI_BUS_POWER_MANAGEMENT_EVENT 0x1A +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_POWERED_ON_BY_REMOTE_CONTROL_VIA_REMOTE_MANAGER 0x1D +#define IPMI_OEM_FUJITSU_POWER_ON_SOURCE_REBOOT_RESET_BY_REMOTE_CONTROL_VIA_REMOTE_MANAGER 0x1E + +/* w/ IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_POWER_OFF_SOURCE */ +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_SOFTWARE 0x00 +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_POWER_SWITCH 0x01 +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_AC_POWER_FAIL 0x02 +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_CLOCK_OR_TIMER 0x03 +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_FAN_FAILURE 0x04 +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_CRITICAL_TEMPERATURE 0x05 +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_FINAL_POWER_OFF_AFTER_REPEATED_WATCHDOG_TIMEOUTS 0x08 +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_FINAL_POWER_OFF_AFTER_REPEATED_CPU_ERRORS 0x0C +#define IPMI_OEM_FUJITSU_POWER_OFF_SOURCE_POWERED_OFF_BY_REMOTE_CONTROL_VIA_REMOTE_MANAGER 0x1D + +/* w/ IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_SYSTEM_STATUS */ +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SYSTEM_POWER_BITMASK 0x80 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SYSTEM_POWER_SHIFT 7 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SEL_ENTRIES_AVAILABLE_BITMASK 0x10 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SEL_ENTRIES_AVAILABLE_SHIFT 4 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_WATCHDOG_ACTIVE_BITMASK 0x04 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_WATCHDOG_ACTIVE_SHIFT 2 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_AGENT_CONNECTED_BITMASK 0x02 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_AGENT_CONNECTED_SHIFT 1 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_POST_STATE_BITMASK 0x01 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_POST_STATE_SHIFT 0 + +/* rename from "localize" */ +/* Bit 7 */ +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SIGNALING_LOCAL_LED_BITMASK 0x80 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SIGNALING_LOCAL_LED_SHIFT 7 +/* Bit 6..4 currently undefined */ + +/* Bit 3..2 */ +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SIGNALING_CSS_LED_BITMASK 0x0C +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SIGNALING_CSS_LED_SHIFT 2 + +/* Bit 1..0 */ +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SIGNALING_GLOBAL_ERROR_LED_BITMASK 0x03 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_SIGNALING_GLOBAL_ERROR_LED_SHIFT 0 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_SEL_MODIFIED_NEW_SEL_ENTRY_BITMASK 0x80 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_SEL_MODIFIED_NEW_SEL_ENTRY_SHIFT 7 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_SEL_MODIFIED_SEL_CLEARED_BITMASK 0x40 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_SEL_MODIFIED_SEL_CLEARED_SHIFT 6 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_SDR_MODIFIED_BITMASK 0x20 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_SDR_MODIFIED_SHIFT 5 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_NONVOLATILE_IPMI_VARIABLE_MODIFIED_BITMASK 0x10 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_NONVOLATILE_IPMI_VARIABLE_MODIFIED_SHIFT 4 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_CONFIGSPACE_MODIFIED_BITMASK 0x08 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_CONFIGSPACE_MODIFIED_SHIFT 3 + +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_NEW_OUTPUT_ON_LOCALVIEW_DISPLAY_BITMASK 0x01 +#define IPMI_OEM_FUJITSU_SYSTEM_STATUS_NOTIFICATIONS_NEW_OUTPUT_ON_LOCALVIEW_DISPLAY_SHIFT 0 + +/* achu: not defined in Fujitsu docs. "off" is confirmed to be + * correct, but "on" and "blink" are being gussed based on ordering of + * error leds in LED sections. + */ +#define IPMI_OEM_FUJITSU_CSS_LED_OFF 0x0 +#define IPMI_OEM_FUJITSU_CSS_LED_ON 0x1 +#define IPMI_OEM_FUJITSU_CSS_LED_BLINK 0x2 + +/* achu: not defined in Fujitsu docs. "off" is confirmed to be + * correct, but "on" and "blink" are being gussed based on ordering of + * error leds in LED sections. + */ +#define IPMI_OEM_FUJITSU_GLOBAL_ERROR_LED_OFF 0x0 +#define IPMI_OEM_FUJITSU_GLOBAL_ERROR_LED_ON 0x1 +#define IPMI_OEM_FUJITSU_GLOBAL_ERROR_LED_BLINK 0x2 + +/* w/ IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_EEPROM_VERSION_INFO */ +#define IPMI_OEM_FUJITSU_EEPROM_NUMBER_MIN 0 +#define IPMI_OEM_FUJITSU_EEPROM_NUMBER_MAX 1 + +#define IPMI_OEM_FUJITSU_EEPROM_CHECKSUM_OK 0x01 +#define IPMI_OEM_FUJITSU_EEPROM_CHECKSUM_ERROR 0x00 + +/* w/ IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_SEL_ENTRY_LONG_TEXT */ +#define IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_IRMC_S1_MAX_READ_LENGTH 32 +#define IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_IRMC_S2_MAX_READ_LENGTH 100 + +#define IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_IRMC_S1_MAX_DATA_LENGTH 80 +#define IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_IRMC_S2_MAX_DATA_LENGTH 100 + +#define IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_MAX_READ_LENGTH 100 +#define IPMI_OEM_FUJITSU_SEL_ENTRY_LONG_TEXT_MAX_DATA_LENGTH 100 + +/* + * CSS (Customer Self Service) + * + * If the component is marked as CSS, the customer can replace it by + * himself without a service technican (e.g. Memory DIMM etc.) CSS is + * combined with the severity information. + */ +#define IPMI_OEM_FUJITSU_CSS_BITMASK 0x80 +#define IPMI_OEM_FUJITSU_CSS_SHIFT 7 + +/* + * Severity of a decoded event. All events should have an assigned severity. + */ +#define IPMI_OEM_FUJITSU_SEVERITY_BITMASK 0x70 +#define IPMI_OEM_FUJITSU_SEVERITY_SHIFT 4 + +#define IPMI_OEM_FUJITSU_CSS_COMPONENT 1 +#define IPMI_OEM_FUJITSU_NO_CSS_COMPONENT 0 + +#define IPMI_OEM_FUJITSU_SEVERITY_INFORMATIONAL 0 +#define IPMI_OEM_FUJITSU_SEVERITY_MINOR 1 +#define IPMI_OEM_FUJITSU_SEVERITY_MAJOR 2 +#define IPMI_OEM_FUJITSU_SEVERITY_CRITICAL 3 + +/* w/ IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_SET_IDENTIFY_LED / IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_IDENTIFY_LED */ +#define IPMI_OEM_FUJITSU_IDENTIFY_LED_ON 0x1 +#define IPMI_OEM_FUJITSU_IDENTIFY_LED_OFF 0x0 + +#define IPMI_OEM_FUJITSU_IDENTIFY_LED_BITMASK 0x01 +#define IPMI_OEM_FUJITSU_IDENTIFY_LED_SHIFT 0 + +/* IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_GET_ERROR_LED */ +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_OFF_GEL_OFF 0 +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_OFF_GEL_ON 1 +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_OFF_GEL_BLINK 2 +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_ON_GEL_OFF 3 +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_ON_GEL_ON 4 +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_ON_GEL_BLINK 5 +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_BLINK_GEL_OFF 6 +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_BLINK_GEL_ON 7 +#define IPMI_OEM_FUJITSU_ERROR_LED_CSS_BLINK_GEL_BLINK 8 + +/* w/ IPMI_OEM_FUJITSU_COMMAND_SPECIFIER_REMOTE_STORAGE_STATUS */ +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_CONNECTION_MIN 0 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_CONNECTION_MAX 1 + +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_CONNECTED 0x01 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_NOT_CONNECTED 0x00 + +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_STATUS_INVALID_UNKNOWN 0x00 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_STATUS_IDLE 0x01 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_STATUS_CONNECTION_ATTEMPT_PENDING 0x02 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_STATUS_CONNECTED 0x03 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_STATUS_CONNECTION_ATTEMPTS_RETRIES_EXHAUSTED_FAILED 0x04 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_STATUS_CONNECTION_LOST 0x05 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_STATUS_DISCONNECT_PENDING 0x06 + +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_TYPE_INVALID_UNKNOWN 0x00 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_TYPE_STORAGE_SERVER_IPMI 0x01 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_TYPE_APPLET 0x02 +#define IPMI_OEM_FUJITSU_REMOTE_STORAGE_TYPE_NONE_NOT_CONNECTED 0x03 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_FUJITSU_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-ibm-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-ibm-spec.h new file mode 100644 index 00000000..46575380 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-ibm-spec.h @@ -0,0 +1,132 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_IBM_SPEC_H +#define IPMI_OEM_IBM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * IBM x3455/x3755 + */ + +/* w/ IPMI_CMD_OEM_IBM_GET_LED */ + +#define IPMI_OEM_IBM_LED_STATE_INACTIVE 0x0 + +#define IPMI_OEM_IBM_LED_ACTIVE_BY_LED 0x1 +#define IPMI_OEM_IBM_LED_ACTIVE_BY_SENSOR 0x2 +#define IPMI_OEM_IBM_LED_ACTIVE_BY_USER 0x3 +#define IPMI_OEM_IBM_LED_ACTIVE_BY_BIOS_OR_ADMINISTRATOR 0x4 + +#define IPMI_OEM_IBM_LED_X3455_LOCATION 0x1 + +#define IPMI_OEM_IBM_LED_X3755_CPU 0x0010 +#define IPMI_OEM_IBM_LED_X3755_CPU1 0x0030 +#define IPMI_OEM_IBM_LED_X3755_CPU2 0x0031 +#define IPMI_OEM_IBM_LED_X3755_CPU3 0x0032 +#define IPMI_OEM_IBM_LED_X3755_CPU4 0x0033 + +#define IPMI_OEM_IBM_LED_X3755_CPU1_BOARD 0x00B8 +#define IPMI_OEM_IBM_LED_X3755_CPU2_BOARD 0x00B9 +#define IPMI_OEM_IBM_LED_X3755_CPU3_BOARD 0x00BA +#define IPMI_OEM_IBM_LED_X3755_CPU4_BOARD 0x00BB + +#define IPMI_OEM_IBM_LED_X3755_DIMM_1 0x0060 +#define IPMI_OEM_IBM_LED_X3755_DIMM_2 0x0061 +#define IPMI_OEM_IBM_LED_X3755_DIMM_3 0x0062 +#define IPMI_OEM_IBM_LED_X3755_DIMM_4 0x0063 +#define IPMI_OEM_IBM_LED_X3755_DIMM_5 0x0064 +#define IPMI_OEM_IBM_LED_X3755_DIMM_6 0x0065 +#define IPMI_OEM_IBM_LED_X3755_DIMM_7 0x0066 +#define IPMI_OEM_IBM_LED_X3755_DIMM_8 0x0067 +#define IPMI_OEM_IBM_LED_X3755_DIMM_9 0x0068 +#define IPMI_OEM_IBM_LED_X3755_DIMM_10 0x0069 +#define IPMI_OEM_IBM_LED_X3755_DIMM_11 0x006A +#define IPMI_OEM_IBM_LED_X3755_DIMM_12 0x006B +#define IPMI_OEM_IBM_LED_X3755_DIMM_13 0x006C +#define IPMI_OEM_IBM_LED_X3755_DIMM_14 0x006D +#define IPMI_OEM_IBM_LED_X3755_DIMM_15 0x006E +#define IPMI_OEM_IBM_LED_X3755_DIMM_16 0x006F +#define IPMI_OEM_IBM_LED_X3755_DIMM_17 0x00C0 +#define IPMI_OEM_IBM_LED_X3755_DIMM_18 0x00C1 +#define IPMI_OEM_IBM_LED_X3755_DIMM_19 0x00C2 +#define IPMI_OEM_IBM_LED_X3755_DIMM_20 0x00C3 +#define IPMI_OEM_IBM_LED_X3755_DIMM_21 0x00C4 +#define IPMI_OEM_IBM_LED_X3755_DIMM_22 0x00C5 +#define IPMI_OEM_IBM_LED_X3755_DIMM_23 0x00C6 +#define IPMI_OEM_IBM_LED_X3755_DIMM_24 0x00C7 +#define IPMI_OEM_IBM_LED_X3755_DIMM_25 0x00C8 +#define IPMI_OEM_IBM_LED_X3755_DIMM_26 0x00C9 +#define IPMI_OEM_IBM_LED_X3755_DIMM_27 0x00CA +#define IPMI_OEM_IBM_LED_X3755_DIMM_28 0x00CB +#define IPMI_OEM_IBM_LED_X3755_DIMM_29 0x00CC +#define IPMI_OEM_IBM_LED_X3755_DIMM_30 0x00CD +#define IPMI_OEM_IBM_LED_X3755_DIMM_31 0x00CE +#define IPMI_OEM_IBM_LED_X3755_DIMM_32 0x00CF + +#define IPMI_OEM_IBM_LED_X3755_FAN 0x0014 +#define IPMI_OEM_IBM_LED_X3755_FAN_1 0x0050 +#define IPMI_OEM_IBM_LED_X3755_FAN_2 0x0051 +#define IPMI_OEM_IBM_LED_X3755_FAN_3 0x0052 +#define IPMI_OEM_IBM_LED_X3755_FAN_4 0x0053 +#define IPMI_OEM_IBM_LED_X3755_FAN_5 0x0054 +#define IPMI_OEM_IBM_LED_X3755_FAN_6 0x0055 +#define IPMI_OEM_IBM_LED_X3755_FAN_7 0x0056 +#define IPMI_OEM_IBM_LED_X3755_FAN_8 0x0057 + +#define IPMI_OEM_IBM_LED_X3755_PCI 0x0020 +#define IPMI_OEM_IBM_LED_X3755_PCI_1 0x0070 +#define IPMI_OEM_IBM_LED_X3755_PCI_2 0x0071 +#define IPMI_OEM_IBM_LED_X3755_PCI_3 0x0072 +#define IPMI_OEM_IBM_LED_X3755_PCI_4 0x0073 +#define IPMI_OEM_IBM_LED_X3755_PCI_5 0x0074 +#define IPMI_OEM_IBM_LED_X3755_PCI_6 0x0075 + +#define IPMI_OEM_IBM_LED_X3755_SERVERAID_8K_BATT 0x00D0 +#define IPMI_OEM_IBM_LED_X3755_SERVERAID_8K_ERR 0x00D1 + +#define IPMI_OEM_IBM_LED_X3755_ALERT 0x00D9 +#define IPMI_OEM_IBM_LED_X3755_BK_BLUE 0x00D8 +#define IPMI_OEM_IBM_LED_X3755_BOARD 0x000E +#define IPMI_OEM_IBM_LED_X3755_CNFG 0x0006 +#define IPMI_OEM_IBM_LED_X3755_DASD 0x0013 +#define IPMI_OEM_IBM_LED_X3755_FAULT 0x0000 +#define IPMI_OEM_IBM_LED_X3755_HTX 0x00B0 +#define IPMI_OEM_IBM_LED_X3755_INFO 0x0003 +#define IPMI_OEM_IBM_LED_X3755_LOCATION 0x0001 +#define IPMI_OEM_IBM_LED_X3755_MEM 0x0015 +#define IPMI_OEM_IBM_LED_X3755_NMI 0x0019 +#define IPMI_OEM_IBM_LED_X3755_OVERSPEC 0x001B +#define IPMI_OEM_IBM_LED_X3755_RAID 0x000F +#define IPMI_OEM_IBM_LED_X3755_SEER 0x000B +#define IPMI_OEM_IBM_LED_X3755_SP 0x001E +#define IPMI_OEM_IBM_LED_X3755_TEMP 0x001C +#define IPMI_OEM_IBM_LED_X3755_VRM 0x0011 + +#define IPMI_OEM_IBM_LED_X3755_UNKNOWN1 0x0040 +#define IPMI_OEM_IBM_LED_X3755_UNKNOWN2 0x0041 +#define IPMI_OEM_IBM_LED_X3755_UNKNOWN3 0x0047 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_IBM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-intel-spec.h new file mode 100644 index 00000000..ee636abd --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-intel-spec.h @@ -0,0 +1,112 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_INTEL_SPEC_H +#define IPMI_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Intel S5500WB/Penguin Computing Relion 700 + * Intel S2600JF/Appro 512X + */ + +/* w/ IPMI_CMD_OEM_INTEL_RESTORE_CONFIGURATION */ +#define IPMI_OEM_INTEL_RESTORE_CONFIGURATION_OPERATION_INITIATE_RESTORE 0xAA +#define IPMI_OEM_INTEL_RESTORE_CONFIGURATION_OPERATION_GET_RESTORE_STATUS 0x00 + +#define IPMI_OEM_INTEL_RESTORE_CONFIGURATION_RESTORE_PROGRESS_RESTORE_IN_PROGRESS 0x00 +#define IPMI_OEM_INTEL_RESTORE_CONFIGURATION_RESTORE_PROGRESS_RESTORE_COMPLETED 0x01 + +/* w/ IPMI_CMD_OEM_INTEL_SET_SMTP_CONFIGURATION / IPMI_CMD_OEM_INTEL_GET_SMTP_CONFIGURATION */ + +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_ENABLE_SMTP 0x00 +/* MS byte first */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SMTP_SERVER_ADDRESS 0x01 +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SMTP_USER_NAME 0x02 +/* write only */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_USER_PASSWORD 0x03 +/* read only */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_NUMBER_OF_DESTINATIONS 0x04 +/* max 2 blocks - doc says 64 bytes, but 2 blocks appears to be correct */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_EMAIL_ADDRESS 0x05 +/* max 2 blocks */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SUBJECT 0x06 +/* max 4 blocks */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_MESSAGE_CONTENT 0x07 +/* max 4 blocks according to doc, but according to firmware max 1 block when you write */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SENDER_EMAIL_ADDRESS 0x08 +/* max 2 blocks */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SMTP_HOST_NAME 0x09 + +#define IPMI_OEM_INTEL_SMTP_STRING_BLOCK_LENGTH 16 + +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SMTP_USER_NAME_MAX_BLOCKS 1 +/* XXX: document says max 20 bytes, but fails on second block, so we use 1 block */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_USER_PASSWORD_MAX_BLOCKS 1 +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_EMAIL_ADDRESS_MAX_BLOCKS 2 +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SUBJECT_MAX_BLOCKS 2 +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_MESSAGE_CONTENT_MAX_BLOCKS 4 +/* XXX: document indicates 2 blocks, but firmware has errors on > 1 block, so we use 1 block */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SENDER_EMAIL_ADDRESS_MAX_BLOCKS 1 +/* XXX: document indicates 2 blocks, but firmware has errors on > 1 block, so we use 1 block */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SMTP_HOST_NAME_MAX_BLOCKS 1 + +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_STRING_LENGTH_MAX (4*IPMI_OEM_INTEL_SMTP_STRING_BLOCK_LENGTH) + +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_USER_PASSWORD_LENGTH_MAX 20 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_VALID(__value) \ + (((__value + 1) >= (IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_ENABLE_SMTP + 1) \ + && (__value) <= IPMI_OEM_INTEL_SMTP_CONFIGURATION_PARAMETER_SMTP_HOST_NAME) ? 1 : 0) + +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_NO_SET_SELECTOR 0x0 +#define IPMI_OEM_INTEL_SMTP_CONFIGURATION_NO_BLOCK_SELECTOR 0x0 + +#define IPMI_OEM_INTEL_SMTP_ENABLE_BITMASK 0x01 +#define IPMI_OEM_INTEL_SMTP_ENABLE_SHIFT 0 + +#define IPMI_OEM_INTEL_SMTP_ENABLE 0x1 +#define IPMI_OEM_INTEL_SMTP_DISABLE 0x0 + +/* + * Intel S2600JF/Appro 512X + */ + +/* w/ IPMI_CMD_OEM_INTEL_SET_POWER_RESTORE_DELAY / IPMI_CMD_OEM_INTEL_GET_POWER_RESTORE_DELAY */ +#define IPMI_OEM_INTEL_POWER_RESTORE_DELAY_MSB_MASK 0x07 +#define IPMI_OEM_INTEL_POWER_RESTORE_DELAY_LSB_MASK 0xFF + +#define IPMI_OEM_INTEL_POWER_RESTORE_DELAY_MAX 0x07FF + +/* w/ IPMI_CMD_OEM_INTEL_GET_BMC_SERVICE_STATUS / IPMI_CMD_OEM_INTEL_CONTROL_BMC_SERVICES */ + +#define IPMI_OEM_INTEL_DISABLE_SERVICES 0x00 +#define IPMI_OEM_INTEL_ENABLE_SERVICES 0x01 + +#define IPMI_OEM_INTEL_STANDARD_SERVICES_SSH 0x80 +#define IPMI_OEM_INTEL_STANDARD_SERVICES_HTTP 0x20 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-inventec-spec.h new file mode 100644 index 00000000..6e56bf79 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-inventec-spec.h @@ -0,0 +1,332 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_INVENTEC_SPEC_H +#define IPMI_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ + +/* achu: all named from doc except 'lan' configuration id, which I assumed names */ + +/* w/ IPMI_CMD_OEM_INVENTEC_GET_EXTENDED_CONFIGURATION / IPMI_OEM_INVENTEC_SET_EXTENDED_CONFIGURATION */ + +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_NIC 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_SOL 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_SECURITY 0x04 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_ACCOUNT_STATUS 0x05 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_DNS 0x06 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_WEB_SERVER_CONFIGURATION 0x0C +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_FIRMWARE_LOG 0x0E +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_FIRMWARE_INFORMATION 0x0F +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_FIRMWARE_UPDATE 0x10 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIGURATION_ID_POWER_MANAGEMENT 0x11 + +/* nic status - 1 byte, 0 = shared, 1 = dedicated + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_NIC_MODE 0x01 + +/* sol idle timeout - 2 bytes, ls byte first, 0h = no timeout, default = 01h + * + * telnet/ssh redirect enable - 1 byte, 0 = disable, 1 = enabled + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_SOL_SOL_IDLE_TIMEOUT 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_SOL_TELNET_SSH_REDIRECT_ENABLE 0x02 + +/* service disabled - 1 byte, bitmask + * - 0x01 = all service except IPMI are disabled + * (takes precedence over other bits) + * - 0x02 = KVM/Virtual Storage + * - 0x04 = HTTP/HTTPS + * - 0x08 = SSH/Telnet + * + * max authentication failures - 1 byte, 0 = disable + * + * lockout window - 2 bytes, in seconds, 0 = disable, default = 180 + * + * lockout time - 2 bytes, in seconds, 0 = disable, default = 3600 + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_SECURITY_SERVICE_DISABLED 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_SECURITY_MAX_AUTHENTICATION_FAILURES 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_SECURITY_LOCKOUT_WINDOW 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_SECURITY_LOCKOUT_TIME 0x04 + +/* number of user - 1 byte, read only + * + * number of enabled user - 1 byte, read only + * + * user name - 1-17 bytes, read only + * - Inventec 5441/Xanadu II - reports stored as p-string, does not return p-string + * - Inventec 5442/Xanadu III - returns as p-string + * + * account status - 1 byte + * - 0x00 - status unspecified + * - 0x01 - enabled via set user password + * - 0x02 - disabled via set user password + * - 0x03 - user id is lockout + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_NUMBER_OF_USER 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_NUMBER_OF_ENABLED_USER 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_USER_NAME 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_ACCOUNT_STATUS 0x04 + +/* DNS DHCP enable - 1 byte, 0 - false, 1 - true + * - DNS server IP addresses should be assigned from DHCP server + * + * DNS Server1 - 4 bytes + * - IP address for DNS server 1, read only if DNS DHCP Enable and DHCP are enabled + * + * DNS Server2 - 4 bytes + * - IP address for DNS server 2, read only if DNS DHCP Enable and DHCP are enabled + * + * DNS Register BMC - 0 - false, 1 - true + * - Enable registering the BMC host name on the DNS server + * + * DNS BMC Host Name - 1-64 bytes + * - Specifies the DNS BMC host name, read only if DNS Register BMC is TRUE. + * - Stored as P-string + * + * DNS Domain Name DHCP Enable - 1 byte + * - DNS domain name should be assigned from DHCP + * + * DNS Domain Name - 1-256 bytes + * - DNS domain name string, read only if DNS Domain Name DHCP Enable is TRUE + * - Stored as P-string + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DHCP_ENABLE 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_SERVER1 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_SERVER2 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_REGISTER_BMC 0x04 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_BMC_HOST_NAME 0x05 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME_DHCP_ENABLE 0x06 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME 0x07 + +/* web server enabled - 1 byte, 0 = false, 1 = true (default) + * + * max web sessions - 1 byte, read only + * + * active web sessions - 1 byte, read only + * + * web server timeout - 4 bytes, in seconds, 0 = disable, range 60-1920, default 300 + * + * http port num - 2 bytes, default 80 + * + * https port num - 2 bytes, default 443 + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_WEB_SERVER_ENABLED 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_MAX_WEB_SESSIONS 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_ACTIVE_WEB_SESSIONS 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_WEB_SERVER_TIMEOUT 0x04 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_HTTP_PORT_NUM 0x05 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_HTTPS_PORT_NUM 0x06 + +/* entity - 1 byte (read only) + * + * firmware version - 1-16 bytes (read only) + * + * branch - 1-16 bytes (read only) + * + * build information - 1-16 bytes (read only) + * + * update date / time - 3 bytes, from 0:00 1/1/08, lsbyte first + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_ENTITY 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_FIRMWARE_VERSION 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_BRANCH 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_BUILD_INFORMATION 0x04 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_UPDATE_DATE_TIME 0x05 + +/* name - 1-16 bytes (read only) + * + * description - 1-256 bytes (read only) + * + * entity - 1 byte (read only) + * + * product info - 1-64 bytes (read only) + * + * firmware version - 1-16 bytes (read only) + * + * branch - 1-16 bytes (read only) + * + * build information - 1-16 bytes (read only) + * + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_NAME 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_DESCRIPTION 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_ENTITY 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_PRODUCT_INFO 0x04 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_FIRMWARE_VERSION 0x05 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BRANCH 0x06 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BUILD_INFORMATION 0x07 + +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_NAME_LEN 16 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_DESCRIPTION_LEN 256 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_PRODUCT_INFO_LEN 64 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_FIRMWARE_VERSION_LEN 16 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BRANCH_LEN 16 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BUILD_INFORMATION_LEN 16 + +/* remote update enable - 1 byte, ?? + * + * protocol - 1 byte, bitmask, 7:3 reserved, 2 : http, 1: ftp, 0: tftp (read only) + * + * uri - 1-256 bytes + * note - first char should be a file or unit separator + * + * connection retry - 1 byte, 0 = no retries + * + * retry interval - 1 byte, in 5 second increments + * + * delay time - 1 byte, in seconds, 0h = immediate, ffh = random between 5 and 10 + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_REMOTE_UPDATE_ENABLE 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_PROTOCOL 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_URI 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_CONNECTION_RETRY 0x04 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_RETRY_INTERVAL 0x05 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_DELAY_TIME 0x06 + +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_RETRY_INTERVAL_INCREMENTS 5 + +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_URI_LEN 256 + +/* power management enable - 1 byte, bit 7: 0 = disable, 1 = enable, reset reserved + * + * power staggery ac recovery - 1 byte, 0x00 = immediate power on + * (default), 0x01 = auto, random between min and max below, 0x02 = + * user defined, must be between min and max below + * + * power on delay - 2 bytes + * + * minimum power on delay - 2 bytes (read only) + * + * maximum power on delay - 2 bytes + */ +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_MANAGEMENT_ENABLE 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_STAGGERING_AC_RECOVERY 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_ON_DELAY 0x03 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_MINIMUM_POWER_ON_DELAY 0x04 +#define IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_MAXIMUM_POWER_ON_DELAY 0x05 + +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_READ_ALL_BYTES 0xFF + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_NIC_MODE */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_NIC_MODE_SHARED 0x00 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_NIC_MODE_DEDICATED 0x01 + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_SECURITY_SERVICE_DISABLED */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_ENABLE_ALL 0x00 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_ALL 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_KVM_VIRTUAL_STORAGE 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_HTTP_HTTPS 0x04 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_SSH_TELNET 0x08 + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_ACCOUNT_STATUS */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_ACCOUNT_STATUS_UNSPECIFIED 0x00 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_ACCOUNT_STATUS_ENABLED 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_ACCOUNT_STATUS_DISABLED 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_ACCOUNT_STATUS_LOCKOUT 0x03 + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_BMC_HOST_NAME */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_DNS_DNS_BMC_HOST_NAME_MAX 64 + +/* IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_DNS_DNS_DOMAIN_NAME_MAX 256 + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_ENTITY */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_BMC 0 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_SYSTEM_BIOS 1 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_PDB 2 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_FCB 3 + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_PROTOCOL */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_TFTP 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_FTP 0x02 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_HTTP 0x04 + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_DELAY_TIME */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_FIRMWARE_UPDATE_DELAY_TIME_RANDOM 0xFF + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_MANAGEMENT_ENABLE */ +/* DPNM = Dynamic Power Node Management */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_POWER_MANAGEMENT_ENABLE_DPNM_BITMASK 0x80 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_POWER_MANAGEMENT_ENABLE_DPNM_SHIFT 7 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_POWER_MANAGEMENT_ENABLE_DPNM_ENABLE 1 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_POWER_MANAGEMENT_ENABLE_DPNM_DISABLE 0 + +/* w/ IPMI_OEM_INVENTEC_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_STAGGERING_AC_RECOVERY */ +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_IMMEDIATE 0x00 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_AUTO 0x01 +#define IPMI_OEM_INVENTEC_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_USER_DEFINED 0x02 + +/* w/ IPMI_CMD_OEM_INVENTEC_UPDATE_FIRMARE */ +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_INTERFACE_SYSTEM_INTERFACE 0x00 +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_INTERFACE_NETWORKING 0x01 +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_INTERFACE_USB 0x02 + +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_UPDATE_TYPE_BITMASK 0x80 +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_UPDATE_TYPE_SHIFT 7 + +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_UPDATE_TYPE_FORCE_UPDATE 1 +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_UPDATE_TYPE_NORMAL_UPDATE 0 + +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_OEM_DELL_CONFIG_PRESERVE 0x00 +#define IPMI_OEM_INVENTEC_UPDATE_FIRMWARE_OEM_DELL_CONFIG_NOPRESERVE 0x01 + +/* w/ IPMI_CMD_OEM_INVENTEC_GET_UPDATE_STATUS */ +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_TRANSMITTING_IMAGE 0x00 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_VALIDATING_IMAGE 0x01 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_PROGRAMMING 0x02 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_READY_TO_ACCEPT_IMAGE 0x03 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_GENERAL_ERROR 0x80 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_CANNOT_ESTABLISH_CONNECTION 0x81 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_PATH_NOT_FOUND 0x82 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_TRANSMISSION_ABORT 0x83 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_CHECKSUM_ERROR 0x84 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_INCORRECT_PLATFORM 0x85 +#define IPMI_OEM_INVENTEC_GET_UPDATE_STATUS_COMPLETED 0xFF + +/* w/ IPMI_CMD_OEM_INVENTEC_RESTORE_TO_DEFAULTS */ +#define IPMI_OEM_INVENTEC_RESTORE_TO_DEFAULTS_RESTORE_FLAG_RESTORE_PARAMETERS_NOT_INCLUDED_BELOW 0x7 +#define IPMI_OEM_INVENTEC_RESTORE_TO_DEFAULTS_RESTORE_FLAG_REMAINING_PARAMETERS_STAY_WHAT_IT_IS 0x0 +#define IPMI_OEM_INVENTEC_RESTORE_TO_DEFAULTS_RESTORE_FLAG_SHIFT 5 + +#define IPMI_OEM_INVENTEC_RESTORE_TO_DEFAULTS_PEF_BITMASK 0x10 +#define IPMI_OEM_INVENTEC_RESTORE_TO_DEFAULTS_SERIAL_CONFIGURATION_BITMASK 0x08 +#define IPMI_OEM_INVENTEC_RESTORE_TO_DEFAULTS_SOL_CONFIGURATION_BITMASK 0x04 +#define IPMI_OEM_INVENTEC_RESTORE_TO_DEFAULTS_LAN_CONFIGURATION_BITMASK 0x02 +#define IPMI_OEM_INVENTEC_RESTORE_TO_DEFAULTS_USER_ACCOUNTS_BITMASK 0x01 + +/* w/ IPMI_CMD_OEM_INVENTEC_GET_RESTORE_STATUS */ +#define IPMI_OEM_INVENTEC_GET_RESTORE_STATUS_RESTORE_IN_PROGRESS 0x00 +#define IPMI_OEM_INVENTEC_GET_RESTORE_STATUS_RESTORE_COMPLETE 0x01 + +/* w/ IPMI_CMD_OEM_INVENTEC_SET_ASSET_TAG */ +#define IPMI_OEM_INVENTEC_ASSET_TAG_MAX 10 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-quanta-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-quanta-spec.h new file mode 100644 index 00000000..fc1dfe15 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-quanta-spec.h @@ -0,0 +1,331 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_QUANTA_SPEC_H +#define IPMI_OEM_QUANTA_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Quanta S99Q/Dell FS12-TY + */ + +/* achu: all named from doc except 'lan' configuration id, which I assumed names */ + +/* w/ IPMI_CMD_OEM_QUANTA_GET_EXTENDED_CONFIGURATION / IPMI_OEM_QUANTA_SET_EXTENDED_CONFIGURATION */ + +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_NIC 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_SOL 0x03 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_SECURITY 0x04 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_ACCOUNT_STATUS 0x05 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_DNS 0x06 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_WEB_SERVER_CONFIGURATION 0x0C +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_FIRMWARE_LOG 0x0E +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_FIRMWARE_INFORMATION 0x0F +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_FIRMWARE_UPDATE 0x10 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIGURATION_ID_POWER_MANAGEMENT 0x11 + +/* nic status - 1 byte, 0 = shared, 1 = dedicated + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_NIC_MODE 0x01 + +/* sol idle timeout - 2 bytes, ls byte first, 0h = no timeout, default = 01h + * + * telnet/ssh redirect enable - 1 byte, 0 = disable, 1 = enabled + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_SOL_SOL_IDLE_TIMEOUT 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_SOL_TELNET_SSH_REDIRECT_ENABLE 0x02 + +/* service disabled - 1 byte, bitmask + * - 0x01 = all service except IPMI are disabled + * (takes precedence over other bits) + * - 0x02 = KVM/Virtual Storage + * - 0x04 = HTTP/HTTPS + * - 0x08 = SSH/Telnet + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_SECURITY_SERVICE_DISABLED 0x01 + +/* number of user - 1 byte, read only + * + * number of enabled user - 1 byte, read only + * + * user name - 1-17 bytes, read only + * - Quanta 5441/Xanadu II - reports stored as p-string, does not return p-string + * - Quanta 5442/Xanadu III - returns as p-string + * + * account status - 1 byte + * - 0x00 - status unspecified + * - 0x01 - enabled via set user password + * - 0x02 - disabled via set user password + * - 0x03 - user id is lockout + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_NUMBER_OF_USER 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_NUMBER_OF_ENABLED_USER 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_USER_NAME 0x03 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_ACCOUNT_STATUS 0x04 + +/* DNS DHCP enable - 1 byte, 0 - false, 1 - true + * - DNS server IP addresses should be assigned from DHCP server + * + * DNS Server1 - 4 bytes + * - IP address for DNS server 1, read only if DNS DHCP Enable and DHCP are enabled + * + * DNS Server2 - 4 bytes + * - IP address for DNS server 2, read only if DNS DHCP Enable and DHCP are enabled + * + * DNS Register BMC - 0 - false, 1 - true + * - Enable registering the BMC host name on the DNS server + * + * DNS BMC Host Name - 1-64 bytes + * - Specifies the DNS BMC host name, read only if DNS Register BMC is TRUE. + * - Stored as P-string + * + * DNS Domain Name DHCP Enable - 1 byte + * - DNS domain name should be assigned from DHCP + * + * DNS Domain Name - 1-256 bytes + * - DNS domain name string, read only if DNS Domain Name DHCP Enable is TRUE + * - Stored as P-string + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DHCP_ENABLE 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_SERVER1 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_SERVER2 0x03 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_REGISTER_BMC 0x04 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_BMC_HOST_NAME 0x05 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME_DHCP_ENABLE 0x06 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME 0x07 + +/* web server enabled - 1 byte, 0 = false, 1 = true (default) + * + * max web sessions - 1 byte, read only + * + * active web sessions - 1 byte, read only + * + * web server timeout - 4 bytes, in seconds, 0 = disable, range 60-1920, default 300 + * + * http port num - 2 bytes, default 80 + * + * https port num - 2 bytes, default 443 + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_WEB_SERVER_ENABLED 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_MAX_WEB_SESSIONS 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_ACTIVE_WEB_SESSIONS 0x03 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_WEB_SERVER_TIMEOUT 0x04 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_HTTP_PORT_NUM 0x05 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_HTTPS_PORT_NUM 0x06 + +/* entity - 1 byte (read only) + * + * firmware version - 1-16 bytes (read only) + * + * branch - 1-16 bytes (read only) + * + * build information - 1-16 bytes (read only) + * + * update date / time - 3 bytes, from 0:00 1/1/08, lsbyte first + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_ENTITY 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_FIRMWARE_VERSION 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_BRANCH 0x03 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_BUILD_INFORMATION 0x04 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_UPDATE_DATE_TIME 0x05 + +/* name - 1-16 bytes (read only) + * + * description - 1-256 bytes (read only) + * + * entity - 1 byte (read only) + * + * product info - 1-64 bytes (read only) + * + * firmware version - 1-16 bytes (read only) + * + * branch - 1-16 bytes (read only) + * + * build information - 1-16 bytes (read only) + * + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_NAME 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_DESCRIPTION 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_ENTITY 0x03 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_PRODUCT_INFO 0x04 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_FIRMWARE_VERSION 0x05 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BRANCH 0x06 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BUILD_INFORMATION 0x07 + +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_NAME_LEN 16 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_DESCRIPTION_LEN 256 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_PRODUCT_INFO_LEN 64 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_FIRMWARE_VERSION_LEN 16 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BRANCH_LEN 16 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BUILD_INFORMATION_LEN 16 + +/* remote update enable - 1 byte, ?? + * + * protocol - 1 byte, bitmask, 7:3 reserved, 2 : http, 1: ftp, 0: tftp (read only) + * + * uri - 1-256 bytes + * note - first char should be a file or unit separator + * + * connection retry - 1 byte, 0 = no retries + * + * retry interval - 1 byte, in 5 second increments + * + * delay time - 1 byte, in seconds, 0h = immediate, ffh = random between 5 and 10 + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_REMOTE_UPDATE_ENABLE 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_PROTOCOL 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_URI 0x03 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_CONNECTION_RETRY 0x04 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_RETRY_INTERVAL 0x05 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_DELAY_TIME 0x06 + +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_RETRY_INTERVAL_INCREMENTS 5 + +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_URI_LEN 256 + +/* power management enable - 1 byte, bit 7: 0 = disable, 1 = enable, reset reserved + * + * power staggery ac recovery - 1 byte, 0x00 = immediate power on + * (default), 0x01 = auto, random between min and max below, 0x02 = + * user defined, must be between min and max below + * + * power on delay - 2 bytes + * + * minimum power on delay - 2 bytes (read only) + * + * maximum power on delay - 2 bytes + */ +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_MANAGEMENT_ENABLE 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_STAGGERING_AC_RECOVERY 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_ON_DELAY 0x03 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_MINIMUM_POWER_ON_DELAY 0x04 +#define IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_MAXIMUM_POWER_ON_DELAY 0x05 + +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_READ_ALL_BYTES 0xFF + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_NIC_MODE */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_NIC_MODE_SHARED 0x00 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_NIC_MODE_DEDICATED 0x01 + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_SECURITY_SERVICE_DISABLED */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_ENABLE_ALL 0x00 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_ALL 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_KVM_VIRTUAL_STORAGE 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_HTTP_HTTPS 0x04 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_SSH_TELNET 0x08 + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_ACCOUNT_STATUS */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_ACCOUNT_STATUS_UNSPECIFIED 0x00 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_ACCOUNT_STATUS_ENABLED 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_ACCOUNT_STATUS_DISABLED 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_ACCOUNT_STATUS_LOCKOUT 0x03 + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_BMC_HOST_NAME */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_DNS_DNS_BMC_HOST_NAME_MAX 64 + +/* IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_DNS_DNS_DOMAIN_NAME_MAX 256 + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_ENTITY */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_BMC 0 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_SYSTEM_BIOS 1 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_PDB 2 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_FCB 3 + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_PROTOCOL */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_TFTP 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_FTP 0x02 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_HTTP 0x04 + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_DELAY_TIME */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_FIRMWARE_UPDATE_DELAY_TIME_RANDOM 0xFF + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_MANAGEMENT_ENABLE */ +/* DPNM = Dynamic Power Node Management */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_POWER_MANAGEMENT_ENABLE_DPNM_BITMASK 0x80 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_POWER_MANAGEMENT_ENABLE_DPNM_SHIFT 7 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_POWER_MANAGEMENT_ENABLE_DPNM_ENABLE 1 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_POWER_MANAGEMENT_ENABLE_DPNM_DISABLE 0 + +/* w/ IPMI_OEM_QUANTA_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_STAGGERING_AC_RECOVERY */ +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_IMMEDIATE 0x00 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_AUTO 0x01 +#define IPMI_OEM_QUANTA_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_USER_DEFINED 0x02 + + +/* w/ IPMI_CMD_OEM_QUANTA_RESET_TO_DEFAULTS */ +#define IPMI_OEM_QUANTA_RESET_TO_DEFAULTS_RESTORE_FLAG_RESTORE_PARAMETERS_NOT_INCLUDED_BELOW 0x7 +#define IPMI_OEM_QUANTA_RESET_TO_DEFAULTS_RESTORE_FLAG_REMAINING_PARAMETERS_STAY_WHAT_IT_IS 0x0 +#define IPMI_OEM_QUANTA_RESET_TO_DEFAULTS_RESTORE_FLAG_SHIFT 5 + +#define IPMI_OEM_QUANTA_RESET_TO_DEFAULTS_PEF_BITMASK 0x10 +#define IPMI_OEM_QUANTA_RESET_TO_DEFAULTS_SERIAL_CONFIGURATION_BITMASK 0x08 +#define IPMI_OEM_QUANTA_RESET_TO_DEFAULTS_SOL_CONFIGURATION_BITMASK 0x04 +#define IPMI_OEM_QUANTA_RESET_TO_DEFAULTS_LAN_CONFIGURATION_BITMASK 0x02 +#define IPMI_OEM_QUANTA_RESET_TO_DEFAULTS_USER_ACCOUNTS_BITMASK 0x01 + +/* w/ IPMI_CMD_OEM_QUANTA_GET_RESTORE_STATUS */ +#define IPMI_OEM_QUANTA_GET_RESTORE_STATUS_RESTORE_IN_PROGRESS 0x00 +#define IPMI_OEM_QUANTA_GET_RESTORE_STATUS_RESTORE_COMPLETE 0x01 + +/* w/ IPMI_CMD_OEM_QUANTA_GET_PROCESSOR_INFORMATION */ +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_CELERON 0x00 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_PENTIUM_3 0x01 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_PENTIUM_4 0x02 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_XEON 0x03 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_PRESTONIA 0x04 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_NOCONA 0x05 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_OPTERON 0x06 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_DEMPSEY 0x07 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_CLOVERTOWN 0x08 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_TIGERTON 0x09 +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_DUNNINGTON 0x0A +/* achu: listed as "Hapertown" in spec, assuming typo */ +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_HARPERTOWN 0x0B +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_WOLFDALE_DP 0x0C +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_NEHALEM_EP 0x0D +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_WESTMERE_EP 0x0E +/* 0x0F-0xFE - Reserved */ +#define IPMI_OEM_QUANTA_PROCESSOR_TYPE_NO_CPU_PRESENT 0xFF + +/******************************************* + * Sun Microsystems * + *******************************************/ + +/* + * Sun 4140 + */ + +/* w/ IPMI_CMD_OEM_SUN_GET_LED / IPMI_CMD_OEM_SUN_SET_LED */ +#define IPMI_OEM_SUN_LED_MODE_OFF 0 +#define IPMI_OEM_SUN_LED_MODE_ON 1 +#define IPMI_OEM_SUN_LED_MODE_STANDBY 2 +#define IPMI_OEM_SUN_LED_MODE_SLOW 3 +#define IPMI_OEM_SUN_LED_MODE_FAST 4 + +#define IPMI_OEM_SUN_LED_FORCE_GO_THRU_CONTROLLER 0 +#define IPMI_OEM_SUN_LED_FORCE_DIRECTLY_ACCESS_DEVICE 1 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_QUANTA_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-sun-microsystems-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-sun-microsystems-spec.h new file mode 100644 index 00000000..c1f63cac --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-sun-microsystems-spec.h @@ -0,0 +1,44 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_SUN_MICROSYSTEMS_SPEC_H +#define IPMI_OEM_SUN_MICROSYSTEMS_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Sun 4140 + */ + +/* w/ IPMI_CMD_OEM_SUN_GET_LED / IPMI_CMD_OEM_SUN_SET_LED */ +#define IPMI_OEM_SUN_LED_MODE_OFF 0 +#define IPMI_OEM_SUN_LED_MODE_ON 1 +#define IPMI_OEM_SUN_LED_MODE_STANDBY 2 +#define IPMI_OEM_SUN_LED_MODE_SLOW 3 +#define IPMI_OEM_SUN_LED_MODE_FAST 4 + +#define IPMI_OEM_SUN_LED_FORCE_GO_THRU_CONTROLLER 0 +#define IPMI_OEM_SUN_LED_FORCE_DIRECTLY_ACCESS_DEVICE 1 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_SUN_MICROSYSTEMS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-supermicro-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-supermicro-spec.h new file mode 100644 index 00000000..7d0c015b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-supermicro-spec.h @@ -0,0 +1,77 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_SUPERMICRO_SPEC_H +#define IPMI_OEM_SUPERMICRO_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Supermicro X8DTG + */ + +/* w/ IPMI_CMD_OEM_SUPERMICRO_GENERIC_EXTENSION */ +#define IPMI_OEM_SUPERMICRO_SUB_COMMAND_BMC_SERVICES 0xF0 + +/* w/ IPMI_OEM_SUPERMICRO_SUB_COMMAND_BMC_SERVICES */ +#define IPMI_OEM_SUPERMICRO_BMC_SERVICES_ACTION_DISABLE 0x00 +#define IPMI_OEM_SUPERMICRO_BMC_SERVICES_ACTION_ENABLE 0x01 +#define IPMI_OEM_SUPERMICRO_BMC_SERVICES_ACTION_STATUS 0x02 + +#define IPMI_OEM_SUPERMICRO_BMC_SERVICES_STATUS_DISABLED 0x00 +#define IPMI_OEM_SUPERMICRO_BMC_SERVICES_STATUS_ENABLED 0x01 + +/* + * Supermicro X8DTU, X8STi, X9DRW + */ + +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS_CHANNEL 0x07 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS_PS1 0x70 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS_PS2 0x72 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS_PS3 0x74 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS_MAGIC 0x0C +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS_GOOD 0x01 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS_BAD 0x00 + +#define IPMI_OEM_SUPERMICRO_GET_PMBUS_POWER_SUPPLY_STATUS_CHANNEL 0x07 +#define IPMI_OEM_SUPERMICRO_GET_PMBUS_POWER_SUPPLY_STATUS_PS1 0x78 +#define IPMI_OEM_SUPERMICRO_GET_PMBUS_POWER_SUPPLY_STATUS_PS2 0x7A +#define IPMI_OEM_SUPERMICRO_GET_PMBUS_POWER_SUPPLY_STATUS_PS3 0x7C +#define IPMI_OEM_SUPERMICRO_GET_PMBUS_POWER_SUPPLY_STATUS_MAGIC 0x78 +#define IPMI_OEM_SUPERMICRO_GET_PMBUS_POWER_SUPPLY_STATUS_GOOD 0x01 +#define IPMI_OEM_SUPERMICRO_GET_PMBUS_POWER_SUPPLY_STATUS_BAD 0x00 + +/* + * Supermicro X10DRU-i+ + */ + +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS2_CHANNEL 0x07 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS2_PS1 0xB0 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS2_PS2 0xB2 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS2_MAGIC 0x79 +/* achu: Both of these mean good ... yeah, makes no sense :P */ +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS2_GOOD1 0x00 +#define IPMI_OEM_SUPERMICRO_GET_POWER_SUPPLY_STATUS2_GOOD2 0x02 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_SUPERMICRO_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-wistron-spec.h new file mode 100644 index 00000000..974f0545 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-oem-wistron-spec.h @@ -0,0 +1,437 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_WISTRON_SPEC_H +#define IPMI_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +/* achu: all named from doc except 'lan' configuration id, which I assumed names */ + +/* w/ IPMI_CMD_OEM_WISTRON_GET_EXTENDED_CONFIGURATION / IPMI_OEM_WISTRON_SET_EXTENDED_CONFIGURATION */ + +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_NIC 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_SOL 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_SECURITY 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_ACCOUNT_STATUS 0x05 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_DNS 0x06 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_WEB_SERVER_CONFIGURATION 0x0C +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_FIRMWARE_LOG 0x0E +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_FIRMWARE_INFORMATION 0x0F +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_FIRMWARE_UPDATE 0x10 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_POWER_MANAGEMENT 0x11 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_IPV6_SETTING 0xC0 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIGURATION_ID_IPV6_TRAP_SETTING 0xC1 + +/* nic selection - 1 byte, 0 = shared, 1 = dedicated + * + * shared nic selection - 1 byte, 0 = reerved, 1 = nic1, ..., 4 = nic4 + * - for when nic selection is shared + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SELECTION 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SHARED_NIC_SELECTION 0x02 + +/* sol idle timeout - 2 bytes, ls byte first, 0h = no timeout, default = 01h + * + * telnet redirect function selection - 1 byte, 0 = disable, 1 = sol enabled , 2 = smash enabled + * + * ssh redirect function selection - 1 byte, 0 = disable, 1 = sol enabled , 2 = smash enabled + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_SOL_IDLE_TIMEOUT 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_TELNET_REDIRECT_FUNCTION_SELECTION 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_SSH_REDIRECT_FUNCTION_SELECTION 0x03 + +/* service disabled - 1 byte, bitmask + * - 0x01 = all service except IPMI are disabled + * (takes precedence over other bits) + * - 0x02 = KVM/Virtual Storage + * - 0x04 = HTTP/HTTPS + * - 0x08 = SSH + * - 0x10 = SNMP v2c agent + * - 0x20 = telnet + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SECURITY_SERVICE_DISABLED 0x01 + +/* number of user - 1 byte, read only + * + * number of enabled user - 1 byte, read only + * + * user name - 1-17 bytes, read only + * - Wistron 5441/Xanadu II - reports stored as p-string, does not return p-string + * - Wistron 5442/Xanadu III - returns as p-string + * + * account status - 1 byte + * - 0x00 - status unspecified + * - 0x01 - enabled via set user password + * - 0x02 - disabled via set user password + * - 0x03 - user id is lockout + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_NUMBER_OF_USER 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_NUMBER_OF_ENABLED_USER 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_USER_NAME 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_ACCOUNT_STATUS 0x04 + +/* DNS DHCP enable - 1 byte, 0 - false, 1 - true + * - DNS server IP addresses should be assigned from DHCP server + * + * DNS Server1 - 4 bytes + * - IP address for DNS server 1, read only if DNS DHCP Enable and DHCP are enabled + * + * DNS Server2 - 4 bytes + * - IP address for DNS server 2, read only if DNS DHCP Enable and DHCP are enabled + * + * DNS Register BMC - 0 - false, 1 - true + * - Enable registering the BMC host name on the DNS server + * + * DNS BMC Host Name - 1-64 bytes + * - Specifies the DNS BMC host name, read only if DNS Register BMC is TRUE. + * - Stored as P-string + * + * DNS Domain Name DHCP Enable - 1 byte + * - DNS domain name should be assigned from DHCP + * + * DNS Domain Name - 1-256 bytes + * - DNS domain name string, read only if DNS Domain Name DHCP Enable is TRUE + * - Stored as P-string + * + * DNS Registration Delay - 1 byte (range 1-255) + * - Delay BMC should take after the IPMI process is up and running. + - Default 5 seconds. + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DHCP_ENABLE 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_SERVER1 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_SERVER2 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_REGISTER_BMC 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_BMC_HOST_NAME 0x05 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME_DHCP_ENABLE 0x06 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME 0x07 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_REGISTRATION_DELAY 0x08 + +/* web server enabled - 1 byte, 0 = false, 1 = true (default) + * + * max web sessions - 1 byte, read only + * + * active web sessions - 1 byte, read only + * + * web server timeout - 4 bytes, in seconds, 0 = disable, range 60-1920, default 300 + * + * http port num - 2 bytes, default 80 + * + * https port num - 2 bytes, default 443 + * + * kvm port num - 2 bytes, default 7578 + * + * telnet port num - 2 bytes, default 23 + * + * ssh port num - 2 bytes, default 22 + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_WEB_SERVER_ENABLED 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_MAX_WEB_SESSIONS 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_ACTIVE_WEB_SESSIONS 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_WEB_SERVER_TIMEOUT 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_HTTP_PORT_NUM 0x05 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_HTTPS_PORT_NUM 0x06 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_KVM_PORT_NUM 0x07 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_TELNET_PORT_NUM 0x08 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_WEB_SERVER_CONFIGURATION_SSH_PORT_NUM 0x09 + +/* entity - 1 byte (read only) + * + * firmware version - 1-16 bytes (read only) + * + * branch - 1-16 bytes (read only) + * + * build information - 1-16 bytes (read only) + * + * update date / time - 3 bytes, from 0:00 1/1/08, lsbyte first + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_ENTITY 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_FIRMWARE_VERSION 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_BRANCH 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_BUILD_INFORMATION 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_LOG_UPDATE_DATE_TIME 0x05 + +/* name - 1-16 bytes (read only) + * + * description - 1-256 bytes (read only) + * + * entity - 1 byte (read only) + * + * product info - 1-64 bytes (read only) + * + * firmware version - 1-16 bytes (read only) + * + * branch - 1-16 bytes (read only) + * + * build information - 1-16 bytes (read only) + * + * user default setting - 1 byte (write only) + * + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_NAME 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_DESCRIPTION 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_ENTITY 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_PRODUCT_INFO 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_FIRMWARE_VERSION 0x05 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BRANCH 0x06 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BUILD_INFORMATION 0x07 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_USER_DEFAULT_SETTING 0x08 + +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_NAME_LEN 16 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_DESCRIPTION_LEN 256 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_PRODUCT_INFO_LEN 64 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_FIRMWARE_VERSION_LEN 16 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BRANCH_LEN 16 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_BUILD_INFORMATION_LEN 16 + +/* remote update enable - 1 byte, ?? + * + * protocol - 1 byte, bitmask, 7:3 reserved, 2 : http, 1: ftp, 0: tftp (read only) + * + * uri - 1-256 bytes + * note - first char should be a file or unit separator + * + * connection retry - 1 byte, 0 = no retries + * + * retry interval - 1 byte, in 5 second increments, defalut 01h + * + * delay time - 1 byte, in seconds, 0h = immediate, ffh = random between 5 and 10 + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_REMOTE_UPDATE_ENABLE 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_PROTOCOL 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_URI 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_CONNECTION_RETRY 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_RETRY_INTERVAL 0x05 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_DELAY_TIME 0x06 + +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_RETRY_INTERVAL_INCREMENTS 5 + +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_URI_LEN 256 + +/* power staggery ac recovery - 1 byte, 0x00 = immediate power on + * (default), 0x01 = auto, random between min and max below, 0x02 = + * user defined, must be between min and max below + * + * power on delay - 2 bytes + * + * minimum power on delay - 2 bytes (read only) + * + * maximum power on delay - 2 bytes + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_STAGGERING_AC_RECOVERY 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_ON_DELAY 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_MINIMUM_POWER_ON_DELAY 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_MAXIMUM_POWER_ON_DELAY 0x05 + +/* ipv6 enable - 1 byte, 0 = false, 1 = true + * + * ipv6 address - 1-40 bytes (read only if autoconfig is true) + * + * ipv6 gateway ip - 1-40 bytes + * + * ipv6 prefix length - 1 byte + * + * ipv6 autoconfig - 1 byte, 0 = false, 1 = true + * + * ipv6 link local address - 1-40 bytes (read only) + * + * ipv6 auto dns - 1 byte, 0 = false, 1 = true (can't set to 1 if autoconfig is false) + * + * ipv6 dns server 1 - 1-40 bytes (can't set if auto dns is true) + * + * ipv6 dns server 2 - 1-40 bytes (can't set if auto dns is true) + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_ENABLE 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_ADDRESS 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_GATEWAY_IP_ADDRESS 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_PREFIX_LENGTH 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_AUTOCONFIG 0x05 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_LINK_LOCAL_ADDRESS 0x06 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_AUTO_DNS 0x07 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_DNS_SERVER1 0x08 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_DNS_SERVER2 0x09 + +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_ADDRESS_LEN 40 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_GATEWAY_IP_ADDRESS_LEN 40 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_LINK_LOCAL_ADDRESS_LEN 40 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_DNS_SERVER1_LEN 40 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_DNS_SERVER2_LEN 40 + +/* ipv6 snmp trap destination setting - 3 bytes + * byte 1 - destination type + * byte 2 - alert ack timeout + * byte 3 - retries + * + * ipv6 snmp trap destination address - 1-40 bytes + * + * number of ipv6 snmp trap desitnations - 1 byte (read only) + */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SNMP_TRAP_DESTINATION_SETTING 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SNMP_TRAP_DESTINATION_ADDRESS 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NUMBER_OF_IPV6_SNMP_TRAP_DESTINATION 0x03 + +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SNMP_TRAP_DESTINATION_ADDRESS_LEN 40 + +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_READ_ALL_BYTES 0xFF + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SELECTION */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_NIC_MODE_SHARED 0x00 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_NIC_MODE_DEDICATED 0x01 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SHARED_NIC_SELECTION */ +/* 0h - recommended when nic selection is dedicated */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SHARED_NIC_SELECTION_RESERVED 0x00 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SHARED_NIC_SELECTION_NIC_1 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SHARED_NIC_SELECTION_NIC_2 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SHARED_NIC_SELECTION_NIC_3 0x03 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_NIC_SHARED_NIC_SELECTION_NIC_4 0x04 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_TELNET_REDIRECT_FUNCTION_SELECTION */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_TELNET_REDIRECT_FUNCTION_SELECTION_DISABLE 0x00 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_TELNET_REDIRECT_FUNCTION_SELECTION_SOL_ENABLED 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_TELNET_REDIRECT_FUNCTION_SELECTION_SMASH_ENABLED 0x02 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_SSH_REDIRECT_FUNCTION_SELECTION */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_SSH_REDIRECT_FUNCTION_SELECTION_DISABLE 0x00 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_SSH_REDIRECT_FUNCTION_SELECTION_SOL_ENABLED 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SOL_SSH_REDIRECT_FUNCTION_SELECTION_SMASH_ENABLED 0x02 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_SECURITY_SERVICE_DISABLED */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_ENABLE_ALL 0x00 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_ALL 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_KVM_VIRTUAL_STORAGE 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_HTTP_HTTPS 0x04 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_SSH 0x08 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_SNMP_V2C_AGENT 0x10 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_SECURITY_SERVICES_DISABLED_BITMASK_TELNET 0x20 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_ACCOUNT_STATUS_ACCOUNT_STATUS */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_ACCOUNT_STATUS_UNSPECIFIED 0x00 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_ACCOUNT_STATUS_ENABLED 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_ACCOUNT_STATUS_DISABLED 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_ACCOUNT_STATUS_LOCKOUT 0x03 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_BMC_HOST_NAME */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_DNS_DNS_BMC_HOST_NAME_MAX 64 + +/* IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_DNS_DNS_DOMAIN_NAME */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_DNS_DNS_DOMAIN_NAME_MAX 256 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_ENTITY */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_BMC 0 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_SYSTEM_BIOS 1 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_PDB 2 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_FIRMWARE_INFORMATION_ENTITY_FCB 3 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_USER_DEFAULT_SETTING */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_USER_DEFAULT_SETTING_SET_DEFAULT 0x0 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_INFORMATION_USER_DEFAULT_SETTING_RESTORE_DEFAULT 0x1 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_REMOTE_UPDATE_ENABLE */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_REMOTE_UPDATE_DISABLE 0x00 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_REMOTE_UPDATE_ENABLE 0x01 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_PROTOCOL */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_TFTP 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_FTP 0x02 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_FIRMWARE_UPDATE_PROTOCOL_BITMASK_HTTP 0x04 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_FIRMWARE_UPDATE_DELAY_TIME */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_FIRMWARE_UPDATE_DELAY_TIME_RANDOM 0xFF + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_POWER_MANAGEMENT_POWER_STAGGERING_AC_RECOVERY */ +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_IMMEDIATE 0x00 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_AUTO 0x01 +#define IPMI_OEM_WISTRON_EXTENDED_CONFIG_POWER_STAGGERING_AC_RECOVERY_USER_DEFINED 0x02 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_ENABLE */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_ENABLE_FALSE 0 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_ENABLE_TRUE 1 + +/* w/ #define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_AUTOCONFIG */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_AUTOCONFIG_ENABLE_FALSE 0 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_AUTOCONFIG_ENABLE_TRUE 1 + +/* w/ #define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_AUTO_DNS */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_AUTO_DNS_ENABLE_FALSE 0 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SETTING_IPV6_AUTO_DNS_ENABLE_TRUE 1 + +/* w/ IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SNMP_TRAP_DESTINATION_SETTING */ +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SNMP_TRAP_DESTINATION_SETTING_DESTINATION_TYPE_PET IPMI_DESTINATION_TYPE_PET_TRAP_DESTINATION +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SNMP_TRAP_DESTINATION_SETTING_DESTINATION_TYPE_OEM1 IPMI_DESTINATION_TYPE_OEM1 +#define IPMI_OEM_WISTRON_EXTENDED_ATTRIBUTE_ID_IPV6_SNMP_TRAP_DESTINATION_SETTING_DESTINATION_TYPE_OEM2 IPMI_DESTINATION_TYPE_OEM2 + +/* w/ IPMI_CMD_OEM_WISTRON_RESET_TO_DEFAULTS */ +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_RESTORE_FLAG_RESTORE_PARAMETERS_NOT_INCLUDED_BELOW 0x7 +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_RESTORE_FLAG_REMAINING_PARAMETERS_STAY_WHAT_IT_IS 0x0 +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_RESTORE_FLAG_SHIFT 5 + +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_PEF_BITMASK 0x10 +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_SERIAL_CONFIGURATION_BITMASK 0x08 +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_SOL_CONFIGURATION_BITMASK 0x04 +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_LAN_CONFIGURATION_BITMASK 0x02 +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_USER_ACCOUNTS_BITMASK 0x01 + +#define IPMI_OEM_WISTRON_RESET_TO_DEFAULTS_RESTORE_ALL_SC_SETTINGS 0xFF + +/* w/ IPMI_CMD_OEM_WISTRON_GET_RESTORE_STATUS */ +#define IPMI_OEM_WISTRON_GET_RESTORE_STATUS_RESTORE_IN_PROGRESS 0x00 +#define IPMI_OEM_WISTRON_GET_RESTORE_STATUS_RESTORE_COMPLETE 0x01 + +/* w/ IPMI_CMD_OEM_WISTRON_SET_CHASSIS_SERVICE_TAG and IPMI_CMD_OEM_WISTRON_GET_CHASSIS_SERVICE_TAG */ +#define IPMI_OEM_WISTRON_SC_BMC_COMMUNICATION_PROTOCOL_VERSION 0x01 + +#define IPMI_OEM_WISTRON_CHASSIS_IDENTIFICATION_LED_CONTROLLED_BY_SC_BITMASK 0x01 +#define IPMI_OEM_WISTRON_CHASSIS_IDENTIFICATION_LED_CONTROLLED_BY_SC_SHIFT 0 + +#define IPMI_OEM_WISTRON_CHASSIS_FAULT_LED_CONTROLLED_BY_SC_BITMASK 0x02 +#define IPMI_OEM_WISTRON_CHASSIS_FAULT_LED_CONTROLLED_BY_SC_SHIFT 1 + +#define IPMI_OEM_WISTRON_CHASSIS_LED_OFF 0x00 +#define IPMI_OEM_WISTRON_CHASSIS_LED_SOLID_ON 0x01 +#define IPMI_OEM_WISTRON_CHASSIS_LED_BLINK_ON 0x02 + +/* w/ IPMI_CMD_OEM_WISTRON_GET_CHASSIS_POWER_READINGS */ +#define IPMI_OEM_WISTRON_CHASSIS_TOTAL_POWER_CONSUMPTION_AVAILABLE_BITMASK 0x01 +#define IPMI_OEM_WISTRON_CHASSIS_TOTAL_POWER_CONSUMPTION_AVAILABLE_SHIFT 0 + +#define IPMI_OEM_WISTRON_CHASSIS_COOLING_POWER_CONSUMPTION_AVAILABLE_BITMASK 0x02 +#define IPMI_OEM_WISTRON_CHASSIS_COOLING_POWER_CONSUMPTION_AVAILABLE_SHIFT 1 + +/* w/ IPMI_CMD_OEM_WISTRON_SET_PASSWORD_POLICY + */ +#define IPMI_OEM_WISTRON_PASSWORD_POLICY_DISABLE 0x00 +#define IPMI_OEM_WISTRON_PASSWORD_POLICY_ENABLE 0x01 + +/* w/ IPMI_CMD_OEM_WISTRON_WRITE_PROPRIETARY_STRING + * and IPMI_CMD_OEM_WISTRON_READ_PROPRIETARY_STRING + */ +#define IPMI_OEM_WISTRON_PROPRIETARY_STRING_MAX 80 +#define IPMI_OEM_WISTRON_PROPRIETARY_STRING_BLOCK 16 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-dell-spec.h new file mode 100644 index 00000000..88ceda09 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-dell-spec.h @@ -0,0 +1,486 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_DELL_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * Dell Poweredge R610 + * Dell Poweredge R710 + * Dell Poweredge R720 + */ + +/************************************************ + * Generic Event Reading Type Code Offsets * + ************************************************/ + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_ABSENT 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_STANDBY 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_IPMI_FUNCTION_READY 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_FULLY_READY 0x03 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_OFFLINE 0x04 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_FAILED 0x05 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_ACTIVE 0x06 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_BOOTING 0x07 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_STATUS_WRITE_PROTECTED 0x08 + +/* 0x00 through 0x02 unknown */ +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_OEM_DELL_FAILURE_MEMORY_FAILED_TO_TRANSITION_TO_ONLINE 0x03 + +/* + * String arrays for above + */ + +extern const char * const ipmi_generic_event_reading_type_code_oem_dell_status[]; +extern unsigned int ipmi_generic_event_reading_type_code_oem_dell_status_max_index; + +extern const char * const ipmi_generic_event_reading_type_code_oem_dell_failure[]; +extern unsigned int ipmi_generic_event_reading_type_code_oem_dell_failure_max_index; + +/************************************************ + * Sensor Type Code Offsets OEM Specific * + ************************************************/ + +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS_GOOD 0x00 +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS_DEGRADED_OTHER 0x01 +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS_DEGRADED_THERMAL_PROTECTION 0x02 +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS_DEGRADED_COOLING_CAPACITY_CHANGE 0x03 +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS_DEGRADED_POWER_CAPACITY_CHANGE 0x04 +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS_DEGRADED_USER_DEFINED_POWER_CAPACITY 0x05 +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS_HALTED_SYSTEM_POWER_EXCEEDS_CAPACITY 0x06 +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS_DEGRADED_SYSTEM_POWER_EXCEEDS_CAPACITY 0x07 + +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_GOOD 0x00 +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_FAILED_TO_PROGRAM_VIRTUAL_MAC_ADDRESS 0x01 +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_DEVICE_OPTION_ROM_FAILED_TO_SUPPORT_LINK_TUNING_OR_FLEX_ADDRESS 0x02 +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_FAILED_TO_GET_LINK_TUNING_OR_FLEX_ADDRESS_DATA 0x03 + +/* 0x01 not yet published/known */ +#define IPMI_SENSOR_TYPE_OEM_DELL_NON_FATAL_ERROR_PCIE_ERROR 0x00 +#define IPMI_SENSOR_TYPE_OEM_DELL_NON_FATAL_ERROR_QPI_LINK_DEGRADE 0x02 + +#define IPMI_SENSOR_TYPE_OEM_DELL_FATAL_IO_ERROR_SUCCESSFUL 0x00 +#define IPMI_SENSOR_TYPE_OEM_DELL_FATAL_IO_ERROR_FATAL_IO_ERROR 0x01 + +#define IPMI_SENSOR_TYPE_OEM_DELL_UPGRADE_SUCCESSFUL 0x00 +#define IPMI_SENSOR_TYPE_OEM_DELL_UPGRADE_FAILED 0x01 + +/* + * String arrays for above + */ + +extern const char * const ipmi_sensor_type_oem_dell_system_performance_degradation_status[]; +extern unsigned int ipmi_sensor_type_oem_dell_system_performance_degradation_status_max_index; + +extern const char * const ipmi_sensor_type_oem_dell_link_tuning[]; +extern unsigned int ipmi_sensor_type_oem_dell_link_tuning_max_index; + +extern const char * const ipmi_sensor_type_oem_dell_non_fatal_error[]; +extern unsigned int ipmi_sensor_type_oem_dell_non_fatal_error_max_index; + +extern const char * const ipmi_sensor_type_oem_dell_fatal_io_error[]; +extern unsigned int ipmi_sensor_type_oem_dell_fatal_io_error_max_index; + +extern const char * const ipmi_sensor_type_oem_dell_upgrade[]; +extern unsigned int ipmi_sensor_type_oem_dell_upgrade_max_index; + +/************************************************ + * Sensor Type Code Offsets OEM Extra * + ************************************************/ + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_DELL_POST_FATAL_ERROR 0x0F + +/* Other Event Macros */ + +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_INTRUSION_WHILE_SYSTEM_ON 0x01 +#define IPMI_SENSOR_TYPE_PHYSICAL_SECURITY_INTRUSION_WHILE_SYSTEM_OFF 0x02 + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA2_OEM_DELL_PSU_COMMUNICATION_ERROR 0x01 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA2_OEM_DELL_OVER_TEMPERATURE_WARNING 0x02 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA2_OEM_DELL_OVER_TEMPERATURE_FAULT 0x03 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA2_OEM_DELL_UNDER_VOLTAGE_FAULT 0x04 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA2_OEM_DELL_OVER_VOLTAGE_FAULT 0x05 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA2_OEM_DELL_OVER_CURRENT_FAULT 0x06 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA2_OEM_DELL_FAN_FAULT 0x07 + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA2_OEM_DELL_OFFSET_CONFIGURATION_ERROR_WATTS_SHIFT 4 + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OEM_DELL_OFFSET_CONFIGURATION_ERROR_ERROR_TYPE_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OEM_DELL_OFFSET_CONFIGURATION_ERROR_ERROR_TYPE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OEM_DELL_OFFSET_CONFIGURATION_ERROR_WATTS_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_EVENT_DATA3_OEM_DELL_OFFSET_CONFIGURATION_ERROR_WATTS_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_SPARE_MODE_BITMASK 0x1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_RAID_MODE_BITMASK 0x2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_MIRROR_MODE_BITMASK 0x4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_MEMORY_CARD_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_MEMORY_CARD_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_DIMM_COUNTER_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_DIMM_COUNTER_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_BANK_NUMBER_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_BANK_NUMBER_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_MEMORY_CARD_MIN 0x00 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_MEMORY_CARD_MAX 0x07 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_MEMORY_CARD_VALID(__memory_card) \ + (((__memory_card + 1) >= (IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_MEMORY_CARD_MIN + 1) \ + && (__memory_card) <= IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_MEMORY_CARD_MAX) ? 1 : 0) + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_BANK_NUMBER_MIN 0x00 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_BANK_NUMBER_MAX 0x07 + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_BANK_NUMBER_VALID(__bank_number) \ + (((__bank_number + 1) >= (IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_BANK_NUMBER_MIN + 1) \ + && (__bank_number) <= IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_BANK_NUMBER_MAX) ? 1 : 0) + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_DIMM_NUMBER_MIN 0x00 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_DIMM_NUMBER_MAX 0x7F + +/* To avoid gcc warnings, add +1 in comparison */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_DIMM_NUMBER_VALID(__bank_number) \ + (((__bank_number + 1) >= (IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_DIMM_NUMBER_MIN + 1) \ + && (__bank_number) <= IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_DIMM_NUMBER_MAX) ? 1 : 0) + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_4_DIMMS_PER_NODE 0x08 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_6_DIMMS_PER_NODE 0x09 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_8_DIMMS_PER_NODE 0x0A +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_9_DIMMS_PER_NODE 0x0B +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_12_DIMMS_PER_NODE 0x0C +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_24_DIMMS_PER_NODE 0x0D +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_USE_DATA1_UPPER_NIBBLE 0x0E +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_DELL_NO_CARD 0x0F + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA1_OEM_DELL_DIMMS_PER_PACKAGE_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA1_OEM_DELL_DIMMS_PER_PACKAGE_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA1_OEM_DELL_DIMMS_PER_PACKAGE_3 0x00 + +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA2_OEM_DELL_MANAGEMENT_CONTROLLER_FIRMWARE_REVISION 0x02 + +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA3_OEM_DELL_OTHER 0x00 +#define IPMI_SENSOR_TYPE_VERSION_CHANGE_EVENT_DATA3_OEM_DELL_CPU 0x01 + +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_EVENT_DATA2_BLADE_FORMAT_BITMASK 0xC0 +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_EVENT_DATA2_BLADE_FORMAT_SHIFT 6 + +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_EVENT_DATA2_BLADE_FORMAT_SINGLE_HEIGHT 0 +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_EVENT_DATA2_BLADE_FORMAT_DOUBLE_HEIGHT 1 +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING_EVENT_DATA2_BLADE_FORMAT_DOUBLE_HEIGHT_DOUBLE_WEIGHT 2 + +/* device number, function number, bus/slot number apply to multiple + * sensor types + */ + +#define IPMI_OEM_DELL_EVENT_DATA2_DEVICE_NUMBER_BITMASK 0xF8 +#define IPMI_OEM_DELL_EVENT_DATA2_DEVICE_NUMBER_SHIFT 3 + +#define IPMI_OEM_DELL_EVENT_DATA2_FUNCTION_NUMBER_BITMASK 0x07 +#define IPMI_OEM_DELL_EVENT_DATA2_FUNCTION_NUMBER_SHIFT 0 + +#define IPMI_OEM_DELL_EVENT_DATA3_BUS_SLOT_FLAG_BITMASK 0x80 +#define IPMI_OEM_DELL_EVENT_DATA3_BUS_SLOT_FLAG_SHIFT 7 + +#define IPMI_OEM_DELL_EVENT_DATA3_BUS_SLOT_BITMASK 0x7F +#define IPMI_OEM_DELL_EVENT_DATA3_BUS_SLOT_SHIFT 0 + +/* option rom macros apply to multiple sensor types */ + +#define IPMI_OEM_DELL_EVENT_DATA3_OPTION_ROM_BITMASK 0x80 +#define IPMI_OEM_DELL_EVENT_DATA3_OPTION_ROM_SHIFT 7 + +#define IPMI_OEM_DELL_EVENT_DATA3_OPTION_ROM_EMBEDDED 0 +#define IPMI_OEM_DELL_EVENT_DATA3_OPTION_ROM_SLOT 1 + +#define IPMI_OEM_DELL_EVENT_DATA3_OPTION_ROM_SLOT_BITMASK 0x7F +#define IPMI_OEM_DELL_EVENT_DATA3_OPTION_ROM_SLOT_SHIFT 0 + +/* BIOS Progress and Fatal Error Codes */ +/* + * 00h and FFh are reserved + * Progress codes range from 01h to 7Fh + * Fatal error codes range from 80h to FEh + * Progress codes less than 3Fh are pre-video activity + * Progress codes greather than 40h are post-video activity + * Fatal error codes less than BFh indicate pre-video failure + * Fatal error codes greater than C0h indicate post-video failure. + */ + +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_SYSTEM_POWER_ON 0x01 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_CPU_MICROCODE_LOAD 0x02 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_CHIPSET_INITIALIZATION 0x03 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_MEMORY_CONFIGURATION 0x04 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_SHADOW_BIOS 0x05 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_MULTIPROCESSOR_INITIALIZATION 0x06 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_POST_PROCESSING_START 0x07 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_SMM_MODE_INITIALIZATION 0x08 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_PCI_BUS_ENUMERATION_VIDEO_INITIALIZATION 0x09 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_DISPLAY_SIGN_ON 0x40 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_PCI_CONFIGURATION 0x41 +#define IPMI_OEM_DELL_BIOS_PROGRESS_CODE_GIVE_CONTROL_TO_OS 0x7F + +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_NO_MEMORY_DETECTED 0x80 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_MEMORY_DETECTED_BUT_IS_NOT_CONFIGURABLE 0x81 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_MEMORY_CONFIGURED_BUT_NOT_USABLE 0x82 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_SYSTEM_BIOS_SHADOW_FAILURE 0x83 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_CMOS_FAILURE 0x84 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_DMA_CONTROLLER_FAILURE 0x85 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_INTERRUPT_CONTROLLER_FAILURE 0x86 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_TIMER_REFRESH_FAILURE 0x87 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_PROGRAMMABLE_INTERVAL_TIMER_ERROR 0x88 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_PARITY_ERROR 0x89 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_SIO_FAILURE 0x8A +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_KEYBOARD_CONTROLLER_FAILURE 0x8B +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_SMI_INITIALIZATION_FAILURE 0x8C +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_SHUTDOWN_TEST_FAILURE 0xC0 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_POST_MEMORY_TEST_FAILURE 0xC1 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_RAC_CONFIGURATION_FAILURE 0xC2 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_CPU_CONFIGURATION_FAILURE 0xC3 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_INCORRECT_MEMORY_CONFIGURATION 0xC4 +#define IPMI_OEM_DELL_BIOS_FATAL_ERROR_CODE_GENERAL_FAILURE_AFTER_VIDEO 0xFE + +/* + * Dell Poweredge R720 + */ + +#define IPMI_OEM_DELL_EVENT_DATA2_QPI_LINK_ERROR_REPORTING_AGENT_ID_BITMASK 0x03 +#define IPMI_OEM_DELL_EVENT_DATA2_QPI_LINK_ERROR_REPORTING_AGENT_ID_SHIFT 0 + +#define IPMI_OEM_DELL_EVENT_DATA2_QPI_LINK_ERROR_REPORTING_AGENT_LINK_ID_BITMASK 0x0C +#define IPMI_OEM_DELL_EVENT_DATA2_QPI_LINK_ERROR_REPORTING_AGENT_LINK_ID_SHIFT 2 + +#define IPMI_OEM_DELL_EVENT_DATA2_QPI_LINK_ERROR_PARTNER_AGENT_ID_BITMASK 0x30 +#define IPMI_OEM_DELL_EVENT_DATA2_QPI_LINK_ERROR_PARTNER_AGENT_ID_SHIFT 4 + +#define IPMI_OEM_DELL_EVENT_DATA2_QPI_LINK_ERROR_PARTNER_LINK_ID_BITMASK 0xC0 +#define IPMI_OEM_DELL_EVENT_DATA2_QPI_LINK_ERROR_PARTNER_LINK_ID_SHIFT 6 + +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_REPORTING_AGENT_TYPE_BITMASK 0x01 +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_REPORTING_AGENT_TYPE_SHIFT 0 + +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_PARTNER_AGENT_TYPE_BITMASK 0x02 +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_PARTNER_AGENT_TYPE_SHIFT 1 + +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_ERROR_TYPE_BITMASK 0xFC +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_ERROR_TYPE_SHIFT 2 + +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_AGENT_TYPE_CPU 0 +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_AGENT_TYPE_IOH 1 + +#define IPMI_OEM_DELL_EVENT_DATA3_QPI_LINK_ERROR_ERROR_TYPE_LINK_WIDTH_DEGRADED 0 + +#define IPMI_OEM_DELL_EVENT_DATA3_TXT_ERROR_TYPE_BIOS_TXT_ERROR 0x00 +#define IPMI_OEM_DELL_EVENT_DATA3_TXT_ERROR_TYPE_PROCESSOR_FIT_TXT_ERROR 0x02 +#define IPMI_OEM_DELL_EVENT_DATA3_TXT_ERROR_TYPE_BIOS_ACM_TXT_ERROR 0x03 +#define IPMI_OEM_DELL_EVENT_DATA3_TXT_ERROR_TYPE_SINIT_ACM_TXT_ERROR 0x04 +/* achu: TT instead of TXT in spec, assume typo */ +#define IPMI_OEM_DELL_EVENT_DATA3_TXT_ERROR_TYPE_UNRECOGNIZED_TXT_ERROR 0xFF + +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ERROR_STATUS_VT_CONFIGURATION_INVALID 0x01 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ERROR_STATUS_TPM_CONFIGURATION_INVALID 0x02 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ERROR_STATUS_FIT_CRTM_ERROR 0x03 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ERROR_STATUS_BIOS_ACM_ERROR 0x04 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ERROR_STATUS_SINIT_ACM_ERROR 0x05 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ERROR_STATUS_TPM_PROVISIONING_ERROR 0x06 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_LEGACY_SHUTDOWN 0x0A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_BAD_ACM_TYPE 0x0B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_UNSUPPORTED_ACM 0x0C +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_AUTHENTICATE_FAIL 0x0D +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_BAD_ACM_FORMAT 0x0E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_UNEXPECTED_HITM 0x0F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_ILLEGAL_EVENT 0x10 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_BAD_JOIN_FORMAT 0x11 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_UNRECOVERABLE_MC_ERROR 0x12 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_VMX_ABORT 0x13 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_ACM_CORRUPT 0x14 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_PROCESSOR_ERROR_STATUS_ILLEGAL_VID_RATIO 0x15 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_BIOS_ACM_ENTRY_POINT 0x1E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_HEAP_UNINITIALIZED 0x1F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_DPR_UNINITIALIZED 0x20 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_HEAP_ABOVE_TOP_OF_LOWER_MEMORY 0x21 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_PCIEXBAR_SET_TO_INVALID_VALUE 0x22 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LT_HEAP_IS_ABOVE_4GB 0x23 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LT_HEAP_IS_NOT_IN_DPR_REGION 0x24 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TXT_DISABLED_BY_MEANS_OF_TXT_POLICY_BIT 0x25 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_EITHER_STARTUP_ACM_WAS_CALLED_FROM_BIOS_OR_CPU_OFFSET_IN_PCIEXBAR_IS_TOO_LARGE 0x26 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_NON_SUPPORTED_DEVICE_ID 0x27 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MEMORY_IS_NOT_LOCKED 0x28 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_SENTER_USED_TO_LAUNCH_AC_MODULE 0x29 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_START_MTRR_CHECK 0x2A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MTRR_RULE_1_ERROR 0x2B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MTRR_RULE_2_ERROR 0x2C +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MTRR_RULE_3_ERROR 0x2D +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MTRR_RULE_4_ERROR 0x2E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MTRR_RULE_5_ERROR 0x2F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MTRR_RULE_6_ERROR 0x30 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_PCIEXBAR_SET_TO_INVALID_SIZE 0x31 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TPM_EXTEND_ATTEMPT 0x32 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TPM_ACCESS_REGISTER_CONTENTS_INVALID 0x33 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_UNABLE_TO_GET_ACCESS_TO_THE_LOCALITY 0x34 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_OUTPUT_BUFFER_FOR_THE_TPM_RESPONSE_TOO_SHORT 0x35 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_INPUT_PARAMETER_FOR_THE_FUNCTION_INVALID 0x36 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_INVALID_RESPONSE_FOR_THE_TPM 0x37 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TIME_OUT_FOR_TPM_RESPONSE 0x38 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TPM_RETURNED_AN_ERROR 0x39 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TPM_NV_RAM_NOT_LOCKED 0x3A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TPM_IS_DISABLED 0x3B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TPM_IS_DEACTIVATED 0x3C +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TPM_NV_INDICES_INCORRECTLY_DEFINED 0x3D +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LCP_NO_PO_POLICY_DATA_DEFINED 0x3E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LPC_MLE_MISMATC 0x3F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LPC_PLATFORM_CONFIG_MISMATC 0x40 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LPC_SINIT_REVOKED 0x41 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LPC_NPW_NOT_ALLOWED 0x42 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LPC_PO_POLICY_INTEGRITY_FAILED 0x43 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LPC_PS_POLICY_INTEGRITY_FAILED 0x44 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_INTERRUPT_OCCURED 0x45 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_CPU_NOT_SUPPORTED_BY_THIS_ACM 0x46 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_ONE_OF_THE_FIT_TABLE_CHECKS_FAILED 0x47 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_VERIFY_BIOS_FAILED 0x48 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_BIOS_POLICY_FAILURE 0x49 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MEMORY_LOCKED_WHEN_CLEARSECRETS_IS_CALLED 0x4A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_BIOS_UNTRUSTED_WHEN_CLEARSECRETS_IS_CALLED 0x4B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MEMORY_LOCKED_WHEN_CLEARSECRETS_IS_CALLED2 0x4C +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_FIT_POLICY_TPM_OR_TXT_POLICY_DATA_BAD 0x4D +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_FIT_TABLE_END_NOT_BELOW_4GB 0x4E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_DIDNT_FIND_BIOS_STARTUP_RECORD_THAT_INCLUDES_RESET_VECTOR 0x4F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_DIDNT_FIND_BIOS_STARTUP_RECORD_THAT_INCLUDES_FIT_POINTER 0x50 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_FOUND_OVERLAP_BETWEEN_BIOS_STARTUP_REGIONS 0x51 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_FOUND_OVERLAP_BETWEEN_A_BIOS_STARTUP_REGION_AND_THE_STARTUP_ACM 0x52 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LT_SPAD_ERROR_CONDITION_FOUND_IN_SCHECK_CALL 0x53 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LT_SPAD_ERROR_CONDITION_FOUND_IN_CLEAR_SECRETS_CALL 0x54 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LT_SPAD_ERROR_CONDITION_FOUND_IN_UNLOCK_CONFIG_CALL 0x55 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_LT_SPAD_ERROR_CONDITION_FOUND_IN_RESET_AUX_CALL 0x56 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MTRR_MASK_ERROR_EX_ONLY 0x57 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_MTRR_MAP_ERROR_EX_ONLY 0x58 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_TIMEOUT_WHILE_ACQUIRING_SHARED_RESOURCE_EX_ONLY 0x59 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_BAD_RESOURCE_NUMBER_SPECIFIED_WHEN_ACQUIRING_SHARED 0x5A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_BIOS_ACM_ERROR_STATUS_CPU_REV_IS_NOT_SUPPORTED_BY_THIS_ACM 0x5B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_INVALID_SINIT_EXIT_ADDRESS 0x64 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LOCK_CONFIG_CALL_TO_BIOS_ACM_NOT_DONE_BY_ALL_SOCKETS 0x65 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MLE_JOIN_ABOVE_4GB 0x66 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_HEAP_UNINITIALIZED 0x67 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DPR_UNINITIALIZED 0x68 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_HEAP_REGION_DEFINED_ABOVE_4GB 0x69 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TXT_MEMORY_REGION_DISABLED 0x6A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_NON_SUPPORTED_DEVICE_ID 0x6B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MEMORY_IS_NOT_LOCKED 0x6C +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SENTER_USED_TO_LAUNCH_THE_AC_MODULE 0x6D +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_START_MTRR_CHECK 0x6E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MTRR_RULE_1_ERROR 0x6F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MTRR_RULE_2_ERROR 0x70 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MTRR_RULE_3_ERROR 0x71 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MTRR_RULE_4_ERROR 0x72 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MTRR_RULE_5_ERROR 0x73 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MTRR_RULE_6_ERROR 0x74 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_INVALID_MTRR_MASK_VALUE 0x75 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_INVALID_MTRR_MAPPING 0x76 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DPR_SIZE_ERROR 0x77 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_HEAP_BASE_ERROR 0x78 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_HEAP_SIZE_ERROR 0x79 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SINIT_BASE_ERROR 0x7A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SINIT_SIZE_ERROR 0x7B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_BAR_OVERLAP 0x7C +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DPR_NOT_LOCKED 0x7D +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_BAR_SIZE_ERROR 0x7E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_PMR_NOT_PROGRAMMED 0x7F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SINIT_LOC_ERROR 0x80 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MCHBAR_LOCATED_ABOVE_4GB 0x81 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SINIT_MEMORY_SPACE_LOCATED_ABOVE_4GB 0x82 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_VERSION_ERROR 0x83 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_PMR_LOW_ERROR 0x84 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_PMR_LOW_BASE_ERROR 0x85 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_PMR_LOW_SIZE_ERROR 0x86 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_PMR_HIGH_ERROR 0x87 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_PMR_OVERLAP 0x88 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_ABOVE_PHYSICAL_MEMORY 0x89 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_SIZE_ERROR 0x8A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OS_DATA_REQ_CAPABILITIES_ERROR 0x8B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LCP_POLICY_NOT_IN_DMA_PROTECTED_REGION 0x8C +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_RSDP_NOT_FOUND 0x8D +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_RSDP_CHECKSUM_ERROR 0x8E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_RSDT_CHECKSUM_ERROR 0x8F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DMAR_NOT_FOUND 0x90 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DMAR_CHECKSUM_ERROR 0x91 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DRHD_BAR_NOT_FOUND 0x92 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DMAR_LENGTH_ERROR 0x93 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DRHD_DEV_SCOPE_ERROR 0x94 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_RMRR_NOT_FOUND 0x95 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DPR_DMAR_OVERLAP 0x96 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MSEG_SIZE_ERROR 0x97 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MSEG_BASE_ERROR 0x98 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_MSEG_DIFF_BASE_ERROR 0x99 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TPM_EXTEND_ATTEMPT 0x9A +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TPM_ACCESS_REGISTER_CONTENTS_INVALID 0x9B +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_UNABLE_TO_GET_ACCESS_TO_THE_LOCALITY 0x9C +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_OUTPUT_BUFFER_FOR_THE_TPM_RESPONSE_TOO_SHORT 0x9D +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_INPUT_PARAMETER_FOR_THE_FUNCTION_INVALID 0x9E +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_INVALID_RESPONSE_FOR_THE_TPM 0x9F +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TIME_OUT_FOR_TPM_RESPONSE 0xA0 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TPM_RETURNED_AN_ERROR 0xA1 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TPM_NV_RAM_NOT_LOCKED 0xA2 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TPM_IS_DISABLED 0xA3 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TPM_IS_DEACTIVATED 0xA4 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TPM_NV_INDICES_INCORRECTLY_DEFINED 0xA5 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_PCR17_NOT_VALID 0xA6 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_VALUE_IN_PCR17_DOES_NOT_MATCH_EXPECTED_RESULT 0xA7 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_VALUE_IN_PCR18_DOES_NOT_MATCH_EXPECTED_RESULT 0xA8 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_TPM_STARTUP_HAS_ALREADY_BEEN_RUN 0xA9 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_TOLM_ERROR 0xAA +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_ALIAS_ERROR 0xAB +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_TOHM_ERROR 0xAC +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_SAD_RULES_ERROR 0xAD +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_TSEG_ERROR 0xAE +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_PCIEX_BAR_ERROR 0xAF +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_MAD_OVERLAP 0xB0 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_UNCORE_IIO_SAD_ERROR 0xB1 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_TAD_RULES_ERROR 0xB2 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_SAG_ERROR 0xB3 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_RIR_ERROR 0xB4 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_SMRR_ERROR 0xB5 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_SCHECK_CHANNEL_MAPPER_ERROR 0xB6 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_DMA_REMAP_ERROR 0xB7 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_ME_VT_POLICY_ERROR 0xB8 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LCP_NO_PO_POLICY_DATA_DEFINE 0xB9 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LCP_MLE_MISMATCH 0xBA +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LCP_PLATFORM_CONFIG_MISMATCH 0xBB +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LCP_SINIT_REVOKED 0xBC +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LCP_NPW_NOT_ALLOWED 0xBD +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LCP_PO_POLICY_INTEGRITY_FAILED 0xBE +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_LCP_PS_POLICY_INTEGRITY_FAILED 0xBF +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_INTERRUPT_ERROR 0xC0 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_VTD_TABLE_LARGER_THAN_HEAP_SIZE 0xC1 +#define IPMI_SENSOR_TYPE_OS_CRITICAL_STOP_OEM_DELL_TXT_ERROR_CODE_SINIT_ACM_ERROR_STATUS_CPU_NOT_SUPPORTED_BY_THIS_ACM 0xC2 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_DELL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-fujitsu-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-fujitsu-spec.h new file mode 100644 index 00000000..1af2735f --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-fujitsu-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_FUJITSU_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_FUJITSU_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * Fujitsu Siemens Computers + * Fujitsu Technology Solutions + * iRMC S1 / iRMC S2 + */ + +/* 0xC0 / IPMI_SENSOR_TYPE_OEM_FUJITSU_I2C_BUS*/ +extern const char * const ipmi_sensor_type_oem_fujitsu_i2c_bus[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_i2c_bus_max_index; + +/* 0xDD / IPMI_SENSOR_TYPE_OEM_FUJITSU_SYSTEM_POWER_CONSUMPTION */ +extern const char * const ipmi_sensor_type_oem_fujitsu_system_power_consumption[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_system_power_consumption_max_index; + +/* 0xDE / IPMI_SENSOR_TYPE_OEM_FUJITSU_MEMORY_STATUS */ +extern const char * const ipmi_sensor_type_oem_fujitsu_memory_status[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_memory_status_max_index; + +/* 0xDF / IPMI_SENSOR_TYPE_OEM_FUJITSU_MEMORY_CONFIG */ +extern const char * const ipmi_sensor_type_oem_fujitsu_memory_config[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_memory_config_max_index; + +/* 0xE1 / IPMI_SENSOR_TYPE_OEM_FUJITSU_MEMORY */ +extern const char * const ipmi_sensor_type_oem_fujitsu_memory[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_memory_max_index; + +/* 0xE3 / IPMI_SENSOR_TYPE_OEM_FUJITSU_HW_ERROR */ +extern const char * const ipmi_sensor_type_oem_fujitsu_hw_error[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_hw_error_max_index; + +/* 0xE4 / IPMI_SENSOR_TYPE_OEM_FUJITSU_SYS_ERROR */ +extern const char * const ipmi_sensor_type_oem_fujitsu_sys_error[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_sys_error_max_index; + +/* 0xE6 / IPMI_SENSOR_TYPE_OEM_FUJITSU_FAN_STATUS */ +extern const char * const ipmi_sensor_type_oem_fujitsu_fan_status[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_fan_status_max_index; + +/* 0xE8 / IPMI_SENSOR_TYPE_OEM_FUJITSU_PSU_STATUS */ +extern const char * const ipmi_sensor_type_oem_fujitsu_psu_status[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_psu_status_max_index; + +/* 0xE9 / IPMI_SENSOR_TYPE_OEM_FUJITSU_PSU_REDUNDANCY */ +extern const char * const ipmi_sensor_type_oem_fujitsu_psu_redundancy[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_psu_redundancy_max_index; + +/* 0xEC / IPMI_SENSOR_TYPE_OEM_FUJITSU_FLASH */ +extern const char * const ipmi_sensor_type_oem_fujitsu_flash[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_flash_max_index; + +/* 0xEF / IPMI_SENSOR_TYPE_OEM_FUJITSU_CONFIG_BACKUP */ +extern const char * const ipmi_sensor_type_oem_fujitsu_config_backup[]; +extern unsigned int ipmi_sensor_type_oem_fujitsu_config_backup_max_index; + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_FUJITSU_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-hp-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-hp-spec.h new file mode 100644 index 00000000..51347417 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-hp-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_HP_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_HP_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * HP Proliant DL160 G8 + */ + +#define IPMI_OEM_HP_UID_LIGHT_ON 0x00 +#define IPMI_OEM_HP_UID_LIGHT_OFF 0x01 +#define IPMI_OEM_HP_UID_LIGHT_BLINKING 0x02 + +#define IPMI_OEM_HP_HEALTH_LED_GREEN 0x00 +#define IPMI_OEM_HP_HEALTH_LED_AMBER 0x01 +#define IPMI_OEM_HP_HEALTH_LED_RED 0x02 + +/* + * String arrays for above + */ + +extern const char * const ipmi_oem_hp_uid_light[]; +extern unsigned int ipmi_oem_hp_uid_light_max_index; + +extern const char * const ipmi_oem_hp_health_led[]; +extern unsigned int ipmi_oem_hp_health_led_max_index; + + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_HP_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-intel-node-manager-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-intel-node-manager-spec.h new file mode 100644 index 00000000..51cc33ac --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-intel-node-manager-spec.h @@ -0,0 +1,331 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INTEL_NODE_MANAGER_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INTEL_NODE_MANAGER_SPEC_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 + */ + +/* Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_EXCEPTION_EVENT + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_EXCEPTION_EVENT_EVENT_DATA1_NODE_MANAGER_POLICY_EVENT_BITMASK 0x08 +#define IPMI_OEM_INTEL_NODE_MANAGER_EXCEPTION_EVENT_EVENT_DATA1_NODE_MANAGER_POLICY_EVENT_SHIFT 3 + +#define IPMI_OEM_INTEL_NODE_MANAGER_EXCEPTION_EVENT_EVENT_DATA1_NODE_MANAGER_POLICY_EVENT_POLICY_CORRECTION_TIME_EXCEEDED 0x1 + +#define IPMI_OEM_INTEL_NODE_MANAGER_EXCEPTION_EVENT_EVENT_DATA2_DOMAIN_ID_BITMASK 0x0F +#define IPMI_OEM_INTEL_NODE_MANAGER_EXCEPTION_EVENT_EVENT_DATA2_DOMAIN_ID_SHIFT 0 + +/* Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT_EVENT_DATA1_POLICY_INTERFACE_CAPABILITY_BITMASK 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT_EVENT_DATA1_POLICY_INTERFACE_CAPABILITY_SHIFT 0 + +#define IPMI_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT_EVENT_DATA1_MONITORING_CAPABILITY_BITMASK 0x02 +#define IPMI_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT_EVENT_DATA1_MONITORING_CAPABILITY_SHIFT 1 + +#define IPMI_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT_EVENT_DATA1_POWER_LIMITING_CAPABILITY_BITMASK 0x04 +#define IPMI_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT_EVENT_DATA1_POWER_LIMITING_CAPABILITY_SHIFT 2 + +#define IPMI_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT_NOT_AVAILABLE 0 +#define IPMI_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_CHANGE_EVENT_AVAILABLE 1 + +/* Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_EVENT_DATA1_THRESHOLD_NUMBER_BITMASK 0x03 +#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_EVENT_DATA1_THRESHOLD_NUMBER_SHIFT 0 + +#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_EVENT_DATA1_NODE_MANAGER_POLICY_EVENT_BITMASK 0x08 +#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_EVENT_DATA1_NODE_MANAGER_POLICY_EVENT_SHIFT 3 + +#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_EVENT_DATA1_NODE_MANAGER_POLICY_EVENT_THRESHOLD_EXCEEDED 0x0 +#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_EVENT_DATA1_NODE_MANAGER_POLICY_EVENT_POLICY_CORRECTION_TIME_EXCEEDED 0x1 + +#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_EVENT_DATA2_DOMAIN_ID_BITMASK 0x0F +#define IPMI_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_EVENT_DATA2_DOMAIN_ID_SHIFT 0 + +/* Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_ME_FIRMWARE_HEALTH_EVENT + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_FIRMWARE_STATUS 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_SERVER_PLATFORM_SERVICES_FIRMWARE_HEALTH_EVENT_FIRMWARE_STATUS IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_FIRMWARE_STATUS + +/* Recovery GPIO forced. Recovery Image loaded due to MGPIO pin + * asserted. Pin number is configurable in factory presets, Default + * recovery pin is MGPIO1. Repair action: Deassert MGPIO1 and reset + * the Intel ME + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_RECOVERY_GPIO_FORCED 0x00 +/* Image execution failed. Recovery Image or backup operational image + * loaded because operational image is corrupted. This may be caused + * by Flash device corruption or failed upgrade procedure. Repair + * action: Either the flash device must be replaced (if error is + * persistent) or the upgrade procedure must be started again. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_IMAGE_EXECUTION_FAILED 0x01 +/* Flash erase error. Error during Flash erasure procedure probably + * due to flash part corruption. Repair action: The flash device + * must be replaced. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_ERASE_ERROR 0x02 +/* Flash state information. Repair action: Check extended info byte + * in Event Data 3 (byte 7) whether wearout protection is causing this + * event. If so, wait until wearout protection expires; otherwise + * probably the flash device must be replaced (if error is + * persistent). + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_STATE_INFORMATION 0x03 +/* Internal error. Error during firmware execution - if Event Data 3 + * (byte 7) contains 0 then FW Watchdog Timeout; otherwise please + * contact Intel representative for support. Repair action: + * Operational image shall be updated to other version or hardware + * board repair is needed (if error is persistent). + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_INTERNAL_ERROR 0x04 +/* BMC did not respond to cold reset request and Intel ME rebooted + * the platform. Repair action: Verify the Intel NM configuration. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_BMC_COLD_RESET_ERROR 0x05 +/* Direct flash update requested by the BIOS. Intel ME firmware + * will switch to recovery mode to perform full update from BIOS. + * Repair action: This is transient state. Intel ME firmware should + * return to operational mode after successful image update + * performed b the BIOS. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_DIRECT_FLASH_UPDATE 0x06 +/* Manufacturing error. Wrong manufacturing configuration detected + * by Intel ME firmware Repair action: The flash device must be + * replaced (if error is persistent). + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_MANUFACTURING_ERROR 0x07 +/* Persistent storage integrity error. Flash file system error + * detected. Repair action. If error is persistent, restore + * factory presets using "Force ME Recovery" IPMI command or by + * doing AC power cycle with Recovery jumper asserted. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_PERSISTENT_STORAGE_INTEGRITY_ERROR 0x08 +/* Firmware exception. Repair action: Restore factory presets using + * "Force ME Recovery" IPMI command or by doing AC power cycle with + * Recovery jumper asserted. If this does not clear the issue, + * reflash the SPI flash. If the issue persists, provide the + * content of Event Data 3 to Intel support team for interpretation. + * (Event Data 3 codes are not documented because they only provide + * clues that must be interpreted individually. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FIRMWARE_EXCEPTION 0x09 +/* Flash Wear-Out Protection Warning. Warning threshold for number + * of flash operations has been exceeded. Repair action: No immediate + * repair action needed. This i sjust a warning event. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_WEAR_OUT_PROTECTION_WARNING 0x0A +/* PECI over DMI interface error. This is a notification that PECI + * over DMI interface failure was detected and it is not functional + * any more. It may indicatethe situation when PECI over DMI was not + * configured by BIOS or a defect which may require a CPU Host reset + * to recover from. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_PECI_OVER_DMI_INTERFACE_ERROR 0x0D +/* MCTP interface error. This is a notification that MCTP interface + * failure was detected and it is not functional any more. It may + * indicate the situation when MCTP was not configured by BIOS or a + * defect which may need a Host reset to recover from. Repair action: + * Recovery via CPU Host reset or platform reset. + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_MCTP_INTERFACE_ERROR 0x0E +/* Auto-configuration finished. Operational image finished power + * source auto-configuration. Repair action: Auto-configuration could + * be enforced by restore to factory defaults + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_AUTO_CONFIGURATION_FINISHED 0x0F + +/* Legacy macros, changed b/c of new names in Intel NM 2.0 specification */ +#define IPMI_OEM_INTEL_NODE_MANAGER_SERVER_PLATFORM_SERVICES_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FORCED_GPIO_RECOVER IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_RECOVERY_GPIO_FORCED +#define IPMI_OEM_INTEL_NODE_MANAGER_SERVER_PLATFORM_SERVICES_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_IMAGE_EXECUTION_FAILED IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_IMAGE_EXECUTION_FAILED +#define IPMI_OEM_INTEL_NODE_MANAGER_SERVER_PLATFORM_SERVICES_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_ERASE_ERROR IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_ERASE_ERROR +#define IPMI_OEM_INTEL_NODE_MANAGER_SERVER_PLATFORM_SERVICES_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_CORRUPTED IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_STATE_INFORMATION +#define IPMI_OEM_INTEL_NODE_MANAGER_SERVER_PLATFORM_SERVICES_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_INTERNAL_ERROR IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_INTERNAL_ERROR + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_FLASH_STATE_INFORMATION_IMAGE_CORRUPTED 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_FLASH_STATE_INFORMATION_FLASH_ERASE_LIMIT_REACHED 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_FLASH_STATE_INFORMATION_FLASH_WRITE_LIMIT_REACHED 0x02 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_FLASH_STATE_INFORMATION_WRITING_TO_FLASH_ENABLED 0x03 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_INTERNAL_ERROR_FW_WATCHDOG_TIMEOUT 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_INTERNAL_ERROR_LOADER_MANIFEST_VALIDATION_FAILURE 0x1D +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_INTERNAL_ERROR_UNKNOWN_POWER_MANAGEMENT_EVENT 0x37 +/* Spec says "None graceful", assuming typo */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_INTERNAL_ERROR_NON_GRACEFUL_PMC_RESET_EVENT 0x45 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_INTERNAL_ERROR_FLASH_WEAROUT_PROTECTION 0x8E + +#if 0 +/* In Intel Node Manager 2.0 spec this was 0x04, but changed in 3.0 spec */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MANUFACTURING_ERROR_INTEL_ME_FW_CONFIGURATION_BAD 0x04 +#endif +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MANUFACTURING_ERROR_GENERIC_ERROR 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MANUFACTURING_ERROR_WRONG_OR_MISSING_VSCC_TABLE 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MANUFACTURING_ERROR_WRONG_SENSOR_SCANNING_PERIOD_IN_PIA 0x02 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MANUFACTURING_ERROR_WRONG_DEVICE_DEFINITION_IN_PIA 0x03 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MANUFACTURING_ERROR_WRONG_SMART_CLST_CONFIGURATION 0x04 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MANUFACTURING_ERROR_INTEL_ME_FW_CONFIGURATION_IS_INCONSISTENT_OR_OUT_OF_RANGE 0x05 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MANUFACTURING_ERROR_PERCENTAGE_OF_FLASH_WRITE_OPERATIONS_WHICH_HAVE_BEEN_CONDUCTED 0x0A + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_DRAM_INIT_DONE_EVENT_NOT_RECEIVED 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_MCTP_SAD_REGISTER_NOT_CORRECTLY_CONFIGURED_BY_BIOS 0x02 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_DMI_TIMEOUT_OF_PECI_REQUEST 0x03 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_BITMASK 0x80 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SHIFT 7 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS 0 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_FAILURE 1 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_DC_POWER_SOURCE_BITMASK 0x60 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_DC_POWER_SOURCE_SHIFT 5 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_DC_POWER_SOURCE_BMC 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_DC_POWER_SOURCE_PSU 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_DC_POWER_SOURCE_ON_BOARD_POWER_SENSOR 0x02 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_CHASSIS_POWER_INPUT_SOURCE_BITMASK 0x18 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_CHASSIS_POWER_INPUT_SOURCE_SHIFT 3 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_CHASSIS_POWER_INPUT_SOURCE_BMC 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_CHASSIS_POWER_INPUT_SOURCE_PSU 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_CHASSIS_POWER_INPUT_SOURCE_ON_BOARD_POWER_SENSOR_PSU_EFFICIENCY 0x02 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_CHASSIS_POWER_INPUT_SOURCE_NOT_SUPPORTED 0x03 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_PSU_EFFICIENCY_SOURCE_BITMASK 0x06 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_PSU_EFFICIENCY_SOURCE_SHIFT 1 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_PSU_EFFICIENCY_SOURCE_BMC 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_PSU_EFFICIENCY_SOURCE_PSU 0x01 +/* Not a typo, jumps to 0x03 */ +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_PSU_EFFICIENCY_SOURCE_NOT_SUPPORTED 0x03 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_UNMANAGED_POWER_SOURCE_BITMASK 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_UNMANAGED_POWER_SOURCE_SHIFT 0 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_UNMANAGED_POWER_SOURCE_BMC 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_SUCCESS_UNMANAGED_POWER_SOURCE_ESTIMATED 0x01 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_FAILURE_FAILURE_BITMASK 0x60 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_FAILURE_FAILURE_SHIFT 5 + +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_FAILURE_FAILURE_BMC_DISCOVERY_FAILURE 0x00 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_FAILURE_FAILURE_INSUFFICIENT_FACTORY_CONFIGURATION 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_FAILURE_FAILURE_UNKNOWN_SENSOR_TYPE 0x02 +#define IPMI_OEM_INTEL_NODE_MANAGER_INTEL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA3_AUTO_CONFIGURATION_FINISHED_RESULT_FAILURE_FAILURE_OTHER_ERROR_ENCOUNTERED 0x03 + +/* Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_SENSOR_NODE_MANAGER 0x02 + +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_DOMAIN_ID_BITMASK 0x0F +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_DOMAIN_ID_SHIFT 0 + +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_BITMASK 0xF0 +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_SHIFT 4 + +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_OUTLET_TEMPERATURE_READING_FAILURE 0x8 +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_VOLUMETRIC_AIRFLOW_READING_FAILURE 0x9 +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_POLICY_MISCONFIGURATION 0xA +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_POWER_SENSOR_READING_FAILURE 0xB +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_INLET_TEMPERATURE_READING_FAILURE 0xC +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_HOST_COMMUNICATION_ERROR 0xD +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_REAL_TIME_CLOCK_SYNCHRONIZATION_FAILURE 0xE +#define IPMI_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_EVENT_DATA2_ERROR_TYPE_PLATFORM_SHUTDOWN_INITIATED_BY_INTEL_NM_POLICY 0xF + +/* Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_THERMAL_SENSOR_ON_DIMM + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_0_MEMORY_CONTROLLER_0_BITMASK 0x01 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_0_MEMORY_CONTROLLER_0_SHIFT 0 + +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_0_MEMORY_CONTROLLER_1_BITMASK 0x02 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_0_MEMORY_CONTROLLER_1_SHIFT 1 + +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_1_MEMORY_CONTROLLER_0_BITMASK 0x04 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_1_MEMORY_CONTROLLER_0_SHIFT 2 + +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_1_MEMORY_CONTROLLER_1_BITMASK 0x08 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_1_MEMORY_CONTROLLER_1_SHIFT 3 + +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_2_MEMORY_CONTROLLER_0_BITMASK 0x10 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_2_MEMORY_CONTROLLER_0_SHIFT 4 + +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_2_MEMORY_CONTROLLER_1_BITMASK 0x20 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_2_MEMORY_CONTROLLER_1_SHIFT 5 + +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_3_MEMORY_CONTROLLER_0_BITMASK 0x40 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_3_MEMORY_CONTROLLER_0_SHIFT 6 + +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_3_MEMORY_CONTROLLER_1_BITMASK 0x80 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_CPU_3_MEMORY_CONTROLLER_1_SHIFT 7 + +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_AVAILABLE 0 +#define IPMI_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_NOT_AVAILABLE 1 + +/* Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_NODE_MANAGER_CUPS_EVENT + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_CUPS_EVENT_EVENT_DATA1_THRESHOLD_NUMBER_BITMASK 0x03 +#define IPMI_OEM_INTEL_NODE_MANAGER_CUPS_EVENT_EVENT_DATA1_THRESHOLD_NUMBER_SHIFT 0 + +#define IPMI_OEM_INTEL_NODE_MANAGER_CUPS_EVENT_EVENT_DATA1_CUPS_POLICY_EVENT_BITMASK 0x08 +#define IPMI_OEM_INTEL_NODE_MANAGER_CUPS_EVENT_EVENT_DATA1_CUPS_POLICY_EVENT_SHIFT 3 + +#define IPMI_OEM_INTEL_NODE_MANAGER_CUPS_EVENT_EVENT_DATA1_CUPS_EVENT_EVENT_THRESHOLD_EXCEEDED 0x0 + +#define IPMI_OEM_INTEL_NODE_MANAGER_CUPS_EVENT_EVENT_DATA2_DOMAIN_ID_BITMASK 0x0F +#define IPMI_OEM_INTEL_NODE_MANAGER_CUPS_EVENT_EVENT_DATA2_DOMAIN_ID_SHIFT 0 + +/* Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_STATE + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER + */ +#define IPMI_OEM_INTEL_NODE_MANAGER_NM_SMART_CLST_SENSOR_EVENT_DATA2_OFFSET_FROM_SEVERITY_BITMASK 0xF0 +#define IPMI_OEM_INTEL_NODE_MANAGER_NM_SMART_CLST_SENSOR_EVENT_DATA2_OFFSET_FROM_SEVERITY_SHIFT 4 + +#define IPMI_OEM_INTEL_NODE_MANAGER_NM_SMART_CLST_SENSOR_EVENT_DATA3_EXTERNAL 0 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INTEL_NODE_MANAGER_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-intel-spec.h new file mode 100644 index 00000000..f501172a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-intel-spec.h @@ -0,0 +1,1621 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INTEL_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * Intel S5500WB/Penguin Computing Relion 700 + */ + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_PCIE_FATAL_SENSOR + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_DATA_LINK_LAYER_PROTOCOL_ERROR 0x00 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_SURPRISE_LINK_DOWN 0x01 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_UNEXPECTED_COMPLETION_A 0x02 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_UNSUPPORTED_REQUEST 0x03 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_POISONED_TLP 0x04 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_FLOW_CONTROL_PROTOCOL 0x05 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_COMPLETION_TIMEOUT 0x06 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_COMPLETER_ABORT 0x07 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_RECEIVER_BUFFER_OVERFLOW 0x08 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_ACS_VIOLATION 0x09 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_MALFORMED_TLP 0x0A +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_RECEIVED_FATAL_MESSAGE 0x0B +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_UNEXPECTED_COMPLETION_B 0x0C +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_FATAL_SENSOR_RECEIVED_NON_FATAL_MESSAGE 0x0D + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_PCIE_CORRECTABLE_SENSOR + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_CORRECTABLE_SENSOR_RECEIVER_ERROR 0x00 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_CORRECTABLE_SENSOR_BAD_DLLP 0x01 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_CORRECTABLE_SENSOR_BAD_TLLP 0x02 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_CORRECTABLE_SENSOR_REPLAY_NUM_ROLLOVER 0x03 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_CORRECTABLE_SENSOR_REPLAY_TIMER_TIMEOUT 0x04 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_CORRECTABLE_SENSOR_ADVISORY_NON_FATAL 0x05 +#define IPMI_OEM_INTEL_SPECIFIC_PCIE_CORRECTABLE_SENSOR_LINK_BW_CHANGED 0x06 + +/* + * String arrays for above + */ + +extern const char * const ipmi_oem_intel_specific_pci_fatal_sensor[]; +extern unsigned int ipmi_oem_intel_specific_pci_fatal_sensor_max_index; + +extern const char * const ipmi_oem_intel_specific_pci_correctable_sensor[]; +extern unsigned int ipmi_oem_intel_specific_pci_correctable_sensor_max_index; + +/* + * Intel S5500WB/Penguin Computing Relion 700 + */ + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_CHANNEL_INFORMATION_VALIDITY_BITMASK 0x10 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_CHANNEL_INFORMATION_VALIDITY_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_CHANNEL_INFORMATION_VALID 0x1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_CHANNEL_INFORMATION_INVALID 0x0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_DIMM_INFORMATION_VALIDITY_BITMASK 0x08 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_DIMM_INFORMATION_VALIDITY_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_DIMM_INFORMATION_VALID 0x1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_DIMM_INFORMATION_INVALID 0x0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_ERROR_TYPE_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_ERROR_TYPE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_ERROR_TYPE_UNKNOWN_ERROR 0x0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_ERROR_TYPE_DATA_PARITY_ERROR 0x1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_ERROR_TYPE_ADDRESS_PARITY_ERROR 0x2 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOGICAL_RANK_BITMASK 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOGICAL_RANK_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOCAL_MIRRORING_DOMAIN_LOCAL_SUBINSTANCE_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOCAL_MIRRORING_DOMAIN_LOCAL_SUBINSTANCE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOCAL_MIRRORING_DOMAIN_LOCAL_SUBINSTANCE_CHANNEL_0_1 0x1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOCAL_MIRRORING_DOMAIN_LOCAL_SUBINSTANCE_CHANNEL_0_2 0x2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOCAL_MIRRORING_DOMAIN_LOCAL_SUBINSTANCE_CHANNEL_1_2 0x3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_GLOBAL_FIRST_SOCKET_ID_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_GLOBAL_FIRST_SOCKET_ID_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOCAL_SOCKET_ID_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOCAL_SOCKET_ID_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_LOCAL_SOCKET_ID_APPLIES_TO_ALL_SOCKETS 0xE + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_GLOBAL_SECOND_SOCKET_ID_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_GLOBAL_SECOND_SOCKET_ID_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_UNUSED_FIELD 0xF + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_PROCESSOR_SOCKET_BITMASK 0xE0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_PROCESSOR_SOCKET_SHIFT 5 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_PROCESSOR_SOCKET_1 0x0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_PROCESSOR_SOCKET_2 0x1 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_CHANNEL_NUMBER_BITMASK 0x18 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_CHANNEL_NUMBER_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_CHANNEL_A 0x0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_CHANNEL_B 0x1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_CHANNEL_C 0x2 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DIMM_SLOT_ID_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DIMM_SLOT_ID_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DIMM_SOCKET_1 0x0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DIMM_SOCKET_2 0x1 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DOMAIN_INSTANCE_TYPE_BITMASK 0x80 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DOMAIN_INSTANCE_TYPE_SHIFT 7 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DOMAIN_INSTANCE_TYPE_LOCAL 0x0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DOMAIN_INSTANCE_TYPE_GLOBAL 0x1 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_INSTANCE_ID_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_INSTANCE_ID_SHIFT 0 + +/* + * Intel S5500WB/Penguin Computing Relion 700 + * Quanta QSSC-S4R/Appro GB812X-CN + * (Quanta motherboard contains Intel manufacturer ID) + * Intel S2600JF/Appro 512X + */ + +#define IPMI_OEM_INTEL_EVENT_DATA3_DEVICE_NUMBER_BITMASK 0xF8 +#define IPMI_OEM_INTEL_EVENT_DATA3_DEVICE_NUMBER_SHIFT 3 + +#define IPMI_OEM_INTEL_EVENT_DATA3_FUNCTION_NUMBER_BITMASK 0x07 +#define IPMI_OEM_INTEL_EVENT_DATA3_FUNCTION_NUMBER_SHIFT 0 + +/* + * + * Intel Server Board S5500WB Technical Product Specification + * + * http://download.intel.com/support/motherboards/server/s5500wb/sb/s5500wb_tps_r1_8.pdf + */ + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_CMOS_DATE_TIME_NOT_SET 0x0012 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PASSWORD_CHECK_FAILED 0x0048 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_KEYBOARD_COMPONENT_ENCOUNTERED_A_LOCKED_ERROR 0x0108 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_KEYBOARD_COMPONENT_ENCOUNTERED_A_STUCK_KEY_ERROR 0x0109 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_FIXED_MEDIA_THE_SAS_RAID_FIRMWARE_CAN_NOT_RUN_PROPERLY 0x0113 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_PERR_ERROR 0x0140 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_RESOURCE_CONFLICT 0x0141 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_OUT_OF_RESOURCES_ERROR 0x0146 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_0X_CACHE_SIZE_MISMATCH_DETECTED 0x0192 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_0X_STEPPING_MISMATCH 0x0193 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_0X_FAMILY_MISMATCH_DETECTED 0x0194 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_0X_INTEL_QPI_SPEED_MISMATCH 0x0195 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_0X_MODEL_MISMATCH 0x0196 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_0X_SPEEDS_MISMATCHED 0x0197 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_0X_FAMILY_IS_NOT_SUPPORTED 0x0198 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_AND_CHIPSET_STEPPING_CONFIGURATION_IS_UNSUPPORTED 0x019F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_CMOS_NVRAM_CONFIGURATION_CLEARED 0x5220 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PASSWORDS_CLEARED_BY_JUMPER 0x5221 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PASSWORD_CLEAR_JUMPER_IS_SET 0x5224 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_01_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8160 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_02_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8161 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_0X_MICROCODE_UPDATE_NOT_FOUND 0x8180 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_WATCHDOG_TIMER_FAILED_ON_LAST_BOOT 0x8190 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_OS_BOOT_WATCHDOG_TIMER_FAILURE 0x8198 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_FAILED_SELF_TEST 0x8300 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_FAILED_TO_RESPOND 0x84F2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_IN_UPDATE_MODE 0x84F3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_SENSOR_DATA_RECORD_EMPTY 0x84F4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_SYSTEM_EVENT_LOG_FULL 0x84FF +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_MEMORY_COMPONENT_COULD_NOT_BE_CONFIGURED_IN_THE_SELECTED_RAS_MODE 0x8500 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_POPULATION_ERROR 0x8501 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_CLTT_CONFIGURATION_FAILURE_ERROR 0x8502 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_A1_FAILED_SELF_TEST_BIST 0x8520 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_A2_FAILED_SELF_TEST_BIST 0x8521 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_B1_FAILED_SELF_TEST_BIST 0x8522 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_B2_FAILED_SELF_TEST_BIST 0x8523 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_C1_FAILED_SELF_TEST_BIST 0x8524 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_C2_FAILED_SELF_TEST_BIST 0x8525 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_D1_FAILED_SELF_TEST_BIST 0x8526 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_D2_FAILED_SELF_TEST_BIST 0x8527 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_E1_FAILED_SELF_TEST_BIST 0x8528 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_E2_FAILED_SELF_TEST_BIST 0x8529 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_F1_FAILED_SELF_TEST_BIST 0x852A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_F2_FAILED_SELF_TEST_BIST 0x852B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_A1_DISABLED 0x8540 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_A2_DISABLED 0x8541 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_B1_DISABLED 0x8542 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_B2_DISABLED 0x8543 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_C1_DISABLED 0x8544 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_C2_DISABLED 0x8545 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_D1_DISABLED 0x8546 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_D2_DISABLED 0x8547 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_E1_DISABLED 0x8548 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_E2_DISABLED 0x8549 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_F1_DISABLED 0x854A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_F2_DISABLED 0x854B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_A1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8560 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_A2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8561 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_B1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8562 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_B2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8563 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_C1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8564 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_C2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8565 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_D1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8566 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_D2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8567 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_E1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8568 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_E2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8569 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_F1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x856A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_F2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x856B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_A1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_A2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_B1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_B2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_C1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_C2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A5 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_D1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_D2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_E1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_E2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_F1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85AA +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DIMM_F2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85AB +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_CHIPSET_RECLAIM_OF_NON_CRITICAL_VARIABLES_COMPLETE 0x8604 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_UNSPECIFIED_PROCESSOR_COMPONENT_HAS_ENCOUNTERED_A_NON_SPECIFIC_ERROR 0x9000 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_KEYBOARD_COMPONENT_WAS_NOT_DETECTED 0x9223 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_KEYBOARD_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9226 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_MOUSE_COMPONENT_WAS_NOT_DETECTED 0x9243 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_MOUSE_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9246 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_LOCAL_CONSOLE_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9266 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_LOCAL_CONSOLE_COMPONENT_ENCOUNTERED_AN_OUTPUT_ERROR 0x9268 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_LOCAL_CONSOLE_COMPONENT_ENCOUNTERED_A_RESOURCE_CONFLICT_ERROR 0x9269 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_REMOTE_CONSOLE_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9286 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_REMOTE_CONSOLE_COMPONENT_ENCOUNTERED_AN_INPUT_ERROR 0x9287 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_REMOTE_CONSOLE_COMPONENT_ENCOUNTERED_AN_OUTPUT_ERROR 0x9288 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_WAS_NOT_DETECTED 0x92A3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_ENCOUNTERED_A_RESOURCE_CONFLICT_ERROR 0x92A9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_SERIAL_PORT_CONTROLLER_ERROR 0x92C6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_ENCOUNTERED_AN_INPUT_ERROR 0x92C7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_ENCOUNTERED_AN_OUTPUT_ERROR 0x92C8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_LPC_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x94C6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_LPC_COMPONENT_ENCOUNTERED_A_RESOURCE_CONFLICT_ERROR 0x94C9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_ATA_ATPI_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9506 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x95A6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_READ_ERROR 0x95A7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_WRITE_ERROR 0x95A8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_UNSPECIFIED_SOFTWARE_COMPONENT_ENCOUNTERED_A_START_ERROR 0x9609 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PEI_CORE_COMPONENT_ENCOUNTERED_A_LOAD_ERROR 0x9641 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PEI_MODULE_COMPONENT_ENCOUNTERED_A_ILLEGAL_SOFTWARE_STATE_ERROR 0x9667 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DXE_CORE_COMPONENT_ENCOUNTERED_A_ILLEGAL_SOFTWARE_STATE_ERROR 0x9687 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_COMPONENT_ENCOUNTERED_A_ILLEGAL_SOFTWARE_STATE_ERROR 0x96A7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_COMPONENT_ENCOUNTERED_INVALID_CONFIGURATION 0x96AB +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_SMM_DRIVER_COMPONENT_ENCOUNTERED_A_ILLEGAL_SOFTWARE_STATE_ERROR 0x96E7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_TPM_DEVICE_NOT_DETECTED 0xA000 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_TPM_DEVICE_MISSING_OR_NOT_RESPONDING 0xA001 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_TPM_DEVICE_FAILURE 0xA002 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_TPM_DEVICE_FAILED_SELF_TEST 0xA003 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_COMPONENT_ENCOUNTERED_A_MISMATCH_ERROR 0xA022 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_COMPONENT_ENCOUNTERED_A_LOW_VOLTAGE_ERROR 0xA027 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PROCESSOR_COMPONENT_ENCOUNTERED_A_HIGH_VOLTAGE_ERROR 0xA028 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_SERR_ERROR 0xA421 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_ATA_ATPI_ATA_BUS_SMART_NOT_SUPPORTED 0xA500 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_ATA_ATPI_ATA_SMART_IS_DISABLED 0xA501 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_EXPRESS_COMPONENT_ENCOUNTERED_A_PERR_ERROR 0xA5A0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_EXPRESS_COMPONENT_ENCOUNTERED_A_SERR_ERROR 0xA5A1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_PCI_EXPRESS_IBIST_ERROR 0xA5A4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_NOT_ENOUGH_MEMORY_AVAILABLE_TO_SHADOW_A_LEGACY_OPTION_ROM 0xA6A0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_UNRECOGNIZED 0xB6A3 + +/* + * Quanta QSSC-S4R/Appro GB812X-CN + * (Quanta motherboard contains Intel manufacturer ID) + */ + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_PCIE_FATAL_SENSOR + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +/* achu: Similar to above, but some events text changed, so new macros to differentiate */ +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_DATA_LINK_LAYER_PROTOCOL_ERROR 0x00 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_SURPRISE_LINK_DOWN 0x01 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_UNEXPECTED_COMPLETER 0x02 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_UNSUPPORTED_REQUEST 0x03 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_POISONED_TLP 0x04 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_FLOW_CONTROL_PROTOCOL 0x05 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_COMPLETION_TIMEOUT 0x06 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_COMPLETER_ABORT 0x07 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_RECEIVER_BUFFER_OVERFLOW 0x08 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_ACS_VIOLATION 0x09 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_MALFORMED_TLP 0x0A +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_RECEIVED_FATAL_MESSAGE 0x0B +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_UNEXPECTED_COMPLETION 0x0C +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_FATAL_SENSOR_RECEIVED_NON_FATAL_MESSAGE 0x0D + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_PCIE_CORRECTABLE_SENSOR + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +/* achu: Similar to above, but some events text changed, so new macros to differentiate */ +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_CORRECTABLE_SENSOR_RECEIVER_ERROR 0x00 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_CORRECTABLE_SENSOR_BAD_DLLP 0x01 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_CORRECTABLE_SENSOR_BAD_TLLP 0x02 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_CORRECTABLE_SENSOR_REPLAY_NUM_ROLLOVER 0x03 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_CORRECTABLE_SENSOR_REPLAY_TIMER_TIMEOUT 0x04 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_CORRECTABLE_SENSOR_ADVISORY_NON_FATAL 0x05 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_PCIE_CORRECTABLE_SENSOR_LINK_BW_CHANGED 0x06 + +/* + * String arrays for above + */ + +/* achu: Similar to above, but some events text changed, so new arrays to differentiate */ +extern const char * const ipmi_oem_intel_quanta_qssc_s4r_specific_pci_fatal_sensor[]; +extern unsigned int ipmi_oem_intel_quanta_qssc_s4r_specific_pci_fatal_sensor_max_index; + +extern const char * const ipmi_oem_intel_quanta_qssc_s4r_specific_pci_correctable_sensor[]; +extern unsigned int ipmi_oem_intel_quanta_qssc_s4r_specific_pci_correctable_sensor_max_index; + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_CORRECTABLE_ERROR + * Sensor Type = IPMI_SENSOR_TYPE_MEMORY + * Sensor Number = IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_CRC_ERROR_PERSISTENT + */ +/* achu: 7 instead of 3? Typo in document?*/ +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_CORRECTABLE_MEMORY_ERROR_PERSISTENT_RECOVERABLE_ERROR 0 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_CORRECTABLE_MEMORY_ERROR_PERSISTENT_PARITY_ALERT 1 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_CORRECTABLE_MEMORY_ERROR_PERSISTENT_PARITY_STATUS 2 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_CORRECTABLE_MEMORY_ERROR_SMI_LINK_LANE_FAIL_OVER_EVENT 7 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_UNCORRECTABLE_ERROR + * Sensor Type = IPMI_SENSOR_TYPE_MEMORY + * Sensor Number = IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_CRC_ERROR_UNCORRECTABLE + */ +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_UNCORRECTABLE_MEMORY_ERROR_UNCORRECTABLE_CRC_ERROR 0 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_UNCORRECTABLE_MEMORY_ERROR_UNCORRECTABLE_ALERT_FRAME 1 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_QUANTA_QSSC_S4R_CORRECTABLE_ERROR + * Sensor Type = IPMI_SENSOR_TYPE_MEMORY + * Sensor Number = IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_PATROL_SCRUB_ERROR + */ +/* achu: This is just like normal memory specific sensors. Typo in document? */ +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_CORRECTABLE_MEMORY_ERROR_CORRECTABLE_RROR 0 +#define IPMI_OEM_INTEL_QUANTA_QSSC_S4R_SPECIFIC_CORRECTABLE_MEMORY_ERROR_UNCORRECTABLE_ERROR 1 + + +/* Note: Difference to IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_DOMAIN_INSTANCE_TYPE_* fields above */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_DOMAIN_INSTANCE_TYPE_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_DOMAIN_INSTANCE_TYPE_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_DOMAIN_INSTANCE_TYPE_LOCAL_MEMORY_MIRRORING_INTRA_SOCKET 0x1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_DOMAIN_INSTANCE_TYPE_GLOBAL_MEMORY_MIRRORING_INTER_SOCKET 0x2 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_SHIFT 0 + +/* When Intra Mirroring is Enabled */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_1_2 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_3_4 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_5_6 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_7_8 3 + +/* When Inter socket mirroring is enabled & Hemispher is disabled */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_1_4 4 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_3_2 5 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_5_8 6 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_7_6 7 + +/* When Inter socket mirroring is enabled & Hemispher is enabled */ +/* achu: Jump in numbers not an error, why jump in numbers? */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_1_3 12 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_2_4 13 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_5_7 14 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MIRRORING_INSTANCE_ID_6_8 15 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SPARING_DOMAIN_INSTANCE_TYPE_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SPARING_DOMAIN_INSTANCE_TYPE_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SPARING_DOMAIN_INSTANCE_TYPE_LOCAL_MEMORY_SPARING 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SPARING_DOMAIN_INSTANCE_TYPE_GLOBAL_MEMORY_SPARING 1 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SPARING_TYPE_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SPARING_TYPE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SPARING_DOMAIN_INSTANCE_TYPE_LOCAL_MEMORY_SPARING_SPARING_TYPE_DIMM_SPARING 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SPARING_DOMAIN_INSTANCE_TYPE_LOCAL_MEMORY_SPARING_SPARING_TYPE_RANK_SPARING 2 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_INDEX_OF_SPARED_MEMORY_BOARD_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_INDEX_OF_SPARED_MEMORY_BOARD_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SPARED_DIMM_INFORMATION_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SPARED_DIMM_INFORMATION_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SPARED_DIMM_INFORMATION_LOCAL_SPARING_DIMM_1B_LOCKSTEP_DIMM_1D 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SPARED_DIMM_INFORMATION_LOCAL_SPARING_DIMM_1A_LOCKSTEP_DIMM_1C 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SPARED_DIMM_INFORMATION_LOCAL_SPARING_DIMM_2B_LOCKSTEP_DIMM_2D 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SPARED_DIMM_INFORMATION_LOCAL_SPARING_DIMM_2A_LOCKSTEP_DIMM_2C 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_COUNT_OF_CORRECTABLE_ECC_ERROR_BITMASK 0xFC +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_COUNT_OF_CORRECTABLE_ECC_ERROR_SHIFT 2 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_BITMASK 0xE0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_SHIFT 5 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_BITMASK 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_BITMASK 0x04 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_SHIFT 2 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_MEM1_SLOT 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_MEM2_SLOT 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_MEM3_SLOT 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_MEM4_SLOT 3 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_MEM5_SLOT 4 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_MEM6_SLOT 5 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_MEM7_SLOT 6 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_MEM8_SLOT 7 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_1B 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_1A 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_2B 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_2A 3 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_1D 4 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_1C 5 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_2D 6 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_2C 7 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_0 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_1 1 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_VALID_BITMASK 0x20 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_VALID_SHIFT 5 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_VALID_BITMASK 0x10 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_DIMM_SLOT_VALID_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_TYPE_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_TYPE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_TYPE_MIRROR 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_TYPE_SPARE 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_TYPE_INTERLEAVE 3 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_TYPE_HEMISPHERE 4 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_TYPE_POPULATION 5 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_TYPE_DEVICE_MISMATCH 6 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_EVENT_SPECIAL_CODE_BITMASK 0x34 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_EVENT_SPECIAL_CODE_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_EVENT_SPECIAL_CODE_INVALID_INFORMATION 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_EVENT_SPECIAL_CODE_MEMORY_BOARD_HOT_REPLACED_WITH_MISMATCHED_OR_FAULTY_MEMORY 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_EVENT_SPECIAL_CODE_MEMORY_HOT_PLUG_GENERIC_INITIALIZATION_ERROR 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_EVENT_SPECIAL_CODE_MEMORY_HOT_PLUG_TIMEOUT 3 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_EVENT_SPECIAL_CODE_USER_INITIATED_CANCELATION 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_SUB_CODE_BITMASK 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_SUB_CODE_SHIFT 0 + +/* When IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_EVENT_SPECIAL_CODE_MEMORY_HOT_PLUG_GENERIC_INITIALIZATION_ERROR occurs */ +/* BIST = Built in Self-Test */ +/* SPD = Serial Presence Detect */ +/* CLTT = Closed Loop Thermal Throttling */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_SUB_CODE_MEMORY_BIST_ERROR 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_SUB_CODE_SPD_ERROR 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_SUB_CODE_CLTT_CONFIGURATION_ERROR 3 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_SUB_CODE_POPULATION_RULE_ERROR 4 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_SUB_CODE_MISMATCHED_DIMM_ERROR 5 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_QUANTA_QSSC_S4R_ERROR_SUB_CODE_OTHER_MEMORY_INITIALIZATION_ERRORS 6 + +/* + * QSSC S4R Technical Product Specification + * + * Very similar to POST Error Code list above, but slightly different. + * Some rewording, new errors, removed errors, cut & pasted to be + * clear on differences. + */ + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_CMOS_DATE_TIME_NOT_SET 0x0012 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PASSWORD_CHECK_FAILED 0x0048 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_KEYBOARD_LOCKED_ERROR 0x0108 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_KEYBOARD_STUCK_KEY_ERROR 0x0109 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_THE_SAS_RAID_FIRMWARE_CANNOT_RUN_PROPERLY 0x0113 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PCI_PARITY_ERROR 0x0140 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PCI_RESOURCE_CONFLICT_ERROR 0x0141 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PCI_OUT_OF_RESOURCES_ERROR 0x0146 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_CACHE_SIZE_MISMATCH_DETECTED 0x0192 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_STEPPING_MISMATCH 0x0193 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_FAMILY_MISMATCH_DETECTED 0x0194 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_INTEL_QPI_SPEED_MISMATCH 0x0195 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_AND_CHIPSET_STEPPING_CONFIGURATION_IS_UNSUPPORTED 0x019F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_CMOS_NVRAM_CONFIGURATION_CLEARED 0x5220 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PASSWORDS_CLEARED_BY_JUMPER 0x5221 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PASSWORD_CLEAR_JUMPER_IS_SET 0x5224 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_DISABLED 0x8130 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_FRB_3_TIMEOUT 0x8140 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_01_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8160 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_02_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8161 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_03_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8162 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_04_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8163 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_BUILD_IN_SELF_TEST_FAILURE 0x8170 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_PROCESSOR_MICROCODE_UPDATE_NOT_FOUND 0x8180 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_WATCHDOG_TIMER_FAILED_ON_LAST_BOOT 0x8190 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_OS_BOOT_WATCHDOG_TIMER_FAILURE 0x8198 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_FAILED_SELF_TEST 0x8300 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_FAILED_TO_RESPOND 0x84F2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_IN_UPDATE_MODE 0x84F3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_SENSOR_DATA_RECORD_EMPTY 0x84F4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_SYSTEM_EVENT_LOG_FULL 0x84FF +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_CHIPSET_RECLAIM_OF_NON_CRITICAL_VARIABLES_COMPLETE 0x8604 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TPM_DEVICE_NOT_DETECTED 0xA000 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TPM_DEVICE_MISSING_OR_NOT_RESPONDING 0xA001 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TPM_DEVICE_FAILURE 0xA002 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TPM_DEVICE_FAILED_SELF_TEST 0xA003 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_MEMORY_WAS_NOT_CONFIGURED_FOR_THE_SELECTED_MEMORY_RAS_CONFIGURATION 0xE4FC + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_BITMASK 0xF000 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_SHIFT 12 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY 0xE + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_BITMASK 0x0F00 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_SHIFT 8 + +/* BIST = Built in Self-Test */ +/* SPD = Serial Presence Detect */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_MEMORY_INVALID_TYPE_ERROR 0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_MEMORY_DISABLED 1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_MEMORY_MISMATCH_ERROR 2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_MEMORY_TRAINING_ERROR 3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_TOO_MANY_DIMM_TYPES 5 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_MEMORY_BIST_FAILED 6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_ERROR_CODE_SPD_FAILED 7 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_CPU_SOCKET_BITMASK 0x000E0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_CPU_SOCKET_SHIFT 5 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_CPU_SOCKET_1 0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_CPU_SOCKET_2 1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_CPU_SOCKET_3 2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_CPU_SOCKET_4 3 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_DIMM_SLOT_BITMASK 0x00007 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_QUANTA_QSSC_S4R_POST_ERROR_CODE_TYPE_MEMORY_DIMM_SLOT_SHIFT 0 + +/* + * Intel S2600JF/Appro 512X + */ + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_PCIE_FATAL_ERROR + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +/* achu: Similar to above, but some events text changed and new ones, + * so new macros to differentiate */ +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_DATA_LINK_LAYER_PROTOCOL_ERROR 0x00 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_SURPRISE_LINK_DOWN_ERROR 0x01 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_COMPLETER_ABORT 0x02 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_UNSUPPORTED_REQUEST 0x03 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_POISONED_TLP 0x04 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_FLOW_CONTROL_PROTOCOL 0x05 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_COMPLETION_TIMEOUT 0x06 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_RECEIVER_BUFFER_OVERFLOW 0x07 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_ACS_VIOLATION 0x08 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_MALFORMED_TLP 0x09 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_ECRC_ERROR 0x0A +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_RECEIVED_FATAL_MESSAGE 0x0B +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_UNEXPECTED_COMPLETION 0x0C +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_RECEIVED_NON_FATAL_MESSAGE 0x0D +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_UNCORRECTABLE_INTERNAL 0x0E +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_MC_BLOCKED_TLP 0x0F + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_PCIE_FATAL_ERROR_2 + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +/* achu: not a typo, why a from from 0x01 to 0x0f? */ +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_2_ATOMIC_EGRESS_BLOCKED 0x00 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_2_TLP_PREFIX_BLOCKED 0x01 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_FATAL_ERROR_2_UNSPECIFIED_NON_AER_FATAL_ERROR 0x0F + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_PCIE_CORRECTABLE_ERROR + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +/* achu: Similar to above, but some events text changed, so new macros to differentiate */ +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_RECEIVER_ERROR 0x00 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_BAD_DLLP 0x01 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_BAD_TLP 0x02 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_REPLAY_NUM_ROLLOVER 0x03 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_REPLAY_TIMER_TIMEOUT 0x04 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_ADVISORY_NON_FATAL 0x05 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_LINK_BW_CHANGED 0x06 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_CORRECTABLE_INTERNAL 0x07 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_PCIE_CORRECTABLE_ERROR_HEADER_LOG_OVERFLOW 0x08 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_OPI_FATAL_ERROR + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_LINK_LAYER_UNCORRECTABLE_ECC_ERROR 0x00 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_PROTOCOL_LAYER_POISONED_PACKET_RECEPTION_ERROR 0x01 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_LINK_PHY_INIT_FAILURE 0x02 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_CSI_PHY_LAYER_DETECTED_DRIFT_BUFFER_ALARM 0x03 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_CSI_PHY_DETECTED_LATENCY_BUFFER_ROLLOVER 0x04 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_CSI_PHY_INIT_FAILURE 0x05 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_CSI_LINK_LAYER_GENERIC_CONTROL_ERROR 0x06 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_PARITY_ERROR_IN_LINK_OR_PHY_LAYER 0x07 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_PROTOCOL_LAYER_TIMEOUT_DETECTED 0x08 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_PROTOCOL_LAYER_FAILED_RESPONSE 0x09 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_PROTOCOL_LAYER_ILLEGAL_PACKET_FIELD 0x0A +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_PROTOCOL_LAYER_QUEUE_TABLE_OVERFLOW_UNDERFLOW 0x0B +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_VIRAL_ERROR 0x0C +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_PROTOCOL_LAYER_PARITY_ERROR 0x0D +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_ROUTING_TABLE_ERROR 0x0E + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_OPI_FATAL_ERROR_2 + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_ILLEGAL_INBOUND_REQUEST 0x00 +#if 0 +/* achu: Intel informed me there was an error in their documentation and the following was not correct. + * I'll leave this here for legacy documentation + */ +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_PCH_WRITE_CACHE_UNCORRECTABLE_DATA_ECC_ERROR 0x01 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_PCH_WRITE_CACHE_UNCORRECTABLE_DATA_ECC_ERROR_2 0x02 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_PCH_WRITE_CACHE_UNCORRECTABLE_DATA_ECC_ERROR_3 0x03 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_PCH_RECEIVED_XPF_PHYSICAL_LOGICAL_REDIRECT_INTERRUPT_INBOUND 0x04 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_PCH_ILLEGAL_SAD_OR_ILLEGAL_OR_NON_EXISTENT_ADDRESS_OR_MEMORY 0x05 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_PCH_WRITE_CACHE_COHERENCY_VIOLATION 0x06 +#else /* !0 */ +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_IIO_WRITE_CACHE_UNCORRECTABLE_DATA_ECC_ERROR 0x01 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_IIO_CSR_CROSSING_32_BIT_BOUNDARY_ERROR 0x02 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_IIO_RECEIVED_XPF_PHYSICAL_LOGICAL_REDIRECT_INTERRUPT_INBOUND 0x03 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_IIO_ILLEGAL_SAD_OR_ILLEGAL_OR_NON_EXISTENT_ADDRESS_OR_MEMORY 0x04 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_OPI_FATAL_ERROR_2_IIO_WRITE_CACHE_COHERENCY_VIOLATION 0x05 +#endif /* !0 */ + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_S2600JF_QPI_LINK_WIDTH_REDUCED + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +/* achu: not a typo, no 0x00 offset */ +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_QPI_LINK_WIDTH_REDUCED_HALF_WIDTH 0x01 +#define IPMI_OEM_INTEL_S2600JF_SPECIFIC_QPI_LINK_WIDTH_REDUCED_QUARTER_WIDTH 0x02 + +/* + * String arrays for above + */ + +/* achu: Similar to above, but some events text changed, so new arrays to differentiate */ +extern const char * const ipmi_oem_intel_s2600jf_specific_pci_fatal_error[]; +extern unsigned int ipmi_oem_intel_s2600jf_specific_pci_fatal_error_max_index; + +extern const char * const ipmi_oem_intel_s2600jf_specific_pci_fatal_error_2[]; +extern unsigned int ipmi_oem_intel_s2600jf_specific_pci_fatal_error_2_max_index; + +extern const char * const ipmi_oem_intel_s2600jf_specific_pci_correctable_error[]; +extern unsigned int ipmi_oem_intel_s2600jf_specific_pci_correctable_error_max_index; + +extern const char * const ipmi_oem_intel_s2600jf_specific_opi_fatal_error[]; +extern unsigned int ipmi_oem_intel_s2600jf_specific_opi_fatal_error_max_index; + +extern const char * const ipmi_oem_intel_s2600jf_specific_opi_fatal_error_2[]; +extern unsigned int ipmi_oem_intel_s2600jf_specific_opi_fatal_error_2_max_index; + +extern const char * const ipmi_oem_intel_s2600jf_specific_qpi_link_width_reduced[]; +extern unsigned int ipmi_oem_intel_s2600jf_specific_qpi_link_width_reduced_max_index; + +#define IPMI_SENSOR_MEMORY_REDUNDANCY_EVENT_DATA2_OEM_INTEL_S2600JF_MIRRORING_DOMAIN_CHANNEL_BITMASK 0xF0 +#define IPMI_SENSOR_MEMORY_REDUNDANCY_EVENT_DATA2_OEM_INTEL_S2600JF_MIRRORING_DOMAIN_CHANNEL_SHIFT 4 + +#define IPMI_SENSOR_MEMORY_REDUNDANCY_EVENT_DATA2_OEM_INTEL_S2600JF_SPARING_DOMAIN_CHANNEL_BITMASK 0xF0 +#define IPMI_SENSOR_MEMORY_REDUNDANCY_EVENT_DATA2_OEM_INTEL_S2600JF_SPARING_DOMAIN_CHANNEL_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_EVENT_DATA3_CHANNEL_VALID_BITMASK 0x10 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_EVENT_DATA3_CHANNEL_VALID_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_EVENT_DATA3_CHANNEL_VALID 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_EVENT_DATA3_CHANNEL_NOT_VALID 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_EVENT_DATA3_DIMM_VALID_BITMASK 0x08 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_EVENT_DATA3_DIMM_VALID_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_EVENT_DATA3_DIMM_VALID 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_EVENT_DATA3_DIMM_NOT_VALID 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_ERROR_TYPE_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_ERROR_TYPE_SHIFT 0 + +/* achu: not a typo, 0, then 2 */ +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_ERROR_TYPE_NOT_KNOWN 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_ERROR_TYPE_ADDRESS_PARITY_ERROR 2 + +#define IPMI_SENSOR_MEMORY_REDUNDANCY_EVENT_DATA2_OEM_INTEL_S2600JF_SPARING_DOMAIN_CHANNEL_A 0 +#define IPMI_SENSOR_MEMORY_REDUNDANCY_EVENT_DATA2_OEM_INTEL_S2600JF_SPARING_DOMAIN_CHANNEL_B 1 +#define IPMI_SENSOR_MEMORY_REDUNDANCY_EVENT_DATA2_OEM_INTEL_S2600JF_SPARING_DOMAIN_CHANNEL_C 2 +#define IPMI_SENSOR_MEMORY_REDUNDANCY_EVENT_DATA2_OEM_INTEL_S2600JF_SPARING_DOMAIN_CHANNEL_D 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_DIMM_RANK_NUMBER_BITMASK 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_S2600JF_DIMM_RANK_NUMBER_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_SOCKET_ID_BITMASK 0xE0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_SOCKET_ID_SHIFT 5 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_SOCKET_ID_CPU_1 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_SOCKET_ID_CPU_2 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_SOCKET_ID_CPU_3 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_SOCKET_ID_CPU_4 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_CHANNEL_BITMASK 0x18 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_CHANNEL_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_CHANNEL_A 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_CHANNEL_B 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_CHANNEL_C 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_CHANNEL_D 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_DIMM_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_DIMM_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_DIMM_1 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_DIMM_2 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_S2600JF_DIMM_3 2 + +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OEM_INTEL_S2600JF_CONFIG_ERROR_BITMASK 0x0F +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OEM_INTEL_S2600JF_CONFIG_ERROR_SHIFT 0 + +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OEM_INTEL_S2600JF_CONFIG_ERROR_NONE 0 +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OEM_INTEL_S2600JF_CONFIG_ERROR_INVALID_DIMM_CONFIG_FOR_RAS_MODE 3 + +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_S2600JF_RAS_MODE_BITMASK 0x0F +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_S2600JF_RAS_MODE_SHIFT 0 + +/* achu: Not a typo, lockstep = 2, rank sparing = 4, where is 3? */ +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_S2600JF_RAS_MODE_NONE 0 +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_S2600JF_RAS_MODE_MIRRORING 1 +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_S2600JF_RAS_MODE_LOCKSTEP 2 +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_S2600JF_RAS_MODE_RANK_SPARING 4 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_S2600JF_NODE_ID_CPU_1 0 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_S2600JF_NODE_ID_CPU_2 1 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_S2600JF_NODE_ID_CPU_3 2 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_S2600JF_NODE_ID_CPU_4 3 + +/* Very similar to POST Error Code list above, but slightly different. + * Some changes in messages, cut & paste to be clear on differences. + */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_CMOS_DATE_TIME_NOT_SET 0x0012 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PASSWORD_CHECK_FAILED 0x0048 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_KEYBOARD_COMPONENT_ENCOUNTERED_A_LOCKED_ERROR 0x0108 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_KEYBOARD_COMPONENT_ENCOUNTERED_A_STUCK_KEY_ERROR 0x0109 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_FIXED_MEDIA_THE_SAS_RAID_FIRMWARE_CANNOT_RUN_PROPERLY 0x0113 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_PERR_ERROR 0x0140 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_RESOURCE_CONFLICT 0x0141 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_OUT_OF_RESOURCES_ERROR 0x0146 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_0X_CACHE_SIZE_MISMATCH_DETECTED 0x0192 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_0X_STEPPING_MISMATCH 0x0193 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_0X_FAMILY_MISMATCH_DETECTED 0x0194 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_0X_INTEL_QPI_SPEED_MISMATCH 0x0195 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_0X_MODEL_MISMATCH 0x0196 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_0X_SPEEDS_MISMATCHED 0x0197 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_0X_FAMILY_IS_NOT_SUPPORTED 0x0198 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_AND_CHIPSET_STEPPING_CONFIGURATION_IS_UNSUPPORTED 0x019F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_CMOS_NVRAM_CONFIGURATION_CLEARED 0x5220 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PASSWORDS_CLEARED_BY_JUMPER 0x5221 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PASSWORD_CLEAR_JUMPER_IS_SET 0x5224 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_01_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8160 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_02_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8161 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_0X_MICROCODE_UPDATE_NOT_FOUND 0x8180 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_WATCHDOG_TIMER_FAILED_ON_LAST_BOOT 0x8190 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_OS_BOOT_WATCHDOG_TIMER_FAILURE 0x8198 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_FAILED_SELF_TEST 0x8300 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_FAILED_TO_RESPOND 0x84F2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_IN_UPDATE_MODE 0x84F3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_SENSOR_DATA_RECORD_EMPTY 0x84F4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_SYSTEM_EVENT_LOG_FULL 0x84FF +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_MEMORY_COMPONENT_COULD_NOT_BE_CONFIGURED_IN_THE_SELECTED_RAS_MODE 0x8500 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_POPULATION_ERROR 0x8501 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_CLTT_CONFIGURATION_FAILURE_ERROR 0x8502 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_A1_FAILED_SELF_TEST_BIST 0x8520 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_A2_FAILED_SELF_TEST_BIST 0x8521 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_B1_FAILED_SELF_TEST_BIST 0x8522 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_B2_FAILED_SELF_TEST_BIST 0x8523 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_C1_FAILED_SELF_TEST_BIST 0x8524 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_C2_FAILED_SELF_TEST_BIST 0x8525 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_D1_FAILED_SELF_TEST_BIST 0x8526 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_D2_FAILED_SELF_TEST_BIST 0x8527 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_E1_FAILED_SELF_TEST_BIST 0x8528 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_E2_FAILED_SELF_TEST_BIST 0x8529 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_F1_FAILED_SELF_TEST_BIST 0x852A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_F2_FAILED_SELF_TEST_BIST 0x852B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_A1_DISABLED 0x8540 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_A2_DISABLED 0x8541 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_B1_DISABLED 0x8542 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_B2_DISABLED 0x8543 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_C1_DISABLED 0x8544 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_C2_DISABLED 0x8545 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_D1_DISABLED 0x8546 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_D2_DISABLED 0x8547 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_E1_DISABLED 0x8548 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_E2_DISABLED 0x8549 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_F1_DISABLED 0x854A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_F2_DISABLED 0x854B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_A1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8560 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_A2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8561 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_B1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8562 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_B2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8563 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_C1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8564 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_C2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8565 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_D1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8566 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_D2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8567 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_E1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8568 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_E2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x8569 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_F1_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x856A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_F2_COMPONENT_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAIL_ERROR 0x856B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_A1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_A2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_B1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_B2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_C1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_C2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A5 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_D1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_D2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_E1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_E2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85A9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_F1_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85AA +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DIMM_F2_UNCORRECTABLE_ECC_ERROR_ENCOUNTERED 0x85AB +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_CHIPSET_RECLAIM_OF_NON_CRITICAL_VARIABLES_COMPLETE 0x8604 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_UNSPECIFIED_PROCESSOR_COMPONENT_HAS_ENCOUNTERED_A_NONSPECIFIC_ERROR 0x9000 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_KEYBOARD_COMPONENT_WAS_NOT_DETECTED 0x9223 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_KEYBOARD_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9226 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_MOUSE_COMPONENT_WAS_NOT_DETECTED 0x9243 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_MOUSE_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9246 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_LOCAL_CONSOLE_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9266 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_LOCAL_CONSOLE_COMPONENT_ENCOUNTERED_AN_OUTPUT_ERROR 0x9268 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_LOCAL_CONSOLE_COMPONENT_ENCOUNTERED_A_RESOURCE_CONFLICT_ERROR 0x9269 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_REMOTE_CONSOLE_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9286 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_REMOTE_CONSOLE_COMPONENT_ENCOUNTERED_AN_INPUT_ERROR 0x9287 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_REMOTE_CONSOLE_COMPONENT_ENCOUNTERED_AN_OUTPUT_ERROR 0x9288 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_WAS_NOT_DETECTED 0x92A3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_ENCOUNTERED_A_RESOURCE_CONFLICT_ERROR 0x92A9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_SERIAL_PORT_CONTROLLER_ERROR 0x92C6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_ENCOUNTERED_AN_INPUT_ERROR 0x92C7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_ENCOUNTERED_AN_OUTPUT_ERROR 0x92C8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_LPC_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x94C6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_LPC_COMPONENT_ENCOUNTERED_A_RESOURCE_CONFLICT_ERROR 0x94C9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_ATA_ATPI_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x9506 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_CONTROLLER_ERROR 0x95A6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_READ_ERROR 0x95A7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_WRITE_ERROR 0x95A8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_UNSPECIFIED_SOFTWARE_COMPONENT_ENCOUNTERED_A_START_ERROR 0x9609 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PEI_CORE_COMPONENT_ENCOUNTERED_A_LOAD_ERROR 0x9641 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PEI_MODULE_COMPONENT_ENCOUNTERED_AN_ILLEGAL_SOFTWARE_STATE_ERROR 0x9667 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DXE_CORE_COMPONENT_ENCOUNTERED_AN_ILLEGAL_SOFTWARE_STATE_ERROR 0x9687 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_COMPONENT_ENCOUNTERED_AN_ILLEGAL_SOFTWARE_STATE_ERROR 0x96A7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_COMPONENT_ENCOUNTERED_AN_INVALID_CONFIGURATION 0x96AB +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_SMM_DRIVER_COMPONENT_ENCOUNTERED_AN_ILLEGAL_SOFTWARE_STATE_ERROR 0x96E7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_TPM_DEVICE_NOT_DETECTED 0xA000 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_TPM_DEVICE_MISSING_OR_NOT_RESPONDING 0xA001 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_TPM_DEVICE_FAILURE 0xA002 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_TPM_DEVICE_FAILED_SELF_TEST 0xA003 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_COMPONENT_ENCOUNTERED_A_MISMATCH_ERROR 0xA022 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_COMPONENT_ENCOUNTERED_A_LOW_VOLTAGE_ERROR 0xA027 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PROCESSOR_COMPONENT_ENCOUNTERED_A_HIGH_VOLTAGE_ERROR 0xA028 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_SERR_ERROR 0xA421 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_ATA_ATPI_ATA_BUS_SMART_NOT_SUPPORTED 0xA500 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_ATA_ATPI_ATA_SMART_IS_DISABLED 0xA501 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_EXPRESS_COMPONENT_ENCOUNTERED_A_PERR_ERROR 0xA5A0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_EXPRESS_COMPONENT_ENCOUNTERED_A_SERR_ERROR 0xA5A1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_PCI_EXPRESS_IBIST_ERROR 0xA5A4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_NOT_ENOUGH_MEMORY_AVAILABLE_TO_SHADOW_A_LEGACY_OPTION_ROM 0xA6A0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_S2600JF_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_UNRECOGNIZED 0xB6A3 + +/* + * Intel Windmill + * (Quanta Winterfell) + * (Wiwynn Windmill) + */ + +/* achu: These are Intel Node Manager events, but Intel Node Manager + * does not exist on these boards. So cutting & pasting into this + * section to differentiate + */ +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_FIRMWARE_STATUS 0x00 + +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_RECOVERY_GPIO_FORCED 0x00 +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_IMAGE_EXECUTION_FAILED 0x01 +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_ERASE_ERROR 0x02 +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_FLASH_STATE_INFORMATION 0x03 +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_INTERNAL_ERROR 0x04 +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_BMC_COLD_RESET_ERROR 0x05 +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_DIRECT_FLASH_UPDATE 0x06 +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_MANUFACTURING_ERROR 0x07 +#define IPMI_OEM_INTEL_WINDMILL_ME_FIRMWARE_HEALTH_EVENT_EVENT_DATA2_PERSISTENT_STORAGE_INTEGRITY_ERROR 0x08 +/* No 0x09 - not available unlike newer Intel Node Manager */ + +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA2_THROTTLING_BITMASK 0x03 +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA2_THROTTLING_SHIFT 0 + +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA2_NATIVE_THROTTLING 0 +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA2_EXTERNAL_THROTTLING 1 + +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA3_THROTTLING_CPU_VR_BITMASK 0xE0 +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA3_THROTTLING_CPU_VR_SHIFT 5 + +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA3_THROTTLING_CHANNEL_NUMBER_BITMASK 0x18 +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA3_THROTTLING_CHANNEL_NUMBER_SHIFT 3 + +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA3_THROTTLING_DIMM_BITMASK 0x07 +#define IPMI_OEM_INTEL_WINDMILL_EVENT_DATA3_THROTTLING_DIMM_SHIFT 0 + +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_CPU_NUMBER_BITMASK 0xE0 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_CPU_NUMBER_SHIFT 5 + +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SOURCE_BITMASK 0x18 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SOURCE_SHIFT 3 + +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SOURCE_QPI 0 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SOURCE_LLC 1 + +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SOURCE_EXTRA_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SOURCE_EXTRA_SHIFT 0 + +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SOURCE_EXTRA_QPI0 0 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SOURCE_EXTRA_QPI1 1 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_DEVICE_NUMBER_BITMASK 0xF8 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_DEVICE_NUMBER_SHIFT 3 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_FUNCTION_NUMBER_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_FUNCTION_NUMBER_SHIFT 0 + +/* These are from WiWynn doc */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_CPU_MISMATCH 0x0057 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_CPU_SELF_TEST_FAILED 0x0058 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_CPU_CACHE_ERROR 0x0158 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_CPU_MICROCODE_UPDATE_FAILED 0x0059 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_CPU_NO_MICROCODE 0x0159 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_CPU_INTERNAL_ERROR 0x005A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_RESET_NOT_AVAILABLE1 0x005B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_RESET_NOT_AVAILABLE2 0x00F8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_RECOVERY_NO_CAPSULE 0x00F9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_SB_PWR_FLR 0x5724 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_PEI_SB_SYSPWR_FLR 0x5723 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_CLEAR_CMOS 0x5720 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_NB_ERROR 0x00D1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_ARCH_PROTOCOL_NOT_AVAILABLE 0x00D3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_PCI_BUS_OUT_OF_RESOURCES 0x00D4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_LEGACY_OPROM_NO_SPACE 0x00D5 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_NO_CON_OUT 0x00D6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_NO_CON_IN 0x00D7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_FLASH_UPDATE_FAILED 0x00DB +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_DXE_RESET_NOT_AVAILABLE 0x00DC +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_ME_RECOVERED_VIA_GR 0x5725 + +/* These are from a Quanta doc */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_CMOS_CLEAR 0x5120 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_THERMAL_TRIP 0x5122 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_SYS_PWROK_DROPS_UNEXPECTEDLY 0x5123 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_AC_LOST 0x5124 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_RECOVER_ME_FROM_ABNORMAL_MODE 0x5125 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_BACKUP_IMAGE_LOADED_DIRECT_FW_UPDATE_NEEDED 0x5126 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_WINDMILL_POST_ERROR_CODE_ROCVER_HECI_FROM_ABNORMAL_MODE 0x5128 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_WINDMILL_CPU_NUMBER_BITMASK 0xE0 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_WINDMILL_CPU_NUMBER_SHIFT 5 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_WINDMILL_SOURCE_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_WINDMILL_SOURCE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_WINDMILL_SOURCE_IRP0 0 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_WINDMILL_SOURCE_IRP1 1 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_WINDMILL_SOURCE_IIO_CORE 2 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_WINDMILL_SOURCE_VT_D 3 + +/* achu: doc lists bit [1], not bit [0], but given rollover is bit [8], and from testing, assuming it's bit [0] */ +#define IPMI_SENSOR_TYPE_OEM_INTEL_SEL_CLEAR_BITMASK 0x01 +#define IPMI_SENSOR_TYPE_OEM_INTEL_SEL_CLEAR_SHIFT 0 + +#define IPMI_SENSOR_TYPE_OEM_INTEL_SEL_ROLLOVER_BITMASK 0x10 +#define IPMI_SENSOR_TYPE_OEM_INTEL_SEL_ROLLOVER_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_WINDMILL_LOGICAL_RANK_BITMASK 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INTEL_WINDMILL_LOGICAL_RANK_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_WINDMILL_CPU_NUMBER_BITMASK 0xE0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_WINDMILL_CPU_NUMBER_SHIFT 5 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_WINDMILL_CHANNEL_NUMBER_BITMASK 0x18 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_WINDMILL_CHANNEL_NUMBER_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_WINDMILL_DIMM_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_WINDMILL_DIMM_SHIFT 0 + +#define IPMI_SENSOR_TYPE_OEM_INTEL_WINDMILL_CHASSIS_POWER_STATUS_POWER_DOWN 0 +#define IPMI_SENSOR_TYPE_OEM_INTEL_WINDMILL_CHASSIS_POWER_STATUS_POWER_CYCLE_RESET 1 +#define IPMI_SENSOR_TYPE_OEM_INTEL_WINDMILL_CHASSIS_POWER_STATUS_POWER_ON 2 +#define IPMI_SENSOR_TYPE_OEM_INTEL_WINDMILL_CHASSIS_POWER_STATUS_AC_LOST 4 + +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_LOW_NONE_OF_THE_ABOVE 0 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_LOW_CML_ERROR 1 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_LOW_VIN_UV_FAULT 3 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_LOW_IOUT_OC_FAULT 4 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_LOW_HOTSWAP_OFF 6 + +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_HIGH_POWER_GOOD 3 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_HIGH_MFR_STATUS 4 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_HIGH_INPUT_STATUS 5 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_HIGH_IOUT_STATUS 6 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_HIGH_VOUT_STATUS 7 + +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_MFR_SPECIFIC_IOUT_WARN2 0 +/* achu: HS_SHUTDOWN_CAUSE1 & HS_SHUTDOWN_CAUSE2 list 4 error messages + * with <00>, <01>, <10>, & <11> listed next to them. I have no idea + * where these other bits come from. + */ +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_MFR_SPECIFIC_HS_SHUTDOWN_CAUSE1 1 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_MFR_SPECIFIC_HS_SHUTDOWN_CAUSE2 2 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_MFR_SPECIFIC_HS_INLIM 3 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_MFR_SPECIFIC_OV_CMP_OUT 5 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_MFR_SPECIFIC_UV_CMP_OUT 6 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_MFR_SPECIFIC_FET_HEALTH_BAD 7 + +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_INPUT_PIN_OP_WARN 0 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_INPUT_VIN_UV_FAULT 4 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_INPUT_VIN_UV_WARN 5 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_INPUT_VIN_OV_WARN 6 +#define IPMI_SENSOR_TYPE_OEM_INTEL_HOT_SWAP_CONTROLLER_0_STATUS_INPUT_VIN_OV_FAULT 7 + +/* + * Intel S2600KP + * Intel S2600WT2 + * Intel S2600WTT + */ + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_FAILURE_DETECTED_EVENT_DATA2_OEM_INTEL_E52600V3_OUTPUT_VOLTAGE_FAULT 0x01 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_FAILURE_DETECTED_EVENT_DATA2_OEM_INTEL_E52600V3_OUTPUT_POWER_FAULT 0x02 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_FAILURE_DETECTED_EVENT_DATA2_OEM_INTEL_E52600V3_OUTPUT_OVER_CURRENT_FAULT 0x03 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_FAILURE_DETECTED_EVENT_DATA2_OEM_INTEL_E52600V3_OVER_TEMPERATURE_FAULT 0x04 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_POWER_SUPPLY_FAILURE_DETECTED_EVENT_DATA2_OEM_INTEL_E52600V3_FAN_FAULT 0x05 + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE_EVENT_DATA2_OEM_INTEL_E52600V3_OUTPUT_VOLTAGE_WARNING 0x01 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE_EVENT_DATA2_OEM_INTEL_E52600V3_OUTPUT_POWER_WARNING 0x02 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE_EVENT_DATA2_OEM_INTEL_E52600V3_OUTPUT_OVER_CURRENT_WARNING 0x03 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE_EVENT_DATA2_OEM_INTEL_E52600V3_OVER_TEMPERATURE_WARNING 0x04 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE_EVENT_DATA2_OEM_INTEL_E52600V3_FAN_WARNING 0x05 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE_EVENT_DATA2_OEM_INTEL_E52600V3_INPUT_UNDER_VOLTAGE_WARNING 0x06 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE_EVENT_DATA2_OEM_INTEL_E52600V3_INPUT_OVER_CURRENT_WARNING 0x07 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_PREDICTIVE_FAILURE_EVENT_DATA2_OEM_INTEL_E52600V3_INPUT_OVER_POWER_WARNING 0x08 + +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_CONFIGURATION_ERROR_EVENT_DATA2_OEM_INTEL_E52600V3_BMC_CANNOT_ACCESS_PMBUS 0x01 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_CONFIGURATION_ERROR_EVENT_DATA2_OEM_INTEL_E52600V3_PMBUS_REVISION_NOT_SUPPORTED 0x02 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_CONFIGURATION_ERROR_EVENT_DATA2_OEM_INTEL_E52600V3_PMBUS_REVISION_ERROR 0x03 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_CONFIGURATION_ERROR_EVENT_DATA2_OEM_INTEL_E52600V3_PSU_INCOMPATIBLE 0x04 +#define IPMI_SENSOR_TYPE_POWER_SUPPLY_CONFIGURATION_ERROR_EVENT_DATA2_OEM_INTEL_E52600V3_PSU_FW_DEGRADED 0x05 + +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA2_OEM_INTEL_E52600V3_PROCESSOR_VRD_HOT_BITMAP_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA2_OEM_INTEL_E52600V3_PROCESSOR_VRD_HOT_BITMAP_SHIFT 0 + +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA2_OEM_INTEL_E52600V3_PROCESSOR_VRD_HOT_BITMAP_CPU1 0x01 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA2_OEM_INTEL_E52600V3_PROCESSOR_VRD_HOT_BITMAP_CPU2 0x02 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA2_OEM_INTEL_E52600V3_PROCESSOR_VRD_HOT_BITMAP_CPU3 0x04 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA2_OEM_INTEL_E52600V3_PROCESSOR_VRD_HOT_BITMAP_CPU4 0x08 + +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA3_OEM_INTEL_E52600V3_MEMORY_VRD_HOT_BITMAP_CPU1_DIMM_CHANNEL_1_2 0x01 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA3_OEM_INTEL_E52600V3_MEMORY_VRD_HOT_BITMAP_CPU1_DIMM_CHANNEL_3_4 0x02 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA3_OEM_INTEL_E52600V3_MEMORY_VRD_HOT_BITMAP_CPU2_DIMM_CHANNEL_1_2 0x04 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA3_OEM_INTEL_E52600V3_MEMORY_VRD_HOT_BITMAP_CPU2_DIMM_CHANNEL_3_4 0x08 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA3_OEM_INTEL_E52600V3_MEMORY_VRD_HOT_BITMAP_CPU3_DIMM_CHANNEL_1_2 0x10 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA3_OEM_INTEL_E52600V3_MEMORY_VRD_HOT_BITMAP_CPU3_DIMM_CHANNEL_3_4 0x20 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA3_OEM_INTEL_E52600V3_MEMORY_VRD_HOT_BITMAP_CPU4_DIMM_CHANNEL_1_2 0x40 +#define IPMI_SENSOR_TYPE_TEMPERATURE_EVENT_DATA3_OEM_INTEL_E52600V3_MEMORY_VRD_HOT_BITMAP_CPU4_DIMM_CHANNEL_3_4 0x80 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_SOCKET_ID_BITMASK 0xE0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_SOCKET_ID_SHIFT 5 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_CHANNEL_BITMASK 0x18 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_CHANNEL_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_DIMM_BITMASK 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_DIMM_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_SOCKET_ID_CPU1 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_SOCKET_ID_CPU2 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_SOCKET_ID_CPU3 2 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_SOCKET_ID_CPU4 3 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_DIMM_1 0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_DIMM_2 1 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INTEL_E52600V3_DIMM_3 2 + +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_THERMAL_TRIP_OEM_INTEL_E52600V3_CPU_NON_RECOVERABLE_OVER_TEMP_CONDITION 0x00 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_THERMAL_TRIP_OEM_INTEL_E52600V3_CPU_BOOT_FIVR_FAULT 0x01 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_UNKNOWN 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_CATERR 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_CPU_CORE_ERROR 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_MSID_MISMATCH 0x03 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA3_OEM_INTEL_E52600V3_CPU1 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA3_OEM_INTEL_E52600V3_CPU2 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA3_OEM_INTEL_E52600V3_CPU3 0x04 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA3_OEM_INTEL_E52600V3_CPU4 0x08 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_BITMASK 0x0F +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_SHIFT 0 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_CPU1 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_CPU2 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_CPU3 0x04 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_PROCESSOR_EVENT_DATA2_OEM_INTEL_E52600V3_CPU4 0x08 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_MANAGEMENT_HEALTH_AUTO_CONFIG_ERROR_EVENT_DATA3_OEM_INTEL_E52600V3_BITMASK 0x07 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_MANAGEMENT_HEALTH_AUTO_CONFIG_ERROR_EVENT_DATA3_OEM_INTEL_E52600V3_SHIFT 0 + +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_MANAGEMENT_HEALTH_AUTO_CONFIG_ERROR_EVENT_DATA3_OEM_INTEL_E52600V3_CFG_SYNTAX_ERROR 0x00 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_MANAGEMENT_HEALTH_AUTO_CONFIG_ERROR_EVENT_DATA3_OEM_INTEL_E52600V3_CHASSIS_AUTO_DETECT_ERROR 0x01 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_MANAGEMENT_HEALTH_AUTO_CONFIG_ERROR_EVENT_DATA3_OEM_INTEL_E52600V3_SDR_CFG_FILE_MISMATCH 0x02 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_MANAGEMENT_HEALTH_AUTO_CONFIG_ERROR_EVENT_DATA3_OEM_INTEL_E52600V3_SDR_OR_CFG_FILE_CORRUPTED 0x03 +#define IPMI_GENERIC_EVENT_READING_TYPE_CODE_STATE_ASSERTED_MANAGEMENT_HEALTH_AUTO_CONFIG_ERROR_EVENT_DATA3_OEM_INTEL_E52600V3_SDR_SYNTAX_ERROR 0x04 + +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OEM_INTEL_E52600V3_CONFIG_ERROR_BITMASK 0x0F +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OEM_INTEL_E52600V3_CONFIG_ERROR_SHIFT 0 + +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OEM_INTEL_E52600V3_CONFIG_ERROR_NONE 0 +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OEM_INTEL_E52600V3_CONFIG_ERROR_INVALID_DIMM_CONFIGURATION_FOR_RAS_MODE 3 + +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_E52600V3_RAS_MODE_BITMASK 0x0F +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_E52600V3_RAS_MODE_SHIFT 0 + +/* achu: Not a typo, lockstep = 2, rank sparing = 4, where is 3? */ +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_E52600V3_RAS_MODE_NONE 0 +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_E52600V3_RAS_MODE_MIRRORING 1 +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_E52600V3_RAS_MODE_LOCKSTEP 2 +#define IPMI_SENSOR_MEMORY_DEVICE_ENABLED_EVENT_DATA2_OR_EVENT_DATA3_OEM_INTEL_E52600V3_RAS_MODE_RANK_SPARING 4 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_E52600V3_PCI_DEVICE_NUMBER_BITMASK 0xF8 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_E52600V3_PCI_DEVICE_NUMBER_SHIFT 3 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_E52600V3_PCI_FUNCTION_NUMBER_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA3_OEM_INTEL_E52600V3_PCI_FUNCTION_NUMBER_SHIFT 0 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_SYSTEM_RTC_DATE_TIME_NOT_SET 0x0012 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PASSWORD_CHECK_FAILED 0x0048 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_PERR_ERROR 0x0140 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PCI_RESOURCE_CONFLICT 0x0141 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PCI_OUT_OF_RESOURCES_ERROR 0x0146 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_CORE_THREAD_COUNT_MISMATCH_DETECTED 0x0191 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_CACHE_SIZE_MISMATCH_DETECTED 0x0192 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_FAMILY_MISMATCH_DETECTED 0x0194 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_INTEL_QPI_LINK_FREQUENCIES_UNABLE_TO_SYNCHRONIZE 0x0195 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_MODEL_MISMATCH_DETECTED 0x0196 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_FREQUENCIES_UNABLE_TO_SYNCHRONIZE 0x0197 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_BIOS_SETTINGS_RESET_TO_DEFAULT_SETTINGS 0x5220 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PASSWORDS_CLEARED_BY_JUMPER 0x5221 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PASSWORD_CLEAR_JUMPER_IS_SET 0x5224 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_01_DISABLED 0x8130 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_02_DISABLED 0x8131 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_03_DISABLED 0x8132 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_04_DISABLED 0x8133 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_01_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8160 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_02_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8161 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_03_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8162 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_04_UNABLE_TO_APPLY_MICROCODE_UPDATE 0x8163 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_01_FAILED_SELF_TEST_BIST 0x8170 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_02_FAILED_SELF_TEST_BIST 0x8171 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_03_FAILED_SELF_TEST_BIST 0x8172 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_04_FAILED_SELF_TEST_BIST 0x8173 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_01_MICROCODE_UPDATE_NOT_FOUND 0x8180 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_02_MICROCODE_UPDATE_NOT_FOUND 0x8181 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_03_MICROCODE_UPDATE_NOT_FOUND 0x8182 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PROCESSOR_04_MICROCODE_UPDATE_NOT_FOUND 0x8183 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_WATCHDOG_TIMER_FAILED_ON_LAST_BOOT 0x8190 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_OS_BOOT_WATCHDOG_TIMER_FAILURE 0x8198 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_FAILED_SELF_TEST 0x8300 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_HOT_SWAP_CONTROLLER_FAILURE 0x8305 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_MANAGEMENT_ENGINE_ME_FAILED_SELF_TEST 0x83A0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_MANAGEMENT_ME_FAILED_TO_RESPOND 0x83A1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_FAILED_TO_RESPOND 0x84F2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_BASEBOARD_MANAGEMENT_CONTROLLER_IN_UPDATE_MODE 0x84F3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_SENSOR_DATA_RECORD_EMPTY 0x84F4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_SYSTEM_EVENT_LOG_FULL 0x84FF +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_MEMORY_COMPONENT_COULD_NOT_BE_CONFIGURED_IN_THE_SELECTED_RAS_MODE 0x8500 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_POPULATION_ERROR 0x8501 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A1_FAILED_SELF_TEST_INITIALIZATION 0x8520 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A2_FAILED_SELF_TEST_INITIALIZATION 0x8521 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A3_FAILED_SELF_TEST_INITIALIZATION 0x8522 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B1_FAILED_SELF_TEST_INITIALIZATION 0x8523 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B2_FAILED_SELF_TEST_INITIALIZATION 0x8524 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B3_FAILED_SELF_TEST_INITIALIZATION 0x8525 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C1_FAILED_SELF_TEST_INITIALIZATION 0x8526 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C2_FAILED_SELF_TEST_INITIALIZATION 0x8527 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C3_FAILED_SELF_TEST_INITIALIZATION 0x8528 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D1_FAILED_SELF_TEST_INITIALIZATION 0x8529 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D2_FAILED_SELF_TEST_INITIALIZATION 0x852A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D3_FAILED_SELF_TEST_INITIALIZATION 0x852B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E1_FAILED_SELF_TEST_INITIALIZATION 0x852C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E2_FAILED_SELF_TEST_INITIALIZATION 0x852D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E3_FAILED_SELF_TEST_INITIALIZATION 0x852E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F1_FAILED_SELF_TEST_INITIALIZATION 0x852F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F2_FAILED_SELF_TEST_INITIALIZATION 0x8530 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F3_FAILED_SELF_TEST_INITIALIZATION 0x8531 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G1_FAILED_SELF_TEST_INITIALIZATION 0x8532 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G2_FAILED_SELF_TEST_INITIALIZATION 0x8533 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G3_FAILED_SELF_TEST_INITIALIZATION 0x8534 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H1_FAILED_SELF_TEST_INITIALIZATION 0x8535 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H2_FAILED_SELF_TEST_INITIALIZATION 0x8536 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H3_FAILED_SELF_TEST_INITIALIZATION 0x8537 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J1_FAILED_SELF_TEST_INITIALIZATION 0x8538 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J2_FAILED_SELF_TEST_INITIALIZATION 0x8539 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J3_FAILED_SELF_TEST_INITIALIZATION 0x853A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K1_FAILED_SELF_TEST_INITIALIZATION 0x853B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K2_FAILED_SELF_TEST_INITIALIZATION 0x853C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K3_FAILED_SELF_TEST_INITIALIZATION 0x853D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L1_FAILED_SELF_TEST_INITIALIZATION 0x853E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L2_FAILED_SELF_TEST_INITIALIZATION 0x853F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L3_FAILED_SELF_TEST_INITIALIZATION 0x85C0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M1_FAILED_SELF_TEST_INITIALIZATION 0x85C1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M2_FAILED_SELF_TEST_INITIALIZATION 0x85C2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M3_FAILED_SELF_TEST_INITIALIZATION 0x85C3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N1_FAILED_SELF_TEST_INITIALIZATION 0x85C4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N2_FAILED_SELF_TEST_INITIALIZATION 0x85C5 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N3_FAILED_SELF_TEST_INITIALIZATION 0x85C6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P1_FAILED_SELF_TEST_INITIALIZATION 0x85C7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P2_FAILED_SELF_TEST_INITIALIZATION 0x85C8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P3_FAILED_SELF_TEST_INITIALIZATION 0x85C9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R1_FAILED_SELF_TEST_INITIALIZATION 0x85CA +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R2_FAILED_SELF_TEST_INITIALIZATION 0x85CB +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R3_FAILED_SELF_TEST_INITIALIZATION 0x85CC +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T1_FAILED_SELF_TEST_INITIALIZATION 0x85CD +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T2_FAILED_SELF_TEST_INITIALIZATION 0x85CE +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T3_FAILED_SELF_TEST_INITIALIZATION 0x85CF +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A1_DISABLED 0x8540 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A2_DISABLED 0x8541 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A3_DISABLED 0x8542 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B1_DISABLED 0x8543 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B2_DISABLED 0x8544 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B3_DISABLED 0x8545 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C1_DISABLED 0x8546 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C2_DISABLED 0x8547 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C3_DISABLED 0x8548 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D1_DISABLED 0x8549 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D2_DISABLED 0x854A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D3_DISABLED 0x854B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E1_DISABLED 0x854C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E2_DISABLED 0x854D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E3_DISABLED 0x854E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F1_DISABLED 0x854F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F2_DISABLED 0x8550 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F3_DISABLED 0x8551 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G1_DISABLED 0x8552 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G2_DISABLED 0x8553 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G3_DISABLED 0x8554 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H1_DISABLED 0x8555 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H2_DISABLED 0x8556 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H3_DISABLED 0x8557 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J1_DISABLED 0x8558 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J2_DISABLED 0x8559 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J3_DISABLED 0x855A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K1_DISABLED 0x855B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K2_DISABLED 0x855C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K3_DISABLED 0x855D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L1_DISABLED 0x855E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L2_DISABLED 0x855F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L3_DISABLED 0x85D0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M1_DISABLED 0x85D1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M2_DISABLED 0x85D2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M3_DISABLED 0x85D3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N1_DISABLED 0x85D4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N2_DISABLED 0x85D5 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N3_DISABLED 0x85D6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P1_DISABLED 0x85D7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P2_DISABLED 0x85D8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P3_DISABLED 0x85D9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R1_DISABLED 0x85DA +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R2_DISABLED 0x85DB +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R3_DISABLED 0x85DC +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T1_DISABLED 0x85DD +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T2_DISABLED 0x85DE +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T3_DISABLED 0x85DF +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8560 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8561 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_A3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8562 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8563 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8564 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_B3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8565 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8566 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8567 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_C3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8568 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8569 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x856A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_D3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x856B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x856C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x856D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_E3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x856E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x856F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8570 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_F3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8571 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8572 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8573 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_G3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8574 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8575 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8576 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_H3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8577 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8578 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x8579 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_J3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x857A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x857B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x857C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_K3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x857D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x857E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x857F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_L3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E2 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_M3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E4 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E5 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_N3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E6 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E7 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E8 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_P3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85E9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85EA +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85EB +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_R3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85EC +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T1_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85ED +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T2_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85EE +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DIMM_T3_ENCOUNTERED_A_SERIAL_PRESENCE_DETECTION_FAILURED 0x85EF +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_POST_RECLAIM_OF_NON_CRITICAL_VARIABLES 0x8604 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_BIOS_SETTINGS_ARE_CORRUPTED 0x8605 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_NVRAM_VARIABLE_SPACE_WAS_CORRUPTED_AND_HAS_BEEN_REINITIALIZED 0x8606 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_WAS_NOT_DETECTED 0x92A3 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_SERIAL_PORT_COMPONENT_ENCOUNTERED_A_RESOURCE_CONFLICT_ERROR 0x92A9 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_TPM_DEVICE_NOT_DETECTED 0xA000 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_TPM_DEVICE_MISSING_OR_NOT_RESPONDING 0xA001 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_TPM_DEVICE_FAILURE 0xA002 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_TPM_DEVICE_FAILED_SELF_TEST 0xA003 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_BIOS_ACM_ERROR 0xA100 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PCI_COMPONENT_ENCOUNTERED_A_SERR_ERROR 0xA421 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PCI_EXPRESS_COMPONENT_ENCOUNTERED_A_PERR_ERROR 0xA5A0 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_PCI_EXPRESS_COMPONENT_ENCOUNTERED_A_SERR_ERROR 0xA5A1 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INTEL_E52600V3_POST_ERROR_CODE_DXE_BOOT_SERVICES_DRIVER_NOT_ENOUGH_MEMORY_AVAILABLE_TO_SHADOW_A_LEGACY_OPTION_ROM 0xA6A0 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_MIRRORING_DOMAIN_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_MIRRORING_DOMAIN_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_MIRRORING_DOMAIN_0 0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_MIRRORING_DOMAIN_1 1 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_SPARING_DOMAIN_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_SPARING_DOMAIN_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_SPARING_DOMAIN_A 0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_SPARING_DOMAIN_B 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_SPARING_DOMAIN_C 2 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_SPARING_DOMAIN_D 3 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_RANK_ON_DIMM_BITMASK 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_RANK_ON_DIMM_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_SOCKET_ID_BITMASK 0xE0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_SOCKET_ID_SHIFT 5 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_BITMASK 0x18 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_DIMM_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_DIMM_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_SOCKET_ID_CPU1 0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_SOCKET_ID_CPU2 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_SOCKET_ID_CPU3 2 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_SOCKET_ID_CPU4 3 + +/* For CPU1 */ +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_A 0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_B 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_C 2 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_D 3 + +/* For CPU2 */ +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_E 0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_F 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_G 2 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_H 3 + +/* For CPU3 */ +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_J 0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_K 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_L 2 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_M 3 + +/* For CPU4 */ +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_N 0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_P 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_R 2 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_CHANNEL_T 3 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_DIMM_1 0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_DIMM_2 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA3_DIMM_3 2 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_CHANNEL_INFORMATON_VALIDITY_CHECK_BITMASK 0x10 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_CHANNEL_INFORMATON_VALIDITY_CHECK_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_CHANNEL_INFORMATON_VALIDITY_CHECK_CHANNEL_NUMBER_VALID 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_CHANNEL_INFORMATON_VALIDITY_CHECK_CHANNEL_NUMBER_INVALID 0 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_DIMM_INFORMATON_VALIDITY_CHECK_BITMASK 0x10 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_DIMM_INFORMATON_VALIDITY_CHECK_SHIFT 3 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_DIMM_INFORMATON_VALIDITY_CHECK_DIMM_SLOT_ID_VALID 1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_DIMM_INFORMATON_VALIDITY_CHECK_DIMM_SLOT_ID_INVALID 0 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_ERROR_TYPE_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_ERROR_TYPE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_ERROR_TYPE_PARITY_ERROR_TYPE_NOT_KNOWN 0x0 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_ERROR_TYPE_DATA_PARITY_ERROR 0x1 +#define IPMI_SENSOR_TYPE_MEMORY_OEM_INTEL_E52600V3_EVENT_DATA2_ERROR_TYPE_COMMAND_AND_ADDRESS_PARITY_ERROR 0x3 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_OPI_FATAL_ERROR + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_LINK_LAYER_UNCORRECTABLE_ECC_ERROR 0x00 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PROTOCOL_LAYER_POISONED_PACKET_RECEPTION_ERROR 0x01 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_LINK_PHY_INIT_FAILURE_WITH_RESULTANT_DEGRADATION_IN_LINK_WIDTH 0x02 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PHY_LAYER_DETECTED_DRIFT_BUFFER_ALARM 0x03 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PHY_DETECTED_LATENCY_BUFFER_ROLLOVER 0x04 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PHY_INIT_FAILURE 0x05 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_LINK_LAYER_GENERIC_CONTROL_ERROR 0x06 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PARITY_ERROR_IN_LINK_OR_PHY_LAYER 0x07 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PROTOCOL_LAYER_TIMEOUT_DETECTED 0x08 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PROTOCOL_LAYER_FAILED_RESPONSE 0x09 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PROTOCOL_LAYER_ILLEGAL_PACKET_FIELD 0x0A +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PROTOCOL_LAYER_QUEUE_TABLE_OVERFLOW_UNDERFLOW 0x0B +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_VIRAL_ERROR 0x0C +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_PROTOCOL_LAYER_PARITY_ERROR 0x0D +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_ROUTING_TABLE_ERROR 0x0E + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_QPI_FATAL_ERROR_2 + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_2_ILLEGAL_INBOUND_REQUEST 0x00 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_2_IIO_WRITE_CACHE_UNCORRECTABLE_DATA_ECC_ERROR 0x01 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_2_IIO_CSR_CROSSING_32_BIT_BOUNDARY_ERROR 0x02 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_2_IIO_RECEIVED_XPF_PHYSICAL_LOGICAL_REDIRECT_INTERRUPT_INBOUND 0x03 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_2_IIO_ILLEGAL_SAD_OR_ILLEGAL_OR_NON_EXISTENT_ADDRESS_OR_MEMORY 0x04 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_FATAL_ERROR_2_IIO_WRITE_CACHE_COHERENCY_VIOLATION 0x05 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_QPI_LINK_WIDTH_REDUCED + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +/* achu: not a typo, no 0x00 offset */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_LINK_WIDTH_REDUCED_HALF_WIDTH 0x01 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_QPI_LINK_WIDTH_REDUCED_QUARTER_WIDTH 0x02 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_PCI_EXPRESS_FATAL_ERRORS + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_DATA_LINK_LAYER_PROTOCOL_ERROR 0x00 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_SURPRISE_LINK_DOWN_ERROR 0x01 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_COMPLETER_ABORT 0x02 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_UNSUPPORTED_REQUEST 0x03 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_POISONED_TLP 0x04 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_FLOW_CONTROL_PROTOCOL 0x05 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_COMPLETION_TIMEOUT 0x06 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_RECEIVER_BUFFER_OVERFLOW 0x07 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_ACS_VIOLATION 0x08 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_MALFORMED_TLP 0x09 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_ECRC_ERROR 0x0A +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_RECEIVED_FATAL_MESSAGE_FROM_DOWNSTREAM 0x0B +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_UNEXPECTED_COMPLETION 0x0C +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_RECEIVED_ERR_NONFATAL_MESSAGE 0x0D +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_UNCORRECTABLE_INTERNAL 0x0E +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_MC_BLOCKED_TLP 0x0F + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_PCI_EXPRESS_FATAL_ERRORS_2 + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_2_ATOMIC_EGRESS_BLOCKED 0x00 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_2_TLP_PREFIX_BLOCKED 0x01 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_FATAL_ERRORS_2_UNSPECIFIED_NON_AER_FATAL_ERROR 0x0F + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_PCI_EXPRESS_CORRECTABLE_ERRORS + * Sensor Type = IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT + */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_RECEIVER_ERROR 0x00 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_BAD_DLLP 0x01 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_BAD_TLP 0x02 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_REPLAY_NUM_ROLLOVER 0x03 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_REPLAY_TIMER_TIMEOUT 0x04 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_ADVISORY_NON_FATAL 0x05 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_LINK_BW_CHANGED 0x06 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_CORRECTABLE_INTERNAL 0x07 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_PCI_EXPRESS_CORRECTABLE_ERRORS_HEADER_LOG_OVERFLOW 0x08 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_FIRMWARE_UPDATE_STATUS_SENSOR + * Sensor Type = IPMI_SENSOR_TYPE_VERSION_CHANGE + */ +/* achu: not a typo, no 0x00 offset */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_UPDATE_STARTED 0x00 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_UPDATE_COMPLETED_SUCCESSFULLY 0x01 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_UPDATE_FAILURE 0x02 + +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_EVENT_DATA2_TARGET_OF_UPDATE_BITMASK 0xF0 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_EVENT_DATA2_TARGET_OF_UPDATE_SHIFT 4 + +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_EVENT_DATA2_TARGET_OF_UPDATE_BMC 0x0 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_EVENT_DATA2_TARGET_OF_UPDATE_BIOS 0x1 +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_EVENT_DATA2_TARGET_OF_UPDATE_ME 0x2 + +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_EVENT_DATA2_TARGET_INSTANCE_BITMASK 0x0C +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_FIRMWARE_UPDATE_STATUS_SENSOR_EVENT_DATA2_TARGET_INSTANCE_SHIFT 2 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_BIOS_RECOVERY_START + * Sensor Type = IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS + */ +/* achu: not a typo, no 0x00 offset */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_BIOS_RECOVERY_START 0x01 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_BIOS_RECOVERY_FINISH + * Sensor Type = IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS + */ +/* achu: not a typo, no 0x00 offset */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_BIOS_RECOVERY_FINISH 0x01 + +/* + * Event Reading Type Code = IPMI_EVENT_READING_TYPE_CODE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO + * Sensor Type = IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO + */ +#define IPMI_OEM_INTEL_E52600V3_SPECIFIC_IERR_RECOVERY_DUMP_INFO_DUMP_FAILED 0x01 + +/* + * String arrays for above + */ + +extern const char * const ipmi_oem_intel_e52600v3_specific_qpi_fatal_error[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_qpi_fatal_error_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_qpi_fatal_error_2[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_qpi_fatal_error_2_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_qpi_link_width_reduced[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_qpi_link_width_reduced_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_pci_express_fatal_errors[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_pci_express_fatal_errors_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_pci_express_fatal_errors_2[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_pci_express_fatal_errors_2_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_pci_express_correctable_errors[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_pci_express_correctable_errors_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_firmware_update_status_sensor[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_firmware_update_status_sensor_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_bios_recovery_start[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_bios_recovery_start_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_bios_recovery_finish[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_bios_recovery_finish_max_index; + +extern const char * const ipmi_oem_intel_e52600v3_specific_ierr_recovery_dump_info[]; +extern unsigned int ipmi_oem_intel_e52600v3_specific_ierr_recovery_dump_info_max_index; + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_E52600V3_CPU_1 0 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_E52600V3_CPU_2 1 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_E52600V3_CPU_3 2 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_INTEL_E52600V3_CPU_4 3 + +#define IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO_EVENT_DATA2_FAILED_REGISTER_TYPE_BITMASK 0x1F +#define IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO_EVENT_DATA2_FAILED_REGISTER_TYPE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO_EVENT_DATA2_FAILED_REGISTER_TYPE_UNCORE_MSR_REGISTER 0x01 +#define IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO_EVENT_DATA2_FAILED_REGISTER_TYPE_CORE_MSR_REGISTERS 0x02 +#define IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO_EVENT_DATA2_FAILED_REGISTER_TYPE_IIO_REGISTER 0x04 +#define IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO_EVENT_DATA2_FAILED_REGISTER_TYPE_PCI_CONFIG_SPACE 0x08 +#define IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO_EVENT_DATA2_FAILED_REGISTER_TYPE_MCA_ERROR_SOURCE_REGISTER 0x10 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-inventec-spec.h new file mode 100644 index 00000000..eaa6316e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-inventec-spec.h @@ -0,0 +1,144 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INVENTEC_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ +/* achu: not official names, named based on use context */ + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INVENTEC_SBE_WARNING_THRESHOLD 0x00 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INVENTEC_SBE_CRITICAL_THRESHOLD 0x01 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_INVENTEC_OTHER 0xFF + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU0_CH0_DIM1 0x01 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU0_CH0_DIM0 0x02 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU0_CH1_DIM1 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU0_CH1_DIM0 0x04 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU0_CH2_DIM1 0x05 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU0_CH2_DIM0 0x06 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU1_CH0_DIM0 0x11 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU1_CH1_DIM0 0x12 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5441_DIMM_CPU1_CH2_DIM0 0x13 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU0_CH0_DIM1 0x01 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU0_CH0_DIM0 0x02 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU0_CH1_DIM1 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU0_CH1_DIM0 0x04 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU0_CH2_DIM1 0x05 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU0_CH2_DIM0 0x06 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU1_CH0_DIM1 0x11 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU1_CH0_DIM0 0x12 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU1_CH1_DIM1 0x13 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU1_CH1_DIM0 0x14 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU1_CH2_DIM1 0x15 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_INVENTEC_5442_DIMM_CPU1_CH2_DIM0 0x16 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA3_OEM_INVENTEC_PORT80_CODE_EXTENDED_MEMORY_TEST 0x3A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA3_OEM_INVENTEC_PORT80_CODE_SETUP_MENU 0x87 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_EVENT_DATA3_OEM_INVENTEC_PORT80_CODE_OPTION_ROM_SCAN 0x78 + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_TIMER_COUNT_READ_WRITE_ERROR 0x0000 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_MASTER_PIC_ERROR 0x0001 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_SLAVE_PIC_ERROR 0x0002 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CMOS_BATTERY_ERROR 0x0003 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CMOS_DIAGNOSTIC_STATUS_ERROR 0x0004 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CMOS_CHECKSUM_ERROR 0x0005 +/* achu: Inventec 5441 lists "Config Error", while Inventec 5442 lists "Configuration Error" + * We'll just keep "Config Error" + */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CMOS_CONFIG_ERROR 0x0006 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_KEYBOARD_LOCK_ERROR 0x0008 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_NO_KEYBOARD_ERROR 0x0009 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_KBC_BAT_TEST_ERROR 0x000A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CMOS_MEMORY_SIZE_ERROR 0x000B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_RAM_READ_WRITE_TEST_ERROR 0x000C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_FDD_0_ERROR 0x000E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_FLOPPY_CONTROLLER_ERROR 0x0010 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CMOS_DATE_TIME_ERROR 0x0012 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_NO_PS2_MOUSE_ERROR 0x0014 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_REFRESH_TIMER_ERROR 0x0040 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_DISPLAY_MEMORY_ERROR 0x0041 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_POST_THE_INS_KEY_ERROR 0x0043 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_DMAC_PAGE_REGISTER_ERROR 0x0044 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_DMAC1_CHANNEL_REGISTER_ERROR 0x0045 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_DMAC2_CHANNEL_REGISTER_ERROR 0x0046 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_PMM_MEMORY_ALLOCATION_ERROR 0x0047 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_PASSWORD_CHECK_ERROR 0x0048 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ADM_MODULE_ERROR 0x004A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_LANGUAGE_MODULE_ERROR 0x004B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_KBC_INTERFACE_ERROR 0x004C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_HDD_0_ERROR 0x004D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_HDD_1_ERROR 0x004E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_HDD_2_ERROR 0x004F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_HDD_3_ERROR 0x0050 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_HDD_4_ERROR 0x0051 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_HDD_5_ERROR 0x0052 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_HDD_6_ERROR 0x0053 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_HDD_7_ERROR 0x0054 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATAPI_0_ERROR 0x0055 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATAPI_1_ERROR 0x0056 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATAPI_2_ERROR 0x0057 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATAPI_3_ERROR 0x0058 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATAPI_4_ERROR 0x0059 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATAPI_5_ERROR 0x005A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATAPI_6_ERROR 0x005B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATAPI_7_ERROR 0x005C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_ATA_SMART_FEATURE_ERROR 0x005D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_NON_CRITICAL_PASSWORD_CHECK_ERROR 0x005E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_DUMMY_BIOS_ERROR 0x00FF +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_USB_HC_NOT_FOUND 0x8101 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_USB_DEVICE_INIT_ERROR 0x8102 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_USB_DEVICE_DISABLED 0x8103 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_USB_OHCI_EMUL_NOT_SUPPORTED 0x8104 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_USB_EHCI_64BIT_DATA_STRUCTURE_ERROR 0x8105 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_SMBIOS_NOT_ENOUGH_SPACE_IN_F000 0x8301 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_AP_APPLICATION_PROCESSOR_FAILED_BIST 0x0110 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPU1_THERMAL_FAILURE_DUE_TO_PROCHOT 0x0120 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPU2_THERMAL_FAILURE_DUE_TO_PROCHOT 0x0121 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPU3_THERMAL_FAILURE_DUE_TO_PROCHOT 0x0122 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPU4_THERMAL_FAILURE_DUE_TO_PROCHOT 0x0123 +/* BSP = Baseboard Service Processor */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_PROCESSOR_FAILED_BIST_BSP 0x0150 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPU1_PROCESSOR_MISSING_MICROCODE 0x0160 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPU2_PROCESSOR_MISSING_MICROCODE 0x0161 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPU3_PROCESSOR_MISSING_MICROCODE 0x0162 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPU4_PROCESSOR_MISSING_MICROCODE 0x0163 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_L2_CACHE_SIZE_MISMATCH 0x0192 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPUID_PROCESSOR_STEPPING_ARE_DIFFERENT 0x0193 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPUID_PROCESSOR_FAMILY_ARE_DIFFERENT 0x0194 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_FRONT_SIDE_BUS_MISMATCH 0x0195 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_CPUID_PROCESSOR_MODEL_ARE_DIFFERENT 0x0196 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_PROCESSOR_SPEEDS_MISMATCHED 0x0197 +/* QPI Mismatch only for Inventec 5442 */ +/* QPI = Quickpath Interconnect */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_QPI_MISMATCHED 0x0198 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_INVENTEC_POST_ERROR_CODE_UNDEFINED_BIOS_ERROR 0xFFFF + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-quanta-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-quanta-spec.h new file mode 100644 index 00000000..53664194 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-quanta-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_QUANTA_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_QUANTA_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Quanta S99Q/Dell FS12-TY + */ + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_A0 0x01 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_A1 0x02 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_A2 0x03 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_B0 0x04 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_B1 0x05 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_B2 0x06 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_C0 0x07 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_C1 0x08 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_C2 0x09 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_D0 0x0A +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_D1 0x0B +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_D2 0x0C +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_E0 0x0D +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_E1 0x0E +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_E2 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_F0 0x10 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_F1 0x11 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_QUANTA_S99Q_DIMM_F2 0x12 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA2_DEVICE_NUMBER_BITMASK 0xF8 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA2_DEVICE_NUMBER_SHIFT 3 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA2_FUNCTION_NUMBER_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA2_FUNCTION_NUMBER_SHIFT 0 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA3_QPI0_ERROR 0 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA3_QPI1_ERROR 1 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA3_QPI2_ERROR 2 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA3_QPI3_ERROR 3 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA3_MISCELLANEOUS_ERROR 23 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_QUANTA_EVENT_DATA3_IOH_CORE_ERROR 24 + +#define IPMI_OEM_QUANTA_EVENT_DATA + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_QUANTA_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-supermicro-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-supermicro-spec.h new file mode 100644 index 00000000..55466ab6 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-supermicro-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_SUPERMICRO_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_SUPERMICRO_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************* + * Supermicro * + *******************************************/ + +/* + * Supermicro X7DBR-3 (X7DBR_3) + * Supermicro X7DB8 + * Supermicro X8DTN + * Supermicro X7SBI-LN4 (X7SBI_LN4) + * Supermicro X8DTH + * Supermicro X8DTG + * Supermicro X8DTU + * Supermicro X8DT3-LN4F (X8DT3_LN4F) + * Supermicro X8DTU-6+ (X8DTU_6PLUS) + * Supermicro X8DTL + * Supermicro X8DTL-3F (X8DTL_3F) + * Supermicro X8SIL-F (X8SIL_F) + * Supermicro X9SCL + * Supermicro X9SCM + * Supermicro X8DTN+-F (X8DTNPLUS_F) + * Supermicro X8SIE + * Supermicro X9SCA-F-O (X9SCA_F_O) + * Supermicro H8DGU-F (H8DGU_F) + * Supermicro X9DRi-F (X9DRI_F) + * Supermicro X9DRI-LN4F+ (X9DRI_LN4F_PLUS) + * Supermicro X9SPU-F-O (X9SPU_F_O) + * Supermicro X9SCM-iiF (X9SCM_IIF) + */ +/* achu: not official names, named based on use context */ +#define IPMI_SENSOR_TYPE_OEM_SUPERMICRO_CPU_TEMP_LOW 0x00 +#define IPMI_SENSOR_TYPE_OEM_SUPERMICRO_CPU_TEMP_MEDIUM 0x01 +#define IPMI_SENSOR_TYPE_OEM_SUPERMICRO_CPU_TEMP_HIGH 0x02 +#define IPMI_SENSOR_TYPE_OEM_SUPERMICRO_CPU_TEMP_OVERHEAT 0x04 +#define IPMI_SENSOR_TYPE_OEM_SUPERMICRO_CPU_TEMP_NOT_INSTALLED 0x07 + +/* achu: Different for SEL, I don't know why */ +#define IPMI_SENSOR_TYPE_OEM_SUPERMICRO_CPU_TEMP_SEL_OVERHEAT 0x02 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_SUPERMICRO_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-wistron-spec.h new file mode 100644 index 00000000..deb6fd97 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-and-event-code-tables-oem-wistron-spec.h @@ -0,0 +1,188 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_WISTRON_SPEC_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * Wistron / Dell Poweredge C6220 + */ + +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_WISTRON_PROCESSOR_1 0x00 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_WISTRON_PROCESSOR_2 0x01 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_WISTRON_PROCESSOR_3 0x02 +#define IPMI_SENSOR_TYPE_PROCESSOR_EVENT_DATA2_OEM_WISTRON_PROCESSOR_4 0x04 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_THRESHOLD_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_THRESHOLD_SHIFT 4 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_SBE_WARNING_THRESHOLD 0x00 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_SBE_CRITICAL_THRESHOLD 0x01 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_UNSPECIFIED 0x0F + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_CPU_DIMM_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_CPU_DIMM_SHIFT 0 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_CPU1_DIMM_A 0x00 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_CPU2_DIMM_B 0x01 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_CPU3_DIMM_C 0x02 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA2_OEM_WISTRON_CPU4_DIMM_D 0x03 + +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_WISTRON_DIMM_1_BITMASK 0x01 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_WISTRON_DIMM_2_BITMASK 0x02 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_WISTRON_DIMM_3_BITMASK 0x04 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_WISTRON_DIMM_4_BITMASK 0x08 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_WISTRON_DIMM_5_BITMASK 0x10 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_WISTRON_DIMM_6_BITMASK 0x20 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_WISTRON_DIMM_7_BITMASK 0x40 +#define IPMI_SENSOR_TYPE_MEMORY_EVENT_DATA3_OEM_WISTRON_DIMM_8_BITMASK 0x80 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_WISTRON_EVENT_DATA2_DEVICE_NUMBER_BITMASK 0xF8 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_WISTRON_EVENT_DATA2_DEVICE_NUMBER_SHIFT 3 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_WISTRON_EVENT_DATA2_FUNCTION_NUMBER_BITMASK 0x07 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_OEM_WISTRON_EVENT_DATA2_FUNCTION_NUMBER_SHIFT 0 + +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_OEM_WISTRON_CORE 0x07 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_OEM_WISTRON_NON_FATAL 0x08 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_OEM_WISTRON_FATAL 0x0A + +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_QPI0_ERROR 0x00 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_QPI1_ERROR 0x01 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_QPI2_ERROR 0x02 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_QPI3_ERROR 0x03 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_QPI0_PROTOCOL_ERROR 0x04 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_QPI1_PROTOCOL_ERROR 0x05 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_QPI2_PROTOCOL_ERROR 0x06 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_QPI3_PROTOCOL_ERROR 0x07 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_MISCELLANEOUS_ERROR 0x23 +#define IPMI_SENSOR_TYPE_IOH_CORE_ERROR_EVENT_DATA3_OEM_WISTRON_IOH_CORE_ERROR 0x24 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_BITMASK 0x1F +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_SHIFT 0 + +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_HT_PERIODIC_CRC_ERROR 0x00 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_HT_PROTOCOL_ERROR 0x01 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_HT_FLOW_CONTROL_BUFFER_OVERFLOW 0x02 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_HT_RESPONSE_ERROR 0x03 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_HT_PER_PACKET_CRC_ERROR 0x04 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_HT_RETRY_COUNTER_ERROR 0x05 +#define IPMI_SENSOR_TYPE_CRITICAL_INTERRUPT_EVENT_DATA2_OEM_WISTRON_LOCAL_ERROR_BIT_HT_MCU_PARITY_ERROR 0x07 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_FIRST_FIELD_BITMASK 0xF0 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_FIRST_FIELD_SHIFT 4 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_SECOND_FIELD_HIGH_BITS_BITMASK 0x0F +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_SECOND_FIELD_HIGH_BITS_SHIFT 0 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_SECOND_FIELD_HIGH_BITS_LEFT_SHIFT 2 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA3_OEM_WISTRON_BIOS_SECOND_FIELD_LOW_BITS_BITMASK 0xC0 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA3_OEM_WISTRON_BIOS_SECOND_FIELD_LOW_BITS_SHIFT 6 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA3_OEM_WISTRON_BIOS_THIRD_FIELD_BITMASK 0x3F +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA3_OEM_WISTRON_BIOS_THIRD_FIELD_SHIFT 0 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_TYPE_BITMASK 0x80 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_TYPE_SHIFT 7 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_TYPE_PC_COMPATIBLE_BOOT 0x0 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_TYPE_UEFI_BOOT 0x1 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_BITMASK 0x7F +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_SHIFT 0 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_FORCE_PXE_BOOT 0x1 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_NIC_PXE_BOOT 0x2 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_HARD_DISK_BOOT 0x3 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_RAID_HDD_BOOT 0x4 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_USB_STORAGE_BOOT 0x5 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_CD_DVD_ROM_BOOT 0x7 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_ISCSI_BOOT 0x8 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_UEFI_SHELL 0x9 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BOOT_DEVICE_EPSA_DIAGNOSTIC_BOOT 0xA + +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_LOCAL_CONSOLE_RESOURCE_CONFLICT 0x0010 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_LOCAL_CONSOLE_CONTROLLER_ERROR 0x0011 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_LOCAL_CONSOLE_OUTPUT_ERROR 0x0012 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_ISA_IO_CONTROLLER_ERROR 0x0013 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_ISA_IO_RESOURCE_CONFLICT 0x0014 +/* achu: Doc lists "controller error" again, Dell confirms its not a typo. */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_ISA_IO_CONTROLLER_ERROR2 0x0015 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_ISA_FLOPPY_CONTROLLER_ERROR 0x0016 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_ISA_FLOPPY_INPUT_ERROR 0x0017 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_ISA_FLOPPY_OUTPUT_ERROR 0x0018 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_USB_READ_ERROR 0x0019 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_USB_WRITE_ERROR 0x001A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_USB_INTERFACE_ERROR 0x001B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_MOUSE_INTERFACE_ERROR 0x001C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_KEYBOARD_NOT_DETECTED 0x001E +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_KEYBOARD_CONTROLLER_ERROR 0x001F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_KEYBOARD_STUCK_KEY_ERROR 0x0020 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_KEYBOARD_LOCKED_ERROR 0x0021 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_MEMORY_CORRECTABLE_ERROR 0x0023 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_MEMORY_UNCORRECTABLE_ERROR 0x0024 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_MEMORY_NON_SPECIFIC_ERROR 0x0025 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_MP_SERVICE_SELF_TEST_ERROR 0x0026 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_PCI_IO_CONTROLLER_ERROR 0x0027 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_PCI_IO_READ_ERROR 0x0028 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_PCI_IO_WRITE_ERROR 0x0029 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SERIAL_PORT_NOT_DETECTED 0x002A +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SERIAL_PORT_CONTROLLER_ERROR 0x002B +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SERIAL_PORT_INPUT_ERROR 0x002C +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SERIAL_PORT_OUTPUT_ERROR 0x002D +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_MICROCODE_UPDATE_ERROR 0x002E +/* achu: spec says "be updated", I assume English typo */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_NO_MICROCODE_UPDATED 0x002F +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SATA_0_DEVICE_NOT_FOUND 0x8012 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SATA_1_DEVICE_NOT_FOUND 0x8013 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SATA_2_DEVICE_NOT_FOUND 0x8014 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SATA_3_DEVICE_NOT_FOUND 0x8015 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SATA_4_DEVICE_NOT_FOUND 0x8016 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SATA_5_DEVICE_NOT_FOUND 0x8017 +/* achu: spec says "be Configured", I assume English error */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SPARING_MODE_IS_NOT_CONFIGURED 0x8018 +/* achu: spec says "be Configured", I assume English error */ +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_MIRROR_MODE_IS_NOT_CONFIGURED 0x8019 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_SUPERVISER_AND_USER_PASSWORDS_CLEARED 0x8020 +#define IPMI_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS_OEM_WISTRON_POST_ERROR_CODE_CMOS_BATTERY_FAULT 0x8021 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_RECOVERY_START_RECOVERY 0x1 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_RECOVERY_RECOVERY_SUCCESS 0x2 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_RECOVERY_LOAD_IMAGE_FAIL 0x3 +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_BIOS_RECOVERY_SIGNED_FAIL 0x4 + +#define IPMI_SENSOR_TYPE_SYSTEM_EVENT_EVENT_DATA2_OEM_WISTRON_ME_FAIL 0x1 + +/* + * String arrays for above + */ + +extern const char * const ipmi_sensor_type_oem_wistron_ioh_core_error[]; +extern unsigned int ipmi_sensor_type_oem_wistron_ioh_core_error_max_index; + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_OEM_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-dell-spec.h new file mode 100644 index 00000000..748ac61c --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-dell-spec.h @@ -0,0 +1,132 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_NUMBERS_OEM_DELL_SPEC_H +#define IPMI_SENSOR_NUMBERS_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Dell Poweredge R610 + * Dell Poweredge R710 + */ + +#define IPMI_SENSOR_NUMBER_OEM_DELL_ECC_CORRECTABLE_ERRORS 0x01 +#define IPMI_SENSOR_NUMBER_OEM_DELL_ECC_UNCORRECTABLE_ERRORS 0x02 +#define IPMI_SENSOR_NUMBER_OEM_DELL_IO_CHANNEL_CHECK 0x03 +#define IPMI_SENSOR_NUMBER_OEM_DELL_PCI_PARITY_ERROR 0x04 +#define IPMI_SENSOR_NUMBER_OEM_DELL_PCI_SYSTEM_ERROR 0x05 +#define IPMI_SENSOR_NUMBER_OEM_DELL_EVENT_LOGGING_FOR_CORRECTABLE_ECC_EVENTS_DISABLED 0x06 +#define IPMI_SENSOR_NUMBER_OEM_DELL_EVENT_LOGGING_DISABLED 0x07 +#define IPMI_SENSOR_NUMBER_OEM_DELL_UNKNOWN_ERROR 0x08 +#define IPMI_SENSOR_NUMBER_OEM_DELL_CPU_INTERNAL_ERROR 0x09 +#define IPMI_SENSOR_NUMBER_OEM_DELL_CPU_PROTOCOL_ERROR 0x0A +#define IPMI_SENSOR_NUMBER_OEM_DELL_CPU_BUS_PERR 0x0B +#define IPMI_SENSOR_NUMBER_OEM_DELL_CPU_BUS_INITIALIZATION_ERROR 0x0C +#define IPMI_SENSOR_NUMBER_OEM_DELL_CPU_MACHINE_CHECK_ERROR 0x0D +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEMORY_SPARE 0x11 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEMORY_MIRROR 0x12 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEMORY_RAID 0x13 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEMORY_HOT_ADD 0x14 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEMORY_HOT_REMOVE 0x15 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEMORY_HOT_FAILURE 0x16 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEMORY_REDUNDANCY_REGAINED 0x17 +#define IPMI_SENSOR_NUMBER_OEM_DELL_FATAL_PCI_EXPRESS_ERRORS 0x18 +#define IPMI_SENSOR_NUMBER_OEM_DELL_CHIPSET_ERROR 0x19 +#define IPMI_SENSOR_NUMBER_OEM_DELL_ERROR_REGISTER_POINTER 0x1A +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEMORY_CORRECTABLE_ECC_WARNING_OR_CRITICAL_EXCEEDED 0x1B +#define IPMI_SENSOR_NUMBER_OEM_DELL_CRC_MEMORY_ERROR 0x1C +#define IPMI_SENSOR_NUMBER_OEM_DELL_USB_OVER_CURRENT 0x1D +#define IPMI_SENSOR_NUMBER_OEM_DELL_POST_FATAL_ERROR 0x1E +#define IPMI_SENSOR_NUMBER_OEM_DELL_INCOMPATIBLE_BMC_FIRMWARE 0x1F +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEM_OVERTEMP 0x20 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEM_FATAL_SB_CRC 0x21 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MEM_FATAL_NB_CRC 0x22 +#define IPMI_SENSOR_NUMBER_OEM_DELL_OS_WATCHDOG_TIMER 0x23 +#define IPMI_SENSOR_NUMBER_OEM_DELL_LINK_TUNING_ERROR 0x24 +#define IPMI_SENSOR_NUMBER_OEM_DELL_LT_FLEXADDR 0x25 +#define IPMI_SENSOR_NUMBER_OEM_DELL_NON_FATAL_PCI_EXPRESS_ERRORS 0x26 +#define IPMI_SENSOR_NUMBER_OEM_DELL_FATAL_IO_ERROR 0x27 +#define IPMI_SENSOR_NUMBER_OEM_DELL_MSR_INFO_LOG 0x28 +#define IPMI_SENSOR_NUMBER_OEM_DELL_QPI_LINK_ERROR_SENSOR 0x29 +#define IPMI_SENSOR_NUMBER_OEM_DELL_TXT_SX_SENTER_COMMAND_ERROR 0x2A +#define IPMI_SENSOR_NUMBER_OEM_DELL_IDPT_MEMORY_ONLINE_FAILURE 0x2B + +/* + * Dell Poweredge C410x + */ + +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FB_TEMP 0x17 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_BOARD_TEMP_1 0x01 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_BOARD_TEMP_2 0x02 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_BOARD_TEMP_3 0x03 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_BOARD_TEMP_4 0x04 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_BOARD_TEMP_5 0x05 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_BOARD_TEMP_6 0x06 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_1_TEMP 0x07 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_2_TEMP 0x08 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_3_TEMP 0x09 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_4_TEMP 0x0A +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_5_TEMP 0x0B +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_6_TEMP 0x0C +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_7_TEMP 0x0D +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_8_TEMP 0x0E +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_9_TEMP 0x0F +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_10_TEMP 0x10 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_11_TEMP 0x11 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_12_TEMP 0x12 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_13_TEMP 0x13 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_14_TEMP 0x14 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_15_TEMP 0x15 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_16_TEMP 0x16 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_1_WATT 0x50 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_2_WATT 0x51 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_3_WATT 0x52 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_4_WATT 0x53 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_5_WATT 0x54 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_6_WATT 0x55 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_7_WATT 0x56 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_8_WATT 0x57 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_9_WATT 0x58 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_10_WATT 0x59 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_11_WATT 0x5A +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_12_WATT 0x5B +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_13_WATT 0x5C +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_14_WATT 0x5D +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_15_WATT 0x5E +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PCIE_16_WATT 0x5F +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PSU_1_WATT 0x60 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PSU_2_WATT 0x61 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PSU_3_WATT 0x62 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_PSU_4_WATT 0x63 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FAN_1 0x80 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FAN_2 0x81 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FAN_3 0x82 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FAN_4 0x83 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FAN_5 0x84 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FAN_6 0x85 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FAN_7 0x86 +#define IPMI_SENSOR_NUMBER_OEM_DELL_C410X_FAN_8 0x87 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_NUMBERS_OEM_DELL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-intel-node-manager-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-intel-node-manager-spec.h new file mode 100644 index 00000000..1656d912 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-intel-node-manager-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_NUMBERS_OEM_INTEL_NODE_MANAGER_SPEC_H +#define IPMI_SENSOR_NUMBERS_OEM_INTEL_NODE_MANAGER_SPEC_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 + */ + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_ME_POWER_STATE 0x16 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_ME_FIRMWARE_HEALTH_EVENT 0x17 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SERVER_PLATFORM_SERVICES_FIRMWARE_HEALTH IPMI_SENSOR_NUMBER_OEM_INTEL_ME_FIRMWARE_HEALTH_EVENT + +/* Defined in Spec 2.0, but not in 1.5 */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NODE_MANAGER_HEALTH_EVENT_SENSOR 0x19 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NODE_MANAGER_EXCEPTION_EVENT_SENSOR 0x18 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NODE_MANAGER_OPERATIONAL_CAPABILITIES_SENSOR 0x1A +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NODE_MANAGER_ALERT_THRESHOLD_EXCEEDED_SENSOR 0x1B +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM_SMBUS_STATUS 0x6E + +/* Defined in Spec 3.0 */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NODE_MANAGER_NM_SMART_CLST_SENSOR 0xB2 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NODE_MANAGER_CUPS_EVENT_SENSOR 0xC1 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_NUMBERS_OEM_INTEL_NODE_MANAGER_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-intel-spec.h new file mode 100644 index 00000000..05df19d6 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-intel-spec.h @@ -0,0 +1,304 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_NUMBERS_OEM_INTEL_SPEC_H +#define IPMI_SENSOR_NUMBERS_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Intel S5500WB/Penguin Computing Relion 700 + */ + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PCI_SENSOR 0x03 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PCIE_FATAL_SENSOR 0x04 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PCIE_CORRECTABLE_SENSOR 0x05 + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QPI_CORRECTABLE_SENSOR 0x06 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QPI_NON_FATAL_SENSOR 0x07 +/* QPI_FATAL_SENSOR_A and QPI_FATAL_SENSOR_B are identical, they are + * logical extensions to provide additional offset values + */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QPI_FATAL_SENSOR_A 0x17 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QPI_FATAL_SENSOR_B 0x18 + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_POST_ERROR 0x06 + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_RAS_STATUS_INFORMATION_FOR_MEMORY_MIRRORING_MIRRORING_MODE 0x01 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_MEMORY_ECC_ERROR 0x02 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_RAS_STATUS_INFORMATION_FOR_MEMORY_MIRRORING_SPARING_MODE 0x11 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_MEMORY_MIRRORING_RAS_CONFIGURATION_INFORMATION 0x12 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_MEMORY_SPARING_RAS_CONFIGURATION_INFORMATION 0x13 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_MEMORY_PARITY_ERROR 0x14 + +/* + * Quanta QSSC-S4R/Appro GB812X-CN + * (Quanta motherboard contains Intel manufacturer ID) + */ +/* achu: Few same as above, but to clearly differentiate motherboards, duplicate them */ + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_PCI_SENSOR 0x03 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_PCIE_FATAL_SENSOR 0x04 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_PCIE_CORRECTABLE_SENSOR 0x05 + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_QPI_CORRECTABLE_SENSOR 0x06 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_QPI_NON_FATAL_SENSOR 0x07 +/* QPI_FATAL_SENSOR_A and QPI_FATAL_SENSOR_B are identical, they are + * logical extensions to provide additional offset values + */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_QPI_FATAL_SENSOR_A 0x17 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_QPI_FATAL_SENSOR_B 0x18 + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_BIOS_POST_ERROR 0x06 + +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_RAS_STATE_INFORMATION_FOR_MEMORY_MIRRORING_MIRRORING_MODE 0x01 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_ECC_ERROR 0x02 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_MISMATCH_CONFIGURATION_ERROR 0x03 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_CRC_ERROR_PERSISTENT 0x05 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_PATROL_SCRUB_ERROR 0x0B +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_SMI_LINK_CRC_ERROR_UNCORRECTABLE 0x0C +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_RAS_STATE_INFORMATION_FOR_MEMORY_MIRRORING_SPARING_MODE 0x11 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_MIRRORING_RAS_CONFIGURATION_INFORMATION 0x12 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_SPARING_RAS_CONFIGURATION_INFORMATION 0x13 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_QUANTA_QSSC_S4R_MEMORY_BOARD_STATE 0x20 + +/* + * Intel S2600JF/Appro 512X + */ +/* achu: Few same as above, but to clearly differentiate motherboards, duplicate them */ +/* achu: note a typo, memory ras configuration status & memory ecc error both 2, not sure why in doc */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_MIRRORING_REDUNDANCY_STATE 0x01 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_MEMORY_RAS_CONFIGURATION_STATUS 0x02 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_MEMORY_ECC_ERROR 0x02 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_LEGACY_PCI_ERROR 0x03 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_PCIE_FATAL_ERROR 0x04 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_PCIE_CORRECTABLE_ERROR 0x05 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_BIOS_POST_ERROR 0x06 +/* not a typo, also 0x06 */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_QPI_CORRECTABLE_ERRORS 0x06 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_OPI_FATAL_ERROR 0x07 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_CHIPSET_PROPRIETARY 0x08 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_QPI_LINK_WIDTH_REDUCED 0x09 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_MEMORY_ERROR_EXTENSION 0x10 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_SPARING_REDUNDANCY_STATE 0x11 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_MEMORY_RAS_MODE_SELECT 0x12 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_MEMORY_PARITY_ERROR 0x13 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_PCIE_FATAL_ERROR_2 0x14 +/* not a typo, jumps to 0x17 */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_OPI_FATAL_ERROR_2 0x17 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_S2600JF_SYSTEM_EVENT 0x83 + +/* + * Intel Windmill + * (Quanta Winterfell) + * (Wiwynn Windmill) + */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_ME_FW_HEALTH_SENSOR 0x17 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_PROC_HOT_EXTENDED_SENSOR 0x3C +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_MEM_HOT_EXTENDED_SENSOR 0x3D +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_MACHINE_CHECK_ERROR_SENSOR 0x40 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_PCIE_ERROR_SENSOR 0x41 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_POST_ERROR_SENSOR 0x2B +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_OTHER_IIO_ERROR_SENSOR 0x43 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_CPU_SEL_STATUS 0x5F +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_MEMORY_ECC_ERROR 0x63 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_CHASSIS_POWER_STATUS 0x70 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_HOT_SWAP_CONTROLLER_0_STATUS_LOW 0x28 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_HOT_SWAP_CONTROLLER_0_STATUS_HIGH 0x42 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_HOT_SWAP_CONTROLLER_0_STATUS_MFR_SPECIFIC 0x5E +#define IPMI_SENSOR_NUMBER_OEM_INTEL_WINDMILL_HOT_SWAP_CONTROLLER_0_STATUS_INPUT 0x9F + +/* Intel S2600KP + * Intel S2600WT2 + * Intel S2600WTT + */ + +/* BMC owned sensors (GID = 0020h) */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_UNIT_STATUS 0x01 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_UNIT_REDUNDANCY 0x02 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_IPMI_WATCHDOG 0x03 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PHYSICAL_SECURITY 0x04 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FP_INTERRUPT 0x05 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SMI_TIMEOUT 0x06 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SYSTEM_EVENT_LOG 0x07 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SYSTEM_EVENT 0x08 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BUTTON_SENSOR 0x09 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BMC_WATCHDOG 0x0A +#define IPMI_SENSOR_NUMBER_OEM_INTEL_VOLTAGE_REGULATOR_WATCHDOG 0x0B +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FAN_REDUNDANCY 0x0C +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SSB_THERMAL_TRIP 0x0D +#define IPMI_SENSOR_NUMBER_OEM_INTEL_IO_MODULE_PRESENCE 0x0E +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SAS_MODULE_PRESENCE 0x0F +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BMC_FIRMWARE_HEALTH 0x10 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SYSTEM_AIRFLOW 0x11 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FIRMWARE_UPDATE_STATUS 0x12 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_IO_MODULE2_PRESENCE 0x13 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_TEMPERATURE5 0x14 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_TEMPERATURE6 0x15 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_IO_MODULE2_TEMPERATURE 0x16 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PCI_RISER3_TEMPERATURE 0x17 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PCI_RISER4_TEMPERATURE 0x18 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_TEMPERATURE1 0x20 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FRONT_PANEL_TEMPERATURE 0x21 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SSB_TEMPERATURE 0x22 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_TEMPERATURE2 0x23 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_TEMPERATURE3 0x24 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_TEMPERATURE4 0x25 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_IO_MODULE_TEMPERATURE 0x26 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PCI_RISER1_TEMPERATURE 0x27 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_IO_RISER_TEMPERATURE 0x28 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HOT_SWAP_BACK_PLANE1_TEMPERATURE 0x29 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HOT_SWAP_BACK_PLANE2_TEMPERATURE 0x2A +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HOT_SWAP_BACK_PLANE3_TEMPERATURE 0x2B +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PCI_RISER2_TEMPERATURE 0x2C +#define IPMI_SENSOR_NUMBER_OEM_INTEL_SAS_MODULE_TEMPERATURE 0x2D +#define IPMI_SENSOR_NUMBER_OEM_INTEL_EXIT_AIR_TEMPERATURE 0x2E +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NETWORK_INTERFACE_CONTROLLER_TEMPERATURE 0x2F +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FAN_TACHOMETER_SENSORS_MIN 0x30 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FAN_TACHOMETER_SENSORS_MAX 0x3F +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FAN_PRESENT_SENSORS_MIN 0x40 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FAN_PRESENT_SENSORS_MAX 0x4F +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY1_STATUS 0x50 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY2_STATUS 0x51 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY1_AC_POWER_INPUT 0x54 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY2_AC_POWER_INPUT 0x55 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY1_12V_PERCENT_OF_MAXIMUM_CURRENT_OUTPUT 0x58 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY2_12V_PERCENT_OF_MAXIMUM_CURRENT_OUTPUT 0x59 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY1_TEMPERATURE 0x5C +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY2_TEMPERATURE 0x5D +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE15 0x60 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE16 0x61 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE17 0x62 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE18 0x63 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE19 0x64 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE20 0x65 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE21 0x66 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE22 0x67 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE23 0x68 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HOT_SWAP_CONTROLLER1_STATUS 0x69 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HOT_SWAP_CONTROLLER2_STATUS 0x6A +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HOT_SWAP_CONTROLLER3_STATUS 0x6B +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR1_STATUS 0x70 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR2_STATUS 0x71 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR3_STATUS 0x72 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR4_STATUS 0x73 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR1_THERMAL_MARGIN 0x74 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR2_THERMAL_MARGIN 0x75 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR3_THERMAL_MARGIN 0x76 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR4_THERMAL_MARGIN 0x77 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR1_THERMAL_CONTROL_PERCENT 0x78 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR2_THERMAL_CONTROL_PERCENT 0x79 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR3_THERMAL_CONTROL_PERCENT 0x7A +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR4_THERMAL_CONTROL_PERCENT 0x7B +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR_ERR2_TIMEOUT 0x7C +#define IPMI_SENSOR_NUMBER_OEM_INTEL_IERR_RECOVERY_DUMP_INFO 0x7D +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTERNAL_ERROR 0x80 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR_POPULATION_FAULT 0x82 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR1_DTS_THERMAL_MARGIN 0x83 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR2_DTS_THERMAL_MARGIN 0x84 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR3_DTS_THERMAL_MARGIN 0x85 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR4_DTS_THERMAL_MARGIN 0x86 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_AUTO_CONFIG_STATUS 0x87 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_VRD_OVER_TEMPERATURE 0x90 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY1_FAN_TACHOMETER1 0xA0 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY1_FAN_TACHOMETER2 0xA1 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTEL_XEON_PHI_COPROCESSOR_STATUS1 0xA2 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTEL_XEON_PHI_COPROCESSOR_STATUS2 0xA3 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY2_FAN_TACHOMETER1 0xA4 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_POWER_SUPPLY2_FAN_TACHOMETER2 0xA5 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTEL_XEON_PHI_COPROCESSOR_STATUS3 0xA6 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTEL_XEON_PHI_COPROCESSOR_STATUS4 0xA7 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR1_DIMM_AGGREGATE_THERMAL_MARGIN1 0xB0 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR1_DIMM_AGGREGATE_THERMAL_MARGIN2 0xB1 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR2_DIMM_AGGREGATE_THERMAL_MARGIN1 0xB2 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR2_DIMM_AGGREGATE_THERMAL_MARGIN2 0xB3 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR3_DIMM_AGGREGATE_THERMAL_MARGIN1 0xB4 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR3_DIMM_AGGREGATE_THERMAL_MARGIN2 0xB5 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR4_DIMM_AGGREGATE_THERMAL_MARGIN1 0xB6 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR4_DIMM_AGGREGATE_THERMAL_MARGIN2 0xB7 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_NODE_AUTO_SHUTDOWN_SENSOR 0xB8 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FAN_TACHOMETER_SENSORS2_MIN 0xBA +#define IPMI_SENSOR_NUMBER_OEM_INTEL_FAN_TACHOMETER_SENSORS2_MAX 0xBF +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR1_THERMAL_TRIP 0xC0 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR2_THERMAL_TRIP 0xC1 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR3_THERMAL_TRIP 0xC2 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_PROCESSOR4_THERMAL_TRIP 0xC3 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTEL_XEON_PHI_COPROCESSOR_THERMAL_MARGIN1 0xC4 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTEL_XEON_PHI_COPROCESSOR_THERMAL_MARGIN2 0xC5 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTEL_XEON_PHI_COPROCESSOR_THERMAL_MARGIN3 0xC6 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_INTEL_XEON_PHI_COPROCESSOR_THERMAL_MARGIN4 0xC7 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_GLOBAL_AGGREGATE_TEMPERATURE_MARGIN1 0xC8 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_GLOBAL_AGGREGATE_TEMPERATURE_MARGIN2 0xC9 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_GLOBAL_AGGREGATE_TEMPERATURE_MARGIN3 0xCA +#define IPMI_SENSOR_NUMBER_OEM_INTEL_GLOBAL_AGGREGATE_TEMPERATURE_MARGIN4 0xCB +#define IPMI_SENSOR_NUMBER_OEM_INTEL_GLOBAL_AGGREGATE_TEMPERATURE_MARGIN5 0xCC +#define IPMI_SENSOR_NUMBER_OEM_INTEL_GLOBAL_AGGREGATE_TEMPERATURE_MARGIN6 0xCD +#define IPMI_SENSOR_NUMBER_OEM_INTEL_GLOBAL_AGGREGATE_TEMPERATURE_MARGIN7 0xCE +#define IPMI_SENSOR_NUMBER_OEM_INTEL_GLOBAL_AGGREGATE_TEMPERATURE_MARGIN8 0xCF +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_12V 0xD0 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_VOLTAGE_FAULT 0xD1 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_TEMPERATURE7 0xD5 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_TEMPERATURE8 0xD6 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BASEBOARD_CMOS_BATTERY 0xDE +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HOT_SWAP_BACKPLANE4_TEMPERATURE 0xE0 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_REAR_HARD_DISK_DRIVE0_STATUS 0xE2 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_REAR_HARD_DISK_DRIVE1_STATUS 0xE3 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE0_STATUS 0xF0 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE1_STATUS 0xF1 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE2_STATUS 0xF2 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE3_STATUS 0xF3 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE4_STATUS 0xF4 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE5_STATUS 0xF5 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE6_STATUS 0xF6 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE7_STATUS 0xF7 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE8_STATUS 0xF8 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE9_STATUS 0xF9 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE10_STATUS 0xFA +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE11_STATUS 0xFB +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE12_STATUS 0xFC +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE13_STATUS 0xFD +#define IPMI_SENSOR_NUMBER_OEM_INTEL_HARD_DISK_DRIVE14_STATUS 0xFE + +/* BIOS POST owned sensors (GID = 0001h) */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_POST_MEMORY_RAS_CONFIGURATION_STATUS 0x02 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_POST_POST_ERROR 0x06 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_POST_INTEL_QUICK_PATH_INTERFACE_LINK_WIDTH_REDUCED 0x09 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_POST_MEMORY_RAS_MODE_SELECT 0x12 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_POST_SYSTEM_EVENT 0x83 + +/* BIOS SMI Handler owned sensors (GID = 0033h) */ +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_MIRRORING_REDUNDANCY_STATE 0x01 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_MEMORY_ECC_ERROR 0x02 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_LEGACY_PCI_ERROR 0x03 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_PCI_EXPRESS_FATAL_ERROR 0x04 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_PCI_EXPRESS_CORRECTABLE_ERROR 0x05 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_INTEL_QUICK_PATH_INTERFACE_CORRECTABLE_ERROR 0x06 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_INTEL_QUICK_PATH_INTERFACE_FATAL_ERROR 0x07 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_SPARING_REDUNDANCY_STATE 0x11 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_MEMORY_PARITY_ERROR 0x13 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_PCI_EXPRESS_FATAL_ERROR2 0x14 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_BIOS_RECOVERY 0x15 +#define IPMI_SENSOR_NUMBER_OEM_INTEL_BIOS_SMI_INTEL_QUICKPATH_INTERFACE_FATAL_ERROR2 0x17 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_NUMBERS_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-inventec-spec.h new file mode 100644 index 00000000..9a42c0e3 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-inventec-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_NUMBERS_OEM_INVENTEC_SPEC_H +#define IPMI_SENSOR_NUMBERS_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ +/* achu: not official names, named based on use context */ +#define IPMI_SENSOR_NUMBER_OEM_INVENTEC_POST_START 0x81 +#define IPMI_SENSOR_NUMBER_OEM_INVENTEC_POST_OK 0x85 +#define IPMI_SENSOR_NUMBER_OEM_INVENTEC_POST_ERROR_CODE 0x06 +#define IPMI_SENSOR_NUMBER_OEM_INVENTEC_PORT80_CODE_EVENT 0x55 +#define IPMI_SENSOR_NUMBER_OEM_INVENTEC_MEMORY 0x60 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_NUMBERS_OEM_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-quanta-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-quanta-spec.h new file mode 100644 index 00000000..740ad1a4 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-quanta-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_NUMBERS_OEM_QUANTA_SPEC_H +#define IPMI_SENSOR_NUMBERS_OEM_QUANTA_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Quanta S99Q/Dell FS12-TY + */ +#define IPMI_SENSOR_NUMBER_OEM_QUANTA_MEMORY 0x60 +#define IPMI_SENSOR_NUMBER_OEM_QUANTA_PCI_SENSORID 0x81 +#define IPMI_SENSOR_NUMBER_OEM_QUANTA_QPI_SENSORID 0x82 +#define IPMI_SENSOR_NUMBER_OEM_QUANTA_INT_SENSORID 0x83 +#define IPMI_SENSOR_NUMBER_OEM_QUANTA_SOFTWARE_NMI 0xA5 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_NUMBERS_OEM_QUANTA_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-wistron-spec.h new file mode 100644 index 00000000..831f953b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-numbers-oem-wistron-spec.h @@ -0,0 +1,46 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_NUMBERS_OEM_WISTRON_SPEC_H +#define IPMI_SENSOR_NUMBERS_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_PROCESSOR 0x04 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_MEMORY 0x60 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_QPI_SENSOR_ID 0x71 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_INT_SENSOR_ID 0x72 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_PCI_SENSOR_ID 0x73 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_SB_SENSOR_ID 0x77 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_POST_START 0x81 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_POST_END 0x85 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_POST_ERROR 0x86 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_BIOS_RECOVERY_FAIL 0x89 +#define IPMI_SENSOR_NUMBER_OEM_WISTRON_ME_FAIL 0x8A + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_NUMBERS_OEM_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-dell-spec.h new file mode 100644 index 00000000..deeef74f --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-dell-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_DELL_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Dell Poweredge R610 + * Dell Poweredge R710 + * Dell Poweredge R720 + */ + +/* achu: names taken from code, are correct names? */ +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS 0xC0 +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING 0xC1 +#define IPMI_SENSOR_TYPE_OEM_DELL_NON_FATAL_ERROR 0xC2 +#define IPMI_SENSOR_TYPE_OEM_DELL_FATAL_IO_ERROR 0xC3 +#define IPMI_SENSOR_TYPE_OEM_DELL_UPGRADE 0xC4 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_DELL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-fujitsu-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-fujitsu-spec.h new file mode 100644 index 00000000..f945eb22 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-fujitsu-spec.h @@ -0,0 +1,51 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_FUJITSU_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_FUJITSU_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Fujitsu Siemens Computers + * Fujitsu Technology Solutions + * iRMC S1 / iRMC S2 + */ + +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_I2C_BUS 0xC0 +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_SYSTEM_POWER_CONSUMPTION 0xDD // Events only +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_MEMORY_STATUS 0xDE +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_MEMORY_CONFIG 0xDF +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_MEMORY 0xE1 // Events only +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_HW_ERROR 0xE3 // Events only +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_SYS_ERROR 0xE4 // Events only +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_FAN_STATUS 0xE6 +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_PSU_STATUS 0xE8 +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_PSU_REDUNDANCY 0xE9 +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_COMMUNICATION 0xEA // Reserved +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_FLASH 0xEC // Events only +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_EVENT 0xEE // Reserved +#define IPMI_SENSOR_TYPE_OEM_FUJITSU_CONFIG_BACKUP 0xEF + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_FUJITSU_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-hp-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-hp-spec.h new file mode 100644 index 00000000..0cbaa369 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-hp-spec.h @@ -0,0 +1,36 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_HP_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_HP_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * HP Proliant DL160 G8 + */ + +#define IPMI_SENSOR_TYPE_OEM_HP_LED 0xC0 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_HP_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-intel-node-manager-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-intel-node-manager-spec.h new file mode 100644 index 00000000..05c55750 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-intel-node-manager-spec.h @@ -0,0 +1,50 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_INTEL_NODE_MANAGER_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_INTEL_NODE_MANAGER_SPEC_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 + */ + +#define IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER 0xDC + +#define IPMI_SENSOR_TYPE_OEM_INTEL_NODE_MANAGER_THERMAL_SENSOR_ON_DIMM 0x28 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_INTEL_NODE_MANAGER_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-intel-spec.h new file mode 100644 index 00000000..fe56c84c --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-intel-spec.h @@ -0,0 +1,84 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_INTEL_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************* + * Dell * + *******************************************/ + +/* + * Dell Poweredge R610 + * Dell Poweredge R710 + * Dell Poweredge R720 + */ + +/* achu: names taken from code, are correct names? */ +#define IPMI_SENSOR_TYPE_OEM_DELL_SYSTEM_PERFORMANCE_DEGRADATION_STATUS 0xC0 +#define IPMI_SENSOR_TYPE_OEM_DELL_LINK_TUNING 0xC1 +#define IPMI_SENSOR_TYPE_OEM_DELL_NON_FATAL_ERROR 0xC2 +#define IPMI_SENSOR_TYPE_OEM_DELL_FATAL_IO_ERROR 0xC3 +#define IPMI_SENSOR_TYPE_OEM_DELL_UPGRADE 0xC4 + +/* + * Intel S5500WB/Penguin Computing Relion 700 + * Intel SR1625 + * Quanta QSSC-S4R/Appro GB812X-CN + * (Quanta motherboard contains Intel manufacturer ID) + */ + +#define IPMI_SENSOR_TYPE_OEM_INTEL_SMI_TIMEOUT 0xF3 + +/* + * Quanta QSSC-S4R/Appro GB812X-CN + * (Quanta motherboard contains Intel manufacturer ID) + */ +#define IPMI_SENSOR_TYPE_OEM_INTEL_POWER_THROTTLED 0xF3 + +/* + * Intel S5000PAL + */ +#define IPMI_SENSOR_TYPE_OEM_INTEL_NMI_STATE 0xC0 + +/* + * Intel Windmill + * (Quanta Winterfell) + * (Wiwynn Windmill) + */ +#define IPMI_SENSOR_TYPE_OEM_INTEL_WINDMILL_ME_FW_HEALTH_SENSOR 0xDC + +/* Used by many sensors */ +#define IPMI_SENSOR_TYPE_OEM_INTEL_WINDMILL_GENERIC 0xC0 + +/* + * Intel S2600KP + * Intel S2600WT2 + * Intel S2600WTT + */ +#define IPMI_SENSOR_TYPE_OEM_INTEL_E52600V3_IERR_RECOVERY_DUMP_INFO 0xD1 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-inventec-spec.h new file mode 100644 index 00000000..9b8e8cff --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-inventec-spec.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_INVENTEC_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ +/* achu: not official names, named based on use context */ +#define IPMI_SENSOR_TYPE_OEM_INVENTEC_BIOS 0xC1 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-supermicro-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-supermicro-spec.h new file mode 100644 index 00000000..db84696a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-supermicro-spec.h @@ -0,0 +1,57 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_SUPERMICRO_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_SUPERMICRO_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Supermicro X7DBR-3 (X7DBR_3) + * Supermicro X7DB8 + * Supermicro X8DTN + * Supermicro X7SBI-LN4 (X7SBI_LN4) + * Supermicro X8DTH + * Supermicro X8DTG + * Supermicro X8DTU + * Supermicro X8DT3-LN4F (X8DT3_LN4F) + * Supermicro X8DTU-6+ (X8DTU_6PLUS) + * Supermicro X8DTL + * Supermicro X8DTL-3F (X8DTL_3F) + * Supermicro X8SIL-F (X8SIL_F) + * Supermicro X9SCL + * Supermicro X9SCM + * Supermicro X8DTN+-F (X8DTNPLUS_F) + * Supermicro X8SIE + * Supermicro X9SCA-F-O (X9SCA-F-O) + * Supermicro H8DGU-F (H8DGU_F) + * Supermicro X9DRi-F (X9DRI_F) + * Supermicro X9DRI-LN4F+ (X9DRI_LN4F_PLUS) + * Supermicro X9SPU-F-O (X9SPU-F-O) + * Supermicro X9SCM-iiF (X9SCM_IIF) + */ +/* achu: not official names, named based on use context */ +#define IPMI_SENSOR_TYPE_OEM_SUPERMICRO_CPU_TEMP 0xC0 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_SUPERMICRO_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-wistron-spec.h new file mode 100644 index 00000000..76b2404d --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sensor-types-oem-wistron-spec.h @@ -0,0 +1,36 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_TYPES_OEM_WISTRON_SPEC_H +#define IPMI_SENSOR_TYPES_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +#define IPMI_SENSOR_TYPE_OEM_WISTRON_IOH_CORE_ERROR 0xC0 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_TYPES_OEM_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-intel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-intel-spec.h new file mode 100644 index 00000000..5fb21ca1 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-intel-spec.h @@ -0,0 +1,57 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SLAVE_ADDRESS_OEM_INTEL_SPEC_H +#define IPMI_SLAVE_ADDRESS_OEM_INTEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Intel S5500WB/Penguin Computing Relion 700 + */ +#define IPMI_GENERATOR_ID_OEM_INTEL_BIOS_SMI_HANDLER 0x33 +#define IPMI_GENERATOR_ID_OEM_INTEL_ME_FIRMWARE 0x2C +#define IPMI_GENERATOR_ID_OEM_INTEL_HSC_FIRMWARE 0xC0 + +/* + * Quanta QSSC-S4R/Appro GB812X-CN + * (Quanta motherboard contains Intel manufacturer ID) + */ +#define IPMI_GENERATOR_ID_OEM_INTEL_QUANTA_QSSC_S4R_BIOS_POST 0x33 + +/* + * Intel S2600JF/Appro 512X + */ +#define IPMI_GENERATOR_ID_OEM_INTEL_S2600JF_BIOS_POST 0x01 +#define IPMI_GENERATOR_ID_OEM_INTEL_S2600JF_BIOS_SMI_HANDLER 0x33 + +/* + * Intel S2600KP + * Intel S2600WT2 + * Intel S2600WTT + */ +#define IPMI_GENERATOR_ID_OEM_INTEL_E52600V3_BIOS_POST 0x01 +#define IPMI_GENERATOR_ID_OEM_INTEL_E52600V3_BIOS_SMI_HANDLER 0x33 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SLAVE_ADDRESS_OEM_INTEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-inventec-spec.h new file mode 100644 index 00000000..5001c50a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-inventec-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SLAVE_ADDRESS_OEM_INVENTEC_SPEC_H +#define IPMI_SLAVE_ADDRESS_OEM_INVENTEC_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ +/* achu: not official names, named based on use context */ +#define IPMI_GENERATOR_ID_OEM_INVENTEC_BIOS 0x01 +#define IPMI_GENERATOR_ID_OEM_INVENTEC_SMI 0x21 +#define IPMI_GENERATOR_ID_OEM_INVENTEC_POST_ERROR_CODE 0x31 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SLAVE_ADDRESS_OEM_INVENTEC_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-linux-kernel-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-linux-kernel-spec.h new file mode 100644 index 00000000..6fc2c715 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-linux-kernel-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SLAVE_ADDRESS_OEM_LINUX_KERNEL_SPEC_H +#define IPMI_SLAVE_ADDRESS_OEM_LINUX_KERNEL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define IPMI_SLAVE_ADDRESS_OEM_LINUX_KERNEL 0x21 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SLAVE_ADDRESS_OEM_LINUX_KERNEL_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-quanta-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-quanta-spec.h new file mode 100644 index 00000000..18fcab9a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-quanta-spec.h @@ -0,0 +1,36 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SLAVE_ADDRESS_OEM_QUANTA_SPEC_H +#define IPMI_SLAVE_ADDRESS_OEM_QUANTA_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Quanta S99Q/Dell FS12-TY + */ +/* achu: not official names, named based on use context */ +#define IPMI_GENERATOR_ID_OEM_QUANTA_ERROR 0x01 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SLAVE_ADDRESS_OEM_QUANTA_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-wistron-spec.h new file mode 100644 index 00000000..651ab233 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-slave-address-oem-wistron-spec.h @@ -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 . + * + */ + +#ifndef IPMI_SLAVE_ADDRESS_OEM_WISTRON_SPEC_H +#define IPMI_SLAVE_ADDRESS_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +/* achu: not official names, named based on use context */ +#define IPMI_GENERATOR_ID_OEM_WISTRON_BIOS 0x01 +#define IPMI_GENERATOR_ID_OEM_WISTRON_SMI 0x21 +#define IPMI_GENERATOR_ID_OEM_WISTRON_ME 0x2C + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SLAVE_ADDRESS_OEM_WISTRON_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sol-configuration-parameters-oem-inventec-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sol-configuration-parameters-oem-inventec-spec.h new file mode 100644 index 00000000..ebac6934 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sol-configuration-parameters-oem-inventec-spec.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SOL_CONFIGURATION_PARAMETERS_INVENTEC_OEM_SPEC_H +#define IPMI_SOL_CONFIGURATION_PARAMETERS_INVENTEC_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Inventec 5441/Dell Xanadu II + * Inventec 5442/Dell Xanadu III + */ + +#define IPMI_SOL_CONFIGURATION_PARAMETER_OEM_INVENTEC_SOL_TIMEOUT 192 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SOL_CONFIGURATION_PARAMETERS_INVENTEC_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sol-configuration-parameters-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sol-configuration-parameters-oem-wistron-spec.h new file mode 100644 index 00000000..e78b8fac --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-sol-configuration-parameters-oem-wistron-spec.h @@ -0,0 +1,36 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SOL_CONFIGURATION_PARAMETERS_WISTRON_OEM_SPEC_H +#define IPMI_SOL_CONFIGURATION_PARAMETERS_WISTRON_OEM_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +#define IPMI_SOL_CONFIGURATION_PARAMETER_OEM_WISTRON_SOL_TIMEOUT 192 + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SOL_CONFIGURATION_PARAMETERS_WISTRON_OEM_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-system-info-parameters-oem-dell-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-system-info-parameters-oem-dell-spec.h new file mode 100644 index 00000000..21b5be80 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-system-info-parameters-oem-dell-spec.h @@ -0,0 +1,230 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SYSTEM_INFO_PARAMETERS_OEM_DELL_SPEC_H +#define IPMI_SYSTEM_INFO_PARAMETERS_OEM_DELL_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Dell Poweredge 2900 + * Dell Poweredge 2950 + * Dell Poweredge R610 + * Dell Poweredge R710 + * Dell Poweredge R720 + * Dell Poweredge M600 + * Dell Poweredge M610 + * Dell Poweredge M610X + * Dell Poweredge M910 + * + * Support of below varies by system. + */ + +/* achu note: called "front panel string" in newer 12G docs */ +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_LCD_STRING 0xC1 +/* achu note: called "front panel configuration" in newer 12G docs */ +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_LCD_CONFIGURATION 0xC2 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_SYSTEM_GUID 0xC3 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_SYSTEM_ASSET_TAG 0xC4 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_SYSTEM_SERVICE_TAG 0xC5 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CHASSIS_SERVICE_TAG 0xC6 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CHASSIS_RELATED_SERVICE_TAG 0xC7 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_BOARD_REVISION 0xC8 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_SYSTEM_ID 0xC9 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_BIOS_FEATURE 0xCA +/* Only for 10G systems */ +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_EMBEDDED_NICS_MAC_ADDRESSES 0xCB +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_EMBEDDED_NICS_CAPABILITY 0xCE +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_PLATFORM_MODEL_NAME 0xD1 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_LOCAL_CONSOLE_LOCKOUT 0xD6 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_POWER_STAGGERING_AC_RECOVERY 0xD8 +/* achu: this one is taken from code, is correct name? */ +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_11G_MAC_ADDRESSES 0xDA +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_12G_MAC_ADDRESSES IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_11G_MAC_ADDRESSES +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_BLADE_SLOT_INFO 0xDC +/* legacy from prior reverse engineering */ +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_SLOT_NUMBER IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_BLADE_SLOT_INFO +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IDRAC_INFO 0xDD +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IDRAC_IPV4_URL 0xDE +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_INFO 0xDF +/* CMC = Chassis Management Controller */ +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_IPV4_URL 0xE0 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IDRAC_GUI_WEBSERVER_CONTROL 0xE1 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_PLATFORM_SPECIFIC_DEVICE_INFORMATION 0xE3 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IDRAC_NIC_CONTROL 0xE5 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_LCD_STATUS 0xE7 +/* achu: this one is taken from code, is correct name? */ +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_POWER_CAPACITY 0xEA +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_AVERAGE_POWER_CONSUMPTION_STATISTICS 0xEB +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_MAX_POWER_CONSUMPTION_STATISTICS 0xEC +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_MIN_POWER_CONSUMPTION_STATISTICS 0xED +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_EMBEDDED_VIDEO_STATUS 0xEE +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_ISCSI_NICS_MAC_ADDRESSES 0xEF +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IPV6_SNMP_TRAP_DESTINATION_ADDRESS 0xF0 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_INTERNAL_STORAGE_SLOT_INFO 0xF1 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_IPV6_INFO 0xF2 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_IPV6_URL 0xF3 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_SYSTEM_REVISION 0xF4 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_REDUNDANCY_POLICY 0xFE + +/* Dell System Info Parameter macros */ + +/* 256 b/c length is 8 bit field */ +#define IPMI_OEM_DELL_SYSTEM_INFO_MAX_STRING_BYTES 256 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_PLATFORM_MODEL_NAME, + * IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_SLOT_NUMBER, + * IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IDRAC_IPV4_URL, + * IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IDRAC_INFO, + * IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_IPV4_URL, + * IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_IPV6_INFO, + * IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_IPV6_URL + */ +#define IPMI_OEM_DELL_SYSTEM_INFO_STRING_ENCODING_BITMASK 0xF +#define IPMI_OEM_DELL_SYSTEM_INFO_STRING_ENCODING_SHIFT 0 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_EMBEDDED_NICS_MAC_ADDRESSES */ +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_LENGTH 6 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_11G_MAC_ADDRESSES */ +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_TYPE_BITMASK 0x30 +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_TYPE_SHIFT 4 + +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_NIC_STATUS_BITMASK 0xC0 +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_NIC_STATUS_SHIFT 6 + +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_NIC_NUMBER_BITMASK 0x1F +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_NIC_NUMBER_SHIFT 0 + +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_TYPE_ETHERNET 0 +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_TYPE_ISCSI 1 +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_TYPE_RESERVED 3 + +/* achu: Dell calls an ethernet port that has been PCI disabled in the + * BIOS, but has an active service processor "playing dead" + */ +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_STATUS_ENABLED 0 +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_STATUS_DISABLED 1 +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_STATUS_PLAYING_DEAD 2 +#define IPMI_OEM_DELL_SYSTEM_INFO_MAC_ADDRESS_STATUS_RESERVED 3 + +#define IPMI_OEM_DELL_SYSTEM_INFO_11G_OR_12G_MAC_ADDRESS_LENGTH 8 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IDRAC_INFO */ +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_MIN_LEN 41 + +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IP_ADDRESS_FORMAT_IPV4 0x00 +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IP_ADDRESS_FORMAT_IPV6 0x01 + +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IP_ADDRESS_CONFIG_DHCP 0x00 +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IP_ADDRESS_CONFIG_STATIC 0x01 + +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IDRAC_FIRMWARE_VERSION_STRING_LENGTH 20 + +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IDRAC_TYPE_10G 0x08 +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IDRAC_TYPE_CMC 0x09 +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IDRAC_TYPE_11G_MONOLITHIC 0x0A +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IDRAC_TYPE_11G_MODULAR 0x0B +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IDRAC_TYPE_MASER_LITE_BMC 0x0D +/* From ipmitool, http://ipmitool.sourceforge.net/ */ +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IDRAC_TYPE_12G_MONOLITHIC 0x10 +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_INFO_IDRAC_TYPE_12G_MODULAR 0x11 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IDRAC_GUI_WEBSERVER_CONTROL */ +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_WEB_GUI_SERVER_CONTROL_DISABLED 0x00 +#define IPMI_OEM_DELL_SYSTEM_INFO_IDRAC_WEB_GUI_SERVER_CONTROL_ENABLED 0x01 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_POWER_CAPACITY */ +#define IPMI_OEM_DELL_SYSTEM_INFO_POWER_CAPACITY_UNITS_WATTS 0x00 +#define IPMI_OEM_DELL_SYSTEM_INFO_POWER_CAPACITY_UNITS_BTUPHR 0x01 +#define IPMI_OEM_DELL_SYSTEM_INFO_POWER_CAPACITY_UNITS_PERCENT 0x03 + +#define IPMI_OEM_DELL_SYSTEM_INFO_GET_POWER_CAPACITY_SYSTEM_THROTTLING_NORMAL_SYSTEM_OPERATION 0 +#define IPMI_OEM_DELL_SYSTEM_INFO_GET_POWER_CAPACITY_SYSTEM_THROTTLING_SYSTEM_NEEDS_TO_BE_THROTTLED 1 +#define IPMI_OEM_DELL_SYSTEM_INFO_GET_POWER_CAPACITY_SYSTEM_THROTTLING_SYSTEM_IS_OVERCONFIGURED 2 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_EMBEDDED_VIDEO_STATUS */ +#define IPMI_OEM_DELL_SYSTEM_INFO_EMBEDDED_VIDEO_STATUS_DISABLED 0x00 +#define IPMI_OEM_DELL_SYSTEM_INFO_EMBEDDED_VIDEO_STATUS_ENABLED 0x01 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_IPV6_SNMP_TRAP_DESTINATION_ADDRESS */ +#define IPMI_OEM_DELL_SYSTEM_INFO_IPV6_SNMP_TRAP_DESTINATION_ADDRESS_MIN_LEN 6 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_INFO */ +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_MIN_LEN 43 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_IP_ADDRESS_FORMAT_IPV4 0x00 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_IP_ADDRESS_FORMAT_IPV6 0x01 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_IP_ADDRESS_SOURCE_DHCP 0x00 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_IP_ADDRESS_SOURCE_STATIC 0x01 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_IP_ADDRESS_STRING_LENGTH 16 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_CMC_FIRMWARE_VERSION_STRING_LENGTH 22 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_GUI_STATUS_DISABLED 0x00 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_GUI_STATUS_ENABLED 0x01 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_NIC_STATE_BITMASK 0x01 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_NIC_STATE_SHIFT 0 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_NIC_STATE_DISABLED 0x0 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_NIC_STATE_ENABLED 0x1 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_LINK_CONNECT_BITMASK 0x02 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_LINK_CONNECT_SHIFT 1 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_LINK_CONNECT_DISCONNECTED 0x0 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_LINK_CONNECT_CONNECTED 0x1 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_CMC_FAILOVER_RACRESET_BITMASK 0x04 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_CMC_FAILOVER_RACRESET_SHIFT 2 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_CMC_FAILOVER_RACRESET_NOT_FROM_FAILOVER 0x0 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_CMC_FAILOVER_RACRESET_FROM_FAILOVER 0x1 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_HARDWARE_VENDOR_MODE_BITMASK 0x08 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_HARDWARE_VENDOR_MODE_SHIFT 3 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_HARDWARE_VENDOR_MODE_NO_HARDWARE_VENDOR_MODE 0x0 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_INFO_NIC_STATUS_HARDWARE_VENDOR_MODE_HAS_HARDWARE_VENDOR_MODE 0x1 + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_DELL_CMC_IPV6_INFO */ +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_MIN_LEN 57 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_IPV6_ADDRESS_STRING_LENGTH 39 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_IPV6_STATUS_BITMASK 0x1 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_IPV6_STATUS_SHIFT 0 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_IPV6_STATUS_DISABLED 0 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_IPV6_STATUS_ENABLED 1 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_AUTOCONFIGURATION_BITMASK 0x1 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_AUTOCONFIGURATION_SHIFT 0 + +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_AUTOCONFIGURATION_DISABLED 0 +#define IPMI_OEM_DELL_SYSTEM_INFO_CMC_IPV6_INFO_AUTOCONFIGURATION_ENABLED 1 + +#ifdef __cplusplus +} +#endif +#endif /* IPMI_SYSTEM_INFO_PARAMETERS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-system-info-parameters-oem-wistron-spec.h b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-system-info-parameters-oem-wistron-spec.h new file mode 100644 index 00000000..50e749e8 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/spec/oem/ipmi-system-info-parameters-oem-wistron-spec.h @@ -0,0 +1,52 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SYSTEM_INFO_PARAMETERS_OEM_WISTRON_SPEC_H +#define IPMI_SYSTEM_INFO_PARAMETERS_OEM_WISTRON_SPEC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Wistron / Dell Poweredge C6220 + */ + +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_WISTRON_ASSET_TAG 196 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_WISTRON_SERVICE_TAG 197 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_WISTRON_PRODUCT_NAME 209 + +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_WISTRON_ASSET_TAG_MAX_LEN 20 +#define IPMI_SYSTEM_INFO_PARAMETER_OEM_WISTRON_SERVICE_TAG_MAX_LEN 7 + +/* Wistron System Info Parameter macros */ + +/* w/ IPMI_SYSTEM_INFO_PARAMETER_OEM_WISTRON_PRODUCT_NAME + */ +#define IPMI_OEM_WISTRON_SYSTEM_INFO_STRING_ENCODING_BITMASK 0xF +#define IPMI_OEM_WISTRON_SYSTEM_INFO_STRING_ENCODING_SHIFT 0 + +#define IPMI_OEM_WISTRON_SYSTEM_INFO_STRING_ENCODING_PRINTABLE_ASCII 0x0 + +/* 256 b/c length is 8 bit field */ +#define IPMI_OEM_WISTRON_SYSTEM_INFO_MAX_STRING_BYTES 256 + +#ifdef __cplusplus +} +#endif +#endif /* IPMI_SYSTEM_INFO_PARAMETERS_SPEC_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-bmc-watchdog-timer-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-bmc-watchdog-timer-cmds-templates.h new file mode 100644 index 00000000..f6c73381 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-bmc-watchdog-timer-cmds-templates.h @@ -0,0 +1,147 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_BMC_WATCHDOG_TIMER_CMDS_TEMPLATES_H +#define IPMI_BMC_WATCHDOG_TIMER_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Reset Watchdog Timer Request +---------------------------- + +FIID Template: tmpl_cmd_reset_watchdog_timer_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Reset Watchdog Timer Response +----------------------------- + +FIID Template: tmpl_cmd_reset_watchdog_timer_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set Watchdog Timer Request +-------------------------- + +FIID Template: tmpl_cmd_set_watchdog_timer_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 3, "timer_use", REQUIRED, LENGTH-FIXED } + { 3, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "stop_timer", REQUIRED, LENGTH-FIXED } + { 1, "log", REQUIRED, LENGTH-FIXED } + { 3, "timeout_action", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 3, "pre_timeout_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "pre_timeout_interval", REQUIRED, LENGTH-FIXED } + { 1, "reserved4", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.bios_frb2", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.bios_post", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.os_load", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.sms_os", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.oem", REQUIRED, LENGTH-FIXED } + { 1, "reserved5", REQUIRED, LENGTH-FIXED } + { 1, "reserved6", REQUIRED, LENGTH-FIXED } + { 16, "initial_countdown_value", REQUIRED, LENGTH-FIXED } + +Set Watchdog Timer Response +--------------------------- + +FIID Template: tmpl_cmd_set_watchdog_timer_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Watchdog Timer Request +-------------------------- + +FIID Template: tmpl_cmd_get_watchdog_timer_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Watchdog Timer Response +--------------------------- + +FIID Template: tmpl_cmd_get_watchdog_timer_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 3, "timer_use", REQUIRED, LENGTH-FIXED } + { 3, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "timer_state", REQUIRED, LENGTH-FIXED } + { 1, "log", REQUIRED, LENGTH-FIXED } + { 3, "timeout_action", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 3, "pre_timeout_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "pre_timeout_interval", REQUIRED, LENGTH-FIXED } + { 1, "reserved4", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.bios_frb2", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.bios_post", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.os_load", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.sms_os", REQUIRED, LENGTH-FIXED } + { 1, "timer_use_expiration_flag.oem", REQUIRED, LENGTH-FIXED } + { 1, "reserved5", REQUIRED, LENGTH-FIXED } + { 1, "reserved6", REQUIRED, LENGTH-FIXED } + { 16, "initial_countdown_value", REQUIRED, LENGTH-FIXED } + { 16, "present_countdown_value", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_BMC_WATCHDOG_TIMER_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-chassis-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-chassis-cmds-templates.h new file mode 100644 index 00000000..9dd57ffd --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-chassis-cmds-templates.h @@ -0,0 +1,574 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CHASSIS_CMDS_TEMPLATES_H +#define IPMI_CHASSIS_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Get Chassis Capabilities Request +-------------------------------- + +FIID Template: tmpl_cmd_get_chassis_capabilities_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Chassis Capabilities Response +--------------------------------- + +FIID Template: tmpl_cmd_get_chassis_capabilities_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "capabilities_flags.provides_intrusion_sensor", REQUIRED, LENGTH-FIXED } + { 1, "capabilities_flags.provides_front_panel_lockout", REQUIRED, LENGTH-FIXED } + { 1, "capabilities_flags.provides_diagnostic_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "capabilities_flags.provides_power_interlock", REQUIRED, LENGTH-FIXED } + { 4, "capabilities_flags.reserved", REQUIRED, LENGTH-FIXED } + { 8, "fru_info_device_address", REQUIRED, LENGTH-FIXED } + { 8, "sdr_device_address", REQUIRED, LENGTH-FIXED } + { 8, "sel_device_address", REQUIRED, LENGTH-FIXED } + { 8, "system_management_device_address", REQUIRED, LENGTH-FIXED } + { 8, "bridge_device_address", OPTIONAL, LENGTH-FIXED } + +Get Chassis Status Request +-------------------------- + +FIID Template: tmpl_cmd_get_chassis_status_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Chassis Status Response +--------------------------- + +FIID Template: tmpl_cmd_get_chassis_status_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "current_power_state.power_is_on", REQUIRED, LENGTH-FIXED } + { 1, "current_power_state.power_overload", REQUIRED, LENGTH-FIXED } + { 1, "current_power_state.interlock", REQUIRED, LENGTH-FIXED } + { 1, "current_power_state.power_fault", REQUIRED, LENGTH-FIXED } + { 1, "current_power_state.power_control_fault", REQUIRED, LENGTH-FIXED } + { 2, "current_power_state.power_restore_policy", REQUIRED, LENGTH-FIXED } + { 1, "current_power_state.reserved", REQUIRED, LENGTH-FIXED } + { 1, "last_power_event.ac_failed", REQUIRED, LENGTH-FIXED } + { 1, "last_power_event.power_down_caused_by_power_overload", REQUIRED, LENGTH-FIXED } + { 1, "last_power_event.power_down_caused_by_power_interlock_being_activated", REQUIRED, LENGTH-FIXED } + { 1, "last_power_event.power_down_caused_by_power_fault", REQUIRED, LENGTH-FIXED } + { 1, "last_power_event.power_on_entered_via_ipmi", REQUIRED, LENGTH-FIXED } + { 3, "last_power_event.reserved", REQUIRED, LENGTH-FIXED } + { 1, "misc_chassis_state.chassis_intrusion_active", REQUIRED, LENGTH-FIXED } + { 1, "misc_chassis_state.front_panel_lockout_active", REQUIRED, LENGTH-FIXED } + { 1, "misc_chassis_state.drive_fault", REQUIRED, LENGTH-FIXED } + { 1, "misc_chassis_state.cooling_fan_fault_detected", REQUIRED, LENGTH-FIXED } + { 2, "misc_chassis_state.chassis_identify_state", REQUIRED, LENGTH-FIXED } + { 1, "misc_chassis_state.chassis_identify_command_and_state_info_supported", REQUIRED, LENGTH-FIXED } + { 1, "misc_chassis_state.reserved", REQUIRED, LENGTH-FIXED } + { 1, "front_panel.power_off_button_disabled", OPTIONAL, LENGTH-FIXED } + { 1, "front_panel.reset_button_disabled", OPTIONAL, LENGTH-FIXED } + { 1, "front_panel.diagnostic_interrupt_button_disabled", OPTIONAL, LENGTH-FIXED } + { 1, "front_panel.standby_button_disabled", OPTIONAL, LENGTH-FIXED } + { 1, "front_panel.power_off_button_disable_allowed", OPTIONAL, LENGTH-FIXED } + { 1, "front_panel.reset_button_disable_allowed", OPTIONAL, LENGTH-FIXED } + { 1, "front_panel.diagnostic_interrupt_button_disable_allowed", OPTIONAL, LENGTH-FIXED } + { 1, "front_panel.standby_button_disable_allowed", OPTIONAL, LENGTH-FIXED } + +Chassis Control Request +----------------------- + +FIID Template: tmpl_cmd_chassis_control_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "chassis_control", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Chassis Control Response +------------------------ + +FIID Template: tmpl_cmd_chassis_control_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Chassis Identify Request +------------------------ + +FIID Template: tmpl_cmd_chassis_identify_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "identify_interval", OPTIONAL, LENGTH-FIXED } + { 1, "force_identify", OPTIONAL, LENGTH-FIXED } + { 7, "reserved", OPTIONAL, LENGTH-FIXED } + +Chassis Identify Response +------------------------- + +FIID Template: tmpl_cmd_chassis_identify_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set Front Panel Button Enables Request +-------------------------------------- + +FIID Template: tmpl_cmd_set_front_panel_enables_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 1, "disable_power_off_button_for_power_off_only", REQUIRED, LENGTH-FIXED } + { 1, "disable_reset_button", REQUIRED, LENGTH-FIXED } + { 1, "disable_diagnostic_interrupt_button", REQUIRED, LENGTH-FIXED } + { 1, "disable_standby_button_for_entering_standby", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Set Front Panel Button Enables Response +--------------------------------------- + +FIID Template: tmpl_cmd_set_front_panel_enables_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set Power Restore Policy Request +-------------------------------- + +FIID Template: tmpl_cmd_set_power_restore_policy_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 3, "power_restore_policy", REQUIRED, LENGTH-FIXED } + { 5, "reserved", REQUIRED, LENGTH-FIXED } + +Set Power Restore Policy Response +--------------------------------- + +FIID Template: tmpl_cmd_set_power_restore_policy_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "powered_off_after_ac_mains_returns", REQUIRED, LENGTH-FIXED } + { 1, "restoring_power_to_state_when_ac_mains_was_lost", REQUIRED, LENGTH-FIXED } + { 1, "always_powering_up_after_ac_mains_returns", REQUIRED, LENGTH-FIXED } + { 5, "reserved", REQUIRED, LENGTH-FIXED } + +Set Power Cycle Interval Request +-------------------------------- + +FIID Template: tmpl_cmd_set_power_cycle_interval_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "interval", REQUIRED, LENGTH-FIXED } + +Set Power Cycle Interval Response +--------------------------------- + +FIID Template: tmpl_cmd_set_power_cycle_interval_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get System Restart Cause Request +-------------------------------- + +FIID Template: tmpl_cmd_get_system_restart_cause_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get System Restart Cause Response +--------------------------------- + +FIID Template: tmpl_cmd_get_system_restart_cause_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "restart_cause", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "channel", REQUIRED, LENGTH-FIXED } + +Set System Boot Options Request +------------------------------- + +FIID Template: tmpl_cmd_set_system_boot_options_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 296, "configuration_parameter_data", OPTIONAL, LENGTH-VARIABLE } + +Set System Boot Options Response +-------------------------------- + +FIID Template: tmpl_cmd_set_system_boot_options_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set System Boot Options (Set In Progress) Request +------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_boot_options_set_in_progress_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Set System Boot Options (Service Partition Selector) Request +------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_system_boot_options_service_partition_selector_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 8, "service_partition_selector", REQUIRED, LENGTH-FIXED } + +Set System Boot Options (Service Partition Scan) Request +-------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_boot_options_service_partition_scan_rq + + {8, "cmd", REQUIRED, LENGTH-FIXED } + {7, "parameter_selector", REQUIRED, LENGTH-FIXED } + {1, "parameter_valid", REQUIRED, LENGTH-FIXED } + {1, "service_partition_discovered", REQUIRED, LENGTH-FIXED } + {1, "service_partition_scan", REQUIRED, LENGTH-FIXED } + {6, "reserved", REQUIRED, LENGTH-FIXED } + +Set System Boot Options (BMC Boot Flag Valid Bit Clearing) Request +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_system_boot_options_BMC_boot_flag_valid_bit_clearing_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 1, "dont_clear_valid_bit_on_power_up_via_power_pushbutton_or_wake_event", REQUIRED, LENGTH-FIXED } + { 1, "dont_clear_valid_bit_on_pushbutton_reset_soft_reset", REQUIRED, LENGTH-FIXED } + { 1, "dont_clear_valid_bit_on_reset_power_cycle_caused_by_watchdog_timeout", REQUIRED, LENGTH-FIXED } + { 1, "dont_automatically_clear_boot_flag_valid_bit_if_chassis_control_command_not_received_within_60_second_timeout", REQUIRED, LENGTH-FIXED } + { 1, "dont_clear_valid_bit_on_reset_power_cycle_caused_by_PEF", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + +Set System Boot Options (Boot Info Acknowledge) Request +------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_boot_options_boot_info_acknowledge_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_0", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_1", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_2", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_3", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_4", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_5", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_6", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_7", REQUIRED, LENGTH-FIXED } + { 1, "bios_or_post_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 1, "os_loader_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 1, "os_or_service_partition_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 1, "sms_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 1, "oem_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + +Set System Boot Options (Boot Flags) Request +-------------------------------------------- + +FIID Template: tmpl_cmd_set_system_boot_options_boot_flags_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "bios_boot_type", REQUIRED, LENGTH-FIXED } + { 1, "boot_flags_persistent", REQUIRED, LENGTH-FIXED } + { 1, "boot_flags_valid", REQUIRED, LENGTH-FIXED } + { 1, "lock_out_reset_button", REQUIRED, LENGTH-FIXED } + { 1, "screen_blank", REQUIRED, LENGTH-FIXED } + { 4, "boot_device", REQUIRED, LENGTH-FIXED } + { 1, "lock_keyboard", REQUIRED, LENGTH-FIXED } + { 1, "cmos_clear", REQUIRED, LENGTH-FIXED } + { 2, "console_redirection", REQUIRED, LENGTH-FIXED } + { 1, "lock_out_sleep_button", REQUIRED, LENGTH-FIXED } + { 1, "user_password_bypass", REQUIRED, LENGTH-FIXED } + { 1, "force_progress_event_traps", REQUIRED, LENGTH-FIXED } + { 2, "firmware_bios_verbosity", REQUIRED, LENGTH-FIXED } + { 1, "lock_out_via_power_button", REQUIRED, LENGTH-FIXED } + { 3, "bios_mux_control_override", REQUIRED, LENGTH-FIXED } + { 1, "bios_shared_mode_override", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 5, "device_instance_selector", REQUIRED, LENGTH-FIXED } + { 3, "reserved3", REQUIRED, LENGTH-FIXED } + +Set System Boot Options (Boot Initiator Info) Request +----------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_boot_options_boot_initiator_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 4, "boot_source.channel_number", REQUIRED, LENGTH-FIXED } + { 4, "boot_source.reserved", REQUIRED, LENGTH-FIXED } + { 32, "session_id", REQUIRED, LENGTH-FIXED } + { 32, "boot_info_timestamp", REQUIRED, LENGTH-FIXED } + +Set System Boot Options (Boot Initiator Mailbox) Request +-------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_boot_options_boot_initiator_mailbox_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "block_data", OPTIONAL, LENGTH-VARIABLE } + +Get System Boot Options Request +------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 8, "block_selector", REQUIRED, LENGTH-FIXED } + +Get System Boot Options Response +-------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 296, "configuration_parameter_data", OPTIONAL, LENGTH-VARIABLE } + +Get System Boot Options (Set In Progress) Response +-------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_set_in_progress_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Get System Boot Options (Service Partition Selector) Response +------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_service_partition_selector_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 8, "service_partition_selector", REQUIRED, LENGTH-FIXED } + +Get System Boot Options (Service Partition Scan) Response +--------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_service_partition_scan_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 1, "service_partition_discovered", REQUIRED, LENGTH-FIXED } + { 1, "service_partition_scan", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Get System Boot Options (BMC Boot Flag Valid Bit Clearing) Response +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_BMC_boot_flag_valid_bit_clearing_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 1, "dont_clear_valid_bit_on_power_up_via_power_pushbutton_or_wake_event", REQUIRED, LENGTH-FIXED } + { 1, "dont_clear_valid_bit_on_pushbutton_reset_soft_reset", REQUIRED, LENGTH-FIXED } + { 1, "dont_clear_valid_bit_on_reset_power_cycle_caused_by_watchdog_timeout", REQUIRED, LENGTH-FIXED } + { 1, "dont_automatically_clear_boot_flag_valid_bit_if_chassis_control_command_not_received_within_60_second_timeout", REQUIRED, LENGTH-FIXED } + { 1, "dont_clear_valid_bit_on_reset_power_cycle_caused_by_PEF", REQUIRED, LENGTH-FIXED } + { 3, "reserved2", REQUIRED, LENGTH-FIXED } + +Get System Boot Options (Boot Info Acknowledge) Response +-------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_boot_info_acknowledge_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_0", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_1", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_2", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_3", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_4", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_5", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_6", REQUIRED, LENGTH-FIXED } + { 1, "enable_write_bit_7", REQUIRED, LENGTH-FIXED } + { 1, "bios_or_post_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 1, "os_loader_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 1, "os_or_service_partition_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 1, "sms_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 1, "oem_handled_boot_info", REQUIRED, LENGTH-FIXED } + { 3, "reserved2", REQUIRED, LENGTH-FIXED } + +Get System Boot Options (Boot Flags) Response +--------------------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_boot_flags_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "bios_boot_type", REQUIRED, LENGTH-FIXED } + { 1, "boot_flags_persistent", REQUIRED, LENGTH-FIXED } + { 1, "boot_flags_valid", REQUIRED, LENGTH-FIXED } + { 1, "lock_out_reset_button", REQUIRED, LENGTH-FIXED } + { 1, "screen_blank", REQUIRED, LENGTH-FIXED } + { 4, "boot_device", REQUIRED, LENGTH-FIXED } + { 1, "lock_keyboard", REQUIRED, LENGTH-FIXED } + { 1, "cmos_clear", REQUIRED, LENGTH-FIXED } + { 2, "console_redirection", REQUIRED, LENGTH-FIXED } + { 1, "lock_out_sleep_button", REQUIRED, LENGTH-FIXED } + { 1, "user_password_bypass", REQUIRED, LENGTH-FIXED } + { 1, "force_progress_event_traps", REQUIRED, LENGTH-FIXED } + { 2, "firmware_bios_verbosity", REQUIRED, LENGTH-FIXED } + { 1, "lock_out_via_power_button", REQUIRED, LENGTH-FIXED } + { 3, "bios_mux_control_override", REQUIRED, LENGTH-FIXED } + { 1, "bios_shared_mode_override", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 5, "device_instance_selector", REQUIRED, LENGTH-FIXED } + { 3, "reserved3", REQUIRED, LENGTH-FIXED } + +Get System Boot Options (Boot Initiator Info) Response +------------------------------------------------------ + +FIID Template: tmpl_cmd_get_system_boot_options_boot_initiator_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 4, "boot_source.channel_number", REQUIRED, LENGTH-FIXED } + { 4, "boot_source.reserved", REQUIRED, LENGTH-FIXED } + { 32, "session_id", REQUIRED, LENGTH-FIXED } + { 32, "boot_info_timestamp", REQUIRED, LENGTH-FIXED } + +Get System Boot Options (Boot Initiator Mailbox) Response +--------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_boot_options_boot_initiator_mailbox_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "parameter_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "parameter_valid", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "block_data", OPTIONAL, LENGTH-VARIABLE } + +Get Power On Hours Counter Request +---------------------------------- + +FIID Template: tmpl_cmd_get_power_on_hours_counter_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Power On Hours Counter Response +----------------------------------- + +FIID Template: tmpl_cmd_get_power_on_hours_counter_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "minutes_per_counter", REQUIRED, LENGTH-FIXED } + { 32, "counter_reading", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CHASSIS_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-cipher-suite-record-format-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-cipher-suite-record-format-templates.h new file mode 100644 index 00000000..b82b6b0d --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-cipher-suite-record-format-templates.h @@ -0,0 +1,104 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CIPHER_SUITE_RECORD_FORMAT_TEMPLATES_H +#define IPMI_CIPHER_SUITE_RECORD_FORMAT_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Cipher Suite Record Header +-------------------------- + +FIID Template: tmpl_cipher_suite_record_header + + { 6, "record_format", REQUIRED, LENGTH-FIXED } + { 2, "tag_bits", REQUIRED, LENGTH-FIXED } + +Cipher Suite Record +------------------- + +FIID Template: tmpl_cipher_suite_record + + { 6, "record_format", REQUIRED, LENGTH-FIXED } + { 2, "tag_bits", REQUIRED, LENGTH-FIXED } + { 8, "cipher_suite_id", REQUIRED, LENGTH-FIXED } + { 6, "authentication_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "authentication_algorithm_tag_bits", REQUIRED, LENGTH-FIXED } + { 6, "integrity_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "integrity_algorithm_tag_bits", REQUIRED, LENGTH-FIXED } + { 6, "confidentiality_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "confidentiality_algorithm_tag_bits", REQUIRED, LENGTH-FIXED } + +OEM Cipher Suite Record +----------------------- + +FIID Template: tmpl_oem_cipher_suite_record + + { 6, "record_format", REQUIRED, LENGTH-FIXED } + { 2, "tag_bits", REQUIRED, LENGTH-FIXED } + { 8, "oem_cipher_suite_id", REQUIRED, LENGTH-FIXED } + { 24, "oem_iana", REQUIRED, LENGTH-FIXED } + { 6, "authentication_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "authentication_algorithm_tag_bits", REQUIRED, LENGTH-FIXED } + { 6, "integrity_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "integrity_algorithm_tag_bits", REQUIRED, LENGTH-FIXED } + { 6, "confidentiality_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "confidentiality_algorithm_tag_bits", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CIPHER_SUITE_RECORD_FORMAT_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-dcmi-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-dcmi-cmds-templates.h new file mode 100644 index 00000000..ab694b5d --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-dcmi-cmds-templates.h @@ -0,0 +1,665 @@ +/* + * 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 . + * + */ +/*****************************************************************************\ + * Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Albert Chu + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_DCMI_CMDS_TEMPLATES_H +#define IPMI_DCMI_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +DCMI Rolling Average Time Period +-------------------------------- + +FIID Template: tmpl_dcmi_rolling_average_time_period + + { 6, "time_duration", REQUIRED, LENGTH-FIXED } + { 2, "time_duration_units", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Capability Info Request +------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_capability_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Capability Info Response +-------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_capability_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 1024, "parameter_data", REQUIRED, LENGTH-VARIABLE } + +DCMI Get DCMI Capability Info (Supported DCMI Capabilities) Response +-------------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_capability_info_supported_dcmi_capabilities_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 1, "mandatory_platform_capabilities.identification_support", REQUIRED, LENGTH-FIXED } + { 1, "mandatory_platform_capabilities.sel_logging", REQUIRED, LENGTH-FIXED } + { 1, "mandatory_platform_capabilities.chassis_power", REQUIRED, LENGTH-FIXED } + { 1, "mandatory_platform_capabilities.temperature_monitor", REQUIRED, LENGTH-FIXED } + { 4, "mandatory_platform_capabilities.reserved", REQUIRED, LENGTH-FIXED } + { 1, "optional_platform_capabilities.power_management_monitoring_support", REQUIRED, LENGTH-FIXED } + { 7, "optional_platform_capabilities.reserved", REQUIRED, LENGTH-FIXED } + { 1, "manageability_access_capabilities.in_band_system_interface_channel_available", REQUIRED, LENGTH-FIXED } + { 1, "manageability_access_capabilities.serial_tmode_available", REQUIRED, LENGTH-FIXED } + { 1, "manageability_access_capabilities.out_of_band_secondary_lan_channel_available", REQUIRED, LENGTH-FIXED } + { 1, "manageability_access_capabilities.out_of_band_primary_lan_channel_available", REQUIRED, LENGTH-FIXED } + { 1, "manageability_access_capabilities.sol_supported", REQUIRED, LENGTH-FIXED } + { 1, "manageability_access_capabilities.vlan_capable", REQUIRED, LENGTH-FIXED } + { 2, "manageability_access_capabilities.reserved", REQUIRED, LENGTH-FIXED } + + Notes: Some fields not valid when parameter revision >= 2. Please + see DCMI specification for details. + +DCMI Get DCMI Capability Info (Mandatory Platform Attributes) Response +---------------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_capability_info_mandatory_platform_attributes_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 12, "sel_attributes.number_of_sel_entries", REQUIRED, LENGTH-FIXED } + { 1, "sel_attributes.record_level_sel_flush_upon_rollover", REQUIRED, LENGTH-FIXED } + { 1, "sel_attributes.entire_sel_flush_upon_rollover", REQUIRED, LENGTH-FIXED } + { 1, "sel_attributes.reserved", REQUIRED, LENGTH-FIXED } + { 1, "sel_attributes.sel_automatic_rollover_enabled", REQUIRED, LENGTH-FIXED } + { 1, "identification_attributes.guid_support", REQUIRED, LENGTH-FIXED } + { 1, "identification_attributes.dhcp_host_name_support", REQUIRED, LENGTH-FIXED } + { 1, "identification_attributes.asset_tag_support", REQUIRED, LENGTH-FIXED } + { 5, "identification_attributes.reserved", REQUIRED, LENGTH-FIXED } + { 1, "temperature_monitoring.inlet_temperature", REQUIRED, LENGTH-FIXED } + { 1, "temperature_monitoring.processors_temperature", REQUIRED, LENGTH-FIXED } + { 1, "temperature_monitoring.baseboard_temperature", REQUIRED, LENGTH-FIXED } + { 5, "temperature_monitoring.reserved", REQUIRED, LENGTH-FIXED } + + Notes: Some fields not valid when parameter revision >= 2. Please + see DCMI specification for details. + +DCMI Get DCMI Capability Info (Optional Platform Attributes) Response +--------------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_capability_info_optional_platform_attributes_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 1, "power_management_device_slave_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "power_management_device_slave_address.slave_address", REQUIRED, LENGTH-FIXED } + { 4, "power_management_controller_channel_number.device_revision", REQUIRED, LENGTH-FIXED } + { 4, "power_management_controller_channel_number.channel_number", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Capability Info (Manageability Access Attributes) Response +------------------------------------------------------------------------ + +FIID Template: tmpl_cmd_dcmi_get_dcmi_capability_info_manageability_access_attributes_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "mandatory_primary_lan_out_of_band_support_channel_number", REQUIRED, LENGTH-FIXED } + { 8, "optional_secondary_lan_out_of_band_support_channel_number", REQUIRED, LENGTH-FIXED } + { 8, "optional_serial_out_of_band_tmode_capability_channel_number", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Capability Info (Enhanced System Power Statistics Attributes) Response +------------------------------------------------------------------------------------ + +FIID Template: tmpl_cmd_dcmi_get_dcmi_capability_info_enhanced_system_power_statistics_attributes_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "number_of_supported_rolling_average_time_periods", REQUIRED, LENGTH-FIXED } + { 2048, "rolling_average_time_periods", OPTIONAL, LENGTH-VARIABLE } + + +DCMI Set DCMI Configuration Parameters Request +---------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_dcmi_configuration_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +DCMI Set DCMI Configuration Parameters Response +----------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_dcmi_configuration_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + +DCMI Set DCMI Configuration Parameters (Activate DHCP) Response +--------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_dcmi_configuration_parameters_activate_dhcp_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 8, "activate", REQUIRED, LENGTH-FIXED } + +DCMI Set DCMI Configuration Parameters (Discovery Configuration) Response +------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_dcmi_configuration_parameters_discovery_configuration_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 1, "option_12", REQUIRED, LENGTH-FIXED } + { 1, "option_60_with_option_43", REQUIRED, LENGTH-FIXED } + { 5, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "random_back_off", REQUIRED, LENGTH-FIXED } + +DCMI Set DCMI Configuration Parameters (DHCP Timing 1) Response +--------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_1_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 8, "initial_timeout_interval", REQUIRED, LENGTH-FIXED } + +DCMI Set DCMI Configuration Parameters (DHCP Timing 2) Response +--------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_2_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 16, "server_contact_timeout_interval", REQUIRED, LENGTH-FIXED } + + +DCMI Set DCMI Configuration Parameters (DHCP Timing 3) Response +--------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_dcmi_configuration_parameters_dhcp_timing_3_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 16, "server_contact_retry_interval", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Configuration Parameters Request +---------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_configuration_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Configuration Parameters Response +----------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_configuration_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 1024, "parameter_data", REQUIRED, LENGTH-VARIABLE } + +DCMI Get DCMI Configuration Parameters (Discovery Configuration) Request +------------------------------------------------------------------------ + +FIID Template: tmpl_cmd_dcmi_get_dcmi_configuration_parameters_discovery_configuration_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 1, "option_12", REQUIRED, LENGTH-FIXED } + { 1, "option_60_with_option_43", REQUIRED, LENGTH-FIXED } + { 5, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "random_back_off", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Configuration Parameters (DHCP Timing 1) Request +-------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_1_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "initial_timeout_interval", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Configuration Parameters (DHCP Timing 2) Request +-------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_2_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 16, "server_contact_timeout_interval", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Configuration Parameters (DHCP Timing 3) Request +-------------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_configuration_parameters_dhcp_timing_3_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.major_version", REQUIRED, LENGTH-FIXED } + { 8, "dcmi_specification_conformance.minor_version", REQUIRED, LENGTH-FIXED } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 16, "server_contact_retry_interval", REQUIRED, LENGTH-FIXED } + +DCMI Get Asset Tag Request +-------------------------- + +FIID Template: tmpl_cmd_dcmi_get_asset_tag_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "offset_to_read", REQUIRED, LENGTH-FIXED } + { 8, "number_of_bytes_to_read", REQUIRED, LENGTH-FIXED } + +DCMI Get Asset Tag Response +--------------------------- + +FIID Template: tmpl_cmd_dcmi_get_asset_tag_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "total_asset_tag_length", REQUIRED, LENGTH-FIXED } + { 512, "data", OPTIONAL, LENGTH-VARIABLE } + +DCMI Set Asset Tag Request +-------------------------- + +FIID Template: tmpl_cmd_dcmi_set_asset_tag_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "offset_to_write", REQUIRED, LENGTH-FIXED } + { 8, "number_of_bytes_to_write", REQUIRED, LENGTH-FIXED } + { 512, "data", OPTIONAL, LENGTH-VARIABLE } + +DCMI Set Asset Tag Response +--------------------------- + +FIID Template: tmpl_cmd_dcmi_set_asset_tag_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "total_asset_tag_length_written", REQUIRED, LENGTH-FIXED } + +DCMI Get Management Controller Identifier String Request +-------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_management_controller_identifier_string_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "offset_to_read", REQUIRED, LENGTH-FIXED } + { 8, "number_of_bytes_to_read", REQUIRED, LENGTH-FIXED } + +DCMI Get Management Controller Identifier String Response +--------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_management_controller_identifier_string_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "total_length", REQUIRED, LENGTH-FIXED } + { 512, "data", OPTIONAL, LENGTH-VARIABLE } + +DCMI Set Management Controller Identifier String Request +-------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_management_controller_identifier_string_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "offset_to_write", REQUIRED, LENGTH-FIXED } + { 8, "number_of_bytes_to_write", REQUIRED, LENGTH-FIXED } + { 512, "data", OPTIONAL, LENGTH-VARIABLE } + +DCMI Set Management Controller Identifier String Response +--------------------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_management_controller_identifier_string_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "total_length_written", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Sensor Info Request +--------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_sensor_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance_start", REQUIRED, LENGTH-FIXED } + +DCMI Get DCMI Sensor Info Response +---------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_dcmi_sensor_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "total_number_of_available_instances", REQUIRED, LENGTH-FIXED } + { 8, "number_of_record_ids_in_this_response", REQUIRED, LENGTH-FIXED } + { 4096, "sdr_record_ids", OPTIONAL, LENGTH-VARIABLE } + + Notes: Record IDs LS byte first. + +DCMI Get Power Reading Request +------------------------------ + +FIID Template: tmpl_cmd_dcmi_get_power_reading_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "mode", REQUIRED, LENGTH-FIXED } + { 16, "reserved", REQUIRED, LENGTH-FIXED } + +DCMI Get Power Reading Response +------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_power_reading_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 16, "current_power", REQUIRED, LENGTH-FIXED } + { 16, "minimum_power_over_sampling_duration", REQUIRED, LENGTH-FIXED } + { 16, "maximum_power_over_sampling_duration", REQUIRED, LENGTH-FIXED } + { 16, "average_power_over_sampling_duration", REQUIRED, LENGTH-FIXED } + { 32, "time_stamp", REQUIRED, LENGTH-FIXED } + { 32, "statistics_reporting_time_period", REQUIRED, LENGTH-FIXED } + { 6, "power_reading_state.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "power_reading_state.power_measurement", REQUIRED, LENGTH-FIXED } + { 1, "power_reading_state.reserved2", REQUIRED, LENGTH-FIXED } + +DCMI Get Power Limit Request +---------------------------- + +FIID Template: tmpl_cmd_dcmi_get_power_limit_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 16, "reserved", REQUIRED, LENGTH-FIXED } + +DCMI Get Power Limit Response +----------------------------- + +FIID Template: tmpl_cmd_dcmi_get_power_limit_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 16, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "exception_actions", REQUIRED, LENGTH-FIXED } + { 16, "power_limit_requested", REQUIRED, LENGTH-FIXED } + { 32, "correction_time_limit", REQUIRED, LENGTH-FIXED } + { 16, "reserved2", REQUIRED, LENGTH-FIXED } + { 16, "management_application_statistics_sampling_period", REQUIRED, LENGTH-FIXED } + +DCMI Set Power Limit Request +---------------------------- + +FIID Template: tmpl_cmd_dcmi_set_power_limit_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 24, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "exception_actions", REQUIRED, LENGTH-FIXED } + { 16, "power_limit_requested", REQUIRED, LENGTH-FIXED } + { 32, "correction_time_limit", REQUIRED, LENGTH-FIXED } + { 16, "reserved2", REQUIRED, LENGTH-FIXED } + { 16, "management_application_statistics_sampling_period", REQUIRED, LENGTH-FIXED } + +DCMI Set Power Limit Response +----------------------------- + +FIID Template: tmpl_cmd_dcmi_set_power_limit_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + +DCMI Activate/Deactivate Power Limit Request +-------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_activate_deactivate_power_limit_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "power_limit_activation", REQUIRED, LENGTH-FIXED } + { 16, "reserved", REQUIRED, LENGTH-FIXED } + +DCMI Activate/Deactivate Power Limit Response +--------------------------------------------- + +FIID Template: tmpl_cmd_dcmi_activate_deactivate_power_limit_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + +DCMI Get Thermal Limit Request +------------------------------ + +FIID Template: tmpl_cmd_dcmi_get_thermal_limit_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance", REQUIRED, LENGTH-FIXED } + +DCMI Get Thermal Limit Response +------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_thermal_limit_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "temperature_limit", REQUIRED, LENGTH-FIXED } + { 5, "exception_actions.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "exception_actions.log_event_to_sel_only", REQUIRED, LENGTH-FIXED } + { 1, "exception_actions.hard_power_off_system_and_log_event", REQUIRED, LENGTH-FIXED } + { 1, "exception_actions.reserved2", REQUIRED, LENGTH-FIXED } + { 16, "exception_time", REQUIRED, LENGTH-FIXED } + +DCMI Set Thermal Limit Request +------------------------------ + +FIID Template: tmpl_cmd_dcmi_set_thermal_limit_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance", REQUIRED, LENGTH-FIXED } + { 8, "temperature_limit", REQUIRED, LENGTH-FIXED } + { 5, "exception_actions.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "exception_actions.log_event_to_sel_only", REQUIRED, LENGTH-FIXED } + { 1, "exception_actions.hard_power_off_system_and_log_event", REQUIRED, LENGTH-FIXED } + { 1, "exception_actions.reserved2", REQUIRED, LENGTH-FIXED } + { 16, "exception_time", REQUIRED, LENGTH-FIXED } + +DCMI Set Thermal Limit Response +------------------------------- + +FIID Template: tmpl_cmd_dcmi_set_thermal_limit_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + + +DCMI Get Temperature Reading Request +------------------------------------ + +FIID Template: tmpl_cmd_dcmi_get_temperature_reading_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance_start", REQUIRED, LENGTH-FIXED } + +DCMI Get Temperature Reading Response +------------------------------------- + +FIID Template: tmpl_cmd_dcmi_get_temperature_reading_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "group_extension_identification", REQUIRED, LENGTH-FIXED } + { 8, "total_number_of_available_instances", REQUIRED, LENGTH-FIXED } + { 8, "number_of_sets_of_temperature_data", REQUIRED, LENGTH-FIXED } + { 8, "temperature1", OPTIONAL, LENGTH-FIXED } + { 8, "temperature2", OPTIONAL, LENGTH-FIXED } + { 8, "temperature3", OPTIONAL, LENGTH-FIXED } + { 8, "temperature4", OPTIONAL, LENGTH-FIXED } + { 8, "temperature5", OPTIONAL, LENGTH-FIXED } + { 8, "temperature6", OPTIONAL, LENGTH-FIXED } + { 8, "temperature7", OPTIONAL, LENGTH-FIXED } + { 8, "temperature8", OPTIONAL, LENGTH-FIXED } + + Notes: temperature fields are signed ints. + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_DCMI_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-device-global-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-device-global-cmds-templates.h new file mode 100644 index 00000000..d3db6a2f --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-device-global-cmds-templates.h @@ -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 . + * + */ + +#ifndef IPMI_DEVICE_GLOBAL_CMDS_TEMPLATES_H +#define IPMI_DEVICE_GLOBAL_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Get Device ID Request +--------------------- + +FIID Template: tmpl_cmd_get_device_id_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Device ID Response +---------------------- + +FIID Template: tmpl_cmd_get_device_id_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "device_id", REQUIRED, LENGTH-FIXED } + { 4, "device_revision.revision", REQUIRED, LENGTH-FIXED } + { 3, "device_revision.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "device_revision.sdr_support", REQUIRED, LENGTH-FIXED } + { 7, "firmware_revision1.major_revision", REQUIRED, LENGTH-FIXED } + { 1, "firmware_revision1.device_available", REQUIRED, LENGTH-FIXED } + { 8, "firmware_revision2.minor_revision", REQUIRED, LENGTH-FIXED } + { 4, "ipmi_version_major", REQUIRED, LENGTH-FIXED } + { 4, "ipmi_version_minor", REQUIRED, LENGTH-FIXED } + { 1, "additional_device_support.sensor_device", REQUIRED, LENGTH-FIXED } + { 1, "additional_device_support.sdr_repository_device", REQUIRED, LENGTH-FIXED } + { 1, "additional_device_support.sel_device", REQUIRED, LENGTH-FIXED } + { 1, "additional_device_support.fru_inventory_device", REQUIRED, LENGTH-FIXED } + { 1, "additional_device_support.ipmb_event_receiver", REQUIRED, LENGTH-FIXED } + { 1, "additional_device_support.ipmb_event_generator", REQUIRED, LENGTH-FIXED } + { 1, "additional_device_support.bridge", REQUIRED, LENGTH-FIXED } + { 1, "additional_device_support.chassis_device", REQUIRED, LENGTH-FIXED } + { 20, "manufacturer_id.id", REQUIRED, LENGTH-FIXED } + { 4, "manufacturer_id.reserved1", REQUIRED, LENGTH-FIXED } + { 16, "product_id", REQUIRED, LENGTH-FIXED } + { 32, "auxiliary_firmware_revision_information", OPTIONAL, LENGTH-FIXED } + +Cold Reset Request +------------------ + +FIID Template: tmpl_cmd_cold_reset_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Cold Reset Response +------------------- + +FIID Template: tmpl_cmd_cold_reset_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Warm Reset Request +------------------ + +FIID Template: tmpl_cmd_warm_reset_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Warm Reset Response +------------------- + +FIID Template: tmpl_cmd_warm_reset_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set ACPI Power State Request +---------------------------- + +FIID Template: tmpl_cmd_set_acpi_power_state_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "system_power_state_enumeration", REQUIRED, LENGTH-FIXED } + { 1, "set_system_power_state", REQUIRED, LENGTH-FIXED } + { 7, "device_power_state_enumeration", REQUIRED, LENGTH-FIXED } + { 1, "set_device_power_state", REQUIRED, LENGTH-FIXED } + +Set ACPI Power State Response +----------------------------- + +FIID Template: tmpl_cmd_set_acpi_power_state_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get ACPI Power State Request +---------------------------- + +FIID Template: tmpl_cmd_get_acpi_power_state_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get ACPI Power State Response +----------------------------- + +FIID Template: tmpl_cmd_get_acpi_power_state_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 7, "system_power_state_enumeration", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 7, "device_power_state_enumeration", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + +Get Self Test Results Request +----------------------------- + +FIID Template: tmpl_cmd_get_self_test_results_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Self Test Results Response +------------------------------ + +FIID Template: tmpl_cmd_get_self_test_results_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "self_test_result", REQUIRED, LENGTH-FIXED } + { 1, "controller_operation_firmware_corrupted", REQUIRED, LENGTH-FIXED } + { 1, "controller_update_boot_block_firmware_corrupted", REQUIRED, LENGTH-FIXED } + { 1, "internal_use_area_of_bmc_fru_corrupted", REQUIRED, LENGTH-FIXED } + { 1, "sdr_repository_empty", REQUIRED, LENGTH-FIXED } + { 1, "ipmb_signal_lines_do_not_respond", REQUIRED, LENGTH-FIXED } + { 1, "cannot_access_bmc_fru_device", REQUIRED, LENGTH-FIXED } + { 1, "cannot_access_sdr_repository", REQUIRED, LENGTH-FIXED } + { 1, "cannot_access_sel_device", REQUIRED, LENGTH-FIXED } + +Get Device GUID Request +----------------------- + +FIID Template: tmpl_cmd_get_device_guid_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Device GUID Response +------------------------ + +FIID Template: tmpl_cmd_get_device_guid_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 128, "guid", REQUIRED, LENGTH-FIXED } + +Get Device GUID (with Format) Response +-------------------------------------- + +FIID Template: tmpl_cmd_get_device_guid_format_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 48, "node", REQUIRED, LENGTH-FIXED } + { 8, "clock_seq_low", REQUIRED, LENGTH-FIXED } + { 8, "clock_seq_hi_and_reserved", REQUIRED, LENGTH-FIXED } + { 16, "time_high_and_version", REQUIRED, LENGTH-FIXED } + { 16, "time_mid", REQUIRED, LENGTH-FIXED } + { 32, "time_low", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_DEVICE_GLOBAL_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-event-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-event-cmds-templates.h new file mode 100644 index 00000000..dedfcba4 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-event-cmds-templates.h @@ -0,0 +1,125 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_EVENT_CMDS_TEMPLATES_H +#define IPMI_EVENT_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Set Event Receiver Request +-------------------------- + +FIID Template: tmpl_cmd_set_event_receiver_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "event_receiver_slave_address", REQUIRED, LENGTH-FIXED } + { 2, "event_receiver_lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Set Event Receiver Response +--------------------------- + +FIID Template: tmpl_cmd_set_event_receiver_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Event Receiver Request +-------------------------- + +FIID Template: tmpl_cmd_get_event_receiver_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Event Receiver Response +--------------------------- + +FIID Template: tmpl_cmd_get_event_receiver_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "event_receiver_slave_address", REQUIRED, LENGTH-FIXED } + { 2, "event_receiver_lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Platform Event Request +---------------------- + +FIID Template: tmpl_cmd_platform_event_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "generator_id", OPTIONAL, LENGTH-FIXED } + { 8, "event_message_format_version", REQUIRED, LENGTH-FIXED } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 7, "event_type_code", REQUIRED, LENGTH-FIXED } + { 1, "event_dir", REQUIRED, LENGTH-FIXED } + { 8, "event_data1", REQUIRED, LENGTH-FIXED } + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + +Platform Event Response +----------------------- + +FIID Template: tmpl_cmd_platform_event_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-firmware-firewall-command-discovery-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-firmware-firewall-command-discovery-cmds-templates.h new file mode 100644 index 00000000..77043b42 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-firmware-firewall-command-discovery-cmds-templates.h @@ -0,0 +1,361 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_FIRMWARE_FIRMWARE_COMMAND_DISCOVERY_CMDS_TEMPLATES_H +#define IPMI_FIRMWARE_FIRMWARE_COMMAND_DISCOVERY_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Get NetFN Support Request +------------------------- + +FIID Template: tmpl_cmd_get_netfn_support_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get NetFN Support Response +-------------------------- + +FIID Template: tmpl_cmd_get_netfn_support_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 2, "lun0", REQUIRED, LENGTH-FIXED } + { 2, "lun1", REQUIRED, LENGTH-FIXED } + { 2, "lun2", REQUIRED, LENGTH-FIXED } + { 2, "lun3", REQUIRED, LENGTH-FIXED } + { 32, "lun0_netfn_support_bitmask", REQUIRED, LENGTH-FIXED } + { 32, "lun1_netfn_support_bitmask", REQUIRED, LENGTH-FIXED } + { 32, "lun2_netfn_support_bitmask", REQUIRED, LENGTH-FIXED } + { 32, "lun3_netfn_support_bitmask", REQUIRED, LENGTH-FIXED } + +Get Command Support Request +--------------------------- + +FIID Template: tmpl_cmd_get_command_support_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + { 24, "net_fn_data", OPTIONAL, LENGTH-VARIABLE } + +Get Command Support Response +---------------------------- + +FIID Template: tmpl_cmd_get_command_support_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 128, "command_support_mask", REQUIRED, LENGTH-FIXED } + +Get Command Sub-Function Support Request +---------------------------------------- + +FIID Template: tmpl_cmd_get_command_sub_function_support_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "command", REQUIRED, LENGTH-FIXED } + { 24, "net_fn_data", OPTIONAL, LENGTH-VARIABLE } + +Get Command Sub-Function Support (Specification Errata) Response +---------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_command_sub_function_support_specification_errata_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "errata_version", REQUIRED, LENGTH-FIXED } + { 4, "specification_type", REQUIRED, LENGTH-FIXED } + { 8, "specification_version", REQUIRED, LENGTH-FIXED } + { 8, "specification_revision", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_support_mask", REQUIRED, LENGTH-FIXED } + +Get Command Sub-Function Support (Extension Errata) Response +------------------------------------------------------------ + +FIID Template: tmpl_cmd_get_command_sub_function_support_extension_errata_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "oem_group_defining_body_errata", REQUIRED, LENGTH-FIXED } + { 8, "specification_version", REQUIRED, LENGTH-FIXED } + { 8, "specification_revision", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_support_mask", REQUIRED, LENGTH-FIXED } + +Get Configurable Commands Request +--------------------------------- + +FIID Template: tmpl_cmd_get_configurable_commands_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + { 24, "net_fn_data", OPTIONAL, LENGTH-VARIABLE } + +Get Configurable Commands Response +---------------------------------- + +FIID Template: tmpl_cmd_get_configurable_commands_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 128, "command_support_mask", REQUIRED, LENGTH-FIXED } + +Get Configurable Command Sub-Functions Request +---------------------------------------------- + +FIID Template: tmpl_cmd_get_configurable_command_sub_functions_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "command", REQUIRED, LENGTH-FIXED } + { 24, "net_fn_data", OPTIONAL, LENGTH-VARIABLE } + +Get Configurable Command Sub-Functions Response +----------------------------------------------- + +FIID Template: tmpl_cmd_get_configurable_command_sub_functions_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "sub_function_enables1", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_enables2", OPTIONAL, LENGTH-FIXED } + +Set Command Enables Request +--------------------------- + +FIID Template: tmpl_cmd_set_command_enables_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + { 128, "enable_disable_mask", REQUIRED, LENGTH-FIXED } + { 24, "net_fn_data", OPTIONAL, LENGTH-VARIABLE } + +Set Command Enables Response +---------------------------- + +FIID Template: tmpl_cmd_set_command_enables_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Command Enables Request +--------------------------- + +FIID Template: tmpl_cmd_get_command_enables_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + { 24, "net_fn_data", OPTIONAL, LENGTH-VARIABLE } + +Get Command Enables Response +---------------------------- + +FIID Template: tmpl_cmd_get_command_enables_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 128, "enable_disable_mask", REQUIRED, LENGTH-FIXED } + +Set Command Sub-Function Enables Request +---------------------------------------- + +FIID Template: tmpl_cmd_set_command_sub_function_enables_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "command", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_enables1", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_enables2", OPTIONAL, LENGTH-FIXED } + +Set Command Sub-Function Enables (Defining Body Code) Request +------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_command_sub_function_enables_defining_body_code_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "command", REQUIRED, LENGTH-FIXED } + { 8, "defining_body_code", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_enables1", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_enables2", OPTIONAL, LENGTH-FIXED } + + +Set Command Sub-Function Enables (OEM IANA) Request +--------------------------------------------------- + +FIID Template: tmpl_cmd_set_command_sub_function_enables_oem_iana_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "command", REQUIRED, LENGTH-FIXED } + { 24, "oem_iana", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_enables1", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_enables2", OPTIONAL, LENGTH-FIXED } + + +Set Command Sub-Function Enables Response +----------------------------------------- + +FIID Template: tmpl_cmd_set_command_sub_function_enables_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Command Sub-Function Enables Request +---------------------------------------- + +FIID Template: tmpl_cmd_get_command_sub_function_enables_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "command", REQUIRED, LENGTH-FIXED } + { 24, "net_fn_data", OPTIONAL, LENGTH-VARIABLE } + +Get Command Sub-Function Enables Response +----------------------------------------- + +FIID Template: tmpl_cmd_get_command_sub_function_enables_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "sub_function_enables1", REQUIRED, LENGTH-FIXED } + { 32, "sub_function_enables2", OPTIONAL, LENGTH-FIXED } + +Get OEM NetFN IANA Support Request +---------------------------------- + +FIID Template: tmpl_cmd_get_oem_netfn_iana_support_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 6, "list_index", REQUIRED, LENGTH-FIXED } + { 2, "reserved3", REQUIRED, LENGTH-FIXED } + +Get OEM NetFN IANA Support Response +----------------------------------- + +FIID Template: tmpl_cmd_get_oem_netfn_iana_support_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 7, "last_iana", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 2, "lun0", REQUIRED, LENGTH-FIXED } + { 2, "lun1", REQUIRED, LENGTH-FIXED } + { 2, "lun2", REQUIRED, LENGTH-FIXED } + { 2, "lun3", REQUIRED, LENGTH-FIXED } + { 24, "net_fn_data", OPTIONAL, LENGTH-VARIABLE } + + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_EVENT_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-dimmspd-record-format-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-dimmspd-record-format-templates.h new file mode 100644 index 00000000..45ba55e5 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-dimmspd-record-format-templates.h @@ -0,0 +1,559 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_FRU_DIMMSPD_RECORD_FORMAT_TEMPLATES_H +#define IPMI_FRU_DIMMSPD_RECORD_FORMAT_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + + /* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +DDR Header +---------- + +FIID Template: tmpl_fru_dimm_spd_ddr_header + + /* Byte 0: Number of Bytes Used/ Number of Bytes in SPD Device / CRC Coverage */ + { 4, "spd_bytes_used", REQUIRED, LENGTH-FIXED } + { 3, "spd_bytes_total", REQUIRED, LENGTH-FIXED } + { 1, "crc_coverage", REQUIRED, LENGTH-FIXED } + /* Byte 1: SPD Revision (X.Y = encoding_level.additions_level) */ + { 4, "additions_level", REQUIRED, LENGTH-FIXED } + { 4, "encoding_level", REQUIRED, LENGTH-FIXED } + /* Byte 2: Key Byte / DRAM Device Type */ + { 8, "dram_device_type", REQUIRED, LENGTH-FIXED } + /* Byte 3: Key Byte / Module Type */ + { 4, "module_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +DDR3 SDRAM SPD +-------------- + +FIID Template: tmpl_fru_dimm_spd_ddr3_record + + /* Byte 0: Number of Bytes Used/ Number of Bytes in SPD Device / CRC Coverage */ + { 4, "spd_bytes_used", REQUIRED, LENGTH-FIXED } + { 3, "spd_bytes_total", REQUIRED, LENGTH-FIXED } + { 1, "crc_coverage", REQUIRED, LENGTH-FIXED } + /* Byte 1: SPD Revision (X.Y = encoding_level.additions_level) */ + { 4, "additions_level", REQUIRED, LENGTH-FIXED } + { 4, "encoding_level", REQUIRED, LENGTH-FIXED } + /* Byte 2: Key Byte / DRAM Device Type */ + { 8, "dram_device_type", REQUIRED, LENGTH-FIXED } + /* Byte 3: Key Byte / Module Type */ + { 4, "module_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + /* Byte 4: SDRAM Density and Banks */ + /* in megabits */ + { 4, "total_sdram_capacity", REQUIRED, LENGTH-FIXED } + { 3, "bank_address_bits", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + /* Byte 5: SDRAM Addressing */ + { 3, "column_address_bits", REQUIRED, LENGTH-FIXED } + { 3, "row_address_bits", REQUIRED, LENGTH-FIXED } + { 2, "reserved3", REQUIRED, LENGTH-FIXED } + /* Byte 6: Module Nominal Voltage, VDD */ + { 1, "module_minimum_nominal_voltage.1_5", REQUIRED, LENGTH-FIXED } + { 1, "module_minimum_nominal_voltage.1_35", REQUIRED, LENGTH-FIXED } + { 1, "module_minimum_nominal_voltage.1_25", REQUIRED, LENGTH-FIXED } + { 5, "reserved4", REQUIRED, LENGTH-FIXED } + /* Byte 7: Module Organization */ + { 3, "sdram_device_width", REQUIRED, LENGTH-FIXED } + { 3, "number_of_ranks", REQUIRED, LENGTH-FIXED } + { 2, "reserved5", REQUIRED, LENGTH-FIXED } + /* Byte 8: Module Memory Bus Width */ + { 3, "primary_bus_width", REQUIRED, LENGTH-FIXED } + { 2, "bus_width_extension", REQUIRED, LENGTH-FIXED } + { 3, "reserve6", REQUIRED, LENGTH-FIXED } + /* Byte 9: Fine Timebase (FTB) Dividend / Divisor */ + { 4, "fine_timebase_divisor", REQUIRED, LENGTH-FIXED } + { 4, "fine_timebase_dividend", REQUIRED, LENGTH-FIXED } + /* Byte 10: Medium Timebase (MTB) Dividend */ + { 8, "medium_timebase_dividend", REQUIRED, LENGTH-FIXED } + /* Byte 11: Medium Timebase (MTB) Divisor */ + { 8, "medium_timebase_divisor", REQUIRED, LENGTH-FIXED } + /* Byte 12: SDRAM Minimum Cycle Time (t_ck min) (MTB Units) */ + { 8, "minimum_sdram_cycle_time", REQUIRED, LENGTH-FIXED } + { 8, "reserved7", REQUIRED, LENGTH-FIXED } + /* Byte 14-15: CAS Latencies Supported */ + { 16, "cas_latencies_supported", REQUIRED, LENGTH-FIXED } + /* Byte 16: Minimum CAS Latency Time (t_aa min) (MTB Units) */ + { 8, "minimum_sdram_cas_latency_time", REQUIRED, LENGTH-FIXED } + /* Byte 17: Minimum Write Recovery Time (t_wr min) (MTB Units) */ + { 8, "minimum_write_recovery_time", REQUIRED, LENGTH-FIXED } + /* Byte 18: Minimum RAS# to CAS# Delay Time (t_rcd min) */ + { 8, "minimum_ras_to_cas_delay", REQUIRED, LENGTH-FIXED } + /* Byte 19: Minimum Row Active to Row Active Delay Time (t_rrd min) (MTB Units) */ + { 8, "minimum_row_active_to_row_active_delay", REQUIRED, LENGTH-FIXED } + /* Byte 20: Minimum Row Precharge Delay Time (t_rp min) (MTB Units) */ + { 8, "minimum_row_precharge_time", REQUIRED, LENGTH-FIXED } + /* Byte 21: Upper Nibbles for t_ras and t_rc */ + { 4, "t_ras_msn", REQUIRED, LENGTH-FIXED } + { 4, "t_rc_msn", REQUIRED, LENGTH-FIXED } + /* Byte 22: Minimum Active to Precharge Delay Time (t_ras min), LSB (MTB Units) */ + { 8, "minimum_active_to_precharge_time", REQUIRED, LENGTH-FIXED } + /* Byte 23: Minimum Active to Active/Refresh Delay Time (t_rc min), LSB (MTB Units) */ + { 8, "minimum_active_to_active_refresh_time", REQUIRED, LENGTH-FIXED } + /* Byte 24-25: Minimum Refresh Recovery Delay Time (t_rfc min) (MTB Units) */ + { 16, "minimum_active_to_active_refresh_time", REQUIRED, LENGTH-FIXED } + /* Byte 26: Minimum Internal Write to Read Command Delay Time (t_wtr min) (MTB Units) */ + { 8, "internal_write_to_read_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 27: Minimum Internal Read to Precharge Command Delay Time (t_rtp min) (MTB Units) */ + { 8, "internal_read_to_precharge_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 28: Upper Nibble for t_faw */ + { 4, "t_faw_msn", REQUIRED, LENGTH-FIXED } + { 4, "reserved8", REQUIRED, LENGTH-FIXED } + /* Byte 29: Minimum Four Active Window Delay Time (t_faw min), LSB (MTB Units) */ + { 8, "minimum_four_active_window_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 30: SDRAM Optional Features */ + { 1, "rzq_6_supported", REQUIRED, LENGTH-FIXED } + { 1, "rzq_7_supported", REQUIRED, LENGTH-FIXED } + { 5, "reserved9", REQUIRED, LENGTH-FIXED } + { 1, "dll_off_mode_supported", REQUIRED, LENGTH-FIXED } + /* Byte 31: SDRAM Thermal and Refresh Options */ + { 1, "extended_temperature_range", REQUIRED, LENGTH-FIXED } + { 1, "extended_temperature_refresh_rate", REQUIRED, LENGTH-FIXED } + { 1, "auto_self_refresh", REQUIRED, LENGTH-FIXED } + { 1, "on_die_thermal_sensor_readout", REQUIRED, LENGTH-FIXED } + { 3, "reserved10", REQUIRED, LENGTH-FIXED } + { 1, "partial_array_self_refresh", REQUIRED, LENGTH-FIXED } + /* Byte 32: Module Thermal Sensor */ + { 7, "thermal_sensor_accuracy", REQUIRED, LENGTH-FIXED } + { 1, "thermal_sensor_incorporated", REQUIRED, LENGTH-FIXED } + /* Byte 33: SDRAM Device Type */ + { 2, "signal_loading", REQUIRED, LENGTH-FIXED } + { 2, "reserved11", REQUIRED, LENGTH-FIXED } + { 3, "die_count", REQUIRED, LENGTH-FIXED } + { 1, "sdram_device_type", REQUIRED, LENGTH-FIXED } + /* Byte 34: Fine Offset for SDRAM Minimum Cycle Time (tCKmin) */ + { 8, "fine_offset_for_sdram_minimum_cycle_time", REQUIRED, LENGTH-FIXED } + /* Byte 35: Fine Offset for Minimum CAS Latency Time (tAAmin) */ + { 8, "fine_offset_for_minimum_cas_latency_time", REQUIRED, LENGTH-FIXED } + /* Byte 36: Fine Offset for Minimum RAS# to CAS# Delay Time (tRCDmin) */ + { 8, "fine_offset_for_minimum_ras_to_cas_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 37: Minimum Row Precharge Delay Time (tRPmin) */ + { 8, "minimum_row_precharge_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 38: Fine Offset for Minimum Active to Active/Refresh Delay Time (tRCmin) */ + { 8, "fine_offset_for_minimum_active_to_active_refresh_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 39-59: Reserved */ + { 168, "reserved12", REQUIRED, LENGTH-FIXED } + /* Byte 60-116: Module-Specific Section */ + { 456, "module_specific_section", REQUIRED, LENGTH-FIXED } + /* Byte 117-125: Unique Module ID */ + { 7, "number_of_continuation_codes_module_manufacturer", REQUIRED, LENGTH-FIXED } + { 1, "odd_parity_byte_module_manufacturer", REQUIRED, LENGTH-FIXED } + { 8, "last_non_zero_module_manufacturer", REQUIRED, LENGTH-FIXED } + { 8, "module_manufacturing_location", REQUIRED, LENGTH-FIXED } + { 8, "module_manufacturing_date.year", REQUIRED, LENGTH-FIXED } /* BCD encoded */ + { 8, "module_manufacturing_date.week", REQUIRED, LENGTH-FIXED } /* BCD encoded */ + { 32, "module_serial_number", REQUIRED, LENGTH-FIXED } + /* Bytes 126-127: SPD Cyclical Redundancy Code (CRC) */ + { 16, "crc", REQUIRED, LENGTH-FIXED } + /* Bytes 128-145: Module Part Number */ + { 144, "module_part_number", REQUIRED, LENGTH-FIXED } /* ASCII */ + /* Bytes 146-147: Module Revision Code */ + { 16, "module_revision_code", REQUIRED, LENGTH-FIXED } + /* Bytes 148-149: DRAM Manufacturer ID Code */ + { 7, "number_of_continuation_codes_dram_manufacturer", REQUIRED, LENGTH-FIXED } + { 1, "odd_parity_byte_dram_manufacturer", REQUIRED, LENGTH-FIXED } + { 8, "last_non_zero_dram_manufacturer", REQUIRED, LENGTH-FIXED } + /* Bytes 150-175: Manufacturer's Specific Data */ + { 208, "manufacturer_specific_data", REQUIRED, LENGTH-FIXED } + /* Bytes 176-255: Manufacturer's Specific Data */ + { 640, "open_for_customer_use", REQUIRED, LENGTH-FIXED } + +DDR4 SDRAM SPD +-------------- + +FIID Template: tmpl_fru_dimm_spd_ddr4_record + + /* Byte 0: Number of Serial PD Bytes Written / SPD Device Size / CRC Coverage */ + { 4, "spd_bytes_used", REQUIRED, LENGTH-FIXED } + { 3, "spd_bytes_total", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + /* Byte 1: SPD Revision */ + { 4, "additions_level", REQUIRED, LENGTH-FIXED } + { 4, "encoding_level", REQUIRED, LENGTH-FIXED } + /* Byte 2: Key Byte / DRAM Device Type */ + { 8, "dram_device_type", REQUIRED, LENGTH-FIXED } + /* Byte 3: Key Byte / Module Type */ + { 4, "module_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + /* Byte 4: SDRAM Density and Banks */ + /* in megabits */ + { 4, "total_sdram_capacity", REQUIRED, LENGTH-FIXED } + { 2, "bank_address_bits", REQUIRED, LENGTH-FIXED } + { 2, "bank_group_bits", REQUIRED, LENGTH-FIXED } + /* Byte 5: SDRAM Addressing */ + { 3, "column_address_bits", REQUIRED, LENGTH-FIXED } + { 3, "row_address_bits", REQUIRED, LENGTH-FIXED } + { 2, "reserved3", REQUIRED, LENGTH-FIXED } + /* Byte 6: SDRAM Package Type */ + { 2, "signal_loading", REQUIRED, LENGTH-FIXED } + { 2, "reserved4", REQUIRED, LENGTH-FIXED } + { 3, "die_count", REQUIRED, LENGTH-FIXED } + { 1, "sdram_package_type", REQUIRED, LENGTH-FIXED } + /* Byte 7: SDRAM Optional Features */ + { 4, "maximum_activate_count", REQUIRED, LENGTH-FIXED } + { 2, "maximum_activate_window", REQUIRED, LENGTH-FIXED } + { 2, "reserved5", REQUIRED, LENGTH-FIXED } + /* Byte 8: SDRAM Thermal and Refresh Options */ + { 8, "reserved6", REQUIRED, LENGTH-FIXED } + /* Byte 9: Other SDRAM Optional Features */ + { 6, "reserved7", REQUIRED, LENGTH-FIXED } + { 2, "post_package_repair", REQUIRED, LENGTH-FIXED } + /* Byte 10: Reserved */ + { 8, "reserved8", REQUIRED, LENGTH-FIXED } + /* Byte 11: Module Nominal Voltage, VDD */ + { 1, "module_nominal_voltage.dram_vdd.1_2_operable", REQUIRED, LENGTH-FIXED } + { 1, "module_nominal_voltage.dram_vdd.1_2_endurant", REQUIRED, LENGTH-FIXED } + { 1, "module_nominal_voltage.dram_vdd.TBD1_operable", REQUIRED, LENGTH-FIXED } + { 1, "module_nominal_voltage.dram_vdd.TBD1_endurant", REQUIRED, LENGTH-FIXED } + { 1, "module_nominal_voltage.dram_vdd.TBD2_operable", REQUIRED, LENGTH-FIXED } + { 1, "module_nominal_voltage.dram_vdd.TBD2_endurant", REQUIRED, LENGTH-FIXED } + { 2, "reserved9", REQUIRED, LENGTH-FIXED } + /* Byte 12: Module Organization */ + { 3, "sdram_device_width", REQUIRED, LENGTH-FIXED } + { 3, "number_of_package_ranks_per_dimm", REQUIRED, LENGTH-FIXED } + { 2, "reserved10", REQUIRED, LENGTH-FIXED } + /* Byte 13: Module Memory Bus Width */ + { 3, "primary_bus_width", REQUIRED, LENGTH-FIXED } + { 2, "bus_width_extension", REQUIRED, LENGTH-FIXED } + { 3, "reserve11", REQUIRED, LENGTH-FIXED } + /* Byte 14: Module Thermal Sensor */ + { 7, "reserved12", REQUIRED, LENGTH-FIXED } + { 1, "thermal_sensor", REQUIRED, LENGTH-FIXED } + /* Byte 15: Extended module type */ + { 4, "extended_base_module_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved13", REQUIRED, LENGTH-FIXED } + /* Byte 16: Reserved */ + { 8, "reserved14", REQUIRED, LENGTH-FIXED } + /* Byte 17: Timebases */ + { 2, "fine_timebase", REQUIRED, LENGTH-FIXED } + { 2, "medium_timebase", REQUIRED, LENGTH-FIXED } + { 4, "reserved15", REQUIRED, LENGTH-FIXED } + /* Byte 18: SDRAM Minimum Cycle Time (t_ckavg min) */ + { 8, "minimum_sdram_cycle_time", REQUIRED, LENGTH-FIXED } + /* Byte 19: SDRAM Maximum Cycle Time (t_ckavg max) */ + { 8, "maximum_sdram_cycle_time", REQUIRED, LENGTH-FIXED } + /* Byte 20-23: CAS Latencies Supported */ + { 32, "cas_latencies_supported", REQUIRED, LENGTH-FIXED } + /* Byte 24: Minimum CAS Latency Time (t_aa min) */ + { 8, "minimum_sdram_cas_latency_time", REQUIRED, LENGTH-FIXED } + /* Byte 25: Minimum RAS to CAS Delay Time (t_rcd min) */ + { 8, "minimum_sdram_ras_to_cas_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 26: Minimum Row Precharge Delay Time (t_rp min) */ + { 8, "minimum_row_precharge_time", REQUIRED, LENGTH-FIXED } + /* Byte 27: Upper Nibbles for t_ras min and t_rc min */ + { 4, "t_ras_min_msn", REQUIRED, LENGTH-FIXED } + { 4, "t_rc_min_msn", REQUIRED, LENGTH-FIXED } + /* Byte 28: Minimum Active to Precharge Delay Time (t_ras min), LSB */ + { 8, "minimum_active_to_precharge_time", REQUIRED, LENGTH-FIXED } + /* Byte 29: Minimum Active to Active/Refresh Delay Time (t_rc min), LSB */ + { 8, "minimum_active_to_active_refresh_time", REQUIRED, LENGTH-FIXED } + /* Byte 30-31: Minimum Refresh Recovery Delay Time (t_RFC1 min) */ + { 16, "minimum_refresh_recovery_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 32-33: Minimum Refresh Recovery Delay Time (t_RFC2 min) */ + { 16, "minimum_refresh_recovery_delay_time1", REQUIRED, LENGTH-FIXED } + /* Byte 34-35: Minimum Refresh Recovery Delay Time (t_RFC4 min) */ + { 16, "minimum_refrsh_recovery_delay_time4", REQUIRED, LENGTH-FIXED } + /* Byte 36: Minimum Four Activate Window Time (t_FAW min), Most Significant Nibble */ + { 4, "tfaw_msn", REQUIRED, LENGTH-FIXED } + { 4, "reserved16", REQUIRED, LENGTH-FIXED } + /* Byte 37: Minimum Four Activate Window Time (t_FAW min), Least Significant Byte */ + { 8, "minimum_four_activate_window_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 38: Minimum Activate to Activate Delay Time (t_RRD_S min), different bank group */ + { 8, "minimum_active_to_active_refresh_time_different_bank_group", REQUIRED, LENGTH-FIXED } + /* Byte 39: Minimum Activate to Activate Delay Time (t_RRD_S min), same bank group */ + { 8, "minimum_active_to_active_refresh_time_same_bank_group", REQUIRED, LENGTH-FIXED } + /* Byte 40: Minimum CAS to CAS Delay Time (t_CCD_L min), same bank group */ + { 8, "minimum_cas_to_cas_time_same_bank_group", REQUIRED, LENGTH-FIXED } + /* Byte 41-59: Reserved */ + { 152, "reserved17", REQUIRED, LENGTH-FIXED } + /* Byte 60-77: Connector to SDRAM Bit Mapping */ + { 144, "connector_to_sdram_bit_mapping", REQUIRED, LENGTH-FIXED } + /* Byte 78-116: Reserved */ + { 312, "reserved18", REQUIRED, LENGTH-FIXED } + /* Byte 117: Fine Offset for Minimum CAS to CAS Delay Time (t_CCD_L min), same bank group */ + { 8, "fine_offset_for_minimum_cas_to_cas_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 118: Fine Offset for Minimum Activate to Activate Delay Time (t_RRD_L min), same bank group */ + { 8, "fine_offset_for_minimum_activate_to_activate_delay_time_same_bank_group", REQUIRED, LENGTH-FIXED } + /* Byte 119: Fine Offset for Minimum Activate to Activate Delay Time (t_RRD_S min), different bank group */ + { 8, "fine_offset_for_minimum_activate_to_activate_delay_time_different_bank_group", REQUIRED, LENGTH-FIXED } + /* Byte 120: Fine Offset for Minimum Activate to Activate/Refresh Delay Time (t_RC min) */ + { 8, "fine_offset_for_minimum_activate_to_activate_refresh_time", REQUIRED, LENGTH-FIXED } + /* Byte 121: Fine Offset for Minimum Row Precharge Delay Time (t_RP min) */ + { 8, "fine_offset_for_minimum_row_precharge_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 122: Fine Offset for Minimum RAS to CAS Delay Time (t_RCD min) */ + { 8, "fine_offset_for_minimum_ras_to_cas_delay_time", REQUIRED, LENGTH-FIXED } + /* Byte 123: Fine Offset for Minimum CAS Latency Time (t_AA min) */ + { 8, "fine_offset_for_minimum_cas_latency_time", REQUIRED, LENGTH-FIXED } + /* Byte 124: Fine Offset for SDRAM Maximum Cycle Time (t_CKAVG max) */ + { 8, "fine_offset_for_sdram_maximum_cycle_time", REQUIRED, LENGTH-FIXED } + /* Byte 125: Fine Offset for SDRAM Minimum Cycle Time (t_CKAVG min) */ + { 8, "fine_offset_for_sdram_minimum_cycle_time", REQUIRED, LENGTH-FIXED } + /* Byte 126-127: CRC for Base Configuration Section */ + { 16, "crc", REQUIRED, LENGTH-FIXED } + /* Byte 128-255: Module Specific Parameters */ + { 1024, "module_specific_sections", REQUIRED, LENGTH-FIXED } + /* Byte 256-319: Reserved */ + { 512, "reserved19", REQUIRED, LENGTH-FIXED } + /* Byte 320-383: Manufacturing Information */ + /* Bytes 320-321: Module Manufacturer's ID Code */ + { 7, "number_of_continuation_codes_module_manufacturer", REQUIRED, LENGTH-FIXED } + { 1, "odd_parity_byte_module_manufacturer", REQUIRED, LENGTH-FIXED } + { 8, "last_non_zero_module_manufacturer", REQUIRED, LENGTH-FIXED } + /* Byte 322: Module Manufacturing Location */ + { 8, "module_manufacturing_location", REQUIRED, LENGTH-FIXED } + /* Bytes 323-324: Module Manufacturing Date */ + { 8, "module_manufacturing_date.year", REQUIRED, LENGTH-FIXED } /* BCD encoded */ + { 8, "module_manufacturing_date.week", REQUIRED, LENGTH-FIXED } /* BCD encoded */ + /* Bytes 325-328: Module Serial Number */ + { 32, "module_serial_number", REQUIRED, LENGTH-FIXED } + /* Bytes 329-348: Module Part Number */ + { 160, "module_part_number", REQUIRED, LENGTH-FIXED } /* ASCII */ + /* Byte 349: Module Revision Code */ + { 16, "module_revision_code", REQUIRED, LENGTH-FIXED } + /* Bytes 350-351: DRAM Manufacturer's ID Code */ + { 7, "number_of_continuation_codes_dram_manufacturer", REQUIRED, LENGTH-FIXED } + { 1, "odd_parity_byte_dram_manufacturer", REQUIRED, LENGTH-FIXED } + { 8, "last_non_zero_dram_manufacturer", REQUIRED, LENGTH-FIXED } + /* Byte 352: DRAM Stepping */ + { 8, "dram_stepping", REQUIRED, LENGTH-FIXED } + /* Bytes 353-381: Module Manufacturer's Specific Data */ + { 232, "module_manufacturer_specific_data", REQUIRED, LENGTH-FIXED } + /* Bytes 382-383: Reserved */ + { 16, "reserved20", REQUIRED, LENGTH-FIXED } + /* Bytes 384-511: End User Programmable */ + { 1024, "end_user_programmable", OPTIONAL, LENGTH-VARIABLE } + +DDR4 SDRAM SPD Module Specific - Unbuffered Memory Module +--------------------------------------------------------- + +FIID Template: tmpl_fru_dimm_spd_ddr4_module_specific_unbuffered_memory_module + + /* Byte 128: Raw Card Extension, Module Nominal Height */ + { 5, "module_nominal_height", REQUIRED, LENGTH-FIXED } + { 3, "raw_card_extension", REQUIRED, LENGTH-FIXED } + /* Byte 129: Module Maximum Thickness */ + { 4, "module_maximum_thickness_front", REQUIRED, LENGTH-FIXED } + { 4, "module_maximum_thickness_back", REQUIRED, LENGTH-FIXED } + /* Byte 130: Reference Raw Card Used */ + { 5, "reference_raw_card", REQUIRED, LENGTH-FIXED } + { 2, "reference_raw_card_revision", REQUIRED, LENGTH-FIXED } + { 1, "reference_raw_card_extension", REQUIRED, LENGTH-FIXED } + /* Byte 131: Address Mapping from Edge Connector to DRAM */ + { 1, "rank_1_mapping", REQUIRED, LENGTH-FIXED } + { 7, "reserved1", REQUIRED, LENGTH-FIXED } + /* Bytes 132-253: Reserved */ + { 976, "reserved2", REQUIRED, LENGTH-FIXED } + /* Bytes 254-255: CRC */ + { 16, "crc", REQUIRED, LENGTH-FIXED } + +DDR4 SDRAM SPD Module Specific - Registered Memory Module +--------------------------------------------------------- + +FIID Template: tmpl_fru_dimm_spd_ddr4_module_specific_registered_memory_module + + /* Byte 128: Raw Card Extension, Module Nominal Height */ + { 5, "module_nominal_height", REQUIRED, LENGTH-FIXED } + { 3, "raw_card_extension", REQUIRED, LENGTH-FIXED } + /* Byte 129: Module Maximum Thickness */ + { 4, "module_maximum_thickness_front", REQUIRED, LENGTH-FIXED } + { 4, "module_maximum_thickness_back", REQUIRED, LENGTH-FIXED } + /* Byte 130: Reference Raw Card Used */ + { 5, "reference_raw_card", REQUIRED, LENGTH-FIXED } + { 2, "reference_raw_card_revision", REQUIRED, LENGTH-FIXED } + { 1, "reference_raw_card_extension", REQUIRED, LENGTH-FIXED } + /* Byte 131: DIMM Module Attributes */ + { 2, "number_of_registers_used_on_rdimm", REQUIRED, LENGTH-FIXED } + { 2, "number_of_rows_of_drams_on_rdimm", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + /* Byte 132: RDIMM Thermal Heat Spreader Solution */ + { 7, "heat_spreader_thermal_characteristics", REQUIRED, LENGTH-FIXED } + { 1, "heat_spreader_solution", REQUIRED, LENGTH-FIXED } + /* Bytes 133-134: Register Manufacturer ID Code */ + { 7, "number_of_continuation_codes_register_manufacturer", REQUIRED, LENGTH-FIXED } + { 1, "odd_parity_byte_register_manufacturer", REQUIRED, LENGTH-FIXED } + { 8, "last_non_zero_register_manufacturer", REQUIRED, LENGTH-FIXED } + /* Byte 135: Register Revision Number */ + { 8, "register_revision_number", REQUIRED, LENGTH-FIXED } + /* Byte 136: Address Mapping from Register to DRAM */ + { 1, "rank_1_mapping", REQUIRED, LENGTH-FIXED } + { 7, "reserved2", REQUIRED, LENGTH-FIXED } + /* Byte 137: Register Output Drive Strength for Control */ + { 2, "cke", REQUIRED, LENGTH-FIXED } + { 2, "odt", REQUIRED, LENGTH-FIXED } + { 2, "command_address", REQUIRED, LENGTH-FIXED } + { 2, "chip_select", REQUIRED, LENGTH-FIXED } + /* Byte 138: Register Output Drive Strength for CK */ + { 2, "y0_y2", REQUIRED, LENGTH-FIXED } + { 2, "y1_y3", REQUIRED, LENGTH-FIXED } + { 4, "reserved3", REQUIRED, LENGTH-FIXED } + /* Bytes 139-253: Reserved */ + { 920, "reserved4", REQUIRED, LENGTH-FIXED } + /* Bytes 254-255: CRC */ + { 16, "crc", REQUIRED, LENGTH-FIXED } + +DDR4 SDRAM SPD Module Specific - Load Reduction Memory Module +------------------------------------------------------------- + +FIID Template: tmpl_fru_dimm_spd_ddr4_module_specific_load_reduction_memory_module + + /* Byte 128: Raw Card Extension, Module Nominal Height */ + { 5, "module_nominal_height", REQUIRED, LENGTH-FIXED } + { 3, "raw_card_extension", REQUIRED, LENGTH-FIXED } + /* Byte 129: Module Maximum Thickness */ + { 4, "module_maximum_thickness_front", REQUIRED, LENGTH-FIXED } + { 4, "module_maximum_thickness_back", REQUIRED, LENGTH-FIXED } + /* Byte 130: Reference Raw Card Used */ + { 5, "reference_raw_card", REQUIRED, LENGTH-FIXED } + { 2, "reference_raw_card_revision", REQUIRED, LENGTH-FIXED } + { 1, "reference_raw_card_extension", REQUIRED, LENGTH-FIXED } + /* Byte 131: DIMM Module Attributes */ + { 2, "number_of_registers_used_on_lrdimm", REQUIRED, LENGTH-FIXED } + { 2, "number_of_rows_of_drams_on_lrdimm", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + /* Byte 132: LRDIMM Thermal Heat Spreader Solution */ + { 7, "heat_spreader_thermal_characteristics", REQUIRED, LENGTH-FIXED } + { 1, "heat_spreader_solution", REQUIRED, LENGTH-FIXED } + /* Bytes 133-134: Register and Data Buffer Manufacturer ID Code */ + { 7, "number_of_continuation_codes_memory_buffer_manufacturer", REQUIRED, LENGTH-FIXED } + { 1, "odd_parity_byte_memory_buffer_manufacturer", REQUIRED, LENGTH-FIXED } + { 8, "last_non_zero_memory_buffer_manufacturer", REQUIRED, LENGTH-FIXED } + /* Byte 135: Register Revision Number */ + { 8, "register_revision_number", REQUIRED, LENGTH-FIXED } + /* Byte 136: Address Mapping from Register to DRAM */ + { 1, "odd_rank_mapping", REQUIRED, LENGTH-FIXED } + { 7, "reserved2", REQUIRED, LENGTH-FIXED } + /* Byte 137: Register Output Drive Strength for Control and Command/Address */ + { 2, "cke", REQUIRED, LENGTH-FIXED } + { 2, "odt", REQUIRED, LENGTH-FIXED } + { 2, "command_address", REQUIRED, LENGTH-FIXED } + { 2, "chip_select", REQUIRED, LENGTH-FIXED } + /* Byte 138: Register Output Drive Strength for CK */ + { 2, "y0_y2", REQUIRED, LENGTH-FIXED } + { 2, "y1_y3", REQUIRED, LENGTH-FIXED } + { 4, "reserved3", REQUIRED, LENGTH-FIXED } + /* Byte 139: Drive Buffer Revision Number */ + { 8, "drive_buffer_revision_number", REQUIRED, LENGTH-FIXED } + /* Byte 140: DRAM VrefDQ for Package Rank 0 */ + { 6, "dram_vrefq_for_package_rank0_drams", REQUIRED, LENGTH-FIXED } + { 2, "reserved4", REQUIRED, LENGTH-FIXED } + /* Byte 141: DRAM VrefDQ for Package Rank 1 */ + { 6, "dram_vrefq_for_package_rank1_drams", REQUIRED, LENGTH-FIXED } + { 2, "reserved5", REQUIRED, LENGTH-FIXED } + /* Byte 142: DRAM VrefDQ for Package Rank 2 */ + { 6, "dram_vrefq_for_package_rank2_drams", REQUIRED, LENGTH-FIXED } + { 2, "reserved6", REQUIRED, LENGTH-FIXED } + /* Byte 143: DRAM VrefDQ for Package Rank 3 */ + { 6, "dram_vrefq_for_package_rank3_drams", REQUIRED, LENGTH-FIXED } + { 2, "reserved7", REQUIRED, LENGTH-FIXED } + /* Byte 144: Data Buffer VrefDQ for DRAM Interface */ + { 8, "data_buffer_vrefq_for_dram", REQUIRED, LENGTH-FIXED } + /* Byte 145: Data Buffer MDQ Drive Strength and RTT for data rate <= 1866 */ + { 3, "dram_interface_mdq_read_termination_strength_lt_1866", REQUIRED, LENGTH-FIXED } + { 1, "reserved8", REQUIRED, LENGTH-FIXED } + { 3, "dram_interface_mdq_drive_strength_lt_1866", REQUIRED, LENGTH-FIXED } + { 1, "reserved9", REQUIRED, LENGTH-FIXED } + /* Byte 146: Data Buffer MDQ Drive Strength and RTT for 1866 < data rate <= 2400 */ + { 3, "dram_interface_mdq_read_termination_strength_lt_2400", REQUIRED, LENGTH-FIXED } + { 1, "reserved10", REQUIRED, LENGTH-FIXED } + { 3, "dram_interface_mdq_drive_strength_lt_2400", REQUIRED, LENGTH-FIXED } + { 1, "reserved11", REQUIRED, LENGTH-FIXED } + /* Byte 147: Data Buffer MDQ Drive Strength and RTT for 2400 < data rate <= 3200 */ + { 3, "dram_interface_mdq_read_termination_strength_lt_3200", REQUIRED, LENGTH-FIXED } + { 1, "reserved12", REQUIRED, LENGTH-FIXED } + { 3, "dram_interface_mdq_drive_strength_lt_3200", REQUIRED, LENGTH-FIXED } + { 1, "reserved13", REQUIRED, LENGTH-FIXED } + /* Byte 148: DRAM Drive Strength (for data rates <= 1866, 1866 < data rate < 2400, and 2400 < data rate <= 3200) */ + { 2, "dram_drive_strength_lt_1866", REQUIRED, LENGTH-FIXED } + { 2, "dram_drive_strength_lt_2400", REQUIRED, LENGTH-FIXED } + { 2, "dram_drive_strength_lt_3200", REQUIRED, LENGTH-FIXED } + { 2, "reserved14", REQUIRED, LENGTH-FIXED } + /* Byte 149: DRAM ODT (RTT_WR, RTT_NOM) for data rate <= 1866 */ + { 3, "dram_odt_strength_rtt_nom_lt_1866", REQUIRED, LENGTH-FIXED } + { 3, "dram_odt_strength_rtt_wr_lt_1866", REQUIRED, LENGTH-FIXED } + { 2, "reserved15", REQUIRED, LENGTH-FIXED } + /* Byte 150: DRAM ODT (RTT_WR, RTT_NOM) for 1866 < data rate <= 2400 */ + { 3, "dram_odt_strength_rtt_nom_lt_2400", REQUIRED, LENGTH-FIXED } + { 3, "dram_odt_strength_rtt_wr_lt_2400", REQUIRED, LENGTH-FIXED } + { 2, "reserved16", REQUIRED, LENGTH-FIXED } + /* Byte 151: DRAM ODT (RTT_WR, RTT_NOM) for 2400 < data rat e<= 3200 */ + { 3, "dram_odt_strength_rtt_nom_lt_3200", REQUIRED, LENGTH-FIXED } + { 3, "dram_odt_strength_rtt_wr_lt_3200", REQUIRED, LENGTH-FIXED } + { 2, "reserved17", REQUIRED, LENGTH-FIXED } + /* Byte 152: DRAM ODT (RTT_PARK) for data rate <= 1866 */ + { 3, "dram_odt_strength_rtt_park_ranks_0_1_lt_1866", REQUIRED, LENGTH-FIXED } + { 3, "dram_odt_strength_rtt_park_ranks_2_3_lt_1866", REQUIRED, LENGTH-FIXED } + { 2, "reserved18", REQUIRED, LENGTH-FIXED } + /* Byte 153: DRAM ODT (RTT_PARK) for 1866 < data rate <= 2400 */ + { 3, "dram_odt_strength_rtt_park_ranks_0_1_lt_2400", REQUIRED, LENGTH-FIXED } + { 3, "dram_odt_strength_rtt_park_ranks_2_3_lt_2400", REQUIRED, LENGTH-FIXED } + { 2, "reserved19", REQUIRED, LENGTH-FIXED } + /* Byte 153: DRAM ODT (RTT_PARK) for 2400 < data rate <= 3200 */ + { 3, "dram_odt_strength_rtt_park_ranks_0_1_lt_3200", REQUIRED, LENGTH-FIXED } + { 3, "dram_odt_strength_rtt_park_ranks_2_3_lt_3200", REQUIRED, LENGTH-FIXED } + { 2, "reserved20", REQUIRED, LENGTH-FIXED } + /* Bytes 139-253: Reserved */ + { 792, "reserved4", REQUIRED, LENGTH-FIXED } + /* Bytes 254-255: CRC */ + { 16, "crc", REQUIRED, LENGTH-FIXED } + { 0, "", 0} + + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_FRU_DIMMSPD_RECORD_FORMAT_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-information-record-format-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-information-record-format-templates.h new file mode 100644 index 00000000..7529c4ae --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-information-record-format-templates.h @@ -0,0 +1,201 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_FRU_INFORMATION_RECORD_FORMAT_TEMPLATES_H +#define IPMI_FRU_INFORMATION_RECORD_FORMAT_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +FRU Common Header +----------------- + +FIID Template: tmpl_fru_common_header + + { 4, "format_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "internal_use_area_starting_offset", REQUIRED, LENGTH-FIXED } + { 8, "chassis_info_area_starting_offset", REQUIRED, LENGTH-FIXED } + { 8, "board_info_area_starting_offset", REQUIRED, LENGTH-FIXED } + { 8, "product_info_area_starting_offset", REQUIRED, LENGTH-FIXED } + { 8, "multirecord_area_starting_offset", REQUIRED, LENGTH-FIXED } + { 8, "pad", REQUIRED, LENGTH-FIXED } + { 8, "checksum", REQUIRED, LENGTH-FIXED } + +FRU Info Area Header +-------------------- + +FIID Template: tmpl_fru_info_area_header + + { 4, "format_version", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "info_area_length", REQUIRED, LENGTH-FIXED } + +FRU Multirecord Area Header +--------------------------- + +FIID Template: tmpl_fru_multirecord_area_header + + { 8, "record_type_id", REQUIRED, LENGTH-FIXED } + { 4, "record_format_version", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "end_of_list", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + { 8, "record_checksum", REQUIRED, LENGTH-FIXED } + { 8, "header_checksum", REQUIRED, LENGTH-FIXED } + +FRU Power Supply Information +---------------------------- + +FIID Template: tmpl_fru_power_supply_information + + { 12, "overall_capacity", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 16, "peak_va", REQUIRED, LENGTH-FIXED } + { 8, "inrush_current", REQUIRED, LENGTH-FIXED } + { 8, "inrush_interval", REQUIRED, LENGTH-FIXED } + { 16, "low_end_input_voltage_range_1", REQUIRED, LENGTH-FIXED } + { 16, "high_end_input_voltage_range_1", REQUIRED, LENGTH-FIXED } + { 16, "low_end_input_voltage_range_2", REQUIRED, LENGTH-FIXED } + { 16, "high_end_input_voltage_range_2", REQUIRED, LENGTH-FIXED } + { 8, "low_end_input_frequency_range", REQUIRED, LENGTH-FIXED } + { 8, "high_end_input_frequency_range", REQUIRED, LENGTH-FIXED } + { 8, "ac_dropout_tolerance", REQUIRED, LENGTH-FIXED } + { 1, "predictive_fail_support", REQUIRED, LENGTH-FIXED } + { 1, "power_factor_correction", REQUIRED, LENGTH-FIXED } + { 1, "autoswitch", REQUIRED, LENGTH-FIXED } + { 1, "hot_swap_support", REQUIRED, LENGTH-FIXED } + { 1, "tachometer_pulses_per_rotation_predictive_fail_polarity", REQUIRED, LENGTH-FIXED } + { 3, "reserved2", REQUIRED, LENGTH-FIXED } + { 12, "peak_capacity", REQUIRED, LENGTH-FIXED } + { 4, "hold_up_time", REQUIRED, LENGTH-FIXED } + { 4, "voltage_2", REQUIRED, LENGTH-FIXED } + { 4, "voltage_1", REQUIRED, LENGTH-FIXED } + { 16, "total_combined_wattage", REQUIRED, LENGTH-FIXED } + { 8, "predictive_fail_tachometer_lower_threshold", REQUIRED, LENGTH-FIXED } + +FRU DC Output +------------- + +FIID Template: tmpl_fru_dc_output + + { 4, "output_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "standby", REQUIRED, LENGTH-FIXED } + { 16, "nominal_voltage", REQUIRED, LENGTH-FIXED } + { 16, "maximum_negative_voltage_deviation", REQUIRED, LENGTH-FIXED } + { 16, "maximum_positive_voltage_deviation", REQUIRED, LENGTH-FIXED } + { 16, "ripple_and_noise_pk_pk", REQUIRED, LENGTH-FIXED } + { 16, "minimum_current_draw", REQUIRED, LENGTH-FIXED } + { 16, "maximum_current_draw", REQUIRED, LENGTH-FIXED } + +FRU DC Load +----------- + +FIID Template: tmpl_fru_dc_load + + { 4, "output_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 16, "nominal_voltage", REQUIRED, LENGTH-FIXED } + { 16, "specd_minimum_voltage", REQUIRED, LENGTH-FIXED } + { 16, "specd_maximum_voltage", REQUIRED, LENGTH-FIXED } + { 16, "specd_ripple_and_noise_pk_pk", REQUIRED, LENGTH-FIXED } + { 16, "minimum_current_load", REQUIRED, LENGTH-FIXED } + { 16, "maximum_current_load", REQUIRED, LENGTH-FIXED } + +FRU Management Access Record +---------------------------- + +FIID Template: tmpl_fru_management_access_record + + { 8, "sub_record_type", REQUIRED, LENGTH-FIXED } + { 2048, "record", REQUIRED, LENGTH-VARIABLE } + +FRU Base Compatability Record +----------------------------- + +FIID Template: tmpl_fru_base_compatibility_record + + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_code", REQUIRED, LENGTH-FIXED } + { 8, "compatibility_base", REQUIRED, LENGTH-FIXED } + { 7, "compatibility_code_start_value", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 4096, "code_range_mask", REQUIRED, LENGTH-VARIABLE } + +FRU Extended Compatability Record +--------------------------------- + +FIID Template: tmpl_fru_extended_compatibility_record + + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_code", REQUIRED, LENGTH-FIXED } + { 8, "compatibility_base", REQUIRED, LENGTH-FIXED } + { 7, "compatibility_code_start_value", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 4096, "code_range_mask", REQUIRED, LENGTH-VARIABLE } + +FRU OEM Record +-------------- + +FIID Template: tmpl_fru_oem_record + + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4096, "oem_data", REQUIRED, LENGTH-VARIABLE } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_FRU_INFORMATION_RECORD_FORMAT_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-inventory-device-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-inventory-device-cmds-templates.h new file mode 100644 index 00000000..b11cce5e --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-fru-inventory-device-cmds-templates.h @@ -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 . + * + */ + +#ifndef IPMI_FRU_INVENTORY_DEVICE_CMDS_TEMPLATES_H +#define IPMI_FRU_INVENTORY_DEVICE_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Get FRU Inventory Area Info Request +----------------------------------- + +FIID Template: tmpl_cmd_get_fru_inventory_area_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "fru_device_id", REQUIRED, LENGTH-FIXED } + +Get FRU Inventory Area Info Response +------------------------------------ + +FIID Template: tmpl_cmd_get_fru_inventory_area_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "fru_inventory_area_size", REQUIRED, LENGTH-FIXED } + { 1, "device_is_accessed", REQUIRED, LENGTH-FIXED } + { 7, "reserved", REQUIRED, LENGTH-FIXED } + +Read FRU Data Request +--------------------- + +FIID Template: tmpl_cmd_read_fru_data_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "fru_device_id", REQUIRED, LENGTH-FIXED } + { 16, "fru_inventory_offset_to_read", REQUIRED, LENGTH-FIXED } + { 8, "count_to_read", REQUIRED, LENGTH-FIXED } + +Read FRU Data Response +---------------------- + +FIID Template: tmpl_cmd_read_fru_data_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "count_returned", REQUIRED, LENGTH-FIXED } + { 2040, "requested_data", OPTIONAL, LENGTH-VARIABLE } + +Write FRU Data Request +---------------------- + +FIID Template: tmpl_cmd_write_fru_data_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "fru_device_id", REQUIRED, LENGTH-FIXED } + { 16, "fru_inventory_offset_to_write", REQUIRED, LENGTH-FIXED } + { 2040, "data_to_write", REQUIRED, LENGTH-VARIABLE } + +Write FRU Data Response +----------------------- + +FIID Template: tmpl_cmd_write_fru_data_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "count_written", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_FRU_INVENTORY_DEVICE_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-ipmb-interface-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-ipmb-interface-templates.h new file mode 100644 index 00000000..a699b40b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-ipmb-interface-templates.h @@ -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 . + * + */ + +#ifndef IPMI_IPMB_INTERFACE_TEMPLATES_H +#define IPMI_IPMB_INTERFACE_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +IPMB Message Header Request +--------------------------- + +FIID Template: tmpl_ipmb_msg_hdr_rq + + { 8, "rs_addr", REQUIRED, LENGTH-FIXED } + { 2, "rs_lun", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 8, "checksum1", REQUIRED, LENGTH-FIXED } + { 8, "rq_addr", REQUIRED, LENGTH-FIXED } + { 2, "rq_lun", REQUIRED, LENGTH-FIXED } + { 6, "rq_seq", REQUIRED, LENGTH-FIXED } + +IPMB Message Header Response +---------------------------- + +FIID Template: tmpl_ipmb_msg_hdr_rs + + { 2, "rq_lun", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 8, "checksum1", REQUIRED, LENGTH-FIXED } + { 8, "rs_addr", REQUIRED, LENGTH-FIXED } + { 2, "rs_lun", REQUIRED, LENGTH-FIXED } + { 6, "rq_seq", REQUIRED, LENGTH-FIXED } + +FIID Template: tmpl_ipmb_msg_trlr + + { 8, "checksum2", REQUIRED, LENGTH-FIXED } + +FIID Template: tmpl_ipmb_msg + + { 2040, "data", REQUIRED, LENGTH-VARIABLE } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_IPMB_INTERFACE_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-kcs-interface-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-kcs-interface-templates.h new file mode 100644 index 00000000..5ad943fe --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-kcs-interface-templates.h @@ -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 . + * + */ + +#ifndef IPMI_KCS_INTERFACE_TEMPLATES_H +#define IPMI_KCS_INTERFACE_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +KCS Header +---------- + +FIID Template: tmpl_hdr_kcs + + { 2, "lun", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_KCS_INTERFACE_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-lan-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-lan-cmds-templates.h new file mode 100644 index 00000000..83f982c6 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-lan-cmds-templates.h @@ -0,0 +1,815 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_LAN_CMDS_TEMPLATES_H +#define IPMI_LAN_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Set LAN Configuration Parameters Request +---------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Set LAN Configuration Parameters Response +----------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set LAN Configuration Parameters (Set In Progress) Request +---------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_set_in_progress_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Authentication Type Enables) Request +---------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_authentication_type_enables_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + + { 1, "callback_level.none", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "callback_level.reserved2", REQUIRED, LENGTH-FIXED } + + { 1, "user_level.none", REQUIRED, LENGTH-FIXED } + { 1, "user_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "user_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "user_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "user_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "user_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "user_level.reserved2", REQUIRED, LENGTH-FIXED } + + { 1, "operator_level.none", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "operator_level.reserved2", REQUIRED, LENGTH-FIXED } + + { 1, "admin_level.none", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "admin_level.reserved2", REQUIRED, LENGTH-FIXED } + + { 1, "oem_level.none", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "oem_level.reserved2", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (IP Address) Request +----------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_ip_address_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 32, "ip_address", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (IP Address Source) Request +------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_ip_address_source_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 4, "ip_address_source", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (MAC Address) Request +------------------------------------------------------ + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_mac_address_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 48, "mac_address", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Subnet Mask) Request +------------------------------------------------------ + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_subnet_mask_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 32, "subnet_mask", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (BMC Generated ARP Control) Request +-------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_bmc_generated_arp_control_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "bmc_generated_gratuitous_arps", REQUIRED, LENGTH-FIXED } + { 1, "bmc_generated_arp_responses", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Gratuitous ARP Interval) Request +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_gratuitous_arp_interval_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "gratuitous_arp_interval", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Default Gateway Address) Request +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_default_gateway_address_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 32, "ip_address", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Default Gateway MAC Address) Request +---------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_default_gateway_mac_address_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 48, "mac_address", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Backup Gateway Address) Request +----------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_backup_gateway_address_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 32, "ip_address", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Backup Gateway MAC Address) Request +--------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_backup_gateway_mac_address_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 48, "mac_address", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Community String) Request +----------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_community_string_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 144, "community_string", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Destination Type) Request +----------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_destination_type_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 4, "destination_selector", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 3, "destination_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved3", REQUIRED, LENGTH-FIXED } + { 1, "alert_acknowledge", REQUIRED, LENGTH-FIXED } + { 8, "alert_acknowledge_timeout", REQUIRED, LENGTH-FIXED } + { 3, "retries", REQUIRED, LENGTH-FIXED } + { 1, "reserved4", REQUIRED, LENGTH-FIXED } + { 4, "reserved5", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (Destination Addresses) Request +---------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_destination_addresses_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 4, "destination_selector", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 4, "reserved3", REQUIRED, LENGTH-FIXED } + { 4, "address_format", REQUIRED, LENGTH-FIXED } + { 1, "gateway_selector", REQUIRED, LENGTH-FIXED } + { 7, "reserved4", REQUIRED, LENGTH-FIXED } + { 32, "alerting_ip_address", REQUIRED, LENGTH-FIXED } + { 48, "alerting_mac_address", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (VLAN ID) Request +-------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_vlan_id_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 12, "vlan_id", REQUIRED, LENGTH-FIXED } + { 3, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "vlan_id_enable", REQUIRED, LENGTH-FIXED } + + Notes: Vlan ID LS byte first. + +Set LAN Configuration Parameters (VLAN Priority) Request +-------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_vlan_priority_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 3, "vlan_priority", REQUIRED, LENGTH-FIXED } + { 2, "unspecified", REQUIRED, LENGTH-FIXED } + { 3, "reserved2", REQUIRED, LENGTH-FIXED } + +Set LAN Configuration Parameters (RMCP+ Messaging Cipher Suite Privilege Levels) Request +---------------------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "reserved2", REQUIRED, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_1", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_2", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_3", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_4", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_5", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_6", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_7", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_8", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_9", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_10", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_11", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_12", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_13", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_14", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_15", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_16", OPTIONAL, LENGTH-FIXED } + +Set LAN Configuration Parameters (Bad Password Threshold) Request +----------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_lan_configuration_parameters_bad_password_threshold_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "user_disabled_event_message", REQUIRED, LENGTH-FIXED } + { 7, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "bad_password_threshold_number", REQUIRED, LENGTH-FIXED } + { 16, "attempt_count_reset_interval", REQUIRED, LENGTH-FIXED } + { 16, "user_lockout_interval", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters Request +---------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "get_parameter", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 8, "block_selector", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters Response +----------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Get LAN Configuration Parameters (Set In Progress) Response +----------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_set_in_progress_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Authentication Type Support) Response +----------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_authentication_type_support_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1, "none", REQUIRED, LENGTH-FIXED } + { 1, "md2", REQUIRED, LENGTH-FIXED } + { 1, "md5", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "straight_password", REQUIRED, LENGTH-FIXED } + { 1, "oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + + Notes: Read only field, no "set" equivalent. + +Get LAN Configuration Parameters (Authentication Type Enables) Response +----------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_authentication_type_enables_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.none", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "callback_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "callback_level.reserved2", REQUIRED, LENGTH-FIXED } + { 1, "user_level.none", REQUIRED, LENGTH-FIXED } + { 1, "user_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "user_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "user_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "user_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "user_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "user_level.reserved2", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.none", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "operator_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "operator_level.reserved2", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.none", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "admin_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "admin_level.reserved2", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.none", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.md2", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.md5", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.straight_password", REQUIRED, LENGTH-FIXED } + { 1, "oem_level.oem_proprietary", REQUIRED, LENGTH-FIXED } + { 2, "oem_level.reserved2", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (IP Address) Response +------------------------------------------------------ + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_ip_address_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 32, "ip_address", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (IP Address Source) Response +------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_ip_address_source_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 4, "ip_address_source", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (MAC Address) Response +------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_mac_address_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 48, "mac_address", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Subnet Mask) Response +------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_subnet_mask_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 32, "subnet_mask", REQUIRED, LENGTH-FIXED } + + +Get LAN Configuration Parameters (BMC Generated ARP Control) Response +--------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_bmc_generated_arp_control_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1, "bmc_generated_gratuitous_arps", REQUIRED, LENGTH-FIXED } + { 1, "bmc_generated_arp_responses", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Gratuitous ARP Interval) Response +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_gratuitous_arp_interval_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "gratuitous_arp_interval", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Default Gateway Address) Response +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_default_gateway_address_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 32, "ip_address", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Default Gateway MAC Address) Response +----------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_default_gateway_mac_address_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 48, "mac_address", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Backup Gateway Address) Response +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_backup_gateway_address_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 32, "ip_address", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Backup Gateway MAC Address) Response +---------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_backup_gateway_mac_address_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 48, "mac_address", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Community String) Response +------------------------------------------------------------ + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_community_string_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 144, "community_string", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Number of Destinations) Response +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_number_of_destinations_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 4, "number_of_lan_destinations", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Destination Type) Response +------------------------------------------------------------ + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_destination_type_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 4, "destination_selector", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 3, "destination_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "alert_acknowledge", REQUIRED, LENGTH-FIXED } + { 8, "alert_acknowledge_timeout", REQUIRED, LENGTH-FIXED } + { 3, "retries", REQUIRED, LENGTH-FIXED } + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + { 4, "reserved4", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (Destination Addresses) Response +----------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_destination_addresses_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 4, "destination_selector", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 4, "address_format", REQUIRED, LENGTH-FIXED } + { 7, "reserved3", REQUIRED, LENGTH-FIXED } + { 1, "gateway_selector", REQUIRED, LENGTH-FIXED } + { 32, "alerting_ip_address", REQUIRED, LENGTH-FIXED } + { 48, "alerting_mac_address", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (VLAN ID) Response +--------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_vlan_id_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 12, "vlan_id", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "vlan_id_enable", REQUIRED, LENGTH-FIXED } + + Notes: Vlan ID LS byte first. + +Get LAN Configuration Parameters (VLAN Priority) Response +--------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_vlan_priority_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 3, "vlan_priority", REQUIRED, LENGTH-FIXED } + { 2, "unspecified", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + +Get LAN Configuration Parameters (RMCP+ Messaging Cipher Suite Entry Support) Response +-------------------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entry_support_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 5, "cipher_suite_entry_count", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + + Notes: Read only field, no "set" equivalent. + +Get LAN Configuration Parameters (RMCP+ Messaging Cipher Suite Entries) Response +-------------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entries_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_A", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_B", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_C", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_D", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_E", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_F", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_G", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_H", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_I", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_J", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_K", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_L", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_M", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_N", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_O", OPTIONAL, LENGTH-FIXED } + { 8, "cipher_suite_id_entry_P", OPTIONAL, LENGTH-FIXED } + + Notes: Read only field, no "set" equivalent. + +Get LAN Configuration Parameters (RMCP+ Messaging Cipher Suite Privilege Levels) Response +----------------------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "reserved", REQUIRED, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_1", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_2", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_3", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_4", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_5", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_6", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_7", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_8", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_9", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_10", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_11", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_12", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_13", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_14", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_15", OPTIONAL, LENGTH-FIXED } + { 4, "maximum_privilege_for_cipher_suite_16", OPTIONAL, LENGTH-FIXED } + +Get LAN Configuration Parameters (Bad Password Threshold) Response +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_get_lan_configuration_parameters_bad_password_threshold_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1, "user_disabled_event_message", REQUIRED, LENGTH-FIXED } + { 7, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "bad_password_threshold_number", REQUIRED, LENGTH-FIXED } + { 16, "attempt_count_reset_interval", REQUIRED, LENGTH-FIXED } + { 16, "user_lockout_interval", REQUIRED, LENGTH-FIXED } + +Suspend BMC ARPs Request +------------------------ + +FIID Template: tmpl_cmd_suspend_bmc_arps_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "gratuitous_arp_suspend", REQUIRED, LENGTH-FIXED } + { 1, "arp_response_suspend", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Suspend BMC ARPs Response +------------------------- + +FIID Template: tmpl_cmd_suspend_bmc_arps_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "gratuitous_arp_response_status", REQUIRED, LENGTH-FIXED } + { 1, "arp_response_status", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Get IP UDP RMCP Statistics Request +---------------------------------- + +FIID Template: tmpl_cmd_get_ip_udp_rmcp_statistics_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "clear_all_statistics", REQUIRED, LENGTH-FIXED } + { 7, "reserved2", REQUIRED, LENGTH-FIXED } + +Get IP UDP RMCP Statistics Response +----------------------------------- + +FIID Template: tmpl_cmd_get_ip_udp_rmcp_statistics_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "ip_packets_received", REQUIRED, LENGTH-FIXED } + { 16, "received_ip_header_errors", REQUIRED, LENGTH-FIXED } + { 16, "received_ip_address_errors", REQUIRED, LENGTH-FIXED } + { 16, "fragmented_ip_packets_received", REQUIRED, LENGTH-FIXED } + { 16, "ip_packets_transmitted", REQUIRED, LENGTH-FIXED } + { 16, "udp_packets_received", REQUIRED, LENGTH-FIXED } + { 16, "valid_rmcp_packets_received", REQUIRED, LENGTH-FIXED } + { 16, "udp_proxy_packets_received", REQUIRED, LENGTH-FIXED } + { 16, "udp_proxy_packets_dropped", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_LAN_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-lan-interface-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-lan-interface-templates.h new file mode 100644 index 00000000..fd8ded22 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-lan-interface-templates.h @@ -0,0 +1,109 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_LAN_INTERFACE_TEMPLATES_H +#define IPMI_LAN_INTERFACE_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +LAN Session Header +------------------ + +FIID Template: tmpl_lan_session_hdr + + { 8, "authentication_type", REQUIRED, LENGTH-FIXED } + { 32, "session_sequence_number", REQUIRED, LENGTH-FIXED } + { 32, "session_id", REQUIRED, LENGTH-FIXED } + { 128, "authentication_code", OPTIONAL, LENGTH-FIXED } + { 8, "ipmi_msg_len", REQUIRED, LENGTH-FIXED } + +LAN Message Header Request +-------------------------- + +FIID Template: tmpl_lan_msg_hdr_rq + + { 8, "rs_addr", REQUIRED, LENGTH-FIXED } + { 2, "rs_lun", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 8, "checksum1", REQUIRED, LENGTH-FIXED } + { 8, "rq_addr", REQUIRED, LENGTH-FIXED } + { 2, "rq_lun", REQUIRED, LENGTH-FIXED } + { 6, "rq_seq", REQUIRED, LENGTH-FIXED } + +LAN Message Header Response +--------------------------- + +FIID Template: tmpl_lan_msg_hdr_rs + + { 8, "rq_addr", REQUIRED, LENGTH-FIXED } + { 2, "rq_lun", REQUIRED, LENGTH-FIXED } + { 6, "net_fn", REQUIRED, LENGTH-FIXED } + { 8, "checksum1", REQUIRED, LENGTH-FIXED } + { 8, "rs_addr", REQUIRED, LENGTH-FIXED } + { 2, "rs_lun", REQUIRED, LENGTH-FIXED } + { 6, "rq_seq", REQUIRED, LENGTH-FIXED } + +LAN Message Trailer +------------------- + +FIID Template: tmpl_lan_msg_trlr + + { 8, "checksum2", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_LAN_INTERFACE_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-messaging-support-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-messaging-support-cmds-templates.h new file mode 100644 index 00000000..37df018a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-messaging-support-cmds-templates.h @@ -0,0 +1,1039 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_MESSAGING_SUPPORT_CMDS_TEMPLATES_H +#define IPMI_MESSAGING_SUPPORT_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Set BMC Global Enables Request +------------------------------ + +FIID Template: tmpl_cmd_set_bmc_global_enables_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 1, "receive_message_queue_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "event_message_buffer_full_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "event_message_buffer", REQUIRED, LENGTH-FIXED } + { 1, "system_event_logging", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "oem_0", REQUIRED, LENGTH-FIXED } + { 1, "oem_1", REQUIRED, LENGTH-FIXED } + { 1, "oem_2", REQUIRED, LENGTH-FIXED } + +Set BMC Global Enables Response +------------------------------- + +FIID Template: tmpl_cmd_set_bmc_global_enables_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get BMC Global Enables Request +------------------------------ + +FIID Template: tmpl_cmd_get_bmc_global_enables_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get BMC Global Enables Response +------------------------------- + +FIID Template: tmpl_cmd_get_bmc_global_enables_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "receive_message_queue_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "event_message_buffer_full_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "event_message_buffer", REQUIRED, LENGTH-FIXED } + { 1, "system_event_logging", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "oem_0", REQUIRED, LENGTH-FIXED } + { 1, "oem_1", REQUIRED, LENGTH-FIXED } + { 1, "oem_2", REQUIRED, LENGTH-FIXED } + +Clear Message Flags Request +--------------------------- + +FIID Template: tmpl_cmd_clear_message_flags_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 1, "clear_receive_message_queue", REQUIRED, LENGTH-FIXED } + { 1, "clear_event_message_buffer", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "clear_watchdog_pre_timeout_interrupt_flag", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "clear_oem_0", REQUIRED, LENGTH-FIXED } + { 1, "clear_oem_1", REQUIRED, LENGTH-FIXED } + { 1, "clear_oem_2", REQUIRED, LENGTH-FIXED } + +Clear Message Flags Response +---------------------------- + +FIID Template: tmpl_cmd_clear_message_flags_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Message Flags Request +------------------------- + +FIID Template: tmpl_cmd_get_message_flags_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Message Flags Response +-------------------------- + +FIID Template: tmpl_cmd_get_message_flags_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "receive_message_available", REQUIRED, LENGTH-FIXED } + { 1, "event_message_buffer_full", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "watchdog_pre_timeout_interrupt_occurred", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "oem_0_data_available", REQUIRED, LENGTH-FIXED } + { 1, "oem_1_data_available", REQUIRED, LENGTH-FIXED } + { 1, "oem_2_data_available", REQUIRED, LENGTH-FIXED } + +Enable Message Channel Receive Request +-------------------------------------- + +FIID Template: tmpl_cmd_enable_message_channel_receive_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 2, "channel_operation", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Enable Message Channel Receive Response +--------------------------------------- + +FIID Template: tmpl_cmd_enable_message_channel_receive_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "channel_state", REQUIRED, LENGTH-FIXED } + { 7, "reserved2", REQUIRED, LENGTH-FIXED } + +Get Message Request +------------------- + +FIID Template: tmpl_cmd_get_message_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Message Response +-------------------- + +FIID Template: tmpl_cmd_get_message_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "inferred_privilege_level", REQUIRED, LENGTH-FIXED } + { 1024, "message_data", OPTIONAL, LENGTH-VARIABLE } + +Send Message Request +-------------------- + +FIID Template: tmpl_cmd_send_message_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 1, "send_message_with_authentication", REQUIRED, LENGTH-FIXED } + { 1, "send_message_with_encryption", REQUIRED, LENGTH-FIXED } + { 2, "tracking_operation", REQUIRED, LENGTH-FIXED } + { 1024, "message_data", REQUIRED, LENGTH-VARIABLE } + +Send Message Response +--------------------- + +FIID Template: tmpl_cmd_send_message_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1024, "response_data", OPTIONAL, LENGTH-VARIABLE } + +Read Event Message Buffer Request +--------------------------------- + +FIID Template: tmpl_cmd_read_event_message_buffer_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Read Event Message Buffer Response +---------------------------------- + +FIID Template: tmpl_cmd_read_event_message_buffer_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 128, "message_data", REQUIRED, LENGTH-FIXED } + +Get System Interface Capabilities Request +----------------------------------------- + +FIID Template: tmpl_cmd_get_system_interface_capabilities_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "system_interface", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + + +Get System Interface Capabilities Response +------------------------------------------ + +FIID Template: tmpl_cmd_get_system_interface_capabilities_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "reserved1", REQUIRED, LENGTH-FIXED } + { 32, "data", OPTIONAL, LENGTH-VARIABLE } + +Get System Interface Capabilities (SSIF) Response +-------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_interface_capabilities_ssif_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "reserved1", REQUIRED, LENGTH-FIXED } + { 3, "ssif_version", REQUIRED, LENGTH-FIXED } + { 1, "pec_support", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "transaction_support", REQUIRED, LENGTH-FIXED } + { 8, "input_message_size", REQUIRED, LENGTH-FIXED } + { 8, "output_message_size", REQUIRED, LENGTH-FIXED } + +Get System Interface Capabilities (KCS) Response +------------------------------------------------ + +FIID Template: tmpl_cmd_get_system_interface_capabilities_kcs_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "reserved1", REQUIRED, LENGTH-FIXED } + { 3, "system_interface_version", REQUIRED, LENGTH-FIXED } + { 5, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "input_maximum_message_size", REQUIRED, LENGTH-FIXED } + +Get BT Interface Capabilities Request +------------------------------------- + +FIID Template: tmpl_cmd_get_bt_interface_capabilities_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get BT Interface Capabilities Response +-------------------------------------- + +FIID Template: tmpl_cmd_get_bt_interface_capabilities_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "number_of_outstanding_requests_supported", REQUIRED, LENGTH-FIXED } + { 8, "input_buffer_size", REQUIRED, LENGTH-FIXED } + { 8, "output_buffer_size", REQUIRED, LENGTH-FIXED } + { 8, "bmc_request_to_response_time", REQUIRED, LENGTH-FIXED } + { 8, "recommended_retries", REQUIRED, LENGTH-FIXED } + +Master Write-Read Request +------------------------- + +FIID Template: tmpl_cmd_master_write_read_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 1, "bus_type", REQUIRED, LENGTH-FIXED } + { 3, "bus_id", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 7, "slave_address", REQUIRED, LENGTH-FIXED } + { 8, "read_count", REQUIRED, LENGTH-FIXED } + { 2040, "data", OPTIONAL, LENGTH-VARIABLE } + +Master Write-Read Response +-------------------------- + +FIID Template: tmpl_cmd_master_write_read_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 2040, "data", OPTIONAL, LENGTH-VARIABLE } + +Get Channel Authentication Capabilities Request +----------------------------------------------- + +FIID Template: tmpl_cmd_get_channel_authentication_capabilities_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "get_ipmi_v2.0_extended_data", REQUIRED, LENGTH-FIXED } + { 4, "maximum_privilege_level", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + +Get Channel Authentication Capabilities Response +------------------------------------------------ + +FIID Template: tmpl_cmd_get_channel_authentication_capabilities_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "channel_number", REQUIRED, LENGTH-FIXED } + { 1, "authentication_type.none", REQUIRED, LENGTH-FIXED } + { 1, "authentication_type.md2", REQUIRED, LENGTH-FIXED } + { 1, "authentication_type.md5", REQUIRED, LENGTH-FIXED } + { 1, "authentication_type.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "authentication_type.straight_password_key", REQUIRED, LENGTH-FIXED } + { 1, "authentication_type.oem_prop", REQUIRED, LENGTH-FIXED } + { 1, "authentication_type.reserved2", REQUIRED, LENGTH-FIXED } + { 1, "authentication_type.ipmi_v2.0_extended_capabilities_available", REQUIRED, LENGTH-FIXED } + { 1, "authentication_status.anonymous_login", REQUIRED, LENGTH-FIXED } + { 1, "authentication_status.null_username", REQUIRED, LENGTH-FIXED } + { 1, "authentication_status.non_null_username", REQUIRED, LENGTH-FIXED } + { 1, "authentication_status.user_level_authentication", REQUIRED, LENGTH-FIXED } + { 1, "authentication_status.per_message_authentication", REQUIRED, LENGTH-FIXED } + { 1, "authentication_status.k_g", REQUIRED, LENGTH-FIXED } + { 2, "authentication_status.reserved", REQUIRED, LENGTH-FIXED } + { 1, "channel_supports_ipmi_v1.5_connections", REQUIRED, LENGTH-FIXED } + { 1, "channel_supports_ipmi_v2.0_connections", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + { 24, "oem_id", REQUIRED, LENGTH-FIXED } + { 8, "oem_auxiliary_data", REQUIRED, LENGTH-FIXED } + +Get System GUID Request +----------------------- + +FIID Template: tmpl_cmd_get_system_guid_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get System GUID Response +------------------------ + +FIID Template: tmpl_cmd_get_system_guid_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 128, "guid", REQUIRED, LENGTH-FIXED } + +Get System GUID (with Format) Response +-------------------------------------- + +FIID Template: tmpl_cmd_get_system_guid_format_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 48, "node", REQUIRED, LENGTH-FIXED } + { 8, "clock_seq_low", REQUIRED, LENGTH-FIXED } + { 8, "clock_seq_hi_and_reserved", REQUIRED, LENGTH-FIXED } + { 16, "time_high_and_version", REQUIRED, LENGTH-FIXED } + { 16, "time_mid", REQUIRED, LENGTH-FIXED } + { 32, "time_low", REQUIRED, LENGTH-FIXED } + + Notes: node and time values LS byte first. + +Set System Info Parameters Request +---------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Set System Info Parameters Response +----------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set System Info Parameters (Set In Progress) Request +---------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_set_in_progress_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Set System Info Parameters (System Firmware Version First Set) Request +---------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_system_firmware_version_first_set_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Set System Info Parameters (System Firmware Version) Request +------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_system_info_parameters_system_firmware_version_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Set System Info Parameters (System Name First Set) Request +---------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_system_name_first_set_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Set System Info Parameters (System Name) Request +------------------------------------------------ + +FIID Template: tmpl_cmd_set_system_info_parameters_system_name_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Set System Info Parameters (Primary Operating System Name First Set) Request +---------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_primary_operating_system_name_first_set_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Set System Info Parameters (Primary Operating System Name) Request +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_system_info_parameters_primary_operating_system_name_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Set System Info Parameters (Operating System Name First Set) Request +-------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_operating_system_name_first_set_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Set System Info Parameters (Operating System Name) Request +---------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_operating_system_name_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Set System Info Parameters (Present OS Version Number First Set) Request +------------------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_system_info_parameters_present_os_version_number_first_set_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Set System Info Parameters (Present OS Version Number) Request +-------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_present_os_version_number_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Set System Info Parameters (BMC URL First Set) Request +------------------------------------------------------ + +FIID Template: tmpl_cmd_set_system_info_parameters_bmc_url_first_set_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Set System Info Parameters (BMC URL) Request +-------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_bmc_url_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Set System Info Parameters (Base OS/Hypervisor URL First Set) Request +--------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_base_os_hypervisor_url_first_set_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Set System Info Parameters (Base OS/Hypervisor URL) Request +----------------------------------------------------------- + +FIID Template: tmpl_cmd_set_system_info_parameters_base_os_hypervisor_url_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Get System Info Parameters Request +---------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "get_parameter", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 8, "block_selector", REQUIRED, LENGTH-FIXED } + +Get System Info Parameters Response +----------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Get System Info Parameters (Set In Progress) Response +----------------------------------------------------- + +Get System Info Parameters (System Firmware Version First Set) Response +----------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_system_firmware_version_first_set_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Get System Info Parameters (System Firmware Version) Response +------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_system_firmware_version_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Get System Info Parameters (System Name First Set) Response +----------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_system_name_first_set_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Get System Info Parameters (System Name) Response +------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_system_name_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Get System Info Parameters (Primary Operating System Name First Set) Response +----------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_primary_operating_system_name_first_set_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Get System Info Parameters (Primary Operating System Name) Response +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_primary_operating_system_name_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Get System Info Parameters (Operating System Name First Set) Response +--------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_operating_system_name_first_set_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 4, "encoding", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "string_length", REQUIRED, LENGTH-FIXED } + { 112, "string", OPTIONAL, LENGTH-VARIABLE } + +Get System Info Parameters (Operating System Name) Response +----------------------------------------------------------- + +FIID Template: tmpl_cmd_get_system_info_parameters_operating_system_name_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "parameter_revision", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 128, "string", REQUIRED, LENGTH-FIXED } + +Get Channel Cipher Suites Request +--------------------------------- + +FIID Template: tmpl_cmd_get_channel_cipher_suites_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "payload_type", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 6, "list_index", REQUIRED, LENGTH-FIXED } + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + { 1, "list_algorithm_type", REQUIRED, LENGTH-FIXED } + +Get Channel Cipher Suites Response +---------------------------------- + +FIID Template: tmpl_cmd_get_channel_cipher_suites_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "channel_number", REQUIRED, LENGTH-FIXED } + { 128, "cipher_suite_record_data", OPTIONAL, LENGTH-VARIABLE } + +Get Session Challenge Request +----------------------------- + +FIID Template: tmpl_cmd_get_session_challenge_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "authentication_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 128, "user_name", REQUIRED, LENGTH-FIXED } + +Get Session Challenge Response +------------------------------ + +FIID Template: tmpl_cmd_get_session_challenge_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "temp_session_id", REQUIRED, LENGTH-FIXED } + { 128, "challenge_string", REQUIRED, LENGTH-FIXED } + + Notes: Session id LS byte first. + +Activiate Session Request +------------------------- + +FIID Template: tmpl_cmd_activate_session_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "authentication_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "maximum_privilege_level", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 128, "challenge_string", REQUIRED, LENGTH-FIXED } + { 32, "initial_outbound_sequence_number", REQUIRED, LENGTH-FIXED } + +Activiate Session Response +-------------------------- + +FIID Template: tmpl_cmd_activate_session_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "authentication_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 32, "session_id", REQUIRED, LENGTH-FIXED } + { 32, "initial_inbound_sequence_number", REQUIRED, LENGTH-FIXED } + { 4, "maximum_privilege_level", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + +Set Session Privilege Level Request +----------------------------------- + +FIID Template: tmpl_cmd_set_session_privilege_level_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "privilege_level", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + +Set Session Privilege Level Response +------------------------------------ + +FIID Template: tmpl_cmd_set_session_privilege_level_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "privilege_level", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + +Close Session Request +--------------------- + +FIID Template: tmpl_cmd_close_session_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 32, "session_id", REQUIRED, LENGTH-FIXED } + { 8, "session_handle", OPTIONAL, LENGTH-FIXED } + +Close Session Response +---------------------- + +FIID Template: tmpl_cmd_close_session_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + + +Set Channel Access Request +-------------------------- + +FIID Template: tmpl_cmd_set_channel_access_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 3, "ipmi_messaging_access_mode", REQUIRED, LENGTH-FIXED } + { 1, "user_level_authentication", REQUIRED, LENGTH-FIXED } + { 1, "per_message_authentication", REQUIRED, LENGTH-FIXED } + { 1, "pef_alerting", REQUIRED, LENGTH-FIXED } + { 2, "channel_access_set", REQUIRED, LENGTH-FIXED } + { 4, "channel_privilege_level_limit", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "channel_privilege_level_limit_set", REQUIRED, LENGTH-FIXED } + +Set Channel Access Response +--------------------------- + +FIID Template: tmpl_cmd_set_channel_access_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Channel Access Request +-------------------------- + +FIID Template: tmpl_cmd_get_channel_access_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "channel_access_get", REQUIRED, LENGTH-FIXED } + +Get Channel Access Response +--------------------------- + +FIID Template: tmpl_cmd_get_channel_access_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 3, "ipmi_messaging_access_mode", REQUIRED, LENGTH-FIXED } + { 1, "user_level_authentication", REQUIRED, LENGTH-FIXED } + { 1, "per_message_authentication", REQUIRED, LENGTH-FIXED } + { 1, "pef_alerting", REQUIRED, LENGTH-FIXED } + { 2, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "channel_privilege_level_limit", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + +Get Channel Info Command Request +-------------------------------- + +FIID Template: tmpl_cmd_get_channel_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get Channel Info Command Response +--------------------------------- + +FIID Template: tmpl_cmd_get_channel_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "actual_channel_number", REQUIRED, LENGTH-FIXED } + { 4, "actual_channel_number.reserved", REQUIRED, LENGTH-FIXED } + { 7, "channel_medium_type", REQUIRED, LENGTH-FIXED } + { 1, "channel_medium_type.reserved", REQUIRED, LENGTH-FIXED } + { 5, "channel_protocol_type", REQUIRED, LENGTH-FIXED } + { 3, "channel_protocol_type.reserved", REQUIRED, LENGTH-FIXED } + { 6, "active_session_count", REQUIRED, LENGTH-FIXED } + { 2, "session_support", REQUIRED, LENGTH-FIXED } + { 24, "vendor_id", REQUIRED, LENGTH-FIXED } + { 16, "auxiliary_channel_info", REQUIRED, LENGTH-FIXED } + +Set Channel Security Keys Request +--------------------------------- + +FIID Template: tmpl_cmd_set_channel_security_keys_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "key_id", REQUIRED, LENGTH-FIXED } + { 160, "key_value", OPTIONAL, LENGTH-VARIABLE } + +Set Channel Security Keys Response +---------------------------------- + +FIID Template: tmpl_cmd_set_channel_security_keys_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 2, "lock_status", OPTIONAL, LENGTH-FIXED } + { 6, "reserved", OPTIONAL, LENGTH-FIXED } + { 160, "key_value", OPTIONAL, LENGTH-VARIABLE } + +Set User Access Command Request +------------------------------- + +FIID Template: tmpl_cmd_set_user_access_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 1, "user_ipmi_messaging", REQUIRED, LENGTH-FIXED } + { 1, "user_link_authentication", REQUIRED, LENGTH-FIXED } + { 1, "user_restricted_to_callback", REQUIRED, LENGTH-FIXED } + { 1, "change_bits_in_byte", REQUIRED, LENGTH-FIXED } + { 6, "user_id", REQUIRED, LENGTH-FIXED } + { 2, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "user_privilege_level_limit", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 4, "user_session_limit", REQUIRED, LENGTH-FIXED } + { 4, "reserved3", REQUIRED, LENGTH-FIXED } + +Set User Access Command Response +-------------------------------- + +FIID Template: tmpl_cmd_set_user_access_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get User Access Command Request +------------------------------- + +FIID Template: tmpl_cmd_get_user_access_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "user_id", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + +Get User Access Command Response +-------------------------------- + +FIID Template: tmpl_cmd_get_user_access_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 6, "max_channel_user_ids", REQUIRED, LENGTH-FIXED } + { 2, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "current_channel_user_ids", REQUIRED, LENGTH-FIXED } + { 2, "user_id_enable_status", REQUIRED, LENGTH-FIXED } + { 6, "current_channel_fixed_names", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 4, "user_privilege_level_limit", REQUIRED, LENGTH-FIXED } + { 1, "user_ipmi_messaging", REQUIRED, LENGTH-FIXED } + { 1, "user_link_authentication", REQUIRED, LENGTH-FIXED } + { 1, "user_restricted_to_callback", REQUIRED, LENGTH-FIXED } + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + +Set User Name Command Request +----------------------------- + +FIID Template: tmpl_cmd_set_user_name_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 6, "user_id", REQUIRED, LENGTH-FIXED } + { 2, "user_id.reserved", REQUIRED, LENGTH-FIXED } + { 128, "user_name", REQUIRED, LENGTH-FIXED } + +Set User Name Command Response +------------------------------ + +FIID Template: tmpl_cmd_set_user_name_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get User Name Command Request +----------------------------- + +FIID Template: tmpl_cmd_get_user_name_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 6, "user_id", REQUIRED, LENGTH-FIXED } + { 2, "user_id.reserved", REQUIRED, LENGTH-FIXED } + +Get User Name Command Response +------------------------------ + +FIID Template: tmpl_cmd_get_user_name_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 128, "user_name", REQUIRED, LENGTH-FIXED } + +Set User Password Command Request +--------------------------------- + +FIID Template: tmpl_cmd_set_user_password_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 6, "user_id", REQUIRED, LENGTH-FIXED } + { 1, "user_id.reserved", REQUIRED, LENGTH-FIXED } + { 1, "password_size", REQUIRED, LENGTH-FIXED } + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 6, "operation.reserved", REQUIRED, LENGTH-FIXED } + { 160, "password", OPTIONAL, LENGTH-VARIABLE } + + Notes: password is variable length, but limited to length of 0, 16, + or 20. + +Set User Password Command Response +---------------------------------- + +FIID Template: tmpl_cmd_set_user_password_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_MESSAGING_SUPPORT_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-oem-intel-node-manager-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-oem-intel-node-manager-cmds-templates.h new file mode 100644 index 00000000..2fd60332 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-oem-intel-node-manager-cmds-templates.h @@ -0,0 +1,661 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OEM_INTEL_NODE_MANAGER_CMDS_TEMPLATES_H +#define IPMI_OEM_INTEL_NODE_MANAGER_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +/* + * 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 + */ + +Enable Disable Node Manager Policy Control Request +-------------------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_enable_disable_node_manager_policy_control_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "policy_enable_disable", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + +Enable Disable Node Manager Policy Control Response +--------------------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_enable_disable_node_manager_policy_control_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Set Node Manager Policy Request +------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 1, "policy_enabled", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + { 4, "policy_trigger_type", REQUIRED, LENGTH-FIXED } + { 1, "policy_configuration_action", REQUIRED, LENGTH-FIXED } + { 2, "aggressive_cpu_power_correction", REQUIRED, LENGTH-FIXED } + { 1, "policy_storage_option", REQUIRED, LENGTH-FIXED } + { 1, "policy_exception_actions.send_alert", REQUIRED, LENGTH-FIXED } + { 1, "policy_exception_actions.shutdown_system", REQUIRED, LENGTH-FIXED } + { 5, "policy_exception_actions.reserved", REQUIRED, LENGTH-FIXED } + { 1, "policy_power_domain", REQUIRED, LENGTH-FIXED } + { 16, "policy_target_limit", REQUIRED, LENGTH-FIXED } + { 32, "correction_time_limit", REQUIRED, LENGTH-FIXED } + { 16, "policy_trigger_limit", REQUIRED, LENGTH-FIXED } + { 16, "statistics_reporting_period", REQUIRED, LENGTH-FIXED } + +Set Node Manager Policy Request - Boot Time Policy +-------------------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_boot_time_policy_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 1, "policy_enabled", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + { 4, "policy_trigger_type", REQUIRED, LENGTH-FIXED } + { 1, "policy_configuration_action", REQUIRED, LENGTH-FIXED } + { 2, "aggressive_cpu_power_correction", REQUIRED, LENGTH-FIXED } + { 1, "policy_storage_option", REQUIRED, LENGTH-FIXED } + { 1, "policy_exception_actions.send_alert", REQUIRED, LENGTH-FIXED } + { 1, "policy_exception_actions.shutdown_system", REQUIRED, LENGTH-FIXED } + { 5, "policy_exception_actions.reserved", REQUIRED, LENGTH-FIXED } + { 1, "policy_power_domain", REQUIRED, LENGTH-FIXED } + { 1, "policy_target_limit.platform_booting_mode", REQUIRED, LENGTH-FIXED } + { 7, "policy_target_limit.cores_disabled", REQUIRED, LENGTH-FIXED } + { 8, "policy_target_limit.reserved", REQUIRED, LENGTH-FIXED } + { 16, "policy_target_limit", REQUIRED, LENGTH-FIXED } + { 32, "correction_time_limit", REQUIRED, LENGTH-FIXED } + { 16, "policy_trigger_limit", REQUIRED, LENGTH-FIXED } + { 16, "statistics_reporting_period", REQUIRED, LENGTH-FIXED } + +Set Node Manager Policy Response +-------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Policy Request +------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Policy Response +-------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 1, "policy_enabled", REQUIRED, LENGTH-FIXED } + { 1, "per_domain_node_manager_policy_control_enabled", REQUIRED, LENGTH-FIXED } + { 1, "global_node_manager_policy_control_enabled", REQUIRED, LENGTH-FIXED } + { 1, "policy_created_and_managed_by_other_management", REQUIRED, LENGTH-FIXED } + { 4, "policy_trigger_type", REQUIRED, LENGTH-FIXED } + { 1, "policy_type", REQUIRED, LENGTH-FIXED } + { 2, "aggressive_cpu_power_correction", REQUIRED, LENGTH-FIXED } + { 1, "policy_storage_option", REQUIRED, LENGTH-FIXED } + { 1, "policy_exception_actions.send_alert", REQUIRED, LENGTH-FIXED } + { 1, "policy_exception_actions.shutdown_system", REQUIRED, LENGTH-FIXED } + { 5, "policy_exception_actions.reserved", REQUIRED, LENGTH-FIXED } + { 1, "policy_power_domain", REQUIRED, LENGTH-FIXED } + { 16, "policy_target_limit", REQUIRED, LENGTH-FIXED } + { 32, "correction_time_limit", REQUIRED, LENGTH-FIXED } + { 16, "policy_trigger_limit", REQUIRED, LENGTH-FIXED } + { 16, "statistics_reporting_period", REQUIRED, LENGTH-FIXED } + +Set Node Manager Alert Thresholds Request +----------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_alert_thresholds_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + { 8, "number_of_alert_thresholds", REQUIRED, LENGTH-FIXED } + { 16, "alert_threshold1", OPTIONAL, LENGTH-FIXED } + { 16, "alert_threshold2", OPTIONAL, LENGTH-FIXED } + { 16, "alert_threshold3", OPTIONAL, LENGTH-FIXED } + +Set Node Manager Alert Thresholds Response +------------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_alert_thresholds_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Alert Thresholds Request +----------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_alert_thresholds_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Alert Thresholds Response +------------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_alert_thresholds_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 8, "number_of_alert_thresholds", REQUIRED, LENGTH-FIXED } + { 16, "alert_threshold1", OPTIONAL, LENGTH-FIXED } + { 16, "alert_threshold2", OPTIONAL, LENGTH-FIXED } + { 16, "alert_threshold3", OPTIONAL, LENGTH-FIXED } + +Set Node Manager Policy Suspend Periods Request +----------------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_suspend_periods_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + { 8, "number_of_policy_suspend_periods", REQUIRED, LENGTH-FIXED } + { 8, "policy1.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy1.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + { 8, "policy2.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy2.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + { 8, "policy3.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy3.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + { 8, "policy4.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy4.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + { 8, "policy5.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy5.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + +Set Node Manager Policy Suspend Periods Response +------------------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_policy_suspend_periods_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Policy Suspend Periods Request +----------------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_suspend_periods_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Policy Suspend Periods Response +------------------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_policy_suspend_periods_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 8, "number_of_policy_suspend_periods", REQUIRED, LENGTH-FIXED } + { 8, "policy1.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy1.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy1.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + { 8, "policy2.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy2.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy2.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + { 8, "policy3.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy3.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy3.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + { 8, "policy4.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy4.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy4.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + { 8, "policy5.suspend_start_time", OPTIONAL, LENGTH-FIXED } + { 8, "policy5.suspend_stop_time", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.monday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.tuesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.wednesday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.thursday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.friday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.saturday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.sunday", OPTIONAL, LENGTH-FIXED } + { 1, "policy5.suspend_period_recurrence.reserved", OPTIONAL, LENGTH-FIXED } + +Reset Node Manager Statistics Request +------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_reset_node_manager_statistics_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "mode", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + +Reset Node Manager Statistics Response +-------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_reset_node_manager_statistics_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Statistics Request +----------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_statistics_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "mode", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Statistics Response +------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_statistics_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 16, "current", REQUIRED, LENGTH-FIXED } + { 16, "minimum", REQUIRED, LENGTH-FIXED } + { 16, "maximum", REQUIRED, LENGTH-FIXED } + { 16, "average", REQUIRED, LENGTH-FIXED } + { 32, "timestamp", REQUIRED, LENGTH-FIXED } + { 32, "statistics_reporting_period", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 1, "policy_global_administrative_state", REQUIRED, LENGTH-FIXED } + { 1, "policy_operational_state", REQUIRED, LENGTH-FIXED } + { 1, "measurements_state", REQUIRED, LENGTH-FIXED } + { 1, "policy_activation_state", REQUIRED, LENGTH-FIXED } + +Get Node Manager Capabilities Request +------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_capabilities_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 4, "policy_trigger_type", REQUIRED, LENGTH-FIXED } + { 3, "policy_type", REQUIRED, LENGTH-FIXED } + { 1, "policy_power_domain", REQUIRED, LENGTH-FIXED } + +Get Node Manager Capabilities Response +-------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_capabilities_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 8, "max_concurrent_settings", REQUIRED, LENGTH-FIXED } + { 16, "max_power_thermal_time_after_reset", REQUIRED, LENGTH-FIXED } + { 16, "min_power_thermal_time_after_reset", REQUIRED, LENGTH-FIXED } + { 32, "min_correction_time", REQUIRED, LENGTH-FIXED } + { 32, "max_correction_time", REQUIRED, LENGTH-FIXED } + { 16, "min_statistics_reporting_period", REQUIRED, LENGTH-FIXED } + { 16, "max_statistics_reporting_period", REQUIRED, LENGTH-FIXED } + { 4, "domain_limiting_scope.domain_id", REQUIRED, LENGTH-FIXED } + { 3, "domain_limiting_scope.reserved", REQUIRED, LENGTH-FIXED } + { 1, "domain_limiting_scope.limiting_based_on", REQUIRED, LENGTH-FIXED } + +Get Node Manager Version Request +-------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_version_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Version Response +--------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_version_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 8, "node_manager_version", REQUIRED, LENGTH-FIXED } + { 8, "ipmi_interface_version", REQUIRED, LENGTH-FIXED } + { 8, "patch_version", REQUIRED, LENGTH-FIXED } + { 8, "major_firmware_revision", REQUIRED, LENGTH-FIXED } + { 8, "minor_firmware_revision", REQUIRED, LENGTH-FIXED } + +Set Node Manager Power Draw Range Request +----------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_power_draw_range_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 16, "minimum_power_draw", REQUIRED, LENGTH-FIXED } + { 16, "maximum_power_draw", REQUIRED, LENGTH-FIXED } + +Set Node Manager Power Draw Range Response +------------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_power_draw_range_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Set Node Manager Alert Destination Request +------------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_alert_destination_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "alert_receiver_deactivation", REQUIRED, LENGTH-FIXED } + { 8, "destination_information", REQUIRED, LENGTH-FIXED } + { 7, "alert_string_selector", REQUIRED, LENGTH-FIXED } + { 1, "send_alert_string", REQUIRED, LENGTH-FIXED } + +Set Node Manager Alert Destination (IPMB) Request +------------------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_alert_destination_ipmb_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "alert_receiver_deactivation", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 7, "slave_address", REQUIRED, LENGTH-FIXED } + { 7, "alert_string_selector", REQUIRED, LENGTH-FIXED } + { 1, "send_alert_string", REQUIRED, LENGTH-FIXED } + +Set Node Manager Alert Destination (LAN) Request +------------------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_alert_destination_lan_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "alert_receiver_deactivation", REQUIRED, LENGTH-FIXED } + { 4, "destination_selector", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 7, "alert_string_selector", REQUIRED, LENGTH-FIXED } + { 1, "send_alert_string", REQUIRED, LENGTH-FIXED } + +Set Node Manager Alert Destination Response +------------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_node_manager_alert_destination_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Alert Destination Request +------------------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_alert_destination_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + +Get Node Manager Alert Destination Response +------------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_node_manager_alert_destination_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "alert_receiver_deactivation", REQUIRED, LENGTH-FIXED } + { 4, "destination_selector", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 7, "alert_string_selector", REQUIRED, LENGTH-FIXED } + { 1, "send_alert_string", REQUIRED, LENGTH-FIXED } + +Get Turbo Synchronization Ratio Request +--------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_turbo_synchronization_ratio_rq + + { 8, "cmd",REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id",REQUIRED, LENGTH-FIXED } + { 8, "cpu_socket_number",REQUIRED, LENGTH-FIXED } + { 8, "active_cores_configuration",REQUIRED, LENGTH-FIXED } + { 8, "turbo_ratio_limit",REQUIRED, LENGTH-FIXED } + +Get Turbo Synchronization Ratio Response +---------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_set_turbo_synchronization_ratio_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id",REQUIRED, LENGTH-FIXED } + +Get Turbo Synchronization Ratio Request +--------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_turbo_synchronization_ratio_rq + + { 8, "cmd",REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id",REQUIRED, LENGTH-FIXED } + { 8, "cpu_socket_number",REQUIRED, LENGTH-FIXED } + { 8, "active_cores_configuration",REQUIRED, LENGTH-FIXED } + +Get Turbo Synchronization Ratio Response +---------------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_turbo_synchronization_ratio_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id",REQUIRED, LENGTH-FIXED } + { 8, "current_turbo_ratio_limit",REQUIRED, LENGTH-FIXED } + { 8, "default_turbo_ratio_limit",REQUIRED, LENGTH-FIXED } + { 8, "maximum_turbo_ratio_limit",REQUIRED, LENGTH-FIXED } + { 8, "minimum_turbo_ratio_limit",REQUIRED, LENGTH-FIXED } + +Get Limiting Policy ID Request +------------------------------ + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_limiting_policy_id_rq = + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 4, "domain_id", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get Limiting Policy ID Response +------------------------------- + +FIID Template: tmpl_cmd_oem_intel_node_manager_get_limiting_policy_id_rs = + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 8, "policy_id", REQUIRED, LENGTH-FIXED } + + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OEM_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-pef-and-alerting-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-pef-and-alerting-cmds-templates.h new file mode 100644 index 00000000..244faafd --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-pef-and-alerting-cmds-templates.h @@ -0,0 +1,604 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_PEF_AND_ALERTING_CMDS_TEMPLATES_H +#define IPMI_PEF_AND_ALERTING_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Get PEF Capabilities Request +---------------------------- + +FIID Template: tmpl_cmd_get_pef_capabilities_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get PEF Capabilities Response +----------------------------- + +FIID Template: tmpl_cmd_get_pef_capabilities_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "pef_version_major", REQUIRED, LENGTH-FIXED } + { 4, "pef_version_minor", REQUIRED, LENGTH-FIXED } + { 1, "action_support.alert", REQUIRED, LENGTH-FIXED } + { 1, "action_support.power_down", REQUIRED, LENGTH-FIXED } + { 1, "action_support.reset", REQUIRED, LENGTH-FIXED } + { 1, "action_support.power_cycle", REQUIRED, LENGTH-FIXED } + { 1, "action_support.oem_action", REQUIRED, LENGTH-FIXED } + { 1, "action_support.diagnostic_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "oem_event_record_filtering_supported", REQUIRED, LENGTH-FIXED } + { 8, "number_of_event_filter_table_entries", REQUIRED, LENGTH-FIXED } + +ARM PEF Postpone Timer Request +------------------------------ + +FIID Template: tmpl_cmd_arm_pef_postpone_timer_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "pef_postpone_timeout", REQUIRED, LENGTH-FIXED } + +ARM PEF Postpone Timer Response +------------------------------- + +FIID Template: tmpl_cmd_arm_pef_postpone_timer_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "present_timer_countdown_value", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters Request +---------------------------------------- + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Set PEF Configuration Parameters Response +----------------------------------------- + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set PEF Configuration Parameters (Set In Progress) Request +---------------------------------------------------------- + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_set_in_progress_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters (PEF Control) Request +------------------------------------------------------ + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_pef_control_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "pef", REQUIRED, LENGTH-FIXED } + { 1, "pef_event_messages", REQUIRED, LENGTH-FIXED } + { 1, "pef_startup_delay", REQUIRED, LENGTH-FIXED } + { 1, "pef_alert_startup_delay", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters (PEF Action Global Control) Request +-------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_pef_action_global_control_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "alert_action", REQUIRED, LENGTH-FIXED } + { 1, "power_down_action", REQUIRED, LENGTH-FIXED } + { 1, "reset_action", REQUIRED, LENGTH-FIXED } + { 1, "power_cycle_action", REQUIRED, LENGTH-FIXED } + { 1, "oem_action", REQUIRED, LENGTH-FIXED } + { 1, "diagnostic_interrupt", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters (PEF Startup Delay) Request +------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_pef_startup_delay_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "pef_startup_delay", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters (PEF Alert Startup Delay) Request +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_pef_alert_startup_delay_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "pef_alert_startup_delay", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters (Event Filter Table) Request +------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_event_filter_table_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "filter_number", REQUIRED, LENGTH-FIXED } + { 5, "filter_configuration.reserved", REQUIRED, LENGTH-FIXED } + { 2, "filter_configuration.type", REQUIRED, LENGTH-FIXED } + { 1, "filter_configuration.filter", REQUIRED, LENGTH-FIXED } + + { 1, "event_filter_action.alert", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.power_off", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.reset", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.power_cycle", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.oem", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.diagnostic_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.group_control_operation", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.reserved", REQUIRED, LENGTH-FIXED } + + { 4, "alert_policy_number.policy_number", REQUIRED, LENGTH-FIXED } + { 3, "alert_policy_number.group_control_selector", REQUIRED, LENGTH-FIXED } + { 1, "alert_policy_number.reserved", REQUIRED, LENGTH-FIXED } + { 8, "event_severity", REQUIRED, LENGTH-FIXED } + { 8, "generator_id_byte1", REQUIRED, LENGTH-FIXED } + { 8, "generator_id_byte2", REQUIRED, LENGTH-FIXED } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "event_trigger", REQUIRED, LENGTH-FIXED } + { 16, "event_data1_offset_mask", REQUIRED, LENGTH-FIXED } + { 8, "event_data1_AND_mask", REQUIRED, LENGTH-FIXED } + { 8, "event_data1_compare1", REQUIRED, LENGTH-FIXED } + { 8, "event_data1_compare2", REQUIRED, LENGTH-FIXED } + { 8, "event_data2_AND_mask", REQUIRED, LENGTH-FIXED } + { 8, "event_data2_compare1", REQUIRED, LENGTH-FIXED } + { 8, "event_data2_compare2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3_AND_mask", REQUIRED, LENGTH-FIXED } + { 8, "event_data3_compare1", REQUIRED, LENGTH-FIXED } + { 8, "event_data3_compare2", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters (Event Filter Table Data1) Request +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_event_filter_table_data1_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "filter_number", REQUIRED, LENGTH-FIXED } + { 5, "filter_configuration.reserved", REQUIRED, LENGTH-FIXED } + { 2, "filter_configuration.type", REQUIRED, LENGTH-FIXED } + { 1, "filter_configuration.filter", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters (Alert String Keys) Request +------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_alert_string_keys_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 7, "string_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + /* Not indicated as 8 bits in E451, but all other filter number fields adjusted to 8 bits */ + { 8, "filter_number", REQUIRED, LENGTH-FIXED } + { 7, "set_number_for_string", REQUIRED, LENGTH-FIXED } + { 1, "reserved4", REQUIRED, LENGTH-FIXED } + +Set PEF Configuration Parameters (Alert Strings) Request +-------------------------------------------------------- + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_alert_strings_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 7, "string_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "block_selector", REQUIRED, LENGTH-FIXED } + { 128, "string_data", OPTIONAL, LENGTH-VARIABLE } + +Set PEF Configuration Parameters (Alert Policy Table) Request +------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_pef_configuration_parameters_alert_policy_table_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 7, "alert_policy_entry_number", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 3, "policy_number.policy_type", REQUIRED, LENGTH-FIXED } + { 1, "policy_number.enabled", REQUIRED, LENGTH-FIXED } + { 4, "policy_number.policy_number", REQUIRED, LENGTH-FIXED } + { 4, "channel_destination.destination_selector", REQUIRED, LENGTH-FIXED } + { 4, "channel_destination.channel_number", REQUIRED, LENGTH-FIXED } + { 7, "alert_string_key.alert_string_set_selector", REQUIRED, LENGTH-FIXED } + { 1, "alert_string_key.event_specific_alert_string", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters Request +---------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 7, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "get_parameter", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 8, "block_selector", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters Response +----------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Get PEF Configuration Parameters (Set In Progress) Response +----------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_set_in_progress_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters (PEF Control) Response +------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_pef_control_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1, "pef", REQUIRED, LENGTH-FIXED } + { 1, "pef_event_messages", REQUIRED, LENGTH-FIXED } + { 1, "pef_startup_delay", REQUIRED, LENGTH-FIXED } + { 1, "pef_alert_startup_delay", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters (PEF Action Global Control) Response +--------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_pef_action_global_control_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1, "alert_action", REQUIRED, LENGTH-FIXED } + { 1, "power_down_action", REQUIRED, LENGTH-FIXED } + { 1, "reset_action", REQUIRED, LENGTH-FIXED } + { 1, "power_cycle_action", REQUIRED, LENGTH-FIXED } + { 1, "oem_action", REQUIRED, LENGTH-FIXED } + { 1, "diagnostic_interrupt", REQUIRED, LENGTH-FIXED } + { 2, "reserved", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters (PEF Startup Delay) Response +------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_pef_startup_delay_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "pef_startup_delay", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters (PEF Alert Startup Delay) Response +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_pef_alert_startup_delay_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "pef_alert_startup_delay", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters (Number of Event Filters) Response +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_number_of_event_filters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "number_of_event_filters", REQUIRED, LENGTH-FIXED } + + Notes: Read only field, no "set" equivalent. + +Get PEF Configuration Parameters (Event Filter Table) Response +-------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_event_filter_table_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "filter_number", REQUIRED, LENGTH-FIXED } + { 5, "filter_configuration.reserved", REQUIRED, LENGTH-FIXED } + { 2, "filter_configuration.type", REQUIRED, LENGTH-FIXED } + { 1, "filter_configuration.filter", REQUIRED, LENGTH-FIXED } + + { 1, "event_filter_action.alert", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.power_off", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.reset", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.power_cycle", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.oem", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.diagnostic_interrupt", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.group_control_operation", REQUIRED, LENGTH-FIXED } + { 1, "event_filter_action.reserved", REQUIRED, LENGTH-FIXED } + + { 4, "alert_policy_number.policy_number", REQUIRED, LENGTH-FIXED } + { 3, "alert_policy_number.group_control_selector", REQUIRED, LENGTH-FIXED } + { 1, "alert_policy_number.reserved", REQUIRED, LENGTH-FIXED } + { 8, "event_severity", REQUIRED, LENGTH-FIXED } + { 8, "generator_id_byte1", REQUIRED, LENGTH-FIXED } + { 8, "generator_id_byte2", REQUIRED, LENGTH-FIXED } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "event_trigger", REQUIRED, LENGTH-FIXED } + { 16, "event_data1_offset_mask", REQUIRED, LENGTH-FIXED } + { 8, "event_data1_AND_mask", REQUIRED, LENGTH-FIXED } + { 8, "event_data1_compare1", REQUIRED, LENGTH-FIXED } + { 8, "event_data1_compare2", REQUIRED, LENGTH-FIXED } + { 8, "event_data2_AND_mask", REQUIRED, LENGTH-FIXED } + { 8, "event_data2_compare1", REQUIRED, LENGTH-FIXED } + { 8, "event_data2_compare2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3_AND_mask", REQUIRED, LENGTH-FIXED } + { 8, "event_data3_compare1", REQUIRED, LENGTH-FIXED } + { 8, "event_data3_compare2", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters (Event Filter Table Data1) Response +-------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_event_filter_table_data1_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "filter_number", REQUIRED, LENGTH-FIXED } + { 5, "filter_configuration.reserved", REQUIRED, LENGTH-FIXED } + { 2, "filter_configuration.type", REQUIRED, LENGTH-FIXED } + { 1, "filter_configuration.filter", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters (Number of Alert Policy Entries) Response +-------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_number_of_alert_policy_entries_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 7, "number_of_alert_policy_entries", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + + Notes: Read only field, no "set" equivalent. + +Get PEF Configuration Parameters (Number of Alert Strings) Response +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_number_of_alert_strings_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 7, "number_of_alert_strings", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + + Notes: Read only field, no "set" equivalent. + +Get PEF Configuration Parameters (Alert String Keys) Response +------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_alert_string_keys_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 7, "string_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + /* Not indicated as 8 bits in E451, but all other filter number fields adjusted to 8 bits */ + { 8, "filter_number", REQUIRED, LENGTH-FIXED } + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + { 7, "set_number_for_string", REQUIRED, LENGTH-FIXED } + { 1, "reserved4", REQUIRED, LENGTH-FIXED } + +Get PEF Configuration Parameters (Alert Strings) Response +--------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_alert_strings_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 7, "string_selector", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "block_selector", REQUIRED, LENGTH-FIXED } + { 128, "string_data", OPTIONAL, LENGTH-VARIABLE } + +Get PEF Configuration Parameters (Alert Policy Table) Response +-------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_pef_configuration_parameters_alert_policy_table_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 7, "alert_policy_entry_number", REQUIRED, LENGTH-FIXED } + { 1, "alert_policy_entry_number.reserved", REQUIRED, LENGTH-FIXED } + { 3, "policy_number.policy_type", REQUIRED, LENGTH-FIXED } + { 1, "policy_number.enabled", REQUIRED, LENGTH-FIXED } + { 4, "policy_number.policy_number", REQUIRED, LENGTH-FIXED } + { 4, "channel_destination.destination_selector", REQUIRED, LENGTH-FIXED } + { 4, "channel_destination.channel_number", REQUIRED, LENGTH-FIXED } + { 7, "alert_string_key.alert_string_set_selector", REQUIRED, LENGTH-FIXED } + { 1, "alert_string_key.event_specific_alert_string", REQUIRED, LENGTH-FIXED } + +Set Last Processed Event ID Request +----------------------------------- + +FIID Template: tmpl_cmd_set_last_processed_event_id_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 1, "set_record_id_for_last_record", REQUIRED, LENGTH-FIXED } + { 7, "reserved", REQUIRED, LENGTH-FIXED } + { 16, "record_id", REQUIRED, LENGTH-FIXED } + +Set Last Processed Event ID Response +------------------------------------ + +FIID Template: tmpl_cmd_set_last_processed_event_id_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Last Processed Event ID Request +----------------------------------- + +FIID Template: tmpl_cmd_get_last_processed_event_id_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get Last Processed Event ID Response +------------------------------------ + +FIID Template: tmpl_cmd_get_last_processed_event_id_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "most_recent_addition_timestamp", REQUIRED, LENGTH-FIXED } + { 16, "record_id_for_last_record_in_sel", REQUIRED, LENGTH-FIXED } + { 16, "last_sw_processed_event_record_id", REQUIRED, LENGTH-FIXED } + { 16, "last_bmc_processed_event_record_id", REQUIRED, LENGTH-FIXED } + +Alert Immediate Request +----------------------- + +FIID Template: tmpl_cmd_alert_immediate_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "destination_selector", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 7, "string_selector", REQUIRED, LENGTH-FIXED } + { 1, "send_alert_string", REQUIRED, LENGTH-FIXED } + +Alert Immediate Response +------------------------ + +FIID Template: tmpl_cmd_alert_immediate_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +PET Acknowledge Request +----------------------- + +FIID Template: tmpl_cmd_pet_acknowledge_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 16, "sequence_number", REQUIRED, LENGTH-FIXED } + { 32, "local_timestamp", REQUIRED, LENGTH-FIXED } + { 8, "event_source_type", REQUIRED, LENGTH-FIXED } + { 8, "sensor_device", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 24, "event_data", REQUIRED, LENGTH-FIXED } + +PET Acknowledge Response +------------------------ + +FIID Template: tmpl_cmd_pet_acknowledge_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_PEF_AND_ALERTING_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-rmcpplus-interface-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-rmcpplus-interface-templates.h new file mode 100644 index 00000000..b87eb84f --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-rmcpplus-interface-templates.h @@ -0,0 +1,212 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_RMCPPLUS_INTERFACE_TEMPLATES_H +#define IPMI_RMCPPLUS_INTERFACE_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +RMCP+ Session Header +-------------------- + +FIID Template: tmpl_rmcpplus_session_hdr + + { 4, "authentication_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "payload_type", REQUIRED, LENGTH-FIXED } + { 1, "payload_type.authenticated", REQUIRED, LENGTH-FIXED } + { 1, "payload_type.encrypted", REQUIRED, LENGTH-FIXED } + { 24, "oem_iana", OPTIONAL, LENGTH-FIXED } + { 8, "reserved2", OPTIONAL, LENGTH-FIXED } + { 16, "oem_payload_id", OPTIONAL, LENGTH-FIXED } + { 32, "session_id", REQUIRED, LENGTH-FIXED } + { 32, "session_sequence_number", REQUIRED, LENGTH-FIXED } + { 16, "ipmi_payload_len", REQUIRED, LENGTH-FIXED } + +RMCP+ Session Trailer +--------------------- + +FIID Template: tmpl_rmcpplus_session_trlr + + { 32, "integrity_pad", OPTIONAL, LENGTH-VARIABLE } + { 8, "pad_length", REQUIRED, LENGTH-FIXED } + { 8, "next_header", REQUIRED, LENGTH-FIXED } + { 256, "authentication_code", OPTIONAL, LENGTH-VARIABLE } + +RMCP+ Payload +------------- + +FIID Template: tmpl_rmcpplus_payload + + { 512, "confidentiality_header", OPTIONAL, LENGTH-VARIABLE } + { 524288, "payload_data", REQUIRED, LENGTH-VARIABLE } + { 512, "confidentiality_trailer", OPTIONAL, LENGTH-VARIABLE } + +RMCP+ Open Session Request +-------------------------- + +FIID Template: tmpl_rmcpplus_open_session_request + + { 8, "message_tag", REQUIRED, LENGTH-FIXED } + { 4, "requested_maximum_privilege_level", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 16, "reserved2", REQUIRED, LENGTH-FIXED } + { 32, "remote_console_session_id", REQUIRED, LENGTH-FIXED } + { 8, "authentication_payload.payload_type", REQUIRED, LENGTH-FIXED } + { 16, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "authentication_payload.payload_length", REQUIRED, LENGTH-FIXED } + { 6, "authentication_payload.authentication_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "reserved4", REQUIRED, LENGTH-FIXED } + { 24, "reserved5", REQUIRED, LENGTH-FIXED } + { 8, "integrity_payload.payload_type", REQUIRED, LENGTH-FIXED } + { 16, "reserved6", REQUIRED, LENGTH-FIXED } + { 8, "integrity_payload.payload_length", REQUIRED, LENGTH-FIXED } + { 6, "integrity_payload.integrity_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "reserved7", REQUIRED, LENGTH-FIXED } + { 24, "reserved8", REQUIRED, LENGTH-FIXED } + { 8, "confidentiality_payload.payload_type", REQUIRED, LENGTH-FIXED } + { 16, "reserved9", REQUIRED, LENGTH-FIXED } + { 8, "confidentiality_payload.payload_length", REQUIRED, LENGTH-FIXED } + { 6, "confidentiality_payload.confidentiality_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "reserved10", REQUIRED, LENGTH-FIXED } + { 24, "reserved11", REQUIRED, LENGTH-FIXED } + +RMCP+ Open Session Response +--------------------------- + +FIID Template: tmpl_rmcpplus_open_session_response + + { 8, "message_tag", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "rmcpplus_status_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "maximum_privilege_level", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "reserved2", REQUIRED, LENGTH-FIXED } + { 32, "remote_console_session_id", REQUIRED, LENGTH-FIXED } + { 32, "managed_system_session_id", REQUIRED, LENGTH-FIXED } + { 8, "authentication_payload.payload_type", REQUIRED, LENGTH-FIXED } + { 16, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "authentication_payload.payload_length", REQUIRED, LENGTH-FIXED } + { 6, "authentication_payload.authentication_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "reserved4", REQUIRED, LENGTH-FIXED } + { 24, "reserved5", REQUIRED, LENGTH-FIXED } + { 8, "integrity_payload.payload_type", REQUIRED, LENGTH-FIXED } + { 16, "reserved6", REQUIRED, LENGTH-FIXED } + { 8, "integrity_payload.payload_length", REQUIRED, LENGTH-FIXED } + { 6, "integrity_payload.integrity_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "reserved7", REQUIRED, LENGTH-FIXED } + { 24, "reserved8", REQUIRED, LENGTH-FIXED } + { 8, "confidentiality_payload.payload_type", REQUIRED, LENGTH-FIXED } + { 16, "reserved9", REQUIRED, LENGTH-FIXED } + { 8, "confidentiality_payload.payload_length", REQUIRED, LENGTH-FIXED } + { 6, "confidentiality_payload.confidentiality_algorithm", REQUIRED, LENGTH-FIXED } + { 2, "reserved10", REQUIRED, LENGTH-FIXED } + { 24, "reserved11", REQUIRED, LENGTH-FIXED } + +RMCP+ RAKP Message 1 +-------------------- + +FIID Template: tmpl_rmcpplus_rakp_message_1 + + { 8, "message_tag", REQUIRED, LENGTH-FIXED } + { 24, "reserved1", REQUIRED, LENGTH-FIXED } + { 32, "managed_system_session_id", REQUIRED, LENGTH-FIXED } + { 128, "remote_console_random_number", REQUIRED, LENGTH-FIXED } + { 4, "requested_maximum_privilege_level", REQUIRED, LENGTH-FIXED } + { 1, "name_only_lookup", REQUIRED, LENGTH-FIXED } + { 3, "reserved2", REQUIRED, LENGTH-FIXED } + { 16, "reserved3", REQUIRED, LENGTH-FIXED } + { 8, "user_name_length", REQUIRED, LENGTH-FIXED } + { 128, "user_name", OPTIONAL, LENGTH-VARIABLE } + +RMCP+ RAKP Message 2 +-------------------- + +FIID Template: tmpl_rmcpplus_rakp_message_2 + + { 8, "message_tag", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "rmcpplus_status_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "reserved1", REQUIRED, LENGTH-FIXED } + { 32, "remote_console_session_id", REQUIRED, LENGTH-FIXED } + { 128, "managed_system_random_number", REQUIRED, LENGTH-FIXED } + { 128, "managed_system_guid", REQUIRED, LENGTH-FIXED } + { 512, "key_exchange_authentication_code", OPTIONAL, LENGTH-VARIABLE } + +RMCP+ RAKP Message 3 +-------------------- + +FIID Template: tmpl_rmcpplus_rakp_message_3 + + { 8, "message_tag", REQUIRED, LENGTH-FIXED } + { 8, "rmcpplus_status_code", REQUIRED, LENGTH-FIXED } + { 16, "reserved1", REQUIRED, LENGTH-FIXED } + { 32, "managed_system_session_id", REQUIRED, LENGTH-FIXED } + { 512, "key_exchange_authentication_code", OPTIONAL, LENGTH-VARIABLE } + +RMCP+ RAKP Message 4 +-------------------- + +FIID Template: tmpl_rmcpplus_rakp_message_4 + + { 8, "message_tag", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "rmcpplus_status_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "reserved1", REQUIRED, LENGTH-FIXED } + { 32, "remote_console_session_id", REQUIRED, LENGTH-FIXED } + { 512, "integrity_check_value", OPTIONAL, LENGTH-VARIABLE } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_RMCPPLUS_INTERFACE_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-rmcpplus-support-and-payload-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-rmcpplus-support-and-payload-cmds-templates.h new file mode 100644 index 00000000..e15f6b30 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-rmcpplus-support-and-payload-cmds-templates.h @@ -0,0 +1,409 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_TEMPLATES_H +#define IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Activate Payload Request +------------------------ + +FIID Template: tmpl_cmd_activate_payload_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 6, "payload_type", REQUIRED, LENGTH-FIXED } + { 2, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "payload_instance", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 32, "auxiliary_request_data", REQUIRED, LENGTH-FIXED } + +Activate Payload (SOL) Request +------------------------------ + +FIID Template: tmpl_cmd_activate_payload_sol_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 6, "payload_type", REQUIRED, LENGTH-FIXED } + { 2, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "payload_instance", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + { 1, "sol_startup_handshake", REQUIRED, LENGTH-FIXED } + { 2, "shared_serial_alert_behavior", REQUIRED, LENGTH-FIXED } + { 1, "reserved4", REQUIRED, LENGTH-FIXED } + { 1, "test_mode", REQUIRED, LENGTH-FIXED } + { 1, "authentication_activation", REQUIRED, LENGTH-FIXED } + { 1, "encryption_activation", REQUIRED, LENGTH-FIXED } + { 24, "reserved5", REQUIRED, LENGTH-FIXED } + +Activate Payload Response +------------------------- + +FIID Template: tmpl_cmd_activate_payload_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "auxiliary_response_data", REQUIRED, LENGTH-FIXED } + { 16, "inbound_payload_size", REQUIRED, LENGTH-FIXED } + { 16, "outbound_payload_size", REQUIRED, LENGTH-FIXED } + { 16, "payload_udp_port_number", REQUIRED, LENGTH-FIXED } + { 16, "payload_vlan_number", REQUIRED, LENGTH-FIXED } + +Activate Payload (SOL) Response +------------------------------- + +FIID Template: tmpl_cmd_activate_payload_sol_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "test_mode", REQUIRED, LENGTH-FIXED } + { 31, "reserved1", REQUIRED, LENGTH-FIXED } + { 16, "inbound_payload_size", REQUIRED, LENGTH-FIXED } + { 16, "outbound_payload_size", REQUIRED, LENGTH-FIXED } + { 16, "payload_udp_port_number", REQUIRED, LENGTH-FIXED } + { 16, "payload_vlan_number", REQUIRED, LENGTH-FIXED } + +Deactivate Payload Request +-------------------------- + +FIID Template: tmpl_cmd_deactivate_payload_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 6, "payload_type", REQUIRED, LENGTH-FIXED } + { 2, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "payload_instance", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 32, "payload_auxiliary_data", REQUIRED, LENGTH-FIXED } + +Deactivate Payload Response +--------------------------- + +FIID Template: tmpl_cmd_deactivate_payload_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Suspend Resume Payload Encryption Request +----------------------------------------- + +FIID Template: tmpl_cmd_suspend_resume_payload_encryption_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 6, "payload_type", REQUIRED, LENGTH-FIXED } + { 2, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "payload_instance", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + /* achu: The IPMI spec says [4:0] for Operation and [7:2] for + reserved3. Needless to say, one is wrong. Since there are + only three operations, we'll assume they meant for operation to + be a 2 bit field + */ + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 6, "reserved3", REQUIRED, LENGTH-FIXED } + +Suspend Resume Payload Encryption Response +------------------------------------------ + +FIID Template: tmpl_cmd_suspend_resume_payload_encryption_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Payload Activation Status Request +------------------------------------- + +FIID Template: tmpl_cmd_get_payload_activation_status_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "payload_type", REQUIRED, LENGTH-FIXED } + +Get Payload Activation Status Response +-------------------------------------- + +FIID Template: tmpl_cmd_get_payload_activation_status_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "instance_capacity", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "instance_1", REQUIRED, LENGTH-FIXED } + { 1, "instance_2", REQUIRED, LENGTH-FIXED } + { 1, "instance_3", REQUIRED, LENGTH-FIXED } + { 1, "instance_4", REQUIRED, LENGTH-FIXED } + { 1, "instance_5", REQUIRED, LENGTH-FIXED } + { 1, "instance_6", REQUIRED, LENGTH-FIXED } + { 1, "instance_7", REQUIRED, LENGTH-FIXED } + { 1, "instance_8", REQUIRED, LENGTH-FIXED } + { 1, "instance_9", REQUIRED, LENGTH-FIXED } + { 1, "instance_10", REQUIRED, LENGTH-FIXED } + { 1, "instance_11", REQUIRED, LENGTH-FIXED } + { 1, "instance_12", REQUIRED, LENGTH-FIXED } + { 1, "instance_13", REQUIRED, LENGTH-FIXED } + { 1, "instance_14", REQUIRED, LENGTH-FIXED } + { 1, "instance_15", REQUIRED, LENGTH-FIXED } + { 1, "instance_16", REQUIRED, LENGTH-FIXED } + +Get Payload Instance Info Request +--------------------------------- + +FIID Template: tmpl_cmd_get_payload_instance_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "payload_type", REQUIRED, LENGTH-FIXED } + { 8, "payload_instance", REQUIRED, LENGTH-FIXED } + +Get Payload Instance Info Response +---------------------------------- + +FIID Template: tmpl_cmd_get_payload_instance_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "session_id", REQUIRED, LENGTH-FIXED } + { 8, "port_number", REQUIRED, LENGTH-FIXED } + { 56, "reserved", REQUIRED, LENGTH-FIXED } + +Set User Payload Access Request +------------------------------- + +FIID Template: tmpl_cmd_set_user_payload_access_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "user_id", REQUIRED, LENGTH-FIXED } + { 2, "operation", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_1", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_2", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_3", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_4", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_5", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_6", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_7", REQUIRED, LENGTH-FIXED } + { 8, "reserved3", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_0", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_1", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_2", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_3", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_4", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_5", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_6", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_7", REQUIRED, LENGTH-FIXED } + { 8, "reserved4", REQUIRED, LENGTH-FIXED } + +Set User Payload Access Response +-------------------------------- + +FIID Template: tmpl_cmd_set_user_payload_access_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get User Payload Access Request +------------------------------- + +FIID Template: tmpl_cmd_get_user_payload_access_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 6, "user_id", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + +Get User Payload Access Response +-------------------------------- + +FIID Template: tmpl_cmd_get_user_payload_access_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_1", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_2", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_3", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_4", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_5", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_6", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_7", REQUIRED, LENGTH-FIXED } + { 8, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_0", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_1", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_2", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_3", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_4", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_5", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_6", REQUIRED, LENGTH-FIXED } + { 1, "oem_payload_7", REQUIRED, LENGTH-FIXED } + { 8, "reserved3", REQUIRED, LENGTH-FIXED } + +Get Channel Payload Support Request +----------------------------------- + +FIID Template: tmpl_cmd_get_channel_payload_support_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get Channel Payload Support Response +------------------------------------ + +FIID Template: tmpl_cmd_get_channel_payload_support_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "standard_payload_type_0_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_1_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_2_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_3_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_4_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_5_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_6_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_7_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_8_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_9_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_10_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_11_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_12_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_13_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_14_supported", REQUIRED, LENGTH-FIXED } + { 1, "standard_payload_type_15_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_0_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_1_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_2_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_3_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_4_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_5_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_6_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_7_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_8_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_9_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_10_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_11_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_12_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_13_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_14_supported", REQUIRED, LENGTH-FIXED } + { 1, "session_setup_payload_15_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_20h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_21h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_22h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_23h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_24h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_25h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_26h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_27h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_28h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_29h_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_2Ah_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_2Bh_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_2Ch_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_2Dh_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_2Eh_supported", REQUIRED, LENGTH-FIXED } + { 1, "payload_type_2Fh_supported", REQUIRED, LENGTH-FIXED } + { 16, "reserved", REQUIRED, LENGTH-FIXED } + +Get Channel Payload Version Request +----------------------------------- + +FIID Template: tmpl_cmd_get_channel_payload_version_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "payload_type", REQUIRED, LENGTH-FIXED } + +Get Channel Payload Version Response +------------------------------------ + +FIID Template: tmpl_cmd_get_channel_payload_version_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "minor_format_version", REQUIRED, LENGTH-FIXED } + { 4, "major_format_version", REQUIRED, LENGTH-FIXED } + +Get Channel OEM Payload Info Request +------------------------------------ + +FIID Template: tmpl_cmd_get_channel_oem_payload_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "payload_type", REQUIRED, LENGTH-FIXED } + { 24, "oem_iana", REQUIRED, LENGTH-FIXED } + { 16, "oem_payload_id", REQUIRED, LENGTH-FIXED } + +Get Channel OEM Payload Info Response +------------------------------------- + +FIID Template: tmpl_cmd_get_channel_oem_payload_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "payload_type", REQUIRED, LENGTH-FIXED } + { 24, "oem_iana", REQUIRED, LENGTH-FIXED } + { 16, "oem_payload_id", REQUIRED, LENGTH-FIXED } + { 4, "minor_format_version", REQUIRED, LENGTH-FIXED } + { 4, "major_format_version", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_RMCPPLUS_SUPPORT_AND_PAYLOAD_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-sdr-record-format-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sdr-record-format-templates.h new file mode 100644 index 00000000..15b13a1a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sdr-record-format-templates.h @@ -0,0 +1,1215 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SDR_RECORD_FORMAT_TEMPLATES_H +#define IPMI_SDR_RECORD_FORMAT_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +SDR Record Header +----------------- + +FIID Template: tmpl_sdr_record_header + + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + +SDR Full Sensor Record +---------------------- + +FIID Template: tmpl_sdr_full_sensor_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "sensor_owner_id.type", REQUIRED, LENGTH-FIXED } + { 7, "sensor_owner_id", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun.reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_initialization.sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.event_generation", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_sensor_type", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_hysteresis", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_thresholds", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_events", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.settable_sensor", REQUIRED, LENGTH-FIXED } + + { 2, "sensor_capabilities.event_message_control_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.threshold_access_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.hysteresis_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.auto_re_arm_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.entity_ignore_support", REQUIRED, LENGTH-FIXED } + + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + + { 16, "assertion_event_lower_threshold_reading_mask", REQUIRED, LENGTH-FIXED } + { 16, "deassertion_event_upper_threshold_reading_mask", REQUIRED, LENGTH-FIXED } + { 16, "discrete_reading_settable_threshold_readable_threshold_mask", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_unit1.percentage", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.modifier_unit", REQUIRED, LENGTH-FIXED } + { 3, "sensor_unit1.rate_unit", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.analog_data_format", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit2.base_unit", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit3.modifier_unit", REQUIRED, LENGTH-FIXED } + + { 7, "linearization", REQUIRED, LENGTH-FIXED } + { 1, "linearization.reserved", REQUIRED, LENGTH-FIXED } + { 8, "m_ls", REQUIRED, LENGTH-FIXED } + { 6, "tolerance", REQUIRED, LENGTH-FIXED } + { 2, "m_ms", REQUIRED, LENGTH-FIXED } + { 8, "b_ls", REQUIRED, LENGTH-FIXED } + { 6, "accuracy_ls", REQUIRED, LENGTH-FIXED } + { 2, "b_ms", REQUIRED, LENGTH-FIXED } + { 2, "sensor_direction", REQUIRED, LENGTH-FIXED } + { 2, "accuracy_exp", REQUIRED, LENGTH-FIXED } + { 4, "accuracy_ms", REQUIRED, LENGTH-FIXED } + { 4, "b_exponent", REQUIRED, LENGTH-FIXED } + { 4, "r_exponent", REQUIRED, LENGTH-FIXED } + + { 1, "analog_characteristics_flag.nominal_reading", REQUIRED, LENGTH-FIXED } + { 1, "analog_characteristics_flag.normal_max", REQUIRED, LENGTH-FIXED } + { 1, "analog_characteristics_flag.normal_min", REQUIRED, LENGTH-FIXED } + { 5, "analog_characteristics_flag.reserved", REQUIRED, LENGTH-FIXED } + + { 8, "nominal_reading", REQUIRED, LENGTH-FIXED } + { 8, "normal_maximum", REQUIRED, LENGTH-FIXED } + { 8, "normal_minimum", REQUIRED, LENGTH-FIXED } + { 8, "sensor_maximum_reading", REQUIRED, LENGTH-FIXED } + { 8, "sensor_minimum_reading", REQUIRED, LENGTH-FIXED } + + { 8, "upper_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_critical_threshold", REQUIRED, LENGTH-FIXED } + + { 8, "positive_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + { 8, "negative_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + + { 16, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "id_string_type_length_code", REQUIRED, LENGTH-FIXED } + { 128, "id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Full Sensor Record (Non-Threshold Base Sensors) +--------------------------------------------------- + +FIID Template: tmpl_sdr_full_sensor_record_non_threshold_based_sensors + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "sensor_owner_id.type", REQUIRED, LENGTH-FIXED } + { 7, "sensor_owner_id", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun.reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_initialization.sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.event_generation", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_sensor_type", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_hysteresis", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_thresholds", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_events", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.reserved", REQUIRED, LENGTH-FIXED } + + { 2, "sensor_capabilities.event_message_control_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.threshold_access_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.hysteresis_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.auto_re_arm_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.entity_ignore_support", REQUIRED, LENGTH-FIXED } + + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + + { 1, "assertion_event_mask.event_offset_0", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_1", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_2", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_3", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_4", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_5", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_6", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_7", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_8", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_9", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_10", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_11", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_12", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_13", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_14", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "deassertion_event_mask.event_offset_0", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_1", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_2", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_3", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_4", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_5", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_6", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_7", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_8", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_9", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_10", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_11", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_12", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_13", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_14", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "discrete_reading_mask.state_bit_0", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_1", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_2", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_3", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_4", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_5", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_6", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_7", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_8", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_9", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_10", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_11", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_12", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_13", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_14", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_unit1.percentage", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.modifier_unit", REQUIRED, LENGTH-FIXED } + { 3, "sensor_unit1.rate_unit", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.analog_data_format", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit2.base_unit", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit3.modifier_unit", REQUIRED, LENGTH-FIXED } + + { 7, "linearization", REQUIRED, LENGTH-FIXED } + { 1, "linearization.reserved", REQUIRED, LENGTH-FIXED } + { 8, "m_ls", REQUIRED, LENGTH-FIXED } + { 6, "tolerance", REQUIRED, LENGTH-FIXED } + { 2, "m_ms", REQUIRED, LENGTH-FIXED } + { 8, "b_ls", REQUIRED, LENGTH-FIXED } + { 6, "accuracy_ls", REQUIRED, LENGTH-FIXED } + { 2, "b_ms", REQUIRED, LENGTH-FIXED } + { 2, "sensor_direction", REQUIRED, LENGTH-FIXED } + { 2, "accuracy_exp", REQUIRED, LENGTH-FIXED } + { 4, "accuracy_ms", REQUIRED, LENGTH-FIXED } + { 4, "b_exponent", REQUIRED, LENGTH-FIXED } + { 4, "r_exponent", REQUIRED, LENGTH-FIXED } + + { 1, "analog_characteristics_flag.nominal_reading", REQUIRED, LENGTH-FIXED } + { 1, "analog_characteristics_flag.normal_max", REQUIRED, LENGTH-FIXED } + { 1, "analog_characteristics_flag.normal_min", REQUIRED, LENGTH-FIXED } + { 5, "analog_characteristics_flag.reserved", REQUIRED, LENGTH-FIXED } + + { 8, "nominal_reading", REQUIRED, LENGTH-FIXED } + { 8, "normal_maximum", REQUIRED, LENGTH-FIXED } + { 8, "normal_minimum", REQUIRED, LENGTH-FIXED } + { 8, "sensor_maximum_reading", REQUIRED, LENGTH-FIXED } + { 8, "sensor_minimum_reading", REQUIRED, LENGTH-FIXED } + + { 8, "upper_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_critical_threshold", REQUIRED, LENGTH-FIXED } + + { 8, "positive_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + { 8, "negative_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + + { 16, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "id_string_type_length_code", REQUIRED, LENGTH-FIXED } + { 128, "id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Full Sensor Record (Threshold Base Sensors) +----------------------------------------------- + +FIID Template: tmpl_sdr_full_sensor_record_threshold_based_sensors + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "sensor_owner_id.type", REQUIRED, LENGTH-FIXED } + { 7, "sensor_owner_id", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun.reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_initialization.sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.event_generation", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_sensor_type", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_hysteresis", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_thresholds", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_events", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.reserved", REQUIRED, LENGTH-FIXED } + + { 2, "sensor_capabilities.event_message_control_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.threshold_access_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.hysteresis_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.auto_re_arm_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.entity_ignore_support", REQUIRED, LENGTH-FIXED } + + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + + { 1, "threshold_assertion_event_mask.lower_non_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_non_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_non_recoverable_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_non_recoverable_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_non_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_non_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_non_recoverable_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_non_recoverable_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "lower_threshold_reading_mask.lower_critical_threshold_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "lower_threshold_reading_mask.lower_non_recoverable_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "lower_threshold_reading_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "threshold_deassertion_event_mask.lower_non_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_non_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_non_recoverable_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_non_recoverable_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_non_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_non_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "upper_threshold_reading_mask.upper_non_critical_threshold_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "upper_threshold_reading_mask.upper_critical_threshold_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "upper_threshold_reading_mask.upper_non_recoverable_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "upper_threshold_reading_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "readable_threshold_mask.lower_non_critical_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.lower_critical_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.lower_non_recoverable_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.upper_non_critical_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.upper_critical_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.upper_non_recoverable_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.reserved2", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.lower_non_critical_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.lower_critical_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.lower_non_recoverable_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.upper_non_critical_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.upper_critical_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.upper_non_recoverable_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.reserved2", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_unit1.percentage", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.modifier_unit", REQUIRED, LENGTH-FIXED } + { 3, "sensor_unit1.rate_unit", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.analog_data_format", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit2.base_unit", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit3.modifier_unit", REQUIRED, LENGTH-FIXED } + + { 7, "linearization", REQUIRED, LENGTH-FIXED } + { 1, "linearization.reserved", REQUIRED, LENGTH-FIXED } + { 8, "m_ls", REQUIRED, LENGTH-FIXED } + { 6, "tolerance", REQUIRED, LENGTH-FIXED } + { 2, "m_ms", REQUIRED, LENGTH-FIXED } + { 8, "b_ls", REQUIRED, LENGTH-FIXED } + { 6, "accuracy_ls", REQUIRED, LENGTH-FIXED } + { 2, "b_ms", REQUIRED, LENGTH-FIXED } + { 2, "sensor_direction", REQUIRED, LENGTH-FIXED } + { 2, "accuracy_exp", REQUIRED, LENGTH-FIXED } + { 4, "accuracy_ms", REQUIRED, LENGTH-FIXED } + { 4, "b_exponent", REQUIRED, LENGTH-FIXED } + { 4, "r_exponent", REQUIRED, LENGTH-FIXED } + + { 1, "analog_characteristics_flag.nominal_reading", REQUIRED, LENGTH-FIXED } + { 1, "analog_characteristics_flag.normal_max", REQUIRED, LENGTH-FIXED } + { 1, "analog_characteristics_flag.normal_min", REQUIRED, LENGTH-FIXED } + { 5, "analog_characteristics_flag.reserved", REQUIRED, LENGTH-FIXED } + + { 8, "nominal_reading", REQUIRED, LENGTH-FIXED } + { 8, "normal_maximum", REQUIRED, LENGTH-FIXED } + { 8, "normal_minimum", REQUIRED, LENGTH-FIXED } + { 8, "sensor_maximum_reading", REQUIRED, LENGTH-FIXED } + { 8, "sensor_minimum_reading", REQUIRED, LENGTH-FIXED } + + { 8, "upper_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_critical_threshold", REQUIRED, LENGTH-FIXED } + + { 8, "positive_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + { 8, "negative_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + + { 16, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "id_string_type_length_code", REQUIRED, LENGTH-FIXED } + { 128, "id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Compact Sensor Record +------------------------- + +FIID Template: tmpl_sdr_compact_sensor_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "sensor_owner_id.type", REQUIRED, LENGTH-FIXED } + { 7, "sensor_owner_id", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun.reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_initialization.sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.event_generation", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_sensor_type", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_hysteresis", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_thresholds", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_events", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.reserved", REQUIRED, LENGTH-FIXED } + + { 2, "sensor_capabilities.event_message_control_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.threshold_access_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.hysteresis_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.auto_re_arm_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.entity_ignore_support", REQUIRED, LENGTH-FIXED } + + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + + { 16, "assertion_event_lower_threshold_reading_mask", REQUIRED, LENGTH-FIXED } + { 16, "deassertion_event_upper_threshold_reading_mask", REQUIRED, LENGTH-FIXED } + { 16, "discrete_reading_settable_threshold_readable_threshold_mask", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_unit1.percentage", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.modifier_unit", REQUIRED, LENGTH-FIXED } + { 3, "sensor_unit1.rate_unit", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.analog_data_format", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit2.base_unit", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit3.modifier_unit", REQUIRED, LENGTH-FIXED } + + { 4, "share_count", REQUIRED, LENGTH-FIXED } + { 2, "id_string_instance_modifier_type", REQUIRED, LENGTH-FIXED } + { 2, "sensor_direction", REQUIRED, LENGTH-FIXED } + { 7, "id_string_instance_modifier_offset", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance_sharing", REQUIRED, LENGTH-FIXED } + + { 8, "positive_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + { 8, "negative_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + + { 24, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "id_string_type_length_code", REQUIRED, LENGTH-FIXED } + { 128, "id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Compact Sensor Record (Non-Threshold Based Sensors) +------------------------------------------------------- + +FIID Template: tmpl_sdr_compact_sensor_record_non_threshold_based_sensors + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "sensor_owner_id.type", REQUIRED, LENGTH-FIXED } + { 7, "sensor_owner_id", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun.reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_initialization.sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.event_generation", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_sensor_type", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_hysteresis", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_thresholds", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_events", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.reserved", REQUIRED, LENGTH-FIXED } + + { 2, "sensor_capabilities.event_message_control_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.threshold_access_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.hysteresis_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.auto_re_arm_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.entity_ignore_support", REQUIRED, LENGTH-FIXED } + + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + + { 1, "assertion_event_mask.event_offset_0", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_1", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_2", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_3", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_4", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_5", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_6", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_7", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_8", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_9", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_10", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_11", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_12", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_13", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.event_offset_14", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "deassertion_event_mask.event_offset_0", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_1", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_2", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_3", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_4", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_5", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_6", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_7", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_8", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_9", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_10", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_11", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_12", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_13", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.event_offset_14", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "discrete_reading_mask.state_bit_0", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_1", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_2", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_3", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_4", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_5", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_6", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_7", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_8", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_9", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_10", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_11", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_12", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_13", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.state_bit_14", REQUIRED, LENGTH-FIXED } + { 1, "discrete_reading_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_unit1.percentage", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.modifier_unit", REQUIRED, LENGTH-FIXED } + { 3, "sensor_unit1.rate_unit", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.analog_data_format", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit2.base_unit", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit3.modifier_unit", REQUIRED, LENGTH-FIXED } + + { 4, "share_count", REQUIRED, LENGTH-FIXED } + { 2, "id_string_instance_modifier_type", REQUIRED, LENGTH-FIXED } + { 2, "sensor_direction", REQUIRED, LENGTH-FIXED } + { 7, "id_string_instance_modifier_offset", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance_sharing", REQUIRED, LENGTH-FIXED } + + { 8, "positive_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + { 8, "negative_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + { 24, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "oem", REQUIRED, LENGTH-FIXED } + { 8, "id_string_type_length_code", REQUIRED, LENGTH-FIXED } + { 128, "id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Compact Sensor Record (Threshold Based Sensors) +--------------------------------------------------- + +FIID Template: tmpl_sdr_compact_sensor_record_threshold_based_sensors + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "sensor_owner_id.type", REQUIRED, LENGTH-FIXED } + { 7, "sensor_owner_id", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun.reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_initialization.sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.event_generation", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_sensor_type", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_hysteresis", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_thresholds", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_events", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.init_scanning", REQUIRED, LENGTH-FIXED } + { 1, "sensor_initialization.reserved", REQUIRED, LENGTH-FIXED } + + { 2, "sensor_capabilities.event_message_control_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.threshold_access_support", REQUIRED, LENGTH-FIXED } + { 2, "sensor_capabilities.hysteresis_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.auto_re_arm_support", REQUIRED, LENGTH-FIXED } + { 1, "sensor_capabilities.entity_ignore_support", REQUIRED, LENGTH-FIXED } + + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + + { 1, "threshold_assertion_event_mask.lower_non_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_non_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_non_recoverable_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.lower_non_recoverable_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_non_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_non_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_non_recoverable_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_assertion_event_mask.upper_non_recoverable_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "lower_threshold_reading_mask.lower_non_critical_threshold_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "lower_threshold_reading_mask.lower_critical_threshold_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "lower_threshold_reading_mask.lower_non_recoverable_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "lower_threshold_reading_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "threshold_deassertion_event_mask.lower_non_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_non_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_non_recoverable_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.lower_non_recoverable_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_non_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_non_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_critical_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_critical_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_non_recoverable_going_low_supported", REQUIRED, LENGTH-FIXED } + { 1, "threshold_deassertion_event_mask.upper_non_recoverable_going_high_supported", REQUIRED, LENGTH-FIXED } + { 1, "upper_threshold_reading_mask.upper_non_critical_threshold_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "upper_threshold_reading_mask.upper_critical_threshold_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "upper_threshold_reading_mask.upper_non_recoverable_is_comparison", REQUIRED, LENGTH-FIXED } + { 1, "upper_threshold_reading_mask.reserved", REQUIRED, LENGTH-FIXED } + + { 1, "readable_threshold_mask.lower_non_critical_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.lower_critical_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.lower_non_recoverable_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.upper_non_critical_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.upper_critical_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.upper_non_recoverable_threshold_is_readable", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "readable_threshold_mask.reserved2", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.lower_non_critical_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.lower_critical_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.lower_non_recoverable_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.upper_non_critical_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.upper_critical_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.upper_non_recoverable_threshold_is_settable", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.reserved1", REQUIRED, LENGTH-FIXED } + { 1, "settable_threshold_mask.reserved2", REQUIRED, LENGTH-FIXED } + + { 1, "sensor_unit1.percentage", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.modifier_unit", REQUIRED, LENGTH-FIXED } + { 3, "sensor_unit1.rate_unit", REQUIRED, LENGTH-FIXED } + { 2, "sensor_unit1.analog_data_format", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit2.base_unit", REQUIRED, LENGTH-FIXED } + { 8, "sensor_unit3.modifier_unit", REQUIRED, LENGTH-FIXED } + + { 4, "share_count", REQUIRED, LENGTH-FIXED } + { 2, "id_string_instance_modifier_type", REQUIRED, LENGTH-FIXED } + { 2, "sensor_direction", REQUIRED, LENGTH-FIXED } + { 7, "id_string_instance_modifier_offset", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance_sharing", REQUIRED, LENGTH-FIXED } + + { 8, "positive_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + { 8, "negative_going_threshold_hysteresis", REQUIRED, LENGTH-FIXED } + + { 24, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "id_string_type_length_code", REQUIRED, LENGTH-FIXED } + { 128, "id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Event Only Record +--------------------- + +FIID Template: tmpl_sdr_event_only_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "sensor_owner_id.type", REQUIRED, LENGTH-FIXED } + { 7, "sensor_owner_id", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun", REQUIRED, LENGTH-FIXED } + { 2, "fru_inventory_device_owner_lun", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + + /******************************************* + * Sensor Record Sharing, Sensor Direction * + *******************************************/ + { 4, "share_count", REQUIRED, LENGTH-FIXED } + { 2, "id_string_instance_modifier_type", REQUIRED, LENGTH-FIXED } + { 2, "sensor_direction", REQUIRED, LENGTH-FIXED } + { 7, "id_string_instance_modifier_offset", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance_sharing", REQUIRED, LENGTH-FIXED } + + { 8, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "id_string_type_length_code", REQUIRED, LENGTH-FIXED } + { 128, "id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Entity Association Record +----------------------------- + +FIID Template: tmpl_sdr_entity_association_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 8, "container_entity_id", REQUIRED, LENGTH-FIXED } + { 8, "container_entity_instance", REQUIRED, LENGTH-FIXED } + { 5, "flags.reserved", REQUIRED, LENGTH-FIXED } + { 1, "flags.sensor_presence", REQUIRED, LENGTH-FIXED } + { 1, "flags.record_link", REQUIRED, LENGTH-FIXED } + { 1, "flags.contained_entities", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_contained_entity_range_1", REQUIRED, LENGTH-FIXED } + { 8, "instance_id_contained_entity_range_1", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "entity_id_contained_entity_range_2", REQUIRED, LENGTH-FIXED } + { 8, "instance_id_contained_entity_range_2", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_contained_entity_range_3", REQUIRED, LENGTH-FIXED } + { 8, "instance_id_contained_entity_range_3", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_contained_entity_range_4", REQUIRED, LENGTH-FIXED } + { 8, "instance_id_contained_entity_range_4", REQUIRED, LENGTH-FIXED } + +SDR Device Relative Entity Association Record +--------------------------------------------- + +FIID Template: tmpl_sdr_device_relative_entity_association_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 8, "container_entity_id", REQUIRED, LENGTH-FIXED } + { 8, "container_entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "container_entity_device_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "container_entity_device_address", REQUIRED, LENGTH-FIXED } + { 4, "container_entity_device_channel.reserved", REQUIRED, LENGTH-FIXED } + { 4, "container_entity_device_channel", REQUIRED, LENGTH-FIXED } + + { 5, "flags.reserved", REQUIRED, LENGTH-FIXED } + { 1, "flags.sensor_presence", REQUIRED, LENGTH-FIXED } + { 1, "flags.record_link", REQUIRED, LENGTH-FIXED } + { 1, "flags.contained_entities", REQUIRED, LENGTH-FIXED } + + { 1, "contained_entity_1_device_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "contained_entity_1_device_address", REQUIRED, LENGTH-FIXED } + { 4, "contained_entity_1_device_channel.reserved", REQUIRED, LENGTH-FIXED } + { 4, "contained_entity_1_device_channel", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_contained_entity_range_1", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance_contained_entity_range_1", REQUIRED, LENGTH-FIXED } + + { 1, "contained_entity_2_device_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "contained_entity_2_device_address", REQUIRED, LENGTH-FIXED } + { 4, "contained_entity_2_device_channel.reserved", REQUIRED, LENGTH-FIXED } + { 4, "contained_entity_2_device_channel", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_contained_entity_range_2", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance_contained_entity_range_2", REQUIRED, LENGTH-FIXED } + + { 1, "contained_entity_3_device_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "contained_entity_3_device_address", REQUIRED, LENGTH-FIXED } + { 4, "contained_entity_3_device_channel.reserved", REQUIRED, LENGTH-FIXED } + { 4, "contained_entity_3_device_channel", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_contained_entity_range_3", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance_contained_entity_range_3", REQUIRED, LENGTH-FIXED } + + { 1, "contained_entity_4_device_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "contained_entity_4_device_address", REQUIRED, LENGTH-FIXED } + { 4, "contained_entity_4_device_channel.reserved", REQUIRED, LENGTH-FIXED } + { 4, "contained_entity_4_device_channel", REQUIRED, LENGTH-FIXED } + { 8, "entity_id_contained_entity_range_4", REQUIRED, LENGTH-FIXED } + { 8, "entity_instance_contained_entity_range_4", REQUIRED, LENGTH-FIXED } + + { 48, "reserved", REQUIRED, LENGTH-FIXED } + +SDR Generic Device Locator Record +--------------------------------- + +FIID Template: tmpl_sdr_generic_device_locator_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "direct_access_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "direct_access_address", REQUIRED, LENGTH-FIXED } + + { 1, "channel_number_ms", REQUIRED, LENGTH-FIXED } + { 7, "device_slave_address", REQUIRED, LENGTH-FIXED } + + { 3, "private_bus_id", REQUIRED, LENGTH-FIXED } + { 2, "lun_for_master_write_read_command", REQUIRED, LENGTH-FIXED } + { 3, "channel_number_ls", REQUIRED, LENGTH-FIXED } + + { 3, "address_span", REQUIRED, LENGTH-FIXED } + { 5, "address_span.reserved", REQUIRED, LENGTH-FIXED } + { 8, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "device_type", REQUIRED, LENGTH-FIXED } + { 8, "device_type_modifier", REQUIRED, LENGTH-FIXED } + + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "device_id_string_type_length", REQUIRED, LENGTH-FIXED } + { 128, "device_id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR FRU Device Locator Record +----------------------------- + +FIID Template: tmpl_sdr_fru_device_locator_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "direct_access_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "direct_access_address", REQUIRED, LENGTH-FIXED } + + { 8, "logical_fru_device_device_slave_address", REQUIRED, LENGTH-FIXED } + + { 3, "private_bus_id", REQUIRED, LENGTH-FIXED } + { 2, "lun_for_master_write_read_fru_command", REQUIRED, LENGTH-FIXED } + { 2, "logical_physical_access_lun_bus_id.reserved", REQUIRED, LENGTH-FIXED } + { 1, "logical_physical_fru_device", REQUIRED, LENGTH-FIXED } + + { 4, "channel_number.reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + + { 8, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "device_type", REQUIRED, LENGTH-FIXED } + { 8, "device_type_modifier", REQUIRED, LENGTH-FIXED } + { 8, "fru_entity_id", REQUIRED, LENGTH-FIXED } + { 8, "fru_entity_instance", REQUIRED, LENGTH-FIXED } + + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "device_id_string_type_length", REQUIRED, LENGTH-FIXED } + { 128, "device_id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR FRU Device Locator Record (Non-Intelligent) +----------------------------------------------- + +FIID Template: tmpl_sdr_fru_device_locator_record_non_intelligent + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "direct_access_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "direct_access_address", REQUIRED, LENGTH-FIXED } + + { 1, "non_intelligent_fru_device.reserved", REQUIRED, LENGTH-FIXED } + { 7, "non_intelligent_fru_device.slave_address", REQUIRED, LENGTH-FIXED } + + { 3, "private_bus_id", REQUIRED, LENGTH-FIXED } + { 2, "lun_for_master_write_read_fru_command", REQUIRED, LENGTH-FIXED } + { 2, "logical_physical_access_lun_bus_id.reserved", REQUIRED, LENGTH-FIXED } + { 1, "logical_physical_fru_device", REQUIRED, LENGTH-FIXED } + + { 4, "channel_number.reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 8, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "device_type", REQUIRED, LENGTH-FIXED } + { 8, "device_type_modifier", REQUIRED, LENGTH-FIXED } + { 8, "fru_entity_id", REQUIRED, LENGTH-FIXED } + { 8, "fru_entity_instance", REQUIRED, LENGTH-FIXED } + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "device_id_string_type_length", REQUIRED, LENGTH-FIXED } + { 128, "device_id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Management Controller Device Locator Record +----------------------------------------------- + +FIID Template: tmpl_sdr_management_controller_device_locator_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "device_slave_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "device_slave_address", REQUIRED, LENGTH-FIXED } + + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "channel_number.reserved", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 2, "global_initialization.event_message_generation", REQUIRED, LENGTH-FIXED } + { 1, "global_initialization.log_initialization_agent_errors", REQUIRED, LENGTH-FIXED } + { 1, "global_initialization.controller_logs_initialization_agent_errors", REQUIRED, LENGTH-FIXED } + { 1, "power_state_notification.reserved", REQUIRED, LENGTH-FIXED } + { 1, "power_state_notification.controller", REQUIRED, LENGTH-FIXED } + { 1, "power_state_notification.acpi_device_power_state_notification", REQUIRED, LENGTH-FIXED } + { 1, "power_state_notification.acpi_system_power_state_notification", REQUIRED, LENGTH-FIXED } + + { 1, "device_capabilities.sensor_device", REQUIRED, LENGTH-FIXED } + { 1, "device_capabilities.sdr_repository_device", REQUIRED, LENGTH-FIXED } + { 1, "device_capabilities.sel_device", REQUIRED, LENGTH-FIXED } + { 1, "device_capabilities.fru_inventory_device", REQUIRED, LENGTH-FIXED } + { 1, "device_capabilities.ipmb_event_receiver", REQUIRED, LENGTH-FIXED } + { 1, "device_capabilities.ipmb_event_generator", REQUIRED, LENGTH-FIXED } + { 1, "device_capabilities.bridge", REQUIRED, LENGTH-FIXED } + { 1, "device_capabilities.chassis_device", REQUIRED, LENGTH-FIXED } + + { 24, "reserved", REQUIRED, LENGTH-FIXED } + + { 8, "entity_id", REQUIRED, LENGTH-FIXED } + { 7, "entity_instance", REQUIRED, LENGTH-FIXED } + { 1, "entity_instance.type", REQUIRED, LENGTH-FIXED } + + { 8, "oem", REQUIRED, LENGTH-FIXED } + + { 8, "device_id_string_type_length", REQUIRED, LENGTH-FIXED } + { 128, "device_id_string", OPTIONAL, LENGTH-VARIABLE } + +SDR Management Controller Confirmation Record +--------------------------------------------- + +FIID Template: tmpl_sdr_management_controller_confirmation_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 1, "device_slave_address.reserved", REQUIRED, LENGTH-FIXED } + { 7, "device_slave_address", REQUIRED, LENGTH-FIXED } + { 8, "device_id", REQUIRED, LENGTH-FIXED } + { 4, "device_revision", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + + /********************* + * Record Body Bytes * + *********************/ + { 7, "major_firmware_revision", REQUIRED, LENGTH-FIXED } + { 1, "major_firmware_revision.reserved", REQUIRED, LENGTH-FIXED } + { 8, "minor_firmware_revision", REQUIRED, LENGTH-FIXED } + { 8, "ipmi_version", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 16, "product_id", REQUIRED, LENGTH-FIXED } + { 128, "device_guid", REQUIRED, LENGTH-FIXED } + +SDR BMC Message Channel Info +---------------------------- + +FIID Template: tmpl_sdr_bmc_message_channel_info_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 4, "channel_0_protocol", REQUIRED, LENGTH-FIXED } + { 3, "channel_0_message_receive_lun", REQUIRED, LENGTH-FIXED } + { 1, "channel_0_transmit_supported", REQUIRED, LENGTH-FIXED } + { 4, "channel_1_protocol", REQUIRED, LENGTH-FIXED } + { 3, "channel_1_message_receive_lun", REQUIRED, LENGTH-FIXED } + { 1, "channel_1_transmit_supported", REQUIRED, LENGTH-FIXED } + { 4, "channel_2_protocol", REQUIRED, LENGTH-FIXED } + { 3, "channel_2_message_receive_lun", REQUIRED, LENGTH-FIXED } + { 1, "channel_2_transmit_supported", REQUIRED, LENGTH-FIXED } + { 4, "channel_3_protocol", REQUIRED, LENGTH-FIXED } + { 3, "channel_3_message_receive_lun", REQUIRED, LENGTH-FIXED } + { 1, "channel_3_transmit_supported", REQUIRED, LENGTH-FIXED } + { 4, "channel_4_protocol", REQUIRED, LENGTH-FIXED } + { 3, "channel_4_message_receive_lun", REQUIRED, LENGTH-FIXED } + { 1, "channel_4_transmit_supported", REQUIRED, LENGTH-FIXED } + { 4, "channel_5_protocol", REQUIRED, LENGTH-FIXED } + { 3, "channel_5_message_receive_lun", REQUIRED, LENGTH-FIXED } + { 1, "channel_5_transmit_supported", REQUIRED, LENGTH-FIXED } + { 4, "channel_6_protocol", REQUIRED, LENGTH-FIXED } + { 3, "channel_6_message_receive_lun", REQUIRED, LENGTH-FIXED } + { 1, "channel_6_transmit_supported", REQUIRED, LENGTH-FIXED } + { 4, "channel_7_protocol", REQUIRED, LENGTH-FIXED } + { 3, "channel_7_message_receive_lun", REQUIRED, LENGTH-FIXED } + { 1, "channel_7_transmit_supported", REQUIRED, LENGTH-FIXED } + +SDR OEM Record +-------------- + +FIID Template: tmpl_sdr_oem_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + + /******************** + * Record Key Bytes * + ********************/ + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 448, "oem_data", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SDR_RECORD_FORMAT_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-sdr-repository-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sdr-repository-cmds-templates.h new file mode 100644 index 00000000..43c75fc8 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sdr-repository-cmds-templates.h @@ -0,0 +1,183 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SDR_REPOSITORY_CMDS_TEMPLATES_H +#define IPMI_SDR_REPOSITORY_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Get SDR Repository Info Request +------------------------------- + +FIID Template: tmpl_cmd_get_sdr_repository_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get SDR Repository Info Response +-------------------------------- + +FIID Template: tmpl_cmd_get_sdr_repository_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 16, "record_count", REQUIRED, LENGTH-FIXED } + { 16, "free_space", REQUIRED, LENGTH-FIXED } + { 32, "most_recent_addition_timestamp", REQUIRED, LENGTH-FIXED } + { 32, "most_recent_erase_timestamp", REQUIRED, LENGTH-FIXED } + { 1, "get_sdr_repository_allocation_info_command_supported", REQUIRED, LENGTH-FIXED } + { 1, "reserve_sdr_repository_command_supported", REQUIRED, LENGTH-FIXED } + { 1, "partial_add_sdr_command_supported", REQUIRED, LENGTH-FIXED } + { 1, "delete_sdr_command_supported", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + { 2, "modal_non_modal_sdr_repository_update_operation_supported", REQUIRED, LENGTH-FIXED } + { 1, "overflow_flag", REQUIRED, LENGTH-FIXED } + +Get SDR Repository Allocation Info Request +------------------------------------------ + +FIID Template: tmpl_cmd_get_sdr_repository_allocation_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get SDR Repository Allocation Info Response +------------------------------------------- + +FIID Template: tmpl_cmd_get_sdr_repository_allocation_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "number_of_possible_allocation_units", REQUIRED, LENGTH-FIXED } + { 16, "allocation_unit_size", REQUIRED, LENGTH-FIXED } + { 16, "number_of_free_allocation_units", REQUIRED, LENGTH-FIXED } + { 16, "largest_free_block", REQUIRED, LENGTH-FIXED } + { 8, "maximum_record_size", REQUIRED, LENGTH-FIXED } + +Reserve SDR Repository Request +------------------------------ + +FIID Template: tmpl_cmd_reserve_sdr_repository_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Reserve SDR Repository Response +------------------------------- + +FIID Template: tmpl_cmd_reserve_sdr_repository_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "reservation_id", REQUIRED, LENGTH-FIXED } + +Get SDR Request +--------------- + +FIID Template: tmpl_cmd_get_sdr_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 16, "reservation_id", REQUIRED, LENGTH-FIXED } + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "offset_into_record", REQUIRED, LENGTH-FIXED } + { 8, "bytes_to_read", REQUIRED, LENGTH-FIXED } + +Get SDR Response +---------------- + +FIID Template: tmpl_cmd_get_sdr_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "next_record_id", REQUIRED, LENGTH-FIXED } + /* 2040 = 255 * 8, 255 b/c bytes_to_read field in request is 1 byte long */ + { 2040, "record_data", REQUIRED, LENGTH-VARIABLE } + +Get SDR Repository Time Request +------------------------------- + +FIID Template: tmpl_cmd_get_sdr_repository_time_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get SDR Repository Time Response +-------------------------------- + +FIID Template: tmpl_cmd_get_sdr_repository_time_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "time", REQUIRED, LENGTH-FIXED } + +Set SDR Repository Time Request +------------------------------- + +FIID Template: tmpl_cmd_set_sdr_repository_time_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 32, "time", REQUIRED, LENGTH-FIXED } + +Set SDR Repository Time Response +-------------------------------- + +FIID Template: tmpl_cmd_set_sdr_repository_time_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SDR_REPOSITORY_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-sel-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sel-cmds-templates.h new file mode 100644 index 00000000..edbaf913 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sel-cmds-templates.h @@ -0,0 +1,311 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SEL_CMDS_TEMPLATES_H +#define IPMI_SEL_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Get SEL Info Request +-------------------- + +FIID Template: tmpl_cmd_get_sel_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get SEL Info Response +--------------------- + +FIID Template: tmpl_cmd_get_sel_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "sel_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sel_version_minor", REQUIRED, LENGTH-FIXED } + { 16, "entries", REQUIRED, LENGTH-FIXED } + { 16, "free_space", REQUIRED, LENGTH-FIXED } + { 32, "most_recent_addition_timestamp", REQUIRED, LENGTH-FIXED } + { 32, "most_recent_erase_timestamp", REQUIRED, LENGTH-FIXED } + { 1, "get_sel_allocation_info_command_supported", REQUIRED, LENGTH-FIXED } + { 1, "reserve_sel_command_supported", REQUIRED, LENGTH-FIXED } + { 1, "partial_add_sel_entry_command_supported", REQUIRED, LENGTH-FIXED } + { 1, "delete_sel_command_supported", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "overflow_flag", REQUIRED, LENGTH-FIXED } + +Get SEL Allocation Info Request +------------------------------- + +FIID Template: tmpl_cmd_get_sel_allocation_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get SEL Allocation Info Response +-------------------------------- + +FIID Template: tmpl_cmd_get_sel_allocation_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "number_of_possible_allocation_units", REQUIRED, LENGTH-FIXED } + { 16, "allocation_unit_size", REQUIRED, LENGTH-FIXED } + { 16, "number_of_free_allocation_units", REQUIRED, LENGTH-FIXED } + { 16, "largest_free_block", REQUIRED, LENGTH-FIXED } + { 8, "maximum_record_size", REQUIRED, LENGTH-FIXED } + +Reserve SEL Request +------------------- + +FIID Template: tmpl_cmd_reserve_sel_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Reserve SEL Response +-------------------- + +FIID Template: tmpl_cmd_reserve_sel_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "reservation_id", REQUIRED, LENGTH-FIXED } + +Get SEL Entry Request +--------------------- + +FIID Template: tmpl_cmd_get_sel_entry_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 16, "reservation_id", REQUIRED, LENGTH-FIXED } + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "offset_into_record", REQUIRED, LENGTH-FIXED } + { 8, "bytes_to_read", REQUIRED, LENGTH-FIXED } + +Get SEL Entry Response +---------------------- + +FIID Template: tmpl_cmd_get_sel_entry_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "next_record_id", REQUIRED, LENGTH-FIXED } + { 128, "record_data", OPTIONAL, LENGTH-VARIABLE } + +Delete SEL Entry Request +------------------------ + +FIID Template: tmpl_cmd_delete_sel_entry_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 16, "reservation_id", REQUIRED, LENGTH-FIXED } + { 16, "record_id", REQUIRED, LENGTH-FIXED } + +Delete SEL Entry Response +------------------------- + +FIID Template: tmpl_cmd_delete_sel_entry_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "record_id", REQUIRED, LENGTH-FIXED } + +Clear SEL Request +----------------- + +FIID Template: tmpl_cmd_clear_sel_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 16, "reservation_id", REQUIRED, LENGTH-FIXED } + { 8, "C", REQUIRED, LENGTH-FIXED } + { 8, "L", REQUIRED, LENGTH-FIXED } + { 8, "R", REQUIRED, LENGTH-FIXED } + { 8, "operation", REQUIRED, LENGTH-FIXED } + +Clear SEL Response +------------------ + +FIID Template: tmpl_cmd_clear_sel_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "erasure_progress", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get SEL Time Request +-------------------- + +FIID Template: tmpl_cmd_get_sel_time_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get SEL Time Response +--------------------- + +FIID Template: tmpl_cmd_get_sel_time_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "time", REQUIRED, LENGTH-FIXED } + +Set SEL Time Request +-------------------- + +FIID Template: tmpl_cmd_set_sel_time_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 32, "time", REQUIRED, LENGTH-FIXED } + +Set SEL Time Response +--------------------- + +FIID Template: tmpl_cmd_set_sel_time_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get SEL Time UTC Offset Request +------------------------------- + +FIID Template: tmpl_cmd_get_sel_time_utc_offset_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + +Get SEL Time UTC Offset Response +-------------------------------- + +FIID Template: tmpl_cmd_get_sel_time_utc_offset_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "offset", REQUIRED, LENGTH-FIXED } + +Set SEL Time UTC Offset Request +------------------------------- + +FIID Template: tmpl_cmd_set_sel_time_utc_offset_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 16, "offset", REQUIRED, LENGTH-FIXED } + +Set SEL Time UTC Offset Response +-------------------------------- + +FIID Template: tmpl_cmd_set_sel_time_utc_offset_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Auxiliary Log Status Request +-------------------------------- + +FIID Template: tmpl_cmd_get_auxiliary_log_status_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "log_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get Auxiliary Log Status Response +--------------------------------- + +FIID Template: tmpl_cmd_get_auxiliary_log_status_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 120, "log_data", REQUIRED, LENGTH-VARIABLE } + +Get Auxiliary Log Status (MCA) Response +--------------------------------------- + +FIID Template: tmpl_cmd_get_auxiliary_log_status_mca_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "timestamp", REQUIRED, LENGTH-FIXED } + { 32, "mca_log_entry_count", REQUIRED, LENGTH-FIXED } + { 56, "log_data", OPTIONAL, LENGTH-VARIABLE } + +Get Auxiliary Log Status (OEM) Response +--------------------------------------- + +FIID Template: tmpl_cmd_get_auxiliary_log_status_oem_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 32, "timestamp", REQUIRED, LENGTH-FIXED } + { 24, "oem_id", REQUIRED, LENGTH-FIXED } + { 64, "log_data", REQUIRED, LENGTH-VARIABLE } + +Set Auxiliary Log Status Request +-------------------------------- + +FIID Template: tmpl_cmd_set_auxiliary_log_status_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "log_type", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 120, "log_data", REQUIRED, LENGTH-VARIABLE } + +Set Auxiliary Log Status Response +--------------------------------- + +FIID Template: tmpl_cmd_set_auxiliary_log_status_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SEL_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-sel-record-format-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sel-record-format-templates.h new file mode 100644 index 00000000..16ea326c --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sel-record-format-templates.h @@ -0,0 +1,186 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SEL_RECORD_FORMAT_TEMPLATES_H +#define IPMI_SEL_RECORD_FORMAT_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +SEL Record Header +----------------- + +FIID Template: tmpl_sel_record_header + + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + +SEL System Event Record +----------------------- + +FIID Template: tmpl_sel_system_event_record + + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 32, "timestamp", REQUIRED, LENGTH-FIXED } + + { 1, "generator_id.id_type", REQUIRED, LENGTH-FIXED } + { 7, "generator_id.id", REQUIRED, LENGTH-FIXED } + + { 2, "ipmb_device_lun", REQUIRED, LENGTH-FIXED } + { 2, "reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + + { 8, "event_message_format_version", REQUIRED, LENGTH-FIXED } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + { 7, "event_type_code", REQUIRED, LENGTH-FIXED } + { 1, "event_dir", REQUIRED, LENGTH-FIXED } + + { 8, "event_data1", REQUIRED, LENGTH-FIXED } + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + + +SEL System Event Record (with Event Fields) +------------------------------------------- + +FIID Template: tmpl_sel_system_event_record_event_fields + + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 32, "timestamp", REQUIRED, LENGTH-FIXED } + + { 1, "generator_id.id_type", REQUIRED, LENGTH-FIXED } + { 7, "generator_id.id", REQUIRED, LENGTH-FIXED } + + { 2, "ipmb_device_lun", REQUIRED, LENGTH-FIXED } + { 2, "reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + + { 8, "event_message_format_version", REQUIRED, LENGTH-FIXED } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + { 7, "event_type_code", REQUIRED, LENGTH-FIXED } + { 1, "event_dir", REQUIRED, LENGTH-FIXED } + + { 4, "offset_from_event_reading_type_code", REQUIRED, LENGTH-FIXED } + { 2, "event_data3_flag", REQUIRED, LENGTH-FIXED } + { 2, "event_data2_flag", REQUIRED, LENGTH-FIXED } + + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + + +SEL System Event Record (w/ Previous and Severity Offset fields) +---------------------------------------------------------------- + +FIID Template: tmpl_sel_system_event_record_discrete_previous_state_severity + + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 32, "timestamp", REQUIRED, LENGTH-FIXED } + + { 1, "generator_id.id_type", REQUIRED, LENGTH-FIXED } + { 7, "generator_id.id", REQUIRED, LENGTH-FIXED } + + { 2, "ipmb_device_lun", REQUIRED, LENGTH-FIXED } + { 2, "reserved", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + + { 8, "event_message_format_version", REQUIRED, LENGTH-FIXED } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + { 7, "event_type_code", REQUIRED, LENGTH-FIXED } + { 1, "event_dir", REQUIRED, LENGTH-FIXED } + + { 4, "offset_from_event_reading_type_code", REQUIRED, LENGTH-FIXED } + { 2, "event_data3_flag", REQUIRED, LENGTH-FIXED } + { 2, "event_data2_flag", REQUIRED, LENGTH-FIXED } + + { 4, "previous_offset_from_event_reading_type_code", REQUIRED, LENGTH-FIXED } + { 4, "offset_from_severity_event_reading_type_code", REQUIRED, LENGTH-FIXED } + + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + + +SEL Timestamped OEM Record +-------------------------- + +FIID Template: tmpl_sel_timestamped_oem_record + + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 32, "timestamp", REQUIRED, LENGTH-FIXED } + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 48, "oem_defined", REQUIRED, LENGTH-FIXED } + +SEL Non-Timestamped OEM Record +------------------------------ + +FIID Template: tmpl_sel_non_timestamped_oem_record + + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 104, "oem_defined", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SEL_RECORD_FORMAT_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-sensor-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sensor-cmds-templates.h new file mode 100644 index 00000000..8da7bfe5 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sensor-cmds-templates.h @@ -0,0 +1,1036 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_CMDS_TEMPLATES_H +#define IPMI_SENSOR_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Get Device SDR Info Request +--------------------------- + +FIID Template: tmpl_cmd_get_device_sdr_info_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 1, "operation", REQUIRED, LENGTH-FIXED } + { 7, "reserved", REQUIRED, LENGTH-FIXED } + +Get Device SDR Info Response +---------------------------- + +FIID Template: tmpl_cmd_get_device_sdr_info_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "number", REQUIRED, LENGTH-FIXED } + { 1, "flags.device_lun_0_has_sensors", REQUIRED, LENGTH-FIXED } + { 1, "flags.device_lun_1_has_sensors", REQUIRED, LENGTH-FIXED } + { 1, "flags.device_lun_2_has_sensors", REQUIRED, LENGTH-FIXED } + { 1, "flags.device_lun_3_has_sensors", REQUIRED, LENGTH-FIXED } + { 3, "flags.reserved", REQUIRED, LENGTH-FIXED } + { 1, "flags.sensor_population", REQUIRED, LENGTH-FIXED } + { 32, "sensor_population_change_indicator", REQUIRED, LENGTH-FIXED } + +Get Device SDR Request +---------------------- + +FIID Template: tmpl_cmd_get_device_sdr_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 16, "reservation_id", REQUIRED, LENGTH-FIXED } + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 8, "offset_into_record", REQUIRED, LENGTH-FIXED } + { 8, "bytes_to_read", REQUIRED, LENGTH-FIXED } + +Get Device SDR Response +----------------------- + +FIID Template: tmpl_cmd_get_device_sdr_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 16, "next_record_id", REQUIRED, LENGTH-FIXED } + /* 2040 = 255 * 8, 255 b/c bytes_to_read field in request is 1 byte long */ + { 2040, "record_data", REQUIRED, LENGTH-VARIABLE } + +Reserve Device SDR Repository Request +------------------------------------- + +FIID Template: tmpl_cmd_reserve_device_sdr_repository_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED }, + +Reserve Device SDR Repository Response +-------------------------------------- + +FIID Template: tmpl_cmd_reserve_device_sdr_repository_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT }, + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT }, + { 16, "reservation_id", REQUIRED, LENGTH-FIXED }, /* LS byte first */ + +Get Sensor Reading Factors Request +---------------------------------- + +FIID Template: tmpl_cmd_get_sensor_reading_factors_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "reading_byte", REQUIRED, LENGTH-FIXED } + +Get Sensor Reading Factors Response +----------------------------------- + +FIID Template: tmpl_cmd_get_sensor_reading_factors_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "next_reading", REQUIRED, LENGTH-FIXED } + { 8, "m_ls", REQUIRED, LENGTH-FIXED } + { 6, "tolerance", REQUIRED, LENGTH-FIXED } + { 2, "m_ms", REQUIRED, LENGTH-FIXED } + { 8, "b_ls", REQUIRED, LENGTH-FIXED } + { 6, "accuracy_ls", REQUIRED, LENGTH-FIXED } + { 2, "b_ms", REQUIRED, LENGTH-FIXED } + { 2, "reserved", REQUIRED, LENGTH-FIXED } + { 2, "accuracy_exp", REQUIRED, LENGTH-FIXED } + { 4, "accuracy_ms", REQUIRED, LENGTH-FIXED } + { 4, "b_exponent", REQUIRED, LENGTH-FIXED } + { 4, "r_exponent", REQUIRED, LENGTH-FIXED } + +Set Sensor Hysteresis Request +----------------------------- + +FIID Template: tmpl_cmd_set_sensor_hysteresis_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "hysteresis_mask", REQUIRED, LENGTH-FIXED } + { 8, "positive_going_threshold_hysteresis_value", REQUIRED, LENGTH-FIXED } + { 8, "negative_going_threshold_hysteresis_value", REQUIRED, LENGTH-FIXED } + +Set Sensor Hysteresis Response +------------------------------ + +FIID Template: tmpl_cmd_set_sensor_hysteresis_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Sensor Hysteresis Request +----------------------------- + +FIID Template: tmpl_cmd_get_sensor_hysteresis_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "hysteresis_mask", REQUIRED, LENGTH-FIXED } + +Get Sensor Hysteresis Response +------------------------------ + +FIID Template: tmpl_cmd_get_sensor_hysteresis_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "positive_going_threshold_hysteresis_value", REQUIRED, LENGTH-FIXED } + { 8, "negative_going_threshold_hysteresis_value", REQUIRED, LENGTH-FIXED } + +Set Sensor Thresholds Request +----------------------------- + +FIID Template: tmpl_cmd_set_sensor_thresholds_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 1, "set_lower_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "set_lower_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "set_lower_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 1, "set_upper_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "set_upper_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "set_upper_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 2, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + +Set Sensor Thresholds Response +------------------------------ + +FIID Template: tmpl_cmd_set_sensor_thresholds_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Sensor Thresholds Request +----------------------------- + +FIID Template: tmpl_cmd_get_sensor_thresholds_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + +Get Sensor Thresholds Response +------------------------------ + +FIID Template: tmpl_cmd_get_sensor_thresholds_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 1, "readable_thresholds.lower_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "readable_thresholds.lower_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "readable_thresholds.lower_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 1, "readable_thresholds.upper_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "readable_thresholds.upper_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "readable_thresholds.upper_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 2, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "lower_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_critical_threshold", REQUIRED, LENGTH-FIXED } + { 8, "upper_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + +Set Sensor Event Enable Request +------------------------------- + +FIID Template: tmpl_cmd_set_sensor_event_enable_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 2, "event_message_action", REQUIRED, LENGTH-FIXED } + { 1, "scanning_on_this_sensor", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + { 16, "assertion_event_bitmask", OPTIONAL, LENGTH-FIXED } + { 16, "deassertion_event_bitmask", OPTIONAL, LENGTH-FIXED } + +Set Sensor Event Enable (Threshold) Request +------------------------------------------- + +FIID Template: tmpl_cmd_set_sensor_event_enable_threshold_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 2, "event_message_action", REQUIRED, LENGTH-FIXED } + { 1, "scanning_on_this_sensor", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + + { 1, "assertion_event_lower_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_lower_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_lower_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_lower_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_lower_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_lower_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_upper_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_upper_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + + { 1, "assertion_event_upper_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_upper_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_upper_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_upper_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 4, "reserved2", OPTIONAL, LENGTH-FIXED } + + { 1, "deassertion_event_lower_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_lower_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_lower_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + + { 1, "deassertion_event_upper_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_upper_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 4, "reserved3", OPTIONAL, LENGTH-FIXED } + + +Set Sensor Event Enable (Discrete) Request +------------------------------------------ + +FIID Template: tmpl_cmd_set_sensor_event_enable_discrete_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 2, "event_message_action", REQUIRED, LENGTH-FIXED } + { 1, "scanning_on_this_sensor", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + + { 1, "assertion_event_state_bit_0", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_1", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_2", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_3", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_4", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_5", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_6", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_7", OPTIONAL, LENGTH-FIXED } + + { 1, "assertion_event_state_bit_8", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_9", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_10", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_11", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_12", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_13", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_state_bit_14", OPTIONAL, LENGTH-FIXED } + { 1, "reserved2", OPTIONAL, LENGTH-FIXED } + + { 1, "deassertion_event_state_bit_0", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_1", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_2", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_3", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_4", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_5", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_6", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_7", OPTIONAL, LENGTH-FIXED } + + { 1, "deassertion_event_state_bit_8", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_9", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_10", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_11", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_12", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_13", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_state_bit_14", OPTIONAL, LENGTH-FIXED } + { 1, "reserved3", OPTIONAL, LENGTH-FIXED } + + +Set Sensor Event Enable Response +-------------------------------- + +FIID Template: tmpl_cmd_set_sensor_event_enable_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Sensor Event Enable Request +------------------------------- + +FIID Template: tmpl_cmd_get_sensor_event_enable_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + +Get Sensor Event Enable Response +-------------------------------- + +FIID Template: tmpl_cmd_get_sensor_event_enable_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "scanning_on_this_sensor", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + { 16, "assertion_event_bitmask", OPTIONAL, LENGTH-FIXED } + { 16, "deassertion_event_bitmask", OPTIONAL, LENGTH-FIXED } + +Get Sensor Event Enable (Threshold) Response +-------------------------------------------- + +FIID Template: tmpl_cmd_get_sensor_event_enable_threshold_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + + { 6, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "scanning_on_this_sensor", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + + { 1, "assertion_event_for_lower_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_lower_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_lower_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_lower_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_lower_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_lower_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_upper_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_upper_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + + { 1, "assertion_event_for_upper_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_upper_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_upper_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_for_upper_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 4, "reserved2", OPTIONAL, LENGTH-FIXED } + + { 1, "deassertion_event_for_lower_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_lower_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_lower_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_lower_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_lower_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_lower_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_upper_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_upper_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + + { 1, "deassertion_event_for_upper_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_upper_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_upper_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_for_upper_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 4, "reserved3", OPTIONAL, LENGTH-FIXED } + + +Get Sensor Event Enable (Discrete) Response +------------------------------------------- + +FIID Template: tmpl_cmd_get_sensor_event_enable_discrete_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + + { 6, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "scanning_on_this_sensor", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + + { 1, "assertion_event_message_for_state_bit_0", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_1", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_2", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_3", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_4", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_5", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_6", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_7", OPTIONAL, LENGTH-FIXED } + + { 1, "assertion_event_message_for_state_bit_8", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_9", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_10", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_11", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_12", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_13", OPTIONAL, LENGTH-FIXED } + { 1, "assertion_event_message_for_state_bit_14", OPTIONAL, LENGTH-FIXED } + { 1, "reserved2", OPTIONAL, LENGTH-FIXED } + + { 1, "deassertion_event_message_for_state_bit_0", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_1", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_2", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_3", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_4", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_5", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_6", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_7", OPTIONAL, LENGTH-FIXED } + + { 1, "deassertion_event_message_for_state_bit_8", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_9", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_10", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_11", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_12", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_13", OPTIONAL, LENGTH-FIXED } + { 1, "deassertion_event_message_for_state_bit_14", OPTIONAL, LENGTH-FIXED } + { 1, "reserved3", OPTIONAL, LENGTH-FIXED } + + +Re-arm Sensor Events Request +---------------------------- + +FIID Template: tmpl_cmd_re_arm_sensor_events_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 7, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "re_arm_all_event_status_from_this_sensor", REQUIRED, LENGTH-FIXED } + { 16, "re_arm_assertion_event", OPTIONAL, LENGTH-FIXED } + { 16, "re_arm_deassertion_event", OPTIONAL, LENGTH-FIXED } + +Re-arm Sensor Events (Threshold) Request +---------------------------------------- + +FIID Template: tmpl_cmd_re_arm_sensor_events_threshold_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 7, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "re_arm_all_event_status_from_this_sensor", REQUIRED, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_lower_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_lower_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_lower_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_lower_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_lower_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_lower_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_upper_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_upper_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_upper_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_upper_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_upper_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_upper_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 4, "reserved2", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_lower_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_lower_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_lower_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_lower_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_lower_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_lower_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_upper_non_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_upper_non_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_upper_critical_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_upper_critical_going_high", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_upper_non_recoverable_going_low", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_upper_non_recoverable_going_high", OPTIONAL, LENGTH-FIXED } + { 4, "reserved3", OPTIONAL, LENGTH-FIXED } + +Re-arm Sensor Events (Discrete) Request +--------------------------------------- + +FIID Template: tmpl_cmd_re_arm_sensor_events_discrete_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 7, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "re_arm_all_event_status_from_this_sensor", REQUIRED, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_0", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_1", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_2", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_3", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_4", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_5", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_6", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_7", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_8", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_9", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_10", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_11", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_12", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_13", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_assertion_event_for_state_bit_14", OPTIONAL, LENGTH-FIXED } + { 1, "reserved2", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_0", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_1", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_2", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_3", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_4", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_5", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_6", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_7", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_8", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_9", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_10", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_11", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_12", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_13", OPTIONAL, LENGTH-FIXED } + { 1, "re_arm_deassertion_event_for_state_bit_14", OPTIONAL, LENGTH-FIXED } + { 1, "reserved3", OPTIONAL, LENGTH-FIXED } + +Re-arm Sensor Events Response +----------------------------- + +FIID Template: tmpl_cmd_re_arm_sensor_events_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Sensor Event Status Request +------------------------------- + +FIID Template: tmpl_cmd_get_sensor_event_status_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + +Get Sensor Event Status Response +-------------------------------- + +FIID Template: tmpl_cmd_get_sensor_event_status_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "reading_state", REQUIRED, LENGTH-FIXED } + { 1, "sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + { 16, "assertion_event", REQUIRED, LENGTH-FIXED } + { 16, "deassertion_event", REQUIRED, LENGTH-FIXED } + +Get Sensor Event Status (Threshold) Response +-------------------------------------------- + +FIID Template: tmpl_cmd_get_sensor_event_status_threshold_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "reading_state", REQUIRED, LENGTH-FIXED } + { 1, "sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + + { 1, "assertion_event_condition_for_lower_non_critical_going_low", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_lower_non_critical_going_high", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_lower_critical_going_low", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_lower_critical_going_high", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_lower_non_recoverable_going_low", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_lower_non_recoverable_going_high", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_upper_non_critical_going_low", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_upper_non_critical_going_high", REQUIRED, LENGTH-FIXED } + + { 1, "assertion_event_condition_for_upper_critical_going_low", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_upper_critical_going_high", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_upper_non_recoverable_going_low", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_condition_for_upper_non_recoverable_going_high", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + + { 1, "deassertion_event_condition_for_lower_non_critical_going_low", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_lower_non_critical_going_high", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_lower_critical_going_low", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_lower_critical_going_high", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_lower_non_recoverable_going_low", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_lower_non_recoverable_going_high", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_upper_non_critical_going_low", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_upper_non_critical_going_high", REQUIRED, LENGTH-FIXED } + + { 1, "deassertion_event_condition_for_upper_critical_going_low", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_upper_critical_going_high", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_upper_non_recoverable_going_low", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_condition_for_upper_non_recoverable_going_high", REQUIRED, LENGTH-FIXED } + { 4, "reserved3", REQUIRED, LENGTH-FIXED } + + +Get Sensor Event Status (Discrete) Response +-------------------------------------------- + +FIID Template: tmpl_cmd_get_sensor_event_status_discrete_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "reading_state", REQUIRED, LENGTH-FIXED } + { 1, "sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + { 1, "state_0_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_1_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_2_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_3_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_4_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_5_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_6_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_7_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_8_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_9_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_10_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_11_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_12_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_13_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_14_assertion_event", REQUIRED, LENGTH-FIXED } + { 1, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "state_0_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_1_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_2_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_3_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_4_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_5_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_6_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_7_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_8_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_9_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_10_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_11_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_12_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_13_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "state_14_deassertion_event", REQUIRED, LENGTH-FIXED } + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + +Get Sensor Reading Request +-------------------------- + +FIID Template: tmpl_cmd_get_sensor_reading_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + +Get Sensor Reading Response +--------------------------- + +FIID Template: tmpl_cmd_get_sensor_reading_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "reading_state", REQUIRED, LENGTH-FIXED } + { 1, "sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + { 8, "sensor_event_bitmask1", REQUIRED, LENGTH-FIXED } + { 7, "sensor_event_bitmask2", OPTIONAL, LENGTH-FIXED } + { 1, "reserved2", OPTIONAL, LENGTH-FIXED } + +Get Sensor Reading (Threshold) Response +--------------------------------------- + +FIID Template: tmpl_cmd_get_sensor_reading_threshold_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "reading_state", REQUIRED, LENGTH-FIXED } + { 1, "sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + { 1, "at_or_below_lower_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "at_or_below_lower_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "at_or_below_lower_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 1, "at_or_above_upper_non_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "at_or_above_upper_critical_threshold", REQUIRED, LENGTH-FIXED } + { 1, "at_or_above_upper_non_recoverable_threshold", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "reserved3", OPTIONAL, LENGTH-FIXED } + +Get Sensor Reading (Discrete) Response +-------------------------------------- + +FIID Template: tmpl_cmd_get_sensor_reading_discrete_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "reading_state", REQUIRED, LENGTH-FIXED } + { 1, "sensor_scanning", REQUIRED, LENGTH-FIXED } + { 1, "all_event_messages", REQUIRED, LENGTH-FIXED } + { 1, "state_0_asserted", REQUIRED, LENGTH-FIXED } + { 1, "state_1_asserted", REQUIRED, LENGTH-FIXED } + { 1, "state_2_asserted", REQUIRED, LENGTH-FIXED } + { 1, "state_3_asserted", REQUIRED, LENGTH-FIXED } + { 1, "state_4_asserted", REQUIRED, LENGTH-FIXED } + { 1, "state_5_asserted", REQUIRED, LENGTH-FIXED } + { 1, "state_6_asserted", REQUIRED, LENGTH-FIXED } + { 1, "state_7_asserted", REQUIRED, LENGTH-FIXED } + { 1, "state_8_asserted", OPTIONAL, LENGTH-FIXED } + { 1, "state_9_asserted", OPTIONAL, LENGTH-FIXED } + { 1, "state_10_asserted", OPTIONAL, LENGTH-FIXED } + { 1, "state_11_asserted", OPTIONAL, LENGTH-FIXED } + { 1, "state_12_asserted", OPTIONAL, LENGTH-FIXED } + { 1, "state_13_asserted", OPTIONAL, LENGTH-FIXED } + { 1, "state_14_asserted", OPTIONAL, LENGTH-FIXED } + { 1, "reserved2", OPTIONAL, LENGTH-FIXED } + +Set Sensor Type Request +----------------------- + +FIID Template: tmpl_cmd_set_sensor_type_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 7, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + +Set Sensor Type Response +------------------------ + +FIID Template: tmpl_cmd_set_sensor_type_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Get Sensor Type Request +----------------------- + +FIID Template: tmpl_cmd_get_sensor_type_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + +Get Sensor Type Response +------------------------ + +FIID Template: tmpl_cmd_get_sensor_type_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "sensor_type", REQUIRED, LENGTH-FIXED } + { 7, "event_reading_type_code", REQUIRED, LENGTH-FIXED } + { 1, "reserved", REQUIRED, LENGTH-FIXED } + +Set Sensor Reading and Event Status Request +------------------------------------------- + +FIID Template: tmpl_cmd_set_sensor_reading_and_event_status_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 2, "sensor_reading_operation", REQUIRED, LENGTH-FIXED } + { 2, "deassertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "assertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "event_data_bytes_operation", REQUIRED, LENGTH-FIXED } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 8, "assertion_event_bitmask1", REQUIRED, LENGTH-FIXED } + { 8, "assertion_event_bitmask2", REQUIRED, LENGTH-FIXED } + { 8, "deassertion_event_bitmask1", REQUIRED, LENGTH-FIXED } + { 8, "deassertion_event_bitmask2", REQUIRED, LENGTH-FIXED } + { 8, "event_data1", REQUIRED, LENGTH-FIXED } + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + +Set Sensor Reading and Event Status (Threshold) Request +------------------------------------------------------- + +FIID Template: tmpl_cmd_set_sensor_reading_and_event_status_threshold_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 2, "sensor_reading_operation", REQUIRED, LENGTH-FIXED } + { 2, "deassertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "assertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "event_data_bytes_operation", REQUIRED, LENGTH-FIXED } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_non_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_non_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_non_recoverable_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_non_recoverable_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_non_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_non_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_non_recoverable_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_non_recoverable_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_recoverable_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_recoverable_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_recoverable_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_recoverable_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "event_data1", REQUIRED, LENGTH-FIXED } + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + +Set Sensor Reading and Event Status (Discrete) Request +------------------------------------------------------ + +FIID Template: tmpl_cmd_set_sensor_reading_and_event_status_discrete_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 2, "sensor_reading_operation", REQUIRED, LENGTH-FIXED } + { 2, "deassertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "assertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "event_data_bytes_operation", REQUIRED, LENGTH-FIXED } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 1, "state_0_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_1_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_2_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_3_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_4_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_5_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_6_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_7_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_8_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_9_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_10_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_11_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_12_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_13_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_14_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "state_0_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_1_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_2_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_3_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_4_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_5_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_6_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_7_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_8_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_9_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_10_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_11_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_12_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_13_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_14_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "event_data1", REQUIRED, LENGTH-FIXED } + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + +Set Sensor Reading and Event Status (with Event Fields) Request +--------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_sensor_reading_and_event_status_event_fields_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 2, "sensor_reading_operation", REQUIRED, LENGTH-FIXED } + { 2, "deassertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "assertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "event_data_bytes_operation", REQUIRED, LENGTH-FIXED } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 8, "assertion_event_bitmask1", REQUIRED, LENGTH-FIXED } + { 8, "assertion_event_bitmask2", REQUIRED, LENGTH-FIXED } + { 8, "deassertion_event_bitmask1", REQUIRED, LENGTH-FIXED } + { 8, "deassertion_event_bitmask2", REQUIRED, LENGTH-FIXED } + { 4, "offset_from_event_reading_type_code", REQUIRED, LENGTH-FIXED } + { 2, "event_data3_flag", REQUIRED, LENGTH-FIXED } + { 2, "event_data2_flag", REQUIRED, LENGTH-FIXED } + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + +Set Sensor Reading and Event Status (Threshold with Event Fields) Request +------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_sensor_reading_and_event_status_threshold_event_fields_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 2, "sensor_reading_operation", REQUIRED, LENGTH-FIXED } + { 2, "deassertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "assertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "event_data_bytes_operation", REQUIRED, LENGTH-FIXED } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_non_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_non_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_non_recoverable_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_lower_non_recoverable_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_non_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_non_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_non_recoverable_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "assertion_event_upper_non_recoverable_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_recoverable_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_lower_non_recoverable_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_critical_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_critical_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_recoverable_going_low_occurred", REQUIRED, LENGTH-FIXED } + { 1, "deassertion_event_upper_non_recoverable_going_high_occurred", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 4, "offset_from_event_reading_type_code", REQUIRED, LENGTH-FIXED } + { 2, "event_data3_flag", REQUIRED, LENGTH-FIXED } + { 2, "event_data2_flag", REQUIRED, LENGTH-FIXED } + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + +Set Sensor Reading and Event Status (Discrete with Event Fields) Request +------------------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_sensor_reading_and_event_status_discrete_event_fields_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 8, "sensor_number", REQUIRED, LENGTH-FIXED } + { 2, "sensor_reading_operation", REQUIRED, LENGTH-FIXED } + { 2, "deassertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "assertion_bits_operation", REQUIRED, LENGTH-FIXED } + { 2, "event_data_bytes_operation", REQUIRED, LENGTH-FIXED } + { 8, "sensor_reading", REQUIRED, LENGTH-FIXED } + { 1, "state_0_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_1_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_2_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_3_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_4_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_5_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_6_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_7_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_8_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_9_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_10_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_11_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_12_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_13_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_14_assertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "state_0_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_1_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_2_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_3_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_4_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_5_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_6_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_7_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_8_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_9_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_10_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_11_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_12_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_13_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "state_14_deassertion_event_occurred", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "offset_from_event_reading_type_code", REQUIRED, LENGTH-FIXED } + { 2, "event_data3_flag", REQUIRED, LENGTH-FIXED } + { 2, "event_data2_flag", REQUIRED, LENGTH-FIXED } + { 8, "event_data2", REQUIRED, LENGTH-FIXED } + { 8, "event_data3", REQUIRED, LENGTH-FIXED } + +Set Sensor Reading and Event Status Response +-------------------------------------------- + +FIID Template: tmpl_cmd_set_sensor_reading_and_event_status_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-serial-modem-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-serial-modem-cmds-templates.h new file mode 100644 index 00000000..190a480f --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-serial-modem-cmds-templates.h @@ -0,0 +1,236 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SERIAL_MODEM_CMDS_TEMPLATES_H +#define IPMI_SERIAL_MODEM_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Set Serial Modem Configuration Request +-------------------------------------- + +FIID Template: tmpl_cmd_set_serial_modem_configuration_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Set Serial Modem Configuration Response +--------------------------------------- + +FIID Template: tmpl_cmd_set_serial_modem_configuration_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set Serial Modem Configuration (Set In Progress) Request +-------------------------------------------------------- + +FIID Template: tmpl_cmd_set_serial_modem_configuration_set_in_progress_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Set Serial Modem Configuration (Connection Mode) Request +-------------------------------------------------------- + +FIID Template: tmpl_cmd_set_serial_modem_configuration_connection_mode_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "basic_mode", REQUIRED, LENGTH-FIXED } + { 1, "ppp_mode", REQUIRED, LENGTH-FIXED } + { 1, "terminal_mode", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "connect_mode", REQUIRED, LENGTH-FIXED } + +Set Serial Modem Configuration (IPMI Messaging Comm Settings) Request +--------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_serial_modem_configuration_ipmi_messaging_comm_settings_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 5, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "dtr_hangup", REQUIRED, LENGTH-FIXED } + { 2, "flow_control", REQUIRED, LENGTH-FIXED } + { 4, "bit_rate", REQUIRED, LENGTH-FIXED } + { 4, "reserved3", REQUIRED, LENGTH-FIXED } + +Set Serial Modem Configuration (Page Blackout Interval) Request +--------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_serial_modem_configuration_page_blackout_interval_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "page_blackout_interval", REQUIRED, LENGTH-FIXED } + +Set Serial Modem Configuration (Call Retry Interval) Request +------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_serial_modem_configuration_call_retry_interval_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "call_retry_interval", REQUIRED, LENGTH-FIXED } + +Get Serial Modem Configuration Request +-------------------------------------- + +FIID Template: tmpl_cmd_get_serial_modem_configuration_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "get_parameter", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 8, "block_selector", REQUIRED, LENGTH-FIXED } + +Get Serial Modem Configuration Response +--------------------------------------- + +FIID Template: tmpl_cmd_get_serial_modem_configuration_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Get Serial Modem Configuration (Set In Progress) Response +--------------------------------------------------------- + +FIID Template: tmpl_cmd_get_serial_modem_configuration_set_in_progress_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Get Serial Modem Configuration (Connection Mode) Response +--------------------------------------------------------- + +FIID Template: tmpl_cmd_get_serial_modem_configuration_connection_mode_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1, "basic_mode", REQUIRED, LENGTH-FIXED } + { 1, "ppp_mode", REQUIRED, LENGTH-FIXED } + { 1, "terminal_mode", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "connect_mode", REQUIRED, LENGTH-FIXED } + +Get Serial Modem Configuration (IPMI Messaging Comm Settings) Response +---------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_serial_modem_configuration_ipmi_messaging_comm_settings_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 5, "reserved1", REQUIRED, LENGTH-FIXED } + { 1, "dtr_hangup", REQUIRED, LENGTH-FIXED } + { 2, "flow_control", REQUIRED, LENGTH-FIXED } + { 4, "bit_rate", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + +Get Serial Modem Configuration (Page Blackout Interval) Response +---------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_serial_modem_configuration_page_blackout_interval_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "page_blackout_interval", REQUIRED, LENGTH-FIXED } + +Get Serial Modem Configuration (Call Retry Interval) Response +------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_serial_modem_configuration_call_retry_interval_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "call_retry_interval", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SERIAL_MODEM_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-sol-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sol-cmds-templates.h new file mode 100644 index 00000000..dd0dd394 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sol-cmds-templates.h @@ -0,0 +1,317 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SOL_CMDS_TEMPLATES_H +#define IPMI_SOL_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +Set SOL Configuration Parameters Request +---------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Set SOL Configuration Parameters Response +----------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + +Set SOL Configuration Parameters (Set In Progress) Request +---------------------------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_set_in_progress_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved2", REQUIRED, LENGTH-FIXED } + +Set SOL Configuration Parameters (SOL Enable) Request +----------------------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_sol_enable_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 1, "sol_enable", REQUIRED, LENGTH-FIXED } + { 7, "reserved2", REQUIRED, LENGTH-FIXED } + +Set SOL Configuration Parameters (SOL Authentication) Request +-------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_sol_authentication_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 4, "sol_privilege_level", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 1, "force_sol_payload_authentication", REQUIRED, LENGTH-FIXED } + { 1, "force_sol_payload_encryption", REQUIRED, LENGTH-FIXED } + +Set SOL Configuration Parameters (Character Accumulate Interval and Send Threshold) Request +------------------------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_character_accumulate_interval_and_send_threshold_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "character_accumulate_interval", REQUIRED, LENGTH-FIXED } + { 8, "character_send_threshold", REQUIRED, LENGTH-FIXED } + +Set SOL Configuration Parameters (SOL Retry) Request +---------------------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_sol_retry_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 3, "retry_count", REQUIRED, LENGTH-FIXED } + { 5, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "retry_interval", REQUIRED, LENGTH-FIXED } + +Set SOL Configuration Parameters (SOL Non-Volatile Bit Rate) Request +-------------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_sol_non_volatile_bit_rate_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 4, "bit_rate", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + +Set SOL Configuration Parameters (SOL Volatile Bit Rate) Request +---------------------------------------------------------------- + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_sol_volatile_bit_rate_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 4, "bit_rate", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + +Set SOL Configuration Parameters (SOL Payload Port Number) Request +------------------------------------------------------------------ + +FIID Template: tmpl_cmd_set_sol_configuration_parameters_sol_payload_port_number_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 16, "port_number", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters Request +---------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_rq + + { 8, "cmd", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 3, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "get_parameter", REQUIRED, LENGTH-FIXED } + { 8, "parameter_selector", REQUIRED, LENGTH-FIXED } + { 8, "set_selector", REQUIRED, LENGTH-FIXED } + { 8, "block_selector", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters Response +----------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1024, "configuration_parameter_data", REQUIRED, LENGTH-VARIABLE } + +Get SOL Configuration Parameters (Set In Progress) Response +----------------------------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_set_in_progress_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 2, "state", REQUIRED, LENGTH-FIXED } + { 6, "reserved", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters (SOL Enable) Response +------------------------------------------------------ + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_sol_enable_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 1, "sol_enable", REQUIRED, LENGTH-FIXED } + { 7, "reserved", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters (SOL Authentication) Response +-------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_sol_authentication_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 4, "sol_privilege_level", REQUIRED, LENGTH-FIXED } + { 2, "reserved", REQUIRED, LENGTH-FIXED } + { 1, "force_sol_payload_authentication", REQUIRED, LENGTH-FIXED } + { 1, "force_sol_payload_encryption", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters (Character Accumulate Interval and Send Threshold) Response +-------------------------------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_character_accumulate_interval_and_send_threshold_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "character_accumulate_interval", REQUIRED, LENGTH-FIXED } + { 8, "character_send_threshold", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters (SOL Retry) Response +----------------------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_sol_retry_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 3, "retry_count", REQUIRED, LENGTH-FIXED } + { 5, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "retry_interval", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters (SOL Non-Volatile Bit Rate) Response +--------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_sol_non_volatile_bit_rate_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 4, "bit_rate", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters (SOL Volatile Bit Rate) Response +----------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_sol_volatile_bit_rate_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 4, "bit_rate", REQUIRED, LENGTH-FIXED } + { 4, "reserved", REQUIRED, LENGTH-FIXED } + +Get SOL Configuration Parameters (SOL Payload Channel) Response +--------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_sol_payload_channel_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 8, "payload_channel", REQUIRED, LENGTH-FIXED } + + Notes: Read only field, no "set" equivalent. + +Get SOL Configuration Parameters (SOL Payload Port Number) Response +------------------------------------------------------------------- + +FIID Template: tmpl_cmd_get_sol_configuration_parameters_sol_payload_port_number_rs + + { 8, "cmd", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 8, "comp_code", REQUIRED, LENGTH-FIXED, MAKES-PACKET-SUFFICIENT } + { 4, "present_revision", REQUIRED, LENGTH-FIXED } + { 4, "oldest_revision_parameter", REQUIRED, LENGTH-FIXED } + { 16, "port_number", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SOL_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/ipmi-sol-payload-templates.h b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sol-payload-templates.h new file mode 100644 index 00000000..8f863bd3 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/ipmi-sol-payload-templates.h @@ -0,0 +1,117 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SOL_PAYLOAD_TEMPLATES_H +#define IPMI_SOL_PAYLOAD_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +SOL Payload Data +---------------- + +FIID Template: tmpl_sol_payload_data + + { 4, "packet_sequence_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "packet_ack_nack_sequence_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "accepted_character_count", REQUIRED, LENGTH-FIXED } + { 8, "operation_status", REQUIRED, LENGTH-FIXED } + { 524288, "character_data", OPTIONAL, LENGTH-VARIABLE } + +SOL Payload Data Remote Console to BMC +-------------------------------------- + +FIID Template: tmpl_sol_payload_data_remote_console_to_bmc + + { 4, "packet_sequence_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "packet_ack_nack_sequence_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "accepted_character_count", REQUIRED, LENGTH-FIXED } + { 1, "flush_outbound", REQUIRED, LENGTH-FIXED } + { 1, "flush_inbound", REQUIRED, LENGTH-FIXED } + { 1, "drop_dcd_dsr", REQUIRED, LENGTH-FIXED } + { 1, "cts_pause", REQUIRED, LENGTH-FIXED } + { 1, "generate_break", REQUIRED, LENGTH-FIXED } + { 1, "ring_wor", REQUIRED, LENGTH-FIXED } + { 1, "nack", REQUIRED, LENGTH-FIXED } + { 1, "reserved3", REQUIRED, LENGTH-FIXED } + { 524288, "character_data", OPTIONAL, LENGTH-VARIABLE } + +SOL Payload Data BMC to Remote Console +-------------------------------------- + +FIID Template: tmpl_sol_payload_data_bmc_to_remote_console + + { 4, "packet_sequence_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved1", REQUIRED, LENGTH-FIXED } + { 4, "packet_ack_nack_sequence_number", REQUIRED, LENGTH-FIXED } + { 4, "reserved2", REQUIRED, LENGTH-FIXED } + { 8, "accepted_character_count", REQUIRED, LENGTH-FIXED } + { 2, "reserved3", REQUIRED, LENGTH-FIXED } + { 1, "break_condition", REQUIRED, LENGTH-FIXED } + { 1, "transmit_overrun", REQUIRED, LENGTH-FIXED } + { 1, "sol_deactivating", REQUIRED, LENGTH-FIXED } + { 1, "character_transfer_unavailable", REQUIRED, LENGTH-FIXED } + { 1, "nack", REQUIRED, LENGTH-FIXED } + { 1, "reserved4", REQUIRED, LENGTH-FIXED } + { 524288, "character_data", OPTIONAL, LENGTH-VARIABLE } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SOL_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/oem/ipmi-sdr-oem-intel-node-manager-record-format-templates.h b/source/freeipmi/usr/include/freeipmi/templates/oem/ipmi-sdr-oem-intel-node-manager-record-format-templates.h new file mode 100644 index 00000000..a98b4305 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/oem/ipmi-sdr-oem-intel-node-manager-record-format-templates.h @@ -0,0 +1,110 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SDR_OEM_INTEL_NODE_MANAGER_RECORD_FORMAT_TEMPLATES_H +#define IPMI_SDR_OEM_INTEL_NODE_MANAGER_RECORD_FORMAT_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +/* + * 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 + */ + +SDR OEM Intel Node Manager Record +--------------------------------- + +FIID Template: tmpl_sdr_oem_intel_node_manager_record + + /********************* + * SDR Record Header * + *********************/ + { 16, "record_id", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_major", REQUIRED, LENGTH-FIXED } + { 4, "sdr_version_minor", REQUIRED, LENGTH-FIXED } + { 8, "record_type", REQUIRED, LENGTH-FIXED } + { 8, "record_length", REQUIRED, LENGTH-FIXED } + /******************** + * Record Key Bytes * + ********************/ + { 24, "manufacturer_id", REQUIRED, LENGTH-FIXED } + { 8, "record_subtype", REQUIRED, LENGTH-FIXED } + { 8, "version_number", REQUIRED, LENGTH-FIXED } + { 1, "reserved1", REQUIRED, LENGTH-FIXED } + { 7, "nm_device_slave_address", REQUIRED, LENGTH-FIXED } + { 2, "sensor_owner_lun", REQUIRED, LENGTH-FIXED } + { 2, "reserved2", REQUIRED, LENGTH-FIXED } + { 4, "channel_number", REQUIRED, LENGTH-FIXED } + { 8, "nm_health_event_sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "nm_exception_event_sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "nm_operational_capabilities_sensor_number", REQUIRED, LENGTH-FIXED } + { 8, "nm_alert_threshold_exceeded_sensor_number", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SDR_OEM_INTEL_NODE_MANAGER_RECORD_FORMAT_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/rmcp-cmds-templates.h b/source/freeipmi/usr/include/freeipmi/templates/rmcp-cmds-templates.h new file mode 100644 index 00000000..f7c14887 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/rmcp-cmds-templates.h @@ -0,0 +1,95 @@ +/* + * 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 . + * + */ + +#ifndef RMCP_CMDS_TEMPLATES_H +#define RMCP_CMDS_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +ASF Presence Ping +----------------- + +FIID Template: tmpl_cmd_asf_presence_ping + + { 32, "iana_enterprise_number", REQUIRED, LENGTH-FIXED } + { 8, "message_type", REQUIRED, LENGTH-FIXED } + { 8, "message_tag", REQUIRED, LENGTH-FIXED } + { 8, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "data_length", REQUIRED, LENGTH-FIXED } + +ASF Presence Pong +----------------- + +FIID Template: tmpl_cmd_asf_presence_pong + + { 32, "iana_enterprise_number", REQUIRED, LENGTH-FIXED } + { 8, "message_type", REQUIRED, LENGTH-FIXED } + { 8, "message_tag", REQUIRED, LENGTH-FIXED } + { 8, "reserved1", REQUIRED, LENGTH-FIXED } + { 8, "data_length", REQUIRED, LENGTH-FIXED } + { 32, "oem_iana_enterprise_number", REQUIRED, LENGTH-FIXED } + { 32, "oem_defined", REQUIRED, LENGTH-FIXED } + { 4, "supported_entities.version", REQUIRED, LENGTH-FIXED } + { 3, "supported_entities.reserved", REQUIRED, LENGTH-FIXED } + { 1, "supported_entities.ipmi_supported", REQUIRED, LENGTH-FIXED } + { 7, "supported_interactions.reserved", REQUIRED, LENGTH-FIXED } + { 1, "supported_interactions.security_extensions", REQUIRED, LENGTH-FIXED } + { 48, "reserved2", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* RMCP_CMDS_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/templates/rmcp-interface-templates.h b/source/freeipmi/usr/include/freeipmi/templates/rmcp-interface-templates.h new file mode 100644 index 00000000..d1e0c809 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/templates/rmcp-interface-templates.h @@ -0,0 +1,77 @@ +/* + * 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 . + * + */ + +#ifndef RMCP_INTERFACE_TEMPLATES_H +#define RMCP_INTERFACE_TEMPLATES_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* This header file is for documentation only */ + +#if 0 + +Please see fiid.h for details concerning the fiid interface. + +The following list the configurable fields of individual packet/record +templates in FreeIPMI. Each field is listed as a list of the +following. + +{ bits, "field name", field flag, field flag, ... } + +bits - indicates the number of bits in the field + +field name - indicates the name of the field, used for getting/setting + fields in the fiid API. + +field flags - flags indicating qualities of the field. The following + qualities may exist for each field. + + REQUIRED - field is required for the packet/record + OPTIONAL - field is optional for the packet/record + + LENGTH-FIXED - field length is fixed at the number of bits listed + + LENGTH-VARIABLE - field length is variable for the number of bits + listed + + MAKES-PACKET-SUFFICIENT - indicates field or fields are + "sufficient" to make a packet/record valid + and not malformed, but not necessarily a + complete packet/record. + +RMCP Header +----------- + +FIID Template: tmpl_rmcp_hdr + + { 8, "version", REQUIRED, LENGTH-FIXED } + { 8, "reserved", REQUIRED, LENGTH-FIXED } + { 8, "sequence_number", REQUIRED, LENGTH-FIXED } + { 5, "message_class.class", REQUIRED, LENGTH-FIXED } + { 2, "message_class.reserved", REQUIRED, LENGTH-FIXED } + { 1, "message_class.ack", REQUIRED, LENGTH-FIXED } + +#endif /* 0 */ + +#ifdef __cplusplus +} +#endif + +#endif /* RMCP_INTERFACE_TEMPLATES_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-channel-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-channel-util.h new file mode 100644 index 00000000..5c58608a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-channel-util.h @@ -0,0 +1,47 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_CHANNEL_UTIL_H +#define IPMI_CHANNEL_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* Get first channel found for medium type*/ +int ipmi_get_channel_number (ipmi_ctx_t ctx, + uint8_t channel_medium_type, + uint8_t *channel_number); + +/* Returns all channel numbers found for medium type, return value is + * number of channel numbers returned. If number of channel numbers + * found exceeds channel_numbers_len, return is truncated. + */ +int ipmi_get_channel_numbers (ipmi_ctx_t ctx, + uint8_t channel_medium_type, + uint8_t *channel_numbers, + unsigned int channel_numbers_len); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CHANNEL_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-cipher-suite-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-cipher-suite-util.h new file mode 100644 index 00000000..54358aed --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-cipher-suite-util.h @@ -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 . + * + */ + +#ifndef IPMI_CIPHER_SUITE_UTIL_H +#define IPMI_CIPHER_SUITE_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define IPMI_CIPHER_SUITE_COMBINATION_VALID(__a, __i, __c) \ + /* Cipher Suite 0 */ \ + ((((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_NONE \ + && (__i) == IPMI_INTEGRITY_ALGORITHM_NONE \ + && (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE) \ + /* Cipher Suite 1 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA1 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_NONE \ + && (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE)) \ + /* Cipher Suite 2-5 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA1 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_HMAC_SHA1_96 \ + && ((__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128 \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_128 \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_40))) \ + /* Cipher Suite 6 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_NONE \ + && (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE)) \ + /* Cipher Suite 7-10 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_HMAC_MD5_128 \ + && ((__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128 \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_128 \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_40))) \ + /* Cipher Suite 11-14 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_MD5_128 \ + && ((__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128 \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_128 \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_40))) \ + /* Cipher Suite 15 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA256 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_NONE \ + && (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE)) \ + /* Cipher Suite 16-19 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA256 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_HMAC_SHA256_128 \ + && ((__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128 \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_128 \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_XRC4_40))) ) ? 1 : 0) + +#define IPMI_CIPHER_SUITE_COMBINATION_SUPPORTED(__a, __i, __c) \ + /* Cipher Suite 0 */ \ + ((((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_NONE \ + && (__i) == IPMI_INTEGRITY_ALGORITHM_NONE \ + && (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE) \ + /* Cipher Suite 1 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA1 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_NONE \ + && (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE)) \ + /* Cipher Suite 2-3 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA1 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_HMAC_SHA1_96 \ + && ((__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128))) \ + /* Cipher Suite 6 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_NONE \ + && (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE)) \ + /* Cipher Suite 7-8 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_HMAC_MD5_128 \ + && ((__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128))) \ + /* Cipher Suite 11-12 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_MD5 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_MD5_128 \ + && ((__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128))) \ + /* Cipher Suite 15 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA256 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_NONE \ + && (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE)) \ + /* Cipher Suite 16-17 */ \ + || ((__a) == IPMI_AUTHENTICATION_ALGORITHM_RAKP_HMAC_SHA256 \ + && ((__i) == IPMI_INTEGRITY_ALGORITHM_HMAC_SHA256_128 \ + && ((__c) == IPMI_CONFIDENTIALITY_ALGORITHM_NONE \ + || (__c) == IPMI_CONFIDENTIALITY_ALGORITHM_AES_CBC_128))) ) ? 1 : 0) + +/* To avoid gcc warnings, add +1 in comparison */ +/* achu: no macros here, cipher suite ids are numbers */ +#define IPMI_CIPHER_SUITE_ID_SUPPORTED(__id) \ + ((((__id + 1) >= (0 + 1) && (__id) <= 3) \ + || ((__id) >= 6 && (__id) <= 8) \ + || ((__id) >= 11 && (__id) <= 12) \ + || ((__id) >= 15 && (__id) <= 17)) ? 1 : 0) + +int ipmi_cipher_suite_id_to_algorithms (uint8_t cipher_suite_id, + uint8_t *authentication_algorithm, + uint8_t *integrity_algorithm, + uint8_t *confidentiality_algorithm); + +int ipmi_algorithms_to_cipher_suite_id (uint8_t authentication_algorithm, + uint8_t integrity_algorithm, + uint8_t confidentiality_algorithm, + uint8_t *cipher_suite_id); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_CIPHER_SUITE_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-dcmi-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-dcmi-util.h new file mode 100644 index 00000000..8e8670ea --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-dcmi-util.h @@ -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 . + * + */ +/*****************************************************************************\ + * Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Albert Chu + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_DCMI_UTIL_H +#define IPMI_DCMI_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +const char *ipmi_cmd_dcmi_str (uint8_t cmd); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_DCMI_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-device-types-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-device-types-util.h new file mode 100644 index 00000000..70d3e477 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-device-types-util.h @@ -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 . + * + */ + +#ifndef IPMI_DEVICE_TYPES_UTIL_H +#define IPMI_DEVICE_TYPES_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* return length of string written into buffer on success, -1 on error */ +int ipmi_device_type_modifer_message (uint8_t device_type, + uint8_t device_modifier, + char *buf, + unsigned int buflen); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_DEVICE_TYPES_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-entity-ids-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-entity-ids-util.h new file mode 100644 index 00000000..7c6b2b0f --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-entity-ids-util.h @@ -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 . + * + */ + +#ifndef IPMI_ENTITY_IDS_H +#define IPMI_ENTITY_IDS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +const char *ipmi_get_entity_id_string (uint8_t entity_id); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_ENTITY_IDS_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-error-dcmi-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-error-dcmi-util.h new file mode 100644 index 00000000..a1ad389d --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-error-dcmi-util.h @@ -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 . + * + */ +/*****************************************************************************\ + * Copyright (C) 2009-2015 Lawrence Livermore National Security, LLC. + * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). + * Written by Albert Chu + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_ERROR_DCMI_UTIL_H +#define IPMI_ERROR_DCMI_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* returns 0 on success, -1 on error */ +int ipmi_completion_code_dcmi_strerror_r (uint8_t cmd, + uint8_t netfn, + uint8_t comp_code, + char *errstr, + size_t len); + +/* returns 0 on success, -1 on error */ +int ipmi_completion_code_dcmi_strerror_cmd_r (fiid_obj_t obj_cmd, + uint8_t netfn, + char *errstr, + size_t len); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_ERROR_DCMI_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-error-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-error-util.h new file mode 100644 index 00000000..8dc564fd --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-error-util.h @@ -0,0 +1,54 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_ERROR_UTIL_H +#define IPMI_ERROR_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#define IPMI_ERR_STR_MAX_LEN 2048 + +/* returns 0 on success, -1 on error */ +int ipmi_completion_code_strerror_r (uint8_t cmd, + uint8_t netfn, + uint8_t comp_code, + char *errstr, + size_t len); + +/* returns 0 on success, -1 on error */ +int ipmi_completion_code_strerror_cmd_r (fiid_obj_t obj_cmd, + uint8_t netfn, + char *errstr, + size_t len); + +/* returns 0 on success, -1 on error */ +int ipmi_rmcpplus_status_strerror_r (uint8_t rmcpplus_status_code, + char *errstr, + size_t len); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_ERROR_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-iana-enterprise-numbers-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-iana-enterprise-numbers-util.h new file mode 100644 index 00000000..75d956f1 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-iana-enterprise-numbers-util.h @@ -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 . + * + */ + + +#ifndef IPMI_IANA_ENTERPRISE_NUMBERS_UTIL_H +#define IPMI_IANA_ENTERPRISE_NUMBERS_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* returns length written into buffer on success, -1 on error */ +/* if 0 bytes written, indicates no strings for manufacturer id + * if -1 w/ EINVAL, indicates manufacturer id out of range + * will handle special case known bad manufacturer ids + */ +int ipmi_iana_enterprise_numbers_string (uint32_t manufacturer_id, + char *buf, + unsigned int buflen); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_IANA_ENTERPRISE_NUMBERS_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-ipmb-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-ipmb-util.h new file mode 100644 index 00000000..4fa03232 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-ipmb-util.h @@ -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 . + * + */ + +#ifndef IPMI_IPMB_UTIL_H +#define IPMI_IPMB_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_ipmb_check_rq_seq (fiid_obj_t obj_ipmb_msg_hdr, uint8_t rq_seq); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_ipmb_check_checksum (uint8_t rq_addr, + fiid_obj_t obj_ipmb_msg_hdr, + fiid_obj_t obj_cmd, + fiid_obj_t obj_ipmb_msg_trlr); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_IPMB_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-jedec-manufacturer-identification-code-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-jedec-manufacturer-identification-code-util.h new file mode 100644 index 00000000..25cdcd35 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-jedec-manufacturer-identification-code-util.h @@ -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 . + * + */ + +#ifndef IPMI_JEDEC_MANUFACTURER_IDENTIFICATION_CODE_UTIL_H +#define IPMI_JEDEC_MANUFACTURER_IDENTIFICATION_CODE_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +char *ipmi_jedec_manufacturer_id_search (uint8_t continuation_codes_count, uint8_t id); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_JEDEC_MANUFACTURER_IDENTIFICATION_CODE_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-lan-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-lan-util.h new file mode 100644 index 00000000..4b7812f7 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-lan-util.h @@ -0,0 +1,71 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_LAN_UTIL_H +#define IPMI_LAN_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_lan_check_session_sequence_number (fiid_obj_t obj_lan_session_hdr, + uint32_t session_sequence_number); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_lan_check_session_id (fiid_obj_t obj_lan_session_hdr, + uint32_t session_id); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_lan_check_session_authentication_code (fiid_obj_t obj_lan_session_hdr_rs, + fiid_obj_t obj_lan_msg_hdr_rs, + fiid_obj_t obj_cmd, + fiid_obj_t obj_lan_msg_trlr_rs, + uint8_t authentication_type, + const void *authentication_code_data, + unsigned int authentication_code_data_len); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_lan_check_packet_session_authentication_code (const void *pkt, + unsigned int pkt_len, + uint8_t authentication_type, + const void *authentication_code_data, + unsigned int authentication_code_data_len); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_lan_check_net_fn (fiid_obj_t obj_lan_msg_hdr, uint8_t net_fn); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_lan_check_rq_seq (fiid_obj_t obj_lan_msg_hdr, uint8_t rq_seq); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_lan_check_checksum (fiid_obj_t obj_lan_msg_hdr, + fiid_obj_t obj_cmd, + fiid_obj_t obj_lan_msg_trlr); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_lan_check_packet_checksum (const void *pkt, unsigned int pkt_len); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_LAN_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-outofband-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-outofband-util.h new file mode 100644 index 00000000..3e970d77 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-outofband-util.h @@ -0,0 +1,91 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_OUTOFBAND_UTIL_H +#define IPMI_OUTOFBAND_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_is_ipmi_1_5_packet (const void *pkt, unsigned int pkt_len); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_is_ipmi_2_0_packet (const void *pkt, unsigned int pkt_len); + +int ipmi_check_session_sequence_number_1_5_init (uint32_t *highest_received_sequence_number, + uint32_t *previously_received_list); + +int ipmi_check_session_sequence_number_2_0_init (uint32_t *highest_received_sequence_number, + uint32_t *previously_received_list); + +/* returns 1 if sequence number in range, 0 if not, -1 on error */ +/* highest_received_sequence_number and previously_received_list updated on success */ +/* set sequence_number_window to 0 for default */ +int ipmi_check_session_sequence_number_1_5 (uint32_t session_sequence_number, + uint32_t *highest_received_sequence_number, + uint32_t *previously_received_list, + unsigned int sequence_number_window); + +/* returns 1 if sequence number in range, 0 if not, -1 on error */ +/* highest_received_sequence_number and previously_received_list updated on success */ +/* set sequence_number_window to 0 for default */ +int ipmi_check_session_sequence_number_2_0 (uint32_t session_sequence_number, + uint32_t *highest_received_sequence_number, + uint32_t *previously_received_list, + unsigned int sequence_number_window); + +/* returns 1 on supported, 0 on not-supported, -1 on error */ +/* obj_cmd must be get authentication capabilities response */ +int ipmi_check_authentication_capabilities_authentication_type (uint8_t authentication_type, + fiid_obj_t obj_cmd); + +/* returns 1 on supported, 0 on not-supported, -1 on error */ +/* username NULL == no username */ +/* password NULL == no password */ +/* obj_cmd must be get authentication capabilities response */ +/* note that length of fields unimportant, only NULL vs. non-NULL checked */ +int ipmi_check_authentication_capabilities_username (const char *username, + const char *password, + fiid_obj_t obj_cmd); + +/* returns 1 on supported, 0 on not-supported, -1 on error */ +/* obj_cmd must be get authentication capabilities response */ +int ipmi_check_authentication_capabilities_ipmi_2_0 (fiid_obj_t obj_cmd); + +/* returns 1 on supported, 0 on not-supported, -1 on error */ +/* k_g NULL == no k_g */ +/* obj_cmd must be get authentication capabilities response */ +/* note that length of fields unimportant, only NULL vs. non-NULL checked */ +int ipmi_check_authentication_capabilities_k_g (const void *k_g, + fiid_obj_t obj_cmd); + +/* returns 1 on privilege level supported, 0 on not-supported, -1 on error */ +/* obj_cmd must be open session response */ +int ipmi_check_open_session_maximum_privilege (uint8_t privilege_level, + fiid_obj_t obj_cmd); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_OUTOFBAND_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-rmcpplus-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-rmcpplus-util.h new file mode 100644 index 00000000..150eae94 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-rmcpplus-util.h @@ -0,0 +1,176 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_RMCPPLUS_UTIL_H +#define IPMI_RMCPPLUS_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* return length of data written into buffer on success, -1 on error */ +int ipmi_calculate_sik (uint8_t authentication_algorithm, + const void *k_g, + unsigned int k_g_len, + const void *remote_console_random_number, + unsigned int remote_console_random_number_len, + const void *managed_system_random_number, + unsigned int managed_system_random_number_len, + uint8_t name_only_lookup, + uint8_t requested_privilege_level, + const char *user_name, + unsigned int user_name_len, + void *sik, + unsigned int sik_len); + +/* return length of data written into buffer on success, -1 on error */ +int ipmi_calculate_k1 (uint8_t authentication_algorithm, + const void *sik_key, + unsigned int sik_key_len, + void *k1, + unsigned int k1_len); + +/* return length of data written into buffer on success, -1 on error */ +int ipmi_calculate_k2 (uint8_t authentication_algorithm, + const void *sik_key, + unsigned int sik_key_len, + void *k2, + unsigned int k2_len); + +/* returns 0 on success, -1 on error. + * + * sik_key, integrity_key, confidentiality_key should be pointers to + * buffers. length parameters should contains lengths of buffers. + * + * returned pointers and lengths reflect appropriate keys for + * remaining rmcpplus communication. + */ +int ipmi_calculate_rmcpplus_session_keys (uint8_t authentication_algorithm, + uint8_t integrity_algorithm, + uint8_t confidentiality_algorithm, + const void *authentication_code_data, + unsigned int authentication_code_data_len, + const void *k_g, + unsigned int k_g_len, + const void *remote_console_random_number, + unsigned int remote_console_random_number_len, + const void *managed_system_random_number, + unsigned int managed_system_random_number_len, + uint8_t name_only_lookup, + uint8_t requested_privilege_level, + const char *user_name, + unsigned int user_name_len, + void **sik_key, + unsigned int *sik_key_len, + void **integrity_key, + unsigned int *integrity_key_len, + void **confidentiality_key, + unsigned int *confidentiality_key_len); + +/* return length of data written into buffer on success, -1 on error */ +int ipmi_calculate_rakp_3_key_exchange_authentication_code (uint8_t authentication_algorithm, + const void *k_uid, + unsigned int k_uid_len, + const void *managed_system_random_number, + unsigned int managed_system_random_number_len, + uint32_t remote_console_session_id, + uint8_t name_only_lookup, + uint8_t requested_privilege_level, + const char *user_name, + unsigned int user_name_len, + void *key_exchange_authentication_code, + unsigned int key_exchange_authentication_code_len); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_payload_pad (uint8_t confidentiality_algorithm, + fiid_obj_t obj_rmcpplus_payload); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_integrity_pad (fiid_obj_t obj_rmcpplus_session_trlr); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_rakp_2_key_exchange_authentication_code (uint8_t authentication_algorithm, + const void *k_uid, + unsigned int k_uid_len, + uint32_t remote_console_session_id, + uint32_t managed_system_session_id, + const void *remote_console_random_number, + unsigned int remote_console_random_number_len, + const void *managed_system_random_number, + unsigned int managed_system_random_number_len, + const void *managed_system_guid, + unsigned int managed_system_guid_len, + uint8_t name_only_lookup, + uint8_t requested_privilege_level, + const char *user_name, + unsigned int user_name_len, + fiid_obj_t obj_cmd); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_rakp_4_integrity_check_value (uint8_t authentication_algorithm, + const void *sik_key, + unsigned int sik_key_len, + const void *remote_console_random_number, + unsigned int remote_console_random_number_len, + uint32_t managed_system_session_id, + const void *managed_system_guid, + unsigned int managed_system_guid_len, + fiid_obj_t obj_cmd); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_packet_session_authentication_code (uint8_t integrity_algorithm, + const void *pkt, + unsigned int pkt_len, + const void *integrity_key, + unsigned int integrity_key_len, + const void *authentication_code_data, + unsigned int authentication_code_data_len, + fiid_obj_t obj_rmcpplus_session_trlr); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_payload_type (fiid_obj_t obj_rmcpplus_session_hdr, + uint8_t payload_type); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_status_code (fiid_obj_t obj_cmd, + uint8_t status_code); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_message_tag (fiid_obj_t obj_cmd, + uint8_t message_tag); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_remote_console_session_id (fiid_obj_t obj_cmd, + uint32_t remote_console_session_id); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcpplus_check_session_id (fiid_obj_t obj_rmcpplus_session_hdr, + uint32_t session_id); + +int ipmi_rmcpplus_calculate_payload_type (const void *pkt, + unsigned int pkt_len, + uint8_t *payload_type); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_RMCPPLUS_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-sensor-and-event-code-tables-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-sensor-and-event-code-tables-util.h new file mode 100644 index 00000000..34e152c2 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-sensor-and-event-code-tables-util.h @@ -0,0 +1,184 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_SENSOR_AND_EVENT_CODE_TABLES_UTIL_H +#define IPMI_SENSOR_AND_EVENT_CODE_TABLES_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define IPMI_EVENT_READING_TYPE_CODE_CLASS_THRESHOLD 0x01 +#define IPMI_EVENT_READING_TYPE_CODE_CLASS_GENERIC_DISCRETE 0x02 +#define IPMI_EVENT_READING_TYPE_CODE_CLASS_SENSOR_SPECIFIC_DISCRETE 0x03 +#define IPMI_EVENT_READING_TYPE_CODE_CLASS_OEM 0x04 +#define IPMI_EVENT_READING_TYPE_CODE_CLASS_UNKNOWN 0x05 + +#define IPMI_GET_EVENT_MESSAGES_FLAGS_DEFAULT 0x0000 +#define IPMI_GET_EVENT_MESSAGES_FLAGS_SHORT 0x0001 +#define IPMI_GET_EVENT_MESSAGES_FLAGS_INTERPRET_OEM_DATA 0x0002 +#define IPMI_GET_EVENT_MESSAGES_FLAGS_SENSOR_READING 0x0004 +#define IPMI_GET_EVENT_MESSAGES_FLAGS_IGNORE_UNRECOGNIZED_EVENTS 0x0008 + +int ipmi_event_reading_type_code_class (uint8_t event_reading_type_code); + +int ipmi_event_message_separator (const char *separator); + +/* return length of string written into buffer on success, -1 on error */ +int ipmi_get_generic_event_message (uint8_t event_reading_type_code, + unsigned int offset, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +/* this function is for sensor specific messages, sensors with event + * reading typo codes of 0x6F */ +int ipmi_get_sensor_type_message (uint8_t sensor_type, + unsigned int offset, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +/* identical to above but returns "short" strings when appropriate */ +int ipmi_get_generic_event_message_short (uint8_t event_reading_type_code, + unsigned int offset, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +/* identical to above but returns "short" strings when appropriate */ +int ipmi_get_sensor_type_message_short (uint8_t sensor_type, + unsigned int offset, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +int ipmi_get_event_data2_message (uint8_t sensor_type, + unsigned int offset, + uint8_t event_data2, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +int ipmi_get_event_data3_message (uint8_t sensor_type, + unsigned int offset, + uint8_t event_data2, + uint8_t event_data3, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +/* this function is for OEM event reading type codes */ +int ipmi_get_oem_generic_event_message (uint32_t manufacturer_id, + uint16_t product_id, + uint8_t event_reading_type_code, + unsigned int offset, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +/* this function is for sensor specific messages, sensors with event + * reading typo codes of 0x6F */ +int ipmi_get_oem_sensor_type_message (uint32_t manufacturer_id, + uint16_t product_id, + uint8_t sensor_type, + uint8_t sensor_number, + unsigned int offset, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +/* this function is for string mappings from vendors that are specific + * to a event reading typo code and sensor type combination. */ +int ipmi_get_oem_specific_message (uint32_t manufacturer_id, + uint16_t product_id, + uint8_t event_reading_type_code, + uint8_t sensor_type, + unsigned int offset, + char *buf, + unsigned int buflen); + +/* return length of string written into buffer on success, -1 on error */ +/* some vendors return values instead of event bitmasks in the + * sensor or SEL event, this is to handle this special case + */ +int ipmi_get_oem_event_bitmask_message (uint32_t manufacturer_id, + uint16_t product_id, + uint8_t event_reading_type_code, + uint8_t sensor_type, + uint16_t event_bitmask, + char *buf, + unsigned int buflen); + +/* wrapper function to handle retrieval of an array of event messages. + * The array is NULL pointer terminated. + * + * collectively wraps + * + * ipmi_get_generic_event_message() + * ipmi_get_sensor_type_message() + * + * If flag IPMI_GET_EVENT_MESSAGES_FLAGS_SHORT is specified, + * ipmi_get_generic_event_message_short() and + * ipmi_get_sensor_type_message_short() are called respectively inplace + * of ipmi_get_generic_event_message() and ipmi_get_sensor_type_message(). + * + * If flag IPMI_GET_EVENT_MESSAGES_FLAGS_INTERPRET_OEM_DATA is + * specified ipmi_get_oem_generic_event_message(), + * ipmi_get_oem_sensor_type_message(), and + * ipmi_get_oem_sensor_event_bitmask_message() are called respectively + * if necessary. + * + * If flag IPMI_GET_EVENT_MESSAGES_FLAGS_SENSOR_READING is + * specified ipmi_get_threshold_message() will be called for a + * sensor_event_bitmask instead of ipmi_get_generic_event_message() if + * it is a threshold sensor. Primarily used for event messages + * following a get sensor reading in which threshold event bitmasks + * are slightly different. + * + * If flag IPMI_GET_EVENT_MESSAGES_FLAG_IGNORE_UNRECOGNIZED_EVENTS is + * specified ipmi_get_threshold_message() will not store event strings + * for unrecognized events. + * + * If there are no event messages, and 'no_event_message_string' is + * non-NULL, it will be placed into 'event_messages' as the lone event + * message. + * + * Returns 0 on success, -1 on error. Number of messages allocated in + * 'event_messages' is returned in 'event_messages_count'. + * + * User responsible for clearing memory created in 'event_messages'. + */ +int ipmi_get_event_messages (uint8_t event_reading_type_code, + uint8_t sensor_type, /* ignored if not relevant for event_reading_type_code */ + uint8_t sensor_number, /* ignored if not relevant for event_reading_type_code or sensor_type */ + uint16_t event_bitmask, + uint32_t manufacturer_id, /* ignored if INTERPRET_OEM_DATA not set */ + uint16_t product_id, /* ignored if INTERPRET_OEM_DATA not set */ + char ***event_messages, + unsigned int *event_messages_count, + const char *no_event_message_string, + unsigned int flags); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_AND_EVENT_CODE_TABLES_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-sensor-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-sensor-util.h new file mode 100644 index 00000000..04d32698 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-sensor-util.h @@ -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 . + * + */ + +#ifndef IPMI_SENSOR_UTIL_H +#define IPMI_SENSOR_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* return length of string written into buffer on success, -1 on error */ +int ipmi_get_threshold_message (uint8_t offset, char *buf, unsigned int buflen); + +const char *ipmi_get_sensor_type_string (uint8_t sensor_type); + +const char *ipmi_get_oem_sensor_type_string (uint8_t sensor_type, + uint8_t event_reading_code, + uint32_t manufacturer_id, + uint16_t product_id); + +/* returns length written into buffer on success, -1 on error */ +int ipmi_sensor_units_string (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, + char *buf, + unsigned int buflen, + unsigned int abbreviated_units_flag); + +/* b_exponent - sometimes documented as k1 */ +/* r_exponent - sometimes documented as k2 */ +int ipmi_sensor_decode_value (int8_t r_exponent, + int8_t b_exponent, + int16_t m, + int16_t b, + uint8_t linearization, + uint8_t analog_data_format, + uint8_t raw_data, + double *value); + +/* b_exponent - sometimes documented as k1 */ +/* r_exponent - sometimes documented as k2 */ +int ipmi_sensor_decode_raw_value (int8_t r_exponent, + int8_t b_exponent, + int16_t m, + int16_t b, + uint8_t linearization, + uint8_t analog_data_format, + double value, + uint8_t *raw_data); + +/* r_exponent - sometimes documented as k2 */ +int ipmi_sensor_decode_tolerance (int8_t r_exponent, + int16_t m, + uint8_t raw_data, + uint8_t linearization, + double *value); + +/* accuracy returned as percentage */ +int ipmi_sensor_decode_accuracy (uint16_t accuracy_raw, + uint8_t accuracy_exp, + double *value); + +/* r_exponent - sometimes documented as k2 */ +int ipmi_sensor_decode_resolution (int8_t r_exponent, + int16_t m, + double *value); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_SENSOR_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-timestamp-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-timestamp-util.h new file mode 100644 index 00000000..a250606b --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-timestamp-util.h @@ -0,0 +1,67 @@ +/* + * 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 . + * + */ + +#ifndef IPMI_TIMESTAMP_UTIL_H +#define IPMI_TIMESTAMP_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define IPMI_TIMESTAMP_FLAG_DEFAULT 0x00 +/* Special string abbreviations + * "Unspecified" will be abbreviated "Unspec." + * "Post-Init X s" will be abbreviated to just "PostInit" + */ +#define IPMI_TIMESTAMP_FLAG_ABBREVIATE 0x01 +/* Assume timestamp is UTC instead of localtime, convert to localtime. + */ +#define IPMI_TIMESTAMP_FLAG_UTC_TO_LOCALTIME 0x02 +/* Assume timestamp is localtime, convert to UTC + */ +#define IPMI_TIMESTAMP_FLAG_LOCALTIME_TO_UTC 0x04 + +#define IPMI_UTC_OFFSET_SECONDS_MIN -86400 +#define IPMI_UTC_OFFSET_SECONDS_MAX 86400 + +#define IPMI_UTC_OFFSET_VALID(__val) \ + (((__val) >= IPMI_UTC_OFFSET_SECONDS_MIN \ + && (__val) <= IPMI_UTC_OFFSET_SECONDS_MAX) ? 1 : 0) + +/* Handles special case timestamps in IPMI and timestamp + * conversations. Special case timestamps most notably unspecified + * timestamps and timestamps in the range of initialization of the + * BMC. In those respective cases, an appropriate string will written + * into the buffer instead of the actual time/date. + */ + +/* format uses format from strftime(), pass NULL for default one */ +int ipmi_timestamp_string (uint32_t timestamp, + int utc_offset, + unsigned int flags, + const char *format, + char *buf, + unsigned int buflen); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_TIMESTAMP_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/ipmi-util.h b/source/freeipmi/usr/include/freeipmi/util/ipmi-util.h new file mode 100644 index 00000000..a7286726 --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/ipmi-util.h @@ -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 . + * + */ + +#ifndef IPMI_UTIL_H +#define IPMI_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +uint8_t ipmi_checksum (const void *buf, unsigned int buflen); + +/* Call first time w/ checksum_initial 0, pass in result for subsequent calls */ +uint8_t ipmi_checksum_incremental (const void *buf, unsigned int buflen, uint8_t checksum_initial); +/* Can pass NULL/0 for final buf/buflen */ +uint8_t ipmi_checksum_final (const void *buf, unsigned int buflen, uint8_t checksum_initial); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_check_cmd (fiid_obj_t obj_cmd, uint8_t cmd); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_check_completion_code (fiid_obj_t obj_cmd, uint8_t completion_code); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_check_completion_code_success (fiid_obj_t obj_cmd); + +int ipmi_get_random (void *buf, unsigned int buflen); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_is_ipmi_1_5_packet (const void *pkt, unsigned int pkt_len); + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_is_ipmi_2_0_packet (const void *pkt, unsigned int pkt_len); + +int ipmi_check_session_sequence_number_1_5_init (uint32_t *highest_received_sequence_number, + uint32_t *previously_received_list); + +int ipmi_check_session_sequence_number_2_0_init (uint32_t *highest_received_sequence_number, + uint32_t *previously_received_list); + +/* returns 1 if sequence number in range, 0 if not, -1 on error */ +/* highest_received_sequence_number and previously_received_list updated on success */ +/* set sequence_number_window to 0 for default */ +int ipmi_check_session_sequence_number_1_5 (uint32_t session_sequence_number, + uint32_t *highest_received_sequence_number, + uint32_t *previously_received_list, + unsigned int sequence_number_window); + +/* returns 1 if sequence number in range, 0 if not, -1 on error */ +/* highest_received_sequence_number and previously_received_list updated on success */ +/* set sequence_number_window to 0 for default */ +int ipmi_check_session_sequence_number_2_0 (uint32_t session_sequence_number, + uint32_t *highest_received_sequence_number, + uint32_t *previously_received_list, + unsigned int sequence_number_window); + +const char *ipmi_cmd_str (uint8_t net_fn, uint8_t cmd); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_UTIL_H */ diff --git a/source/freeipmi/usr/include/freeipmi/util/rmcp-util.h b/source/freeipmi/usr/include/freeipmi/util/rmcp-util.h new file mode 100644 index 00000000..3d1e9e0a --- /dev/null +++ b/source/freeipmi/usr/include/freeipmi/util/rmcp-util.h @@ -0,0 +1,37 @@ +/* + * 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 . + * + */ + + +#ifndef RMCP_UTIL_H +#define RMCP_UTIL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* returns 1 on pass, 0 on fail, -1 on error */ +int ipmi_rmcp_check_message_tag (fiid_obj_t pong, uint8_t message_tag); + +#ifdef __cplusplus +} +#endif + +#endif /* RMCP_UTIL_H */ diff --git a/source/freeipmi/usr/include/ipmi_monitoring.h b/source/freeipmi/usr/include/ipmi_monitoring.h new file mode 100644 index 00000000..4879e4c8 --- /dev/null +++ b/source/freeipmi/usr/include/ipmi_monitoring.h @@ -0,0 +1,1055 @@ +/*****************************************************************************\ + * $Id: ipmi_monitoring.h,v 1.69 2010-07-22 21:49:00 chu11 Exp $ + ***************************************************************************** + * Copyright (C) 2007-2012 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_MONITORING_H +#define IPMI_MONITORING_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Libipmimonitoring 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 LIBIPMIMONITORING_VERSION_MAJOR 1 +#define LIBIPMIMONITORING_VERSION_MINOR 0 +#define LIBIPMIMONITORING_VERSION_PATCH 6 + +enum ipmi_monitoring_error_codes + { + IPMI_MONITORING_ERR_SUCCESS = 0, + IPMI_MONITORING_ERR_CTX_NULL = 1, + IPMI_MONITORING_ERR_CTX_INVALID = 2, + IPMI_MONITORING_ERR_PARAMETERS = 3, + IPMI_MONITORING_ERR_PERMISSION = 4, + IPMI_MONITORING_ERR_LIBRARY_UNINITIALIZED = 5, + IPMI_MONITORING_ERR_SEL_CONFIG_FILE_DOES_NOT_EXIST = 6, + IPMI_MONITORING_ERR_SEL_CONFIG_FILE_PARSE = 7, + IPMI_MONITORING_ERR_SENSOR_CONFIG_FILE_DOES_NOT_EXIST = 8, + IPMI_MONITORING_ERR_SENSOR_CONFIG_FILE_PARSE = 9, + IPMI_MONITORING_ERR_SDR_CACHE_PERMISSION = 10, + IPMI_MONITORING_ERR_SDR_CACHE_FILESYSTEM = 11, + IPMI_MONITORING_ERR_HOSTNAME_INVALID = 12, + IPMI_MONITORING_ERR_SENSOR_NOT_FOUND = 13, + IPMI_MONITORING_ERR_NO_SEL_RECORDS = 14, + IPMI_MONITORING_ERR_SEL_RECORDS_LIST_END = 15, + IPMI_MONITORING_ERR_SEL_RECORD_DATA_NOT_AVAILABLE = 16, + IPMI_MONITORING_ERR_NO_SENSOR_READINGS = 17, + IPMI_MONITORING_ERR_SENSOR_READINGS_LIST_END = 18, + IPMI_MONITORING_ERR_CONNECTION_TIMEOUT = 19, + IPMI_MONITORING_ERR_SESSION_TIMEOUT = 20, + IPMI_MONITORING_ERR_USERNAME_INVALID = 21, + IPMI_MONITORING_ERR_PASSWORD_INVALID = 22, + IPMI_MONITORING_ERR_PASSWORD_VERIFICATION_TIMEOUT = 23, + IPMI_MONITORING_ERR_K_G_INVALID = 24, + IPMI_MONITORING_ERR_PRIVILEGE_LEVEL_INSUFFICIENT = 25, + IPMI_MONITORING_ERR_PRIVILEGEL_LEVEL_CANNOT_BE_OBTAINED = 26, + IPMI_MONITORING_ERR_AUTHENTICATION_TYPE_UNAVAILABLE = 27, + IPMI_MONITORING_ERR_IPMI_2_0_UNAVAILABLE = 28, + IPMI_MONITORING_ERR_CIPHER_SUITE_ID_UNAVAILABLE = 29, + IPMI_MONITORING_ERR_CALLBACK_ERROR = 30, + IPMI_MONITORING_ERR_BMC_BUSY = 31, + IPMI_MONITORING_ERR_OUT_OF_MEMORY = 32, + IPMI_MONITORING_ERR_IPMI_ERROR = 33, + IPMI_MONITORING_ERR_SYSTEM_ERROR = 34, + IPMI_MONITORING_ERR_INTERNAL_ERROR = 35, + IPMI_MONITORING_ERR_ERRNUMRANGE = 36, + }; + +enum ipmi_monitoring_state + { + IPMI_MONITORING_STATE_NOMINAL = 0x00, + IPMI_MONITORING_STATE_WARNING = 0x01, + IPMI_MONITORING_STATE_CRITICAL = 0x02, + IPMI_MONITORING_STATE_UNKNOWN = 0x03, + }; + +enum ipmi_monitoring_sel_record_type_class + { + IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD = 0x00, + IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD = 0x01, + IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_NON_TIMESTAMPED_OEM_RECORD = 0x02, + IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_UNKNOWN = 0x03, + }; + +enum ipmi_monitoring_sensor_type + { + IPMI_MONITORING_SENSOR_TYPE_RESERVED = 0x00, + IPMI_MONITORING_SENSOR_TYPE_TEMPERATURE = 0x01, + IPMI_MONITORING_SENSOR_TYPE_VOLTAGE = 0x02, + IPMI_MONITORING_SENSOR_TYPE_CURRENT = 0x03, + IPMI_MONITORING_SENSOR_TYPE_FAN = 0x04, + IPMI_MONITORING_SENSOR_TYPE_PHYSICAL_SECURITY = 0x05, + IPMI_MONITORING_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT = 0x06, + IPMI_MONITORING_SENSOR_TYPE_PROCESSOR = 0x07, + IPMI_MONITORING_SENSOR_TYPE_POWER_SUPPLY = 0x08, + IPMI_MONITORING_SENSOR_TYPE_POWER_UNIT = 0x09, + IPMI_MONITORING_SENSOR_TYPE_COOLING_DEVICE = 0x0A, + IPMI_MONITORING_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR = 0x0B, + IPMI_MONITORING_SENSOR_TYPE_MEMORY = 0x0C, + IPMI_MONITORING_SENSOR_TYPE_DRIVE_SLOT = 0x0D, + IPMI_MONITORING_SENSOR_TYPE_POST_MEMORY_RESIZE = 0x0E, + IPMI_MONITORING_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS = 0x0F, + IPMI_MONITORING_SENSOR_TYPE_EVENT_LOGGING_DISABLED = 0x10, + IPMI_MONITORING_SENSOR_TYPE_WATCHDOG1 = 0x11, + IPMI_MONITORING_SENSOR_TYPE_SYSTEM_EVENT = 0x12, + IPMI_MONITORING_SENSOR_TYPE_CRITICAL_INTERRUPT = 0x13, + IPMI_MONITORING_SENSOR_TYPE_BUTTON_SWITCH = 0x14, + IPMI_MONITORING_SENSOR_TYPE_MODULE_BOARD = 0x15, + IPMI_MONITORING_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR = 0x16, + IPMI_MONITORING_SENSOR_TYPE_ADD_IN_CARD = 0x17, + IPMI_MONITORING_SENSOR_TYPE_CHASSIS = 0x18, + IPMI_MONITORING_SENSOR_TYPE_CHIP_SET = 0x19, + IPMI_MONITORING_SENSOR_TYPE_OTHER_FRU = 0x1A, + IPMI_MONITORING_SENSOR_TYPE_CABLE_INTERCONNECT = 0x1B, + IPMI_MONITORING_SENSOR_TYPE_TERMINATOR = 0x1C, + IPMI_MONITORING_SENSOR_TYPE_SYSTEM_BOOT_INITIATED = 0x1D, + IPMI_MONITORING_SENSOR_TYPE_BOOT_ERROR = 0x1E, + IPMI_MONITORING_SENSOR_TYPE_OS_BOOT = 0x1F, + IPMI_MONITORING_SENSOR_TYPE_OS_CRITICAL_STOP = 0x20, + IPMI_MONITORING_SENSOR_TYPE_SLOT_CONNECTOR = 0x21, + IPMI_MONITORING_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE = 0x22, + IPMI_MONITORING_SENSOR_TYPE_WATCHDOG2 = 0x23, + IPMI_MONITORING_SENSOR_TYPE_PLATFORM_ALERT = 0x24, + IPMI_MONITORING_SENSOR_TYPE_ENTITY_PRESENCE = 0x25, + IPMI_MONITORING_SENSOR_TYPE_MONITOR_ASIC_IC = 0x26, + IPMI_MONITORING_SENSOR_TYPE_LAN = 0x27, + IPMI_MONITORING_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH = 0x28, + IPMI_MONITORING_SENSOR_TYPE_BATTERY = 0x29, + IPMI_MONITORING_SENSOR_TYPE_SESSION_AUDIT = 0x2A, + IPMI_MONITORING_SENSOR_TYPE_VERSION_CHANGE = 0x2B, + IPMI_MONITORING_SENSOR_TYPE_FRU_STATE = 0x2C, + /* 0x2D - 0xBF - RESERVED */ + /* 0xC0 - 0xFF - OEM sensor types */ + IPMI_MONITORING_SENSOR_TYPE_OEM_MIN = 0xC0, + IPMI_MONITORING_SENSOR_TYPE_OEM_MAX = 0xFF, + IPMI_MONITORING_SENSOR_TYPE_UNKNOWN = 0xFFFF, + }; + +enum ipmi_monitoring_sel_event_direction + { + IPMI_MONITORING_SEL_EVENT_DIRECTION_ASSERTION = 0x00, + IPMI_MONITORING_SEL_EVENT_DIRECTION_DEASSERTION = 0x01, + }; + +enum ipmi_monitoring_sensor_units + { + IPMI_MONITORING_SENSOR_UNITS_NONE = 0x00, + IPMI_MONITORING_SENSOR_UNITS_CELSIUS = 0x01, + IPMI_MONITORING_SENSOR_UNITS_FAHRENHEIT = 0x02, + IPMI_MONITORING_SENSOR_UNITS_VOLTS = 0x03, + IPMI_MONITORING_SENSOR_UNITS_AMPS = 0x04, + IPMI_MONITORING_SENSOR_UNITS_RPM = 0x05, + IPMI_MONITORING_SENSOR_UNITS_WATTS = 0x06, + IPMI_MONITORING_SENSOR_UNITS_PERCENT = 0x07, + /* 0x08 - 0xFE - reserved for ipmimonitoring */ + IPMI_MONITORING_SENSOR_UNITS_UNKNOWN = 0xFF, + }; + +enum ipmi_monitoring_sensor_reading_type + { + IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER8_BOOL = 0x00, + IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER32 = 0x01, + IPMI_MONITORING_SENSOR_READING_TYPE_DOUBLE = 0x02, + /* 0x03 - 0xFE - reserved for ipmimonitoring */ + IPMI_MONITORING_SENSOR_READING_TYPE_UNKNOWN = 0xFF, + }; + +enum ipmi_monitoring_driver_type + { + IPMI_MONITORING_DRIVER_TYPE_KCS = 0x00, + IPMI_MONITORING_DRIVER_TYPE_SSIF = 0x01, + IPMI_MONITORING_DRIVER_TYPE_OPENIPMI = 0x02, + IPMI_MONITORING_DRIVER_TYPE_SUNBMC = 0x03, + }; + +enum ipmi_monitoring_protocol_version + { + IPMI_MONITORING_PROTOCOL_VERSION_1_5 = 0x00, + IPMI_MONITORING_PROTOCOL_VERSION_2_0 = 0x01, + }; + +enum ipmi_monitoring_privilege + { + IPMI_MONITORING_PRIVILEGE_LEVEL_USER = 0x00, + IPMI_MONITORING_PRIVILEGE_LEVEL_OPERATOR = 0x01, + IPMI_MONITORING_PRIVILEGE_LEVEL_ADMIN = 0x02, + }; + +enum ipmi_monitoring_authentication_type + { + IPMI_MONITORING_AUTHENTICATION_TYPE_NONE = 0x00, + IPMI_MONITORING_AUTHENTICATION_TYPE_STRAIGHT_PASSWORD_KEY = 0x01, + IPMI_MONITORING_AUTHENTICATION_TYPE_MD2 = 0x02, + IPMI_MONITORING_AUTHENTICATION_TYPE_MD5 = 0x03, + }; + +enum ipmi_monitoring_flags + { + IPMI_MONITORING_FLAGS_NONE = 0x00, + IPMI_MONITORING_FLAGS_DEBUG = 0x01, + IPMI_MONITORING_FLAGS_DEBUG_IPMI_PACKETS = 0x02, + IPMI_MONITORING_FLAGS_LOCK_MEMORY = 0x04, + }; + +enum ipmi_monitoring_workaround_flags + { + /* For use w/ IPMI_MONITORING_PROTOCOL_VERSION_1_5 */ + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_1_5_AUTHENTICATION_CAPABILITIES = 0x00000001, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_1_5_ACCEPT_SESSION_ID_ZERO = 0x00000002, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_1_5_FORCE_PERMSG_AUTHENTICATION = 0x00000004, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_1_5_CHECK_UNEXPECTED_AUTHCODE = 0x00000008, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_1_5_BIG_ENDIAN_SEQUENCE_NUMBER = 0x00000010, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_1_5_NO_AUTH_CODE_CHECK = 0x00000020, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_1_5_NO_CHECKSUM_CHECK = 0x00000040, + + /* For use w/ IPMI_MONITORING_PROTOCOL_VERSION_2_0 */ + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_2_0_AUTHENTICATION_CAPABILITIES = 0x00000001, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_2_0_INTEL_2_0_SESSION = 0x00000002, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_2_0_SUPERMICRO_2_0_SESSION = 0x00000004, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_2_0_SUN_2_0_SESSION = 0x00000008, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_2_0_OPEN_SESSION_PRIVILEGE = 0x00000010, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_2_0_NON_EMPTY_INTEGRITY_CHECK_VALUE = 0x00000020, + IPMI_MONITORING_WORKAROUND_FLAGS_PROTOCOL_VERSION_2_0_NO_CHECKSUM_CHECK = 0x00000040, + + /* For use w/ an In-band driver */ + IPMI_MONITORING_WORKAROUND_FLAGS_INBAND_ASSUME_IO_BASE_ADDRESS = 0x00000001, + IPMI_MONITORING_WORKAROUND_FLAGS_INBAND_SPIN_POLL = 0x00000002, + }; + +/* REREAD_SDR_CACHE - Re-read the SDR cache + * + * INTERPRET_OEM_DATA - Attempt to interpret OEM data if read. + * + * ASSUME_SYSTEM_EVENT_RECORD - If an event record is illegal, assume + * it is a bug in the system and actually a system event record. + * + * ENTITY_SENSOR_NAMES - Return sensor names with appropriate entity + * id and instance prefixed when appropriate. + * + * ASSUME_MAX_SDR_RECORD_COUNT - If motherboard does not implement SDR + * record reading properly, do not fail out. Assume a max count. + */ +enum ipmi_monitoring_sel_flags + { + IPMI_MONITORING_SEL_FLAGS_REREAD_SDR_CACHE = 0x00000001, + IPMI_MONITORING_SEL_FLAGS_INTERPRET_OEM_DATA = 0x00000002, + IPMI_MONITORING_SEL_FLAGS_ASSUME_SYSTEM_EVENT_RECORD = 0x00000004, + IPMI_MONITORING_SEL_FLAGS_ENTITY_SENSOR_NAMES = 0x00000008, + IPMI_MONITORING_SEL_FLAGS_ASSUME_MAX_SDR_RECORD_COUNT = 0x00000010, + }; + +/* REREAD_SDR_CACHE - Re-read the SDR cache + * + * IGNORE_NON_INTERPRETABLE_SENSORS - Do not read sensors that cannot be interpreted. + * + * BRIDGE_SENSORS - Attempt to bridge sensors not owned by the BMC + * + * INTERPRET_OEM_DATA - Attempt to interpret OEM data if read. + * + * SHARED_SENSORS - Iterate through shared sensors if found + * + * DISCRETE_READING - Allow sensor readings to be read even if the event/reading type + * code for the sensor is not valid. This option works around + * poorly defined (and arguably illegal) SDR records that list + * non-discrete sensor expectations along with discrete state + * conditions. + * + * IGNORE_SCANNING_DISABLED - Ignore the scanning bit and read sensors no matter + * what. This option works around motherboards + * that incorrectly indicate sensors as disabled. + * + * ASSUME_BMC_OWNER - Assume the BMC is the sensor owner no matter what. This option + * works around motherboards that incorrectly indicate a non-BMC + * sensor owner (e.g. usually bridging is required). + * + * ENTITY_SENSOR_NAMES - Return sensor names with appropriate entity + * id and instance prefixed when appropriate. + * + * ASSUME_MAX_SDR_RECORD_COUNT - If motherboard does not implement SDR + * record reading properly, do not fail + * out. Assume a max count. + */ +enum ipmi_monitoring_sensor_reading_flags + { + IPMI_MONITORING_SENSOR_READING_FLAGS_REREAD_SDR_CACHE = 0x00000001, + IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_NON_INTERPRETABLE_SENSORS = 0x00000002, + IPMI_MONITORING_SENSOR_READING_FLAGS_BRIDGE_SENSORS = 0x00000004, + IPMI_MONITORING_SENSOR_READING_FLAGS_INTERPRET_OEM_DATA = 0x00000008, + IPMI_MONITORING_SENSOR_READING_FLAGS_SHARED_SENSORS = 0x00000010, + IPMI_MONITORING_SENSOR_READING_FLAGS_DISCRETE_READING = 0x00000020, + IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_SCANNING_DISABLED = 0x00000040, + IPMI_MONITORING_SENSOR_READING_FLAGS_ASSUME_BMC_OWNER = 0x00000080, + IPMI_MONITORING_SENSOR_READING_FLAGS_ENTITY_SENSOR_NAMES = 0x00000100, + IPMI_MONITORING_SENSOR_READING_FLAGS_ASSUME_MAX_SDR_RECORD_COUNT = 0x00000200, + IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_UNREADABLE_SENSORS = 0x00000002, /* legacy macro */ + }; + +/* + * ipmi_monitoring_ipmi_config + * + * Configuration information for IPMI Inband monitoring + * + * driver_type + * + * Use a specific in-band driver. + * + * IPMI_MONITORING_DRIVER_TYPE_KCS + * IPMI_MONITORING_DRIVER_TYPE_SSIF + * IPMI_MONITORING_DRIVER_TYPE_OPENIPMI + * IPMI_MONITORING_DRIVER_TYPE_SUNBMC + * + * Pass < 0 for default of IPMI_MONITORING_DRIVER_TYPE_KCS. + * + * disable_auto_probe + * + * Flag informs the library if in-band driver information should be + * probed or not. + * + * driver_address + * + * Use this specified driver address instead of a probed one. + * + * register_spacing + * + * Use this register space instead of the probed one. + * + * driver_device + * + * Use this driver device for the IPMI driver. + * + * Configuration information for IPMI Out-of-Band monitoring + * + * protocol_version + * + * Indicate the IPMI protocol version to use + * + * IPMI_MONITORING_PROTOCOL_VERSION_1_5 + * IPMI_MONITORING_PROTOCOL_VERSION_2_0 + * + * Pass < 0 for default of IPMI_MONITORING_VERSION_1_5. + * + * username + * + * BMC username. Pass NULL ptr for NULL username. Maximum length of + * 16 bytes. + * + * password + * + * BMC password. Pass NULL ptr for NULL password. Maximum length of + * 16 bytes for IPMI 1.5, 20 bytes for IPMI 2.0 + * + * k_g + * + * BMC Key for 2-key authentication. Pass NULL ptr to use password + * as BMC key. The k_g key need not be an ascii string. + * + * k_g_len + * + * Length of k_g. Necessary b/c k_g may contain null values or in its + * hex key. Maximum length of 20 bytes. + * + * privilege_level + * + * privilege level to authenticate with. + * + * Supported privilege levels: + * + * IPMI_MONITORING_PRIVILEGE_LEVEL_USER + * IPMI_MONITORING_PRIVILEGE_LEVEL_OPERATOR + * IPMI_MONITORING_PRIVILEGE_LEVEL_ADMIN + * + * Pass < 0 for default of IPMI_MONITORING_PRIVILEGE_LEVEL_USER. + * + * authentication_type + * + * authentication type to use + * + * IPMI_MONITORING_AUTHENTICATION_TYPE_NONE + * IPMI_MONITORING_AUTHENTICATION_TYPE_STRAIGHT_PASSWORD_KEY + * IPMI_MONITORING_AUTHENTICATION_TYPE_MD2 + * IPMI_MONITORING_AUTHENTICATION_TYPE_MD5 + * + * Pass < 0 for default of IPMI_MONITORING_AUTHENTICATION_TYPE_MD5. + * + * cipher_suite_id + * + * Cipher suite identifier to determine authentication, integrity, + * and confidentiality algorithms to use. + * + * Supported Cipher Suite IDs + * (Key: A - Authentication Algorithm + * I - Integrity Algorithm + * C - Confidentiality Algorithm) + * + * 0 - A = None; I = None; C = None + * 1 - A = HMAC-SHA1; I = None; C = None + * 2 - A = HMAC-SHA1; I = HMAC-SHA1-96; C = None + * 3 - A = HMAC-SHA1; I = HMAC-SHA1-96; C = AES-CBC-128 + * 6 - A = HMAC-MD5; I = None; C = None + * 7 - A = HMAC-MD5; I = HMAC-MD5-128; C = None + * 8 - A = HMAC-MD5; I = HMAC-MD5-128; C = AES-CBC-128 + * 11 - A = HMAC-MD5; I = MD5-128; C = None + * 12 - A = HMAC-MD5; I = MD5-128; C = AES-CBC-128 + * 15 - A = HMAC-SHA256; I = None; C = None + * 16 - A = HMAC-SHA256; I = HMAC-SHA256-128; C = None + * 17 - A = HMAC-SHA256; I = HMAC-SHA256-128; C = AES-CBC-128 + * + * Pass < 0 for default of 3. + * + * session_timeout_len + * + * Specifies the session timeout length in milliseconds. Pass <= 0 + * to default to 60000 (60 seconds). + * + * retransmission_timeout_len + * + * Specifies the packet retransmission timeout length in + * milliseconds. Pass <= 0 to default to 500 (0.5 seconds). + * + * Configuration information for both Inband and Outofband + * + * workaround_flags + * + * Bitwise OR of flags indicating any behavior which should be + * changed from the default to handle IPMI non-compliance problems. + * Some BMCs which are non-compliant may require a workaround flag + * for correct operation. Pass 0 for default of no modifications to + * behavior. + */ +struct ipmi_monitoring_ipmi_config +{ + int driver_type; + int disable_auto_probe; + unsigned int driver_address; + unsigned int register_spacing; + char *driver_device; + + int protocol_version; + char *username; + char *password; + unsigned char *k_g; + unsigned int k_g_len; + int privilege_level; + int authentication_type; + int cipher_suite_id; + int session_timeout_len; + int retransmission_timeout_len; + + unsigned int workaround_flags; +}; + +typedef struct ipmi_monitoring_ctx *ipmi_monitoring_ctx_t; + +/* + * Ipmi_Monitoring_Callback + * + * If callback returns < 0, libipmimonitoring will stop reading + * remaining information. + */ +typedef int (*Ipmi_Monitoring_Callback)(ipmi_monitoring_ctx_t c, void *callback_data); + +/* + * ipmi_monitoring_init + * + * Initialize the ipmi monitoring library. Needs to be called only + * once before any ipmi monitoring functions are called. Threaded + * applications are responsible for calling this function before any + * thread may call another function in the library. + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_init (unsigned int flags, int *errnum); + +/* + * ipmi_monitoring_ctx_create + * + * Create an ipmi monitoring context + * + * Returns context on success, NULL on error + */ +ipmi_monitoring_ctx_t ipmi_monitoring_ctx_create (void); + +/* + * ipmi_monitoring_ctx_destroy + * + * Destroy an ipmi monitoring context + */ +void ipmi_monitoring_ctx_destroy (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_ctx_errnum + * + * Returns the error code of the most recently caused error + */ +int ipmi_monitoring_ctx_errnum (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_ctx_strerror + * + * Returns a pointer to statically allocated string describing the + * error code in errnum. + */ +char *ipmi_monitoring_ctx_strerror (int errnum); + +/* + * ipmi_monitoring_ctx_errormsg + * + * Returns a pointer to statically allocated string describing the + * most recently caused error. + */ +char *ipmi_monitoring_ctx_errormsg (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_ctx_sel_config_file + * + * Initialize the ipmi monitoring context with the interpretation + * rules stored in a specific sel configuration file. If NULL + * sel_config_file is specified, the default sel configuration + * file will be read and parsed. + * + * If this function is never called, only the default + * libipmimonitoring interpretations will be used. + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_ctx_sel_config_file (ipmi_monitoring_ctx_t c, + const char *sel_config_file); + +/* + * ipmi_monitoring_ctx_sensor_config_file + * + * Initialize the ipmi monitoring context with the interpretation + * rules stored in a specific sensor configuration file. If NULL + * sensor_config_file is specified, the default sensor configuration + * file will be read and parsed. + * + * If this function is never called, only the default + * libipmimonitoring interpretations will be used. + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_ctx_sensor_config_file (ipmi_monitoring_ctx_t c, + const char *sensor_config_file); + +/* + * ipmi_monitoring_ctx_sdr_cache_directory + * + * Initialize the ipmi monitoring context with a different SDR cache + * directory. + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_ctx_sdr_cache_directory (ipmi_monitoring_ctx_t c, + const char *dir); + +/* + * ipmi_monitoring_ctx_sdr_cache_filenames + * + * Initialize how sdr cache filenames will be formatted when + * written/read. + * + * The following may be included in the format. + * + * %L - the hostname of the local machine + * %H - the remote host being monitored + * + * Atleast %H must be specified. + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_ctx_sdr_cache_filenames (ipmi_monitoring_ctx_t c, + const char *format); + +/* + * ipmi_monitoring_sel_by_record_id + * + * Retrieve SEL records by record ID and store them in the monitoring context. + * + * If 'hostname' is NULL, SEL records for the current node will be retrieved in-band. + * If 'record_ids' is NULL, all records will be retrieved + * If specified, callback function will be called after each record is read and parsed. + * + * Returns number of records retrieved on success, -1 on error. + * SEL iterators below may be used after calling this function to + * iterate through records. + */ +int ipmi_monitoring_sel_by_record_id (ipmi_monitoring_ctx_t c, + const char *hostname, + struct ipmi_monitoring_ipmi_config *config, + unsigned int sel_flags, + unsigned int *record_ids, + unsigned int record_ids_len, + Ipmi_Monitoring_Callback callback, + void *callback_data); + +/* + * ipmi_monitoring_sel_by_sensor_type + * + * Retrieve SEL records by sensor type and store them in the + * monitoring context. See 'ipmi_monitoring_sensor_type' for possible + * sensor type values. + * + * If 'hostname' is NULL, SEL records for the current node will be retrieved in-band. + * If 'sensor_types' is NULL, all records will be retrieved. + * If specified, callback function will be called after each record is read and parsed. + * + * Returns number of records retrieved on success, -1 on error + * SEL iterators below may be used after calling this function to + * iterate through records. + */ +int ipmi_monitoring_sel_by_sensor_type (ipmi_monitoring_ctx_t c, + const char *hostname, + struct ipmi_monitoring_ipmi_config *config, + unsigned int sel_flags, + unsigned int *sensor_types, + unsigned int sensor_types_len, + Ipmi_Monitoring_Callback callback, + void *callback_data); + +/* + * ipmi_monitoring_sel_by_date_range + * + * Retrieve SEL records by date range and store them in the monitoring + * context. Dates may be specified in a format of MM/DD/YYYY or + * MM-DD-YYYY. The month may be specified as a numeral or its + * abbreviated string name. + * + * If 'hostname' is NULL, SEL records for the current node will be retrieved in-band. + * If 'date_begin' is NULL, all records before the 'date_end' will be retrieved. + * If 'date_end' is NULL, the current time is assumed. + * If specified, callback function will be called after each record is read and parsed. + * + * Note that non-timestamped SEL records will not be retrieved at all + * b/c they lack a timestamp. + * + * Returns number of records retrieved on success, -1 on error + * SEL iterators below may be used after calling this function to + * iterate through records. + */ +int ipmi_monitoring_sel_by_date_range (ipmi_monitoring_ctx_t c, + const char *hostname, + struct ipmi_monitoring_ipmi_config *config, + unsigned int sel_flags, + const char *date_begin, + const char *date_end, + Ipmi_Monitoring_Callback callback, + void *callback_data); + +/* + * ipmi_monitoring_sel_iterator_first + * + * Reset iterator to the first sel record + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_sel_iterator_first (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_iterator_next + * + * Advance iterator to the next sel record information + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_sel_iterator_next (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_iterator_destroy + * + * Destroy all internally stored sel records. + */ +void ipmi_monitoring_sel_iterator_destroy (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_record_id + * + * Returns the record id of the current sel record in a callback + * or the iterator, -1 on error. + */ +int ipmi_monitoring_sel_read_record_id (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_record_type + * + * Returns the sel record type of the current sel record in a + * callback or the iterator, -1 on error. + */ +int ipmi_monitoring_sel_read_record_type (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_record_type_class + * + * Returns the sel record type class of the current sel record in a + * callback or the iterator, -1 on error. See + * 'ipmi_monitoring_sel_record_type_class' for possible return values. + */ +int ipmi_monitoring_sel_read_record_type_class (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_sel_state + * + * Returns the sel state of the current sel record in a callback or + * the iterator, -1 on error. See 'ipmi_monitoring_state' for + * possible return values. + */ +int ipmi_monitoring_sel_read_sel_state (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_timestamp + * + * Returns 0 on success, -1 on error. Returns the sel record + * timestamp of the current sel record in 'timestamp'. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD or + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD class + * records. + */ +int ipmi_monitoring_sel_read_timestamp (ipmi_monitoring_ctx_t c, unsigned int *timestamp); + +/* + * ipmi_monitoring_sel_read_sensor_type + * + * Returns the sel record sensor type of the current sel record in a + * callback or the iterator, -1 on error. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD class + * records. See 'ipmi_monitoring_sensor_type' for possible return + * values. + */ +int ipmi_monitoring_sel_read_sensor_type (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_sensor_number + * + * Returns the sel record sensor number of the current sel record in a + * callback or the iterator, -1 on error. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD class + * records. + */ +int ipmi_monitoring_sel_read_sensor_number (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_sensor_name + * + * Returns the sel record sensor name of the current sel record in a + * callback or the iterator, NULL on error. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD class + * records. + */ +char *ipmi_monitoring_sel_read_sensor_name (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_event_direction + * + * Returns the sel record event direction of the current sel record in + * a callback or the iterator, -1 on error. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD class + * records. See 'ipmi_monitoring_sel_event_direction' for possible + * return values. + */ +int ipmi_monitoring_sel_read_event_direction (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_event_offset_type + * + * Returns the offset type of the current sel record in a + * callback or the iterator, -1 on error. See + * 'ipmi_monitoring_event_offset_type' and offsets in + * ipmi_monitoring_offsets.h to determine offset conditions for a + * given offset type. + */ +int ipmi_monitoring_sel_read_event_offset_type (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_event_offset + * + * Returns the offset of the current sel record in a callback or + * the iterator, -1 on error. See offsets in ipmi_monitoring_offsets.h to + * determine offset conditions for a given offset type. + */ +int ipmi_monitoring_sel_read_event_offset (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_event_offset_string + * + * Returns a string representing the event in the event offset, NULL + * on error. An empty string may be returned if no event offset + * string is available. + */ +char *ipmi_monitoring_sel_read_event_offset_string (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_event_type_code + * + * Returns the event type code of the current sel record in a callback + * or the iterator, -1 on error. The event type code is is piece of + * information is internal to the IPMI protocol. This may be useful + * for advanced users wanting to handle OEM sel records or sensors not + * covered by this library. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD class + * records. + */ +int ipmi_monitoring_sel_read_event_type_code (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_event_data + * + * Returns 0 on success, -1 on error. Returns event data of the + * current sel record in a callback or the iterator in 'event_data1', + * 'event_data2', and 'event_data3' respectively. The event data is + * is piece of information is internal to the IPMI protocol. This may + * be useful for advanced users wanting to handle OEM sel records not + * covered by this library. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD class + * records. + */ +int ipmi_monitoring_sel_read_event_data (ipmi_monitoring_ctx_t c, + unsigned int *event_data1, + unsigned int *event_data2, + unsigned int *event_data3); + +/* + * ipmi_monitoring_sel_read_manufacturer_id + * + * Returns the manufacturer ID of the current sel record in a callback + * or the iterator, -1 on error. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD class + * records. + */ +int ipmi_monitoring_sel_read_manufacturer_id (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sel_read_oem_data + * + * Returns the OEM record data length of the current sel record in a + * callback or the iterator, -1 on error. Returns OEM record data in + * 'oem_data'. Valid for + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD or + * IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_NON_TIMESTAMPED_OEM_RECORD + * class records. + */ +int ipmi_monitoring_sel_read_oem_data (ipmi_monitoring_ctx_t c, + void *oem_data, + unsigned int oem_data_len); + +/* + * ipmi_monitoring_sensor_readings_by_record_id + * + * Retrieve sensor readings by sensor numbers and store them in the monitoring context. + * + * If 'hostname' is NULL, sensors for the current node will be retrieved in-band. + * If 'record_ids' is NULL, all sensors will be retrieved + * If specified, callback function will be called after each sensor is read and parsed. + * + * Returns number of sensors values retrieved on success, -1 on error. + * Sensor iterators below may be used after calling this function to + * iterate through sensors. + */ +int ipmi_monitoring_sensor_readings_by_record_id (ipmi_monitoring_ctx_t c, + const char *hostname, + struct ipmi_monitoring_ipmi_config *config, + unsigned int sensor_reading_flags, + unsigned int *record_ids, + unsigned int record_ids_len, + Ipmi_Monitoring_Callback callback, + void *callback_data); + +/* + * ipmi_monitoring_sensor_readings_by_sensor_type + * + * Retrieve sensor readings by sensor type and store them in the + * monitoring context. See 'ipmi_monitoring_sensor_type' for possible + * sensor type values. + * + * If 'hostname' is NULL, sensors for the current node will be retrieved in-band. + * If 'sensor_types' is NULL, all sensors will be retrieved. + * If specified, callback function will be called after each sensor is read and parsed. + * + * Returns number of sensors values retrieved on success, -1 on error + * Sensor iterators below may be used after calling this function to + * iterate through sensors. + */ +int ipmi_monitoring_sensor_readings_by_sensor_type (ipmi_monitoring_ctx_t c, + const char *hostname, + struct ipmi_monitoring_ipmi_config *config, + unsigned int sensor_reading_flags, + unsigned int *sensor_types, + unsigned int sensor_types_len, + Ipmi_Monitoring_Callback callback, + void *callback_data); + +/* + * ipmi_monitoring_sensor_iterator_first + * + * Reset iterator to the first sensor reading + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_sensor_iterator_first (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_iterator_next + * + * Advance iterator to the next set of sensors information + * + * Returns 0 on success, -1 on error + */ +int ipmi_monitoring_sensor_iterator_next (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_iterator_destroy + * + * Destroy all internally stored sensors readings. + */ +void ipmi_monitoring_sensor_iterator_destroy (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_record_id + * + * Returns the record id of the current sensor reading in a callback + * or the iterator, -1 on error. + */ +int ipmi_monitoring_sensor_read_record_id (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_number + * + * Returns the sensor number of the current sensor reading in a + * callback or the iterator, -1 on error. May be useful if + * IPMI_MONITORING_SENSOR_READING_FLAGS_SHARED_SENSORS has been set. + */ +int ipmi_monitoring_sensor_read_sensor_number (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_type + * + * Returns the sensor type of the current sensor reading in a callback + * or the iterator, -1 on error. See 'ipmi_monitoring_sensor_type' for possible + * return values. + */ +int ipmi_monitoring_sensor_read_sensor_type (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_name + * + * Returns a pointer to the sensor name of the current sensor reading + * in a callback or the iterator, NULL on error. + */ +char *ipmi_monitoring_sensor_read_sensor_name (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_state + * + * Returns the current sensor state of the current sensor reading in a + * callback or the iterator, -1 on error. See 'ipmi_monitoring_state' + * for possible return values. + */ +int ipmi_monitoring_sensor_read_sensor_state (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_units + * + * Returns the sensor units type of the current sensor reading in a + * callback or the iterator, -1 on error. See + * 'ipmi_monitoring_sensor_units' for possible return values. + */ +int ipmi_monitoring_sensor_read_sensor_units (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_reading_type + * + * Returns the sensor reading type of the current sensor reading in a + * callback or the iterator, -1 on error. See + * 'ipmi_monitoring_sensor_reading_type' for possible return values. + */ +int ipmi_monitoring_sensor_read_sensor_reading_type (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_reading + * + * Returns a pointer to the sensor reading of the current sensor + * reading in a callback or the iterator, NULL on error. It is the responsibility of + * the user to cast it to the correct type based on the reading type. + * Returns NULL if no reading available. + */ +void *ipmi_monitoring_sensor_read_sensor_reading (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_bitmask_type + * + * Returns the bitmask type of the current sensor reading in a + * callback or the iterator, -1 on error. See + * 'ipmi_monitoring_sensor_bitmask_type' and bitmasks in + * ipmi_monitoring_bitmasks.h to determine bitmask conditions for a + * given bitmask type. + */ +int ipmi_monitoring_sensor_read_sensor_bitmask_type (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_bitmask + * + * Returns the bitmask of the current sensor reading in a callback or + * the iterator, -1 on error. See bitmasks in ipmi_monitoring_bitmasks.h to + * determine bitmask conditions for a given bitmask type. + */ +int ipmi_monitoring_sensor_read_sensor_bitmask (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_sensor_bitmask_strings + * + * Returns an array of strings representing the events in the bitmask, + * NULL on error. Array is NUL terminated. + */ +char **ipmi_monitoring_sensor_read_sensor_bitmask_strings (ipmi_monitoring_ctx_t c); + +/* + * ipmi_monitoring_sensor_read_event_reading_type_code + * + * Returns the event/reading type code of the current sensor reading + * in a callback or the iterator, -1 on error. The event/reading type + * code is is piece of information is internal to the IPMI protocol. + * This may be useful for advanced users wanting to handle OEM sensors + * not covered by this library. + */ +int ipmi_monitoring_sensor_read_event_reading_type_code (ipmi_monitoring_ctx_t c); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_MONITORING_H */ diff --git a/source/freeipmi/usr/include/ipmi_monitoring_bitmasks.h b/source/freeipmi/usr/include/ipmi_monitoring_bitmasks.h new file mode 100644 index 00000000..4e8c5371 --- /dev/null +++ b/source/freeipmi/usr/include/ipmi_monitoring_bitmasks.h @@ -0,0 +1,535 @@ +/*****************************************************************************\ + * $Id: ipmi_monitoring_bitmasks.h,v 1.3 2010-03-19 22:07:58 chu11 Exp $ + ***************************************************************************** + * 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_MONITORING_BITMASKS_H +#define IPMI_MONITORING_BITMASKS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * IPMI Monitoring Sensor Bitmask Type + * + * Possible sensor bitmask types that may be returned for a sensor. + */ +enum ipmi_monitoring_sensor_bitmask_type + { + IPMI_MONITORING_SENSOR_BITMASK_TYPE_THRESHOLD = 0x00, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_TRANSITION_STATE = 0x01, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_STATE = 0x02, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_PREDICTIVE_FAILURE = 0x03, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_LIMIT = 0x04, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_PERFORMANCE = 0x05, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_TRANSITION_SEVERITY = 0x06, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_DEVICE_PRESENT = 0x07, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_DEVICE_ENABLED = 0x08, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_TRANSITION_AVAILABILITY = 0x09, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_REDUNDANCY = 0x0A, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_ACPI_POWER_STATE = 0x0B, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_PHYSICAL_SECURITY = 0x0C, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT = 0x0D, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_PROCESSOR = 0x0E, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_POWER_SUPPLY = 0x0F, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_POWER_UNIT = 0x10, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_COOLING_DEVICE = 0x11, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_OTHER_UNITS_BASED_SENSOR = 0x12, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_MEMORY = 0x13, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_DRIVE_SLOT = 0x14, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_POST_MEMORY_RESIZE = 0x15, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_SYSTEM_FIRMWARE_PROGRESS = 0x16, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_EVENT_LOGGING_DISABLED = 0x17, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_WATCHDOG1 = 0x18, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_SYSTEM_EVENT = 0x19, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_CRITICAL_INTERRUPT = 0x1A, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_BUTTON_SWITCH = 0x1B, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_MODULE_BOARD = 0x1C, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_MICROCONTROLLER_COPROCESSOR = 0x1D, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_ADD_IN_CARD = 0x1E, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_CHASSIS = 0x1F, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_CHIP_SET = 0x20, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_OTHER_FRU = 0x21, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_CABLE_INTERCONNECT = 0x22, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_TERMINATOR = 0x23, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_SYSTEM_BOOT_INITIATED = 0x24, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_BOOT_ERROR = 0x25, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_OS_BOOT = 0x26, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_OS_CRITICAL_STOP = 0x27, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_SLOT_CONNECTOR = 0x28, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_SYSTEM_ACPI_POWER_STATE = 0x29, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_WATCHDOG2 = 0x2A, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_PLATFORM_ALERT = 0x2B, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_ENTITY_PRESENCE = 0x2C, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_MONITOR_ASIC_IC = 0x2D, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_LAN = 0x2E, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH = 0x2F, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_BATTERY = 0x30, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_SESSION_AUDIT = 0x31, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_VERSION_CHANGE = 0x32, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_FRU_STATE = 0x33, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_OEM = 0xFE, + IPMI_MONITORING_SENSOR_BITMASK_TYPE_UNKNOWN = 0xFF, + }; + +/* + * IPMI Bitmasks + * + * The following are the bitmask masks that can be returned. Use the + * returned bitmask type to determine which set of bitmasks to use. + */ +enum ipmi_monitoring_sensor_bitmask_threshold + { + IPMI_MONITORING_SENSOR_BITMASK_THRESHOLD_AT_OR_BELOW_LOWER_NON_CRITICAL_THRESHOLD = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_THRESHOLD_AT_OR_BELOW_LOWER_CRITICAL_THRESHOLD = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_THRESHOLD_AT_OR_BELOW_LOWER_NON_RECOVERABLE_THRESHOLD = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_THRESHOLD_AT_OR_BELOW_UPPER_NON_CRITICAL_THRESHOLD = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_THRESHOLD_AT_OR_BELOW_UPPER_CRITICAL_THRESHOLD = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_THRESHOLD_AT_OR_BELOW_UPPER_NON_RECOVERABLE_THRESHOLD = 0x0020, + }; + +enum ipmi_monitoring_sensor_bitmask_transition + { + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_IDLE = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_ACTIVE = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_BUSY = 0x0004, + }; + +enum ipmi_monitoring_sensor_bitmask_state + { + IPMI_MONITORING_SENSOR_BITMASK_STATE_DEASSERTED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_STATE_ASSERTED = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_predictive_failure + { + IPMI_MONITORING_SENSOR_BITMASK_PREDICTIVE_FAILURE_DEASSERTED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_PREDICTIVE_FAILURE_ASSERTED = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_limit + { + IPMI_MONITORING_SENSOR_BITMASK_LIMIT_NOT_EXCEEDED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_LIMIT_EXCEEDED = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_performance + { + IPMI_MONITORING_SENSOR_BITMASK_PERFORMANCE_MET = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_PERFORMANCE_LAGS = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_transition_severity + { + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_OK = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_NON_CRITICAL_FROM_OK = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_CRITICAL_FROM_LESS_SEVERE = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_NON_RECOVERABLE_FROM_LESS_SEVERE = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_NON_CRITICAL_FROM_MORE_SEVERE = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_CRITICAL_FROM_NON_RECOVERABLE = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_NON_RECOVERABLE = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_MONITOR = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_INFORMATIONAL = 0x0100, + }; + +enum ipmi_monitoring_sensor_bitmask_device_present + { + IPMI_MONITORING_SENSOR_BITMASK_DEVICE_REMOVED_DEVICE_ABSENT = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_DEVICE_INSERTED_DEVICE_PRESENT = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_device_enabled + { + IPMI_MONITORING_SENSOR_BITMASK_DEVICE_DISABLED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_DEVICE_ENABLED = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_transition_availability + { + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_RUNNING = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_IN_TEST = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_POWER_OFF = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_ON_LINE = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_OFF_LINE = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_OFF_DUTY = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_DEGRADED = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_TO_POWER_SAVE = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_TRANSITION_INSTALL_ERROR = 0x0100, + }; + +enum ipmi_monitoring_sensor_bitmask_redundancy + { + IPMI_MONITORING_SENSOR_BITMASK_FULLY_REDUNDANT = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_REDUNDANCY_LOST = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_REDUNDANCY_DEGRADED = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_NON_REDUNDANT_SUFFICIENT_RESOURCES_FROM_REDUNDANT = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_NON_REDUNDANT_SUFFICIENT_RESOURCES_FROM_INSUFFICIENT_RESOURCES = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_NON_REDUNDANT_INSUFFICIENT_RESOURCES = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_REDUNDANCY_DEGRADED_FROM_FULLY_REDUNDANT = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_REDUNDANCY_DEGRADED_FROM_NON_REDUNDANT = 0x0080, + }; + +enum ipmi_monitoring_sensor_bitmask_acpi_power_state + { + IPMI_MONITORING_SENSOR_BITMASK_D0_POWER_STATE = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_D1_POWER_STATE = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_D2_POWER_STATE = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_D3_POWER_STATE = 0x0008, + }; + +enum ipmi_monitoring_sensor_bitmask_physical_security + { + IPMI_MONITORING_SENSOR_BITMASK_PHYSICAL_SECURITY_GENERAL_CHASSIS_INTRUSION = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_PHYSICAL_SECURITY_DRIVE_BAY_INTRUSION = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_PHYSICAL_SECURITY_IO_CARD_INTRUSION = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_PHYSICAL_SECURITY_PROCESSOR_AREA_INTRUSION = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_PHYSICAL_SECURITY_LAN_LEASH_LOST = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_PHYSICAL_SECURITY_UNAUTHORIZED_DOCK_UNDOCK = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_PHYSICAL_SECURITY_FAN_AREA_INTRUSION = 0x0040, + }; + +enum ipmi_monitoring_sensor_bitmask_platform_security_violation_attempt + { + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_SECURITY_VIOLATION_ATTEMPT_SECURE_MODE_VIOLATION_ATTEMPT = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_USER_PASSWORD = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_ATTEMPT_SETUP_PASSWORD = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_NETWORK_BOOT_PASSWORD = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_SECURITY_VIOLATION_ATTEMPT_OTHER_PRE_BOOT_PASSWORD_VIOLATION = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_SECURITY_VIOLATION_ATTEMPT_OUT_OF_BAND_ACCESS_PASSWORD_VIOLATION = 0x0020, + }; + +enum ipmi_monitoring_sensor_bitmask_processor + { + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_IERR = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_THERMAL_TRIP = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_FRB1_BIST_FAILURE = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_FRB2_HANG_IN_POST_FAILURE = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_FRB3_PROCESSOR_STARTUP_INITIALIZATION_FAILURE = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_CONFIGURATION_ERROR = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_SMBIOS_UNCORRECTABLE_CPU_COMPLEX_ERROR = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_PROCESSOR_PRESENCE_DETECTED = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_PROCESSOR_DISABLED = 0x0100, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_TERMINATOR_PRESENCE_DETECTED = 0x0200, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_PROCESSOR_AUTOMATICALLY_THROTTLED = 0x0400, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_MACHINE_CHECK_EXCEPTION = 0x0800, + IPMI_MONITORING_SENSOR_BITMASK_PROCESSOR_CORRECTABLE_MACHINE_CHECK_ERROR = 0x1000, + }; + +enum ipmi_monitoring_sensor_bitmask_power_supply + { + IPMI_MONITORING_SENSOR_BITMASK_POWER_SUPPLY_PRESENCE_DETECTED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_POWER_SUPPLY_POWER_SUPPLY_FAILURE_DETECTED = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_POWER_SUPPLY_PREDICTIVE_FAILURE = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_POWER_SUPPLY_POWER_SUPPLY_INPUT_LOST_AC_DC = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_POWER_SUPPLY_POWER_SUPPLY_INPUT_LOST_OR_OUT_OF_RANGE = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_POWER_SUPPLY_POWER_SUPPLY_INPUT_OUT_OF_RANGE_BUT_PRESENT = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_POWER_SUPPLY_CONFIGURATION_ERROR = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_POWER_SUPPLY_POWER_SUPPLY_INACTIVE = 0x0080, + }; + +enum ipmi_monitoring_sensor_bitmask_power_unit + { + IPMI_MONITORING_SENSOR_BITMASK_POWER_UNIT_POWER_OFF_POWER_DOWN = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_POWER_UNIT_POWER_CYCLE = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_POWER_UNIT_240VA_POWER_DOWN = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_POWER_UNIT_INTERLOCK_POWER_DOWN = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_POWER_UNIT_AC_LOST = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_POWER_UNIT_SOFT_POWER_CONTROL_FAILURE = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_POWER_UNIT_POWER_UNIT_FAILURE_DETECTED = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_POWER_UNIT_PREDICTIVE_FAILURE = 0x0080, + }; + +enum ipmi_monitoring_sensor_bitmask_memory + { + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_CORRECTABLE_MEMORY_ERROR = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_UNCORRECTABLE_MEMORY_ERROR = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_PARITY = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_MEMORY_SCRUB_FAILED = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_MEMORY_DEVICE_DISABLED = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_CORRECTABLE_MEMORY_ERROR_LOGGING_LIMIT_REACHED = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_PRESENCE_DETECTED = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_CONFIGURATION_ERROR = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_SPARE = 0x0100, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_MEMORY_AUTOMATICALLY_THROTTLED = 0x0200, + IPMI_MONITORING_SENSOR_BITMASK_MEMORY_CRITICAL_OVERTEMPERATURE = 0x0400, + }; + +enum ipmi_monitoring_sensor_bitmask_drive_slot + { + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_DRIVE_PRESENCE = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_DRIVE_FAULT = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_PREDICTIVE_FAILURE = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_HOT_SPARE = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_CONSISTENCY_CHECK_PARITY_CHECK_IN_PROGRESS = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_IN_CRITICAL_ARRAY = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_IN_FAILED_ARRAY = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_REBUILD_REMAP_IN_PROGRESS = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_DRIVE_SLOT_REBUILD_REMAP_ABORTED = 0x0100, + }; + +enum ipmi_monitoring_sensor_bitmask_system_firmware_progress + { + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_ERROR = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_HANG = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_PROGRESS = 0x0004, + }; + +enum ipmi_monitoring_sensor_bitmask_event_logging_disabled + { + IPMI_MONITORING_SENSOR_BITMASK_EVENT_LOGGING_DISABLED_CORRECTABLE_MEMORY_ERROR_LOGGING_DISABLED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_EVENT_LOGGING_DISABLED_EVENT_TYPE_LOGGING_DISABLED = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_EVENT_LOGGING_DISABLED_LOG_AREA_RESET_CLEARED = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_EVENT_LOGGING_DISABLED_ALL_EVENT_LOGGING_DISABLED = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_EVENT_LOGGING_DISABLED_SEL_FULL = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_EVENT_LOGGING_DISABLED_SEL_ALMOST_FULL = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_EVENT_LOGGING_DISABLED_CORRECTABLE_MACHINE_CHECK_ERROR_LOGGING_DISABLED = 0x0040, + }; + +enum ipmi_monitoring_sensor_bitmask_watchdog1 + { + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG1_BIOS_WATCHDOG_RESET = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG1_OS_WATCHDOG_RESET = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG1_OS_WATCHDOG_SHUT_DOWN = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG1_OS_WATCHDOG_POWER_DOWN = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG1_OS_WATCHDOG_POWER_CYCLE = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG1_OS_WATCHDOG_NMI_DIAGNOSTIC_INTERRUPT = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG1_OS_WATCHDOG_EXPIRED_STATUS_ONLY = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG1_OS_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NON_NMI = 0x0080, + }; + +enum ipmi_monitoring_sensor_bitmask_system_event + { + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_EVENT_SYSTEM_RECONFIGURED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_EVENT_OEM_SYSTEM_BOOT_EVENT = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_EVENT_UNDETERMINED_SYSTEM_HARDWARE_FAILURE = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_EVENT_ENTRY_ADDED_TO_AUXILIARY_LOG = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_EVENT_PEF_ACTION = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_EVENT_TIMESTAMP_CLOCK_SYNC = 0x0020, + }; + +enum ipmi_monitoring_sensor_bitmask_critical_interrupt + { + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_FRONT_PANEL_NMI_DIAGNOSTIC_INTERRUPT = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_BUS_TIMEOUT = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_IO_CHANNEL_CHECK_NMI = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_SOFTWARE_NMI = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_PCI_PERR = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_PCI_SERR = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_EISA_FAIL_SAFE_TIMEOUT = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_BUS_CORRECTABLE_ERROR = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_BUS_UNCORRECTABLE_ERROR = 0x0100, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_FATAL_NMI = 0x0200, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_BUS_FATAL_ERROR = 0x0400, + IPMI_MONITORING_SENSOR_BITMASK_CRITICAL_INTERRUPT_BUS_DEGRADED = 0x0800, + }; + +enum ipmi_monitoring_sensor_bitmask_button_switch + { + IPMI_MONITORING_SENSOR_BITMASK_BUTTON_SWITCH_POWER_BUTTON_PRESSED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_BUTTON_SWITCH_SLEEP_BUTTON_PRESSED = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_BUTTON_SWITCH_RESET_BUTTON_PRESSED = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_BUTTON_SWITCH_FRU_LATCH_OPEN = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_BUTTON_SWITCH_FRU_SERVICE_REQUEST_BUTTON = 0x0010, + }; + +enum ipmi_monitoring_sensor_bitmask_chip_set + { + IPMI_MONITORING_SENSOR_BITMASK_CHIP_SET_SOFT_POWER_CONTROL_FAILURE = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_CHIP_SET_THERMAL_TRIP = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_cable_interconnect + { + IPMI_MONITORING_SENSOR_BITMASK_CABLE_INTERCONNECT_IS_CONNECTED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_CABLE_INTERCONNECT_CONFIGURATION_ERROR = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_system_boot_initiated + { + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_BOOT_INITIATED_INITIATED_BY_POWER_UP = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_BOOT_INITIATED_INITIATED_BY_HARD_RESET = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_BOOT_INITIATED_INITIATED_BY_WARM_RESET = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_BOOT_INITIATED_USER_REQUESTED_PXE_BOOT = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_BOOT_INITIATED_AUTOMATIC_BOOT_TO_DIAGNOSTIC = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_BOOT_INITIATED_OS_RUN_TIME_SOFTWARE_INITIATED_HARD_RESET = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_BOOT_INITIATED_OS_RUN_TIME_SOFTWARE_INITIATED_WARM_RESET = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_BOOT_INITIATED_SYSTEM_RESTART = 0x0080, + }; + +enum ipmi_monitoring_sensor_bitmask_boot_error + { + IPMI_MONITORING_SENSOR_BITMASK_BOOT_ERROR_NO_BOOTABLE_MEDIA = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_BOOT_ERROR_NON_BOOTABLE_DISKETTE_LEFT_IN_DRIVE = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_BOOT_ERROR_PXE_SERVER_NOT_FOUND = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_BOOT_ERROR_INVALID_BOOT_SECTOR = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_BOOT_ERROR_TIMEOUT_WAITING_FOR_USER_SELECTION_OF_BOOT_SOURCE = 0x0010, + }; + +enum ipmi_monitoring_sensor_bitmask_os_boot + { + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_A_BOOT_COMPLETED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_C_BOOT_COMPLETED = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_PXE_BOOT_COMPLETED = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_DIAGNOSTIC_BOOT_COMPLETED = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_CD_ROM_BOOT_COMPLETED = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_ROM_BOOT_COMPLETED = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_BOOT_COMPLETED_BOOT_DEVICE_NOT_SPECIFIED = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_STARTED = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_COMPLETED = 0x0100, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_ABORTED = 0x0200, + IPMI_MONITORING_SENSOR_BITMASK_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_FAILED = 0x0400, + }; + +enum ipmi_monitoring_sensor_bitmask_os_critical_stop + { + IPMI_MONITORING_SENSOR_BITMASK_OS_CRITICAL_STOP_CRITICAL_STOP_DURING_OS_LOAD = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_OS_CRITICAL_STOP_RUN_TIME_CRITICAL_STOP = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_OS_CRITICAL_STOP_OS_GRACEFUL_STOP = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_OS_CRITICAL_STOP_OS_GRACEFUL_SHUTDOWN = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_OS_CRITICAL_STOP_SOFT_SHUTDOWN_INITIATED_BY_PEF = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_OS_CRITICAL_STOP_AGENT_NOT_RESPONDING = 0x0020, + }; + +enum ipmi_monitoring_sensor_bitmask_slot_connector + { + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_FAULT_STATUS_ASSERTED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_IDENTIFY_STATUS_ASSERTED = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_SLOT_CONNECTOR_DEVICE_INSTALLED_ATTACHED = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_SLOT_CONNECTOR_READY_FOR_DEVICE_INSTALLATION = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_SLOT_CONNECTOR_READY_FOR_DEVICE_REMOVAL = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_SLOT_POWER_IS_OFF = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_SLOT_CONNECTOR_DEVICE_REMOVAL_REQUEST = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_INTERLOCK_ASSERTED = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_SLOT_IS_DISABLED = 0x0100, + IPMI_MONITORING_SENSOR_BITMASK_SLOT_CONNECTOR_SLOT_HOLDS_SPARE_DEVICE = 0x0200, + }; + +enum ipmi_monitoring_sensor_bitmask_system_acpi_power_state + { + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_S0_G0 = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_S1 = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_S2 = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_S3 = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_S4 = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_S5_G2 = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_S4_S5_SOFT_OFF = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_G3_MECHANICAL_OFF = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_SLEEPING_IN_AN_S1_S2_OR_S3_STATES = 0x0100, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_G1_SLEEPING = 0x0200, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_S5_ENTERED_BY_OVERRIDE = 0x0400, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_LEGACY_ON_STATE = 0x0800, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_LEGACY_OFF_STATE = 0x1000, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_UNSPECIFIED = 0x2000, + IPMI_MONITORING_SENSOR_BITMASK_SYSTEM_ACPI_POWER_STATE_UNKNOWN = 0x4000, + }; + +enum ipmi_monitoring_sensor_bitmask_watchdog2 + { + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_TIMER_EXPIRED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_HARD_RESET = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_POWER_DOWN = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_POWER_CYCLE = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_RESERVED1 = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_RESERVED2 = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_RESERVED3 = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_RESERVED4 = 0x0080, + IPMI_MONITORING_SENSOR_BITMASK_WATCHDOG2_TIMER_INTERRUPT = 0x0100, + }; + +enum ipmi_monitoring_sensor_bitmask_platform_alert + { + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_ALERT_PLATFORM_GENERATED_PAGE = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_ALERT_PLATFORM_GENERATED_LAN_ALERT = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_ALERT_PLATFORM_EVENT_TRAP_GENERATED = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_PLATFORM_ALERT_PLATFORM_GENERATED_SNMP_TRAP = 0x0008, + }; + +enum ipmi_monitoring_sensor_bitmask_entity_presence + { + IPMI_MONITORING_SENSOR_BITMASK_ENTITY_PRESENCE_ENTITY_PRESENT = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_ENTITY_PRESENCE_ENTITY_ABSENT = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_ENTITY_PRESENCE_ENTITY_DISABLED = 0x0004, + }; + +enum ipmi_monitoring_sensor_bitmask_lan + { + IPMI_MONITORING_SENSOR_BITMASK_LAN_HEARTBEAT_LOST = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_LAN_HEARTBEAT = 0x0002, + }; + +enum ipmi_monitoring_sensor_bitmask_management_subsystem_health + { + IPMI_MONITORING_SENSOR_BITMASK_MANAGEMENT_SUBSYSTEM_HEALTH_SENSOR_ACCESS_DEGRADED_OR_UNAVAILABLE = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_MANAGEMENT_SUBSYSTEM_HEALTH_CONTROLLER_ACCESS_DEGRADED_OR_UNAVAILABLE = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_MANAGEMENT_SUBSYSTEM_HEALTH_MANAGEMENT_CONTROLLER_OFF_LINE = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_MANAGEMENT_SUBSYSTEM_HEALTH_MANAGEMENT_CONTROLLER_UNAVAILABLE = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_MANAGEMENT_SUBSYSTEM_HEALTH_SENSOR_FAILURE = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_MANAGEMENT_SUBSYSTEM_HEALTH_FRU_FAILURE = 0x0020, + }; + +enum ipmi_monitoring_sensor_bitmask_battery + { + IPMI_MONITORING_SENSOR_BITMASK_BATTERY_BATTERY_LOW = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_BATTERY_BATTERY_FAILED = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_BATTERY_BATTERY_PRESENCE_DETECTED = 0x0004, + }; + +enum ipmi_monitoring_sensor_bitmask_session_audit + { + IPMI_MONITORING_SENSOR_BITMASK_SESSION_AUDIT_SESSION_ACTIVATED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_SESSION_AUDIT_SESSION_DEACTIVATED = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_SESSION_AUDIT_INVALID_USERNAME_OR_PASSWORD = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_SESSION_AUDIT_INVALID_PASSWORD_DISABLE = 0x0008, + }; + +enum ipmi_monitoring_sensor_bitmask_version_change + { + IPMI_MONITORING_SENSOR_BITMASK_VERSION_CHANGE_HARDWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_VERSION_CHANGE_FIRMWARE_OR_SOFTWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_VERSION_CHANGE_HARDWARE_INCOMPATABILITY_DETECTED_WITH_ASSOCIATED_ENTITY = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_VERSION_CHANGE_FIRMWARE_OR_SOFTWARE_INCOMPATABILITY_DETECTED_WITH_ASSOCIATED_ENTITY = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_VERSION_CHANGE_ENTITY_IS_OF_AN_INVALID_OR_UNSUPPORTED_HARDWARE_VERSION = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_VERSION_CHANGE_ENTITY_CONTAINS_AN_INVALID_OR_UNSUPPORTED_FIRMWARE_OR_SOFTWARE_VERSION = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_VERSION_CHANGE_HARDWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_VERSION_CHANGE_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL = 0x0080, + }; + +enum ipmi_monitoring_sensor_bitmask_fru_state + { + IPMI_MONITORING_SENSOR_BITMASK_FRU_STATE_FRU_NOT_INSTALLED = 0x0001, + IPMI_MONITORING_SENSOR_BITMASK_FRU_STATE_FRU_INACTIVE = 0x0002, + IPMI_MONITORING_SENSOR_BITMASK_FRU_STATE_FRU_ACTIVATION_REQUESTED = 0x0004, + IPMI_MONITORING_SENSOR_BITMASK_FRU_STATE_FRU_ACTIVATION_IN_PROGRESS = 0x0008, + IPMI_MONITORING_SENSOR_BITMASK_FRU_STATE_FRU_ACTIVE = 0x0010, + IPMI_MONITORING_SENSOR_BITMASK_FRU_STATE_FRU_DEACTIVATION_REQUESTED = 0x0020, + IPMI_MONITORING_SENSOR_BITMASK_FRU_STATE_FRU_DEACTIVATION_IN_PROGRESS = 0x0040, + IPMI_MONITORING_SENSOR_BITMASK_FRU_STATE_FRU_COMMUNICATION_LOST = 0x0080, + }; + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_MONITORING_BITMASKS_H */ diff --git a/source/freeipmi/usr/include/ipmi_monitoring_offsets.h b/source/freeipmi/usr/include/ipmi_monitoring_offsets.h new file mode 100644 index 00000000..ca6c72e8 --- /dev/null +++ b/source/freeipmi/usr/include/ipmi_monitoring_offsets.h @@ -0,0 +1,543 @@ +/*****************************************************************************\ + * $Id: ipmi_monitoring_offsets.h,v 1.1 2010-03-19 22:07:58 chu11 Exp $ + ***************************************************************************** + * 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 + * 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 . +\*****************************************************************************/ + +#ifndef IPMI_MONITORING_OFFSETS_H +#define IPMI_MONITORING_OFFSETS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * IPMI Monitoring Event Offset Type + * + * Possible Event Offset types that may be returned for a + * system event log entry. + */ +enum ipmi_monitoring_event_offset_type + { + IPMI_MONITORING_EVENT_OFFSET_TYPE_THRESHOLD = 0x00, + IPMI_MONITORING_EVENT_OFFSET_TYPE_TRANSITION_STATE = 0x01, + IPMI_MONITORING_EVENT_OFFSET_TYPE_STATE = 0x02, + IPMI_MONITORING_EVENT_OFFSET_TYPE_PREDICTIVE_FAILURE = 0x03, + IPMI_MONITORING_EVENT_OFFSET_TYPE_LIMIT = 0x04, + IPMI_MONITORING_EVENT_OFFSET_TYPE_PERFORMANCE = 0x05, + IPMI_MONITORING_EVENT_OFFSET_TYPE_TRANSITION_SEVERITY = 0x06, + IPMI_MONITORING_EVENT_OFFSET_TYPE_DEVICE_PRESENT = 0x07, + IPMI_MONITORING_EVENT_OFFSET_TYPE_DEVICE_ENABLED = 0x08, + IPMI_MONITORING_EVENT_OFFSET_TYPE_TRANSITION_AVAILABILITY = 0x09, + IPMI_MONITORING_EVENT_OFFSET_TYPE_REDUNDANCY = 0x0A, + IPMI_MONITORING_EVENT_OFFSET_TYPE_ACPI_POWER_STATE = 0x0B, + IPMI_MONITORING_EVENT_OFFSET_TYPE_PHYSICAL_SECURITY = 0x0C, + IPMI_MONITORING_EVENT_OFFSET_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT = 0x0D, + IPMI_MONITORING_EVENT_OFFSET_TYPE_PROCESSOR = 0x0E, + IPMI_MONITORING_EVENT_OFFSET_TYPE_POWER_SUPPLY = 0x0F, + IPMI_MONITORING_EVENT_OFFSET_TYPE_POWER_UNIT = 0x10, + IPMI_MONITORING_EVENT_OFFSET_TYPE_COOLING_DEVICE = 0x11, + IPMI_MONITORING_EVENT_OFFSET_TYPE_OTHER_UNITS_BASED_SENSOR = 0x12, + IPMI_MONITORING_EVENT_OFFSET_TYPE_MEMORY = 0x13, + IPMI_MONITORING_EVENT_OFFSET_TYPE_DRIVE_SLOT = 0x14, + IPMI_MONITORING_EVENT_OFFSET_TYPE_POST_MEMORY_RESIZE = 0x15, + IPMI_MONITORING_EVENT_OFFSET_TYPE_SYSTEM_FIRMWARE_PROGRESS = 0x16, + IPMI_MONITORING_EVENT_OFFSET_TYPE_EVENT_LOGGING_DISABLED = 0x17, + IPMI_MONITORING_EVENT_OFFSET_TYPE_WATCHDOG1 = 0x18, + IPMI_MONITORING_EVENT_OFFSET_TYPE_SYSTEM_EVENT = 0x19, + IPMI_MONITORING_EVENT_OFFSET_TYPE_CRITICAL_INTERRUPT = 0x1A, + IPMI_MONITORING_EVENT_OFFSET_TYPE_BUTTON_SWITCH = 0x1B, + IPMI_MONITORING_EVENT_OFFSET_TYPE_MODULE_BOARD = 0x1C, + IPMI_MONITORING_EVENT_OFFSET_TYPE_MICROCONTROLLER_COPROCESSOR = 0x1D, + IPMI_MONITORING_EVENT_OFFSET_TYPE_ADD_IN_CARD = 0x1E, + IPMI_MONITORING_EVENT_OFFSET_TYPE_CHASSIS = 0x1F, + IPMI_MONITORING_EVENT_OFFSET_TYPE_CHIP_SET = 0x20, + IPMI_MONITORING_EVENT_OFFSET_TYPE_OTHER_FRU = 0x21, + IPMI_MONITORING_EVENT_OFFSET_TYPE_CABLE_INTERCONNECT = 0x22, + IPMI_MONITORING_EVENT_OFFSET_TYPE_TERMINATOR = 0x23, + IPMI_MONITORING_EVENT_OFFSET_TYPE_SYSTEM_BOOT_INITIATED = 0x24, + IPMI_MONITORING_EVENT_OFFSET_TYPE_BOOT_ERROR = 0x25, + IPMI_MONITORING_EVENT_OFFSET_TYPE_OS_BOOT = 0x26, + IPMI_MONITORING_EVENT_OFFSET_TYPE_OS_CRITICAL_STOP = 0x27, + IPMI_MONITORING_EVENT_OFFSET_TYPE_SLOT_CONNECTOR = 0x28, + IPMI_MONITORING_EVENT_OFFSET_TYPE_SYSTEM_ACPI_POWER_STATE = 0x29, + IPMI_MONITORING_EVENT_OFFSET_TYPE_WATCHDOG2 = 0x2A, + IPMI_MONITORING_EVENT_OFFSET_TYPE_PLATFORM_ALERT = 0x2B, + IPMI_MONITORING_EVENT_OFFSET_TYPE_ENTITY_PRESENCE = 0x2C, + IPMI_MONITORING_EVENT_OFFSET_TYPE_MONITOR_ASIC_IC = 0x2D, + IPMI_MONITORING_EVENT_OFFSET_TYPE_LAN = 0x2E, + IPMI_MONITORING_EVENT_OFFSET_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH = 0x2F, + IPMI_MONITORING_EVENT_OFFSET_TYPE_BATTERY = 0x30, + IPMI_MONITORING_EVENT_OFFSET_TYPE_SESSION_AUDIT = 0x31, + IPMI_MONITORING_EVENT_OFFSET_TYPE_VERSION_CHANGE = 0x32, + IPMI_MONITORING_EVENT_OFFSET_TYPE_FRU_STATE = 0x33, + IPMI_MONITORING_EVENT_OFFSET_TYPE_OEM = 0xFE, + IPMI_MONITORING_EVENT_OFFSET_TYPE_UNKNOWN = 0xFF, + }; + +/* + * IPMI OFFSETS + * + * The following are the offsets that can be returned. Use the + * returned offset type to determine which set of offsets to use. + */ + +enum ipmi_monitoring_event_offset_threshold + { + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_LOWER_NON_CRITICAL_GOING_LOW = 0x00, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_LOWER_NON_CRITICAL_GOING_HIGH = 0x01, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_LOWER_CRITICAL_GOING_LOW = 0x02, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_LOWER_CRITICAL_GOING_HIGH = 0x03, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_LOWER_NON_RECOVERABLE_GOING_LOW = 0x04, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_LOWER_NON_RECOVERABLE_GOING_HIGH = 0x05, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_UPPER_NON_CRITICAL_GOING_LOW = 0x06, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_UPPER_NON_CRITICAL_GOING_HIGH = 0x07, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_UPPER_CRITICAL_GOING_LOW = 0x08, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_UPPER_CRITICAL_GOING_HIGH = 0x09, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_UPPER_NON_RECOVERABLE_GOING_LOW = 0x0A, + IPMI_MONITORING_EVENT_OFFSET_THRESHOLD_UPPER_NON_RECOVERABLE_GOING_HIGH = 0x0B, + }; + +enum ipmi_monitoring_event_offset_transition + { + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_IDLE = 0x00, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_ACTIVE = 0x01, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_BUSY = 0x02, + }; + +enum ipmi_monitoring_event_offset_state + { + IPMI_MONITORING_EVENT_OFFSET_STATE_DEASSERTED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_STATE_ASSERTED = 0x01, + }; + +enum ipmi_monitoring_event_offset_predictive_failure + { + IPMI_MONITORING_EVENT_OFFSET_PREDICTIVE_FAILURE_DEASSERTED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_PREDICTIVE_FAILURE_ASSERTED = 0x01, + }; + +enum ipmi_monitoring_event_offset_limit + { + IPMI_MONITORING_EVENT_OFFSET_LIMIT_NOT_EXCEEDED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_LIMIT_EXCEEDED = 0x01, + }; + +enum ipmi_monitoring_event_offset_performance + { + IPMI_MONITORING_EVENT_OFFSET_PERFORMANCE_MET = 0x00, + IPMI_MONITORING_EVENT_OFFSET_PERFORMANCE_LAGS = 0x01, + }; + +enum ipmi_monitoring_event_offset_transition_severity + { + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_OK = 0x00, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_NON_CRITICAL_FROM_OK = 0x01, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_CRITICAL_FROM_LESS_SEVERE = 0x02, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_NON_RECOVERABLE_FROM_LESS_SEVERE = 0x03, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_NON_CRITICAL_FROM_MORE_SEVERE = 0x04, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_CRITICAL_FROM_NON_RECOVERABLE = 0x05, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_NON_RECOVERABLE = 0x06, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_MONITOR = 0x07, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_INFORMATIONAL = 0x08, + }; + +enum ipmi_monitoring_event_offset_device_present + { + IPMI_MONITORING_EVENT_OFFSET_DEVICE_REMOVED_DEVICE_ABSENT = 0x00, + IPMI_MONITORING_EVENT_OFFSET_DEVICE_INSERTED_DEVICE_PRESENT = 0x01, + }; + +enum ipmi_monitoring_event_offset_device_enabled + { + IPMI_MONITORING_EVENT_OFFSET_DEVICE_DISABLED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_DEVICE_ENABLED = 0x01, + }; + +enum ipmi_monitoring_event_offset_transition_availability + { + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_RUNNING = 0x00, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_IN_TEST = 0x01, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_POWER_OFF = 0x02, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_ON_LINE = 0x03, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_OFF_LINE = 0x04, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_OFF_DUTY = 0x05, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_DEGRADED = 0x06, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_TO_POWER_SAVE = 0x07, + IPMI_MONITORING_EVENT_OFFSET_TRANSITION_INSTALL_ERROR = 0x08, + }; + +enum ipmi_monitoring_event_offset_redundancy + { + IPMI_MONITORING_EVENT_OFFSET_FULLY_REDUNDANT = 0x00, + IPMI_MONITORING_EVENT_OFFSET_REDUNDANCY_LOST = 0x01, + IPMI_MONITORING_EVENT_OFFSET_REDUNDANCY_DEGRADED = 0x02, + IPMI_MONITORING_EVENT_OFFSET_NON_REDUNDANT_SUFFICIENT_RESOURCES_FROM_REDUNDANT = 0x03, + IPMI_MONITORING_EVENT_OFFSET_NON_REDUNDANT_SUFFICIENT_RESOURCES_FROM_INSUFFICIENT_RESOURCES = 0x04, + IPMI_MONITORING_EVENT_OFFSET_NON_REDUNDANT_INSUFFICIENT_RESOURCES = 0x05, + IPMI_MONITORING_EVENT_OFFSET_REDUNDANCY_DEGRADED_FROM_FULLY_REDUNDANT = 0x06, + IPMI_MONITORING_EVENT_OFFSET_REDUNDANCY_DEGRADED_FROM_NON_REDUNDANT = 0x07, + }; + +enum ipmi_monitoring_event_offset_acpi_power_state + { + IPMI_MONITORING_EVENT_OFFSET_D0_POWER_STATE = 0x00, + IPMI_MONITORING_EVENT_OFFSET_D1_POWER_STATE = 0x01, + IPMI_MONITORING_EVENT_OFFSET_D2_POWER_STATE = 0x02, + IPMI_MONITORING_EVENT_OFFSET_D3_POWER_STATE = 0x03, + }; + +enum ipmi_monitoring_event_offset_physical_security + { + IPMI_MONITORING_EVENT_OFFSET_PHYSICAL_SECURITY_GENERAL_CHASSIS_INTRUSION = 0x00, + IPMI_MONITORING_EVENT_OFFSET_PHYSICAL_SECURITY_DRIVE_BAY_INTRUSION = 0x01, + IPMI_MONITORING_EVENT_OFFSET_PHYSICAL_SECURITY_IO_CARD_INTRUSION = 0x02, + IPMI_MONITORING_EVENT_OFFSET_PHYSICAL_SECURITY_PROCESSOR_AREA_INTRUSION = 0x03, + IPMI_MONITORING_EVENT_OFFSET_PHYSICAL_SECURITY_LAN_LEASH_LOST = 0x04, + IPMI_MONITORING_EVENT_OFFSET_PHYSICAL_SECURITY_UNAUTHORIZED_DOCK_UNDOCK = 0x05, + IPMI_MONITORING_EVENT_OFFSET_PHYSICAL_SECURITY_FAN_AREA_INTRUSION = 0x06, + }; + +enum ipmi_monitoring_event_offset_platform_security_violation_attempt + { + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_SECURITY_VIOLATION_ATTEMPT_SECURE_MODE_VIOLATION_ATTEMPT = 0x00, + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_USER_PASSWORD = 0x01, + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_ATTEMPT_SETUP_PASSWORD = 0x02, + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_SECURITY_VIOLATION_ATTEMPT_PRE_BOOT_PASSWORD_VIOLATION_NETWORK_BOOT_PASSWORD = 0x03, + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_SECURITY_VIOLATION_ATTEMPT_OTHER_PRE_BOOT_PASSWORD_VIOLATION = 0x04, + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_SECURITY_VIOLATION_ATTEMPT_OUT_OF_BAND_ACCESS_PASSWORD_VIOLATION = 0x05, + }; + +enum ipmi_monitoring_event_offset_processor + { + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_IERR = 0x00, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_THERMAL_TRIP = 0x01, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_FRB1_BIST_FAILURE = 0x02, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_FRB2_HANG_IN_POST_FAILURE = 0x03, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_FRB3_PROCESSOR_STARTUP_INITIALIZATION_FAILURE = 0x04, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_CONFIGURATION_ERROR = 0x05, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_SMBIOS_UNCORRECTABLE_CPU_COMPLEX_ERROR = 0x06, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_PROCESSOR_PRESENCE_DETECTED = 0x07, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_PROCESSOR_DISABLED = 0x08, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_TERMINATOR_PRESENCE_DETECTED = 0x09, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_PROCESSOR_AUTOMATICALLY_THROTTLED = 0x0A, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_MACHINE_CHECK_EXCEPTION = 0x0B, + IPMI_MONITORING_EVENT_OFFSET_PROCESSOR_CORRECTABLE_MACHINE_CHECK_ERROR = 0x0C, + }; + +enum ipmi_monitoring_event_offset_power_supply + { + IPMI_MONITORING_EVENT_OFFSET_POWER_SUPPLY_PRESENCE_DETECTED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_POWER_SUPPLY_POWER_SUPPLY_FAILURE_DETECTED = 0x01, + IPMI_MONITORING_EVENT_OFFSET_POWER_SUPPLY_PREDICTIVE_FAILURE = 0x02, + IPMI_MONITORING_EVENT_OFFSET_POWER_SUPPLY_POWER_SUPPLY_INPUT_LOST_AC_DC = 0x03, + IPMI_MONITORING_EVENT_OFFSET_POWER_SUPPLY_POWER_SUPPLY_INPUT_LOST_OR_OUT_OF_RANGE = 0x04, + IPMI_MONITORING_EVENT_OFFSET_POWER_SUPPLY_POWER_SUPPLY_INPUT_OUT_OF_RANGE_BUT_PRESENT = 0x05, + IPMI_MONITORING_EVENT_OFFSET_POWER_SUPPLY_CONFIGURATION_ERROR = 0x06, + IPMI_MONITORING_EVENT_OFFSET_POWER_SUPPLY_POWER_SUPPLY_INACTIVE = 0x07, + }; + +enum ipmi_monitoring_event_offset_power_unit + { + IPMI_MONITORING_EVENT_OFFSET_POWER_UNIT_POWER_OFF_POWER_DOWN = 0x00, + IPMI_MONITORING_EVENT_OFFSET_POWER_UNIT_POWER_CYCLE = 0x01, + IPMI_MONITORING_EVENT_OFFSET_POWER_UNIT_240VA_POWER_DOWN = 0x02, + IPMI_MONITORING_EVENT_OFFSET_POWER_UNIT_INTERLOCK_POWER_DOWN = 0x03, + IPMI_MONITORING_EVENT_OFFSET_POWER_UNIT_AC_LOST = 0x04, + IPMI_MONITORING_EVENT_OFFSET_POWER_UNIT_SOFT_POWER_CONTROL_FAILURE = 0x05, + IPMI_MONITORING_EVENT_OFFSET_POWER_UNIT_POWER_UNIT_FAILURE_DETECTED = 0x06, + IPMI_MONITORING_EVENT_OFFSET_POWER_UNIT_PREDICTIVE_FAILURE = 0x07, + }; + +enum ipmi_monitoring_event_offset_memory + { + IPMI_MONITORING_EVENT_OFFSET_MEMORY_CORRECTABLE_MEMORY_ERROR = 0x00, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_UNCORRECTABLE_MEMORY_ERROR = 0x01, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_PARITY = 0x02, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_MEMORY_SCRUB_FAILED = 0x03, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_MEMORY_DEVICE_DISABLED = 0x04, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_CORRECTABLE_MEMORY_ERROR_LOGGING_LIMIT_REACHED = 0x05, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_PRESENCE_DETECTED = 0x06, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_CONFIGURATION_ERROR = 0x07, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_SPARE = 0x08, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_MEMORY_AUTOMATICALLY_THROTTLED = 0x09, + IPMI_MONITORING_EVENT_OFFSET_MEMORY_CRITICAL_OVERTEMPERATURE = 0x0A, + }; + +enum ipmi_monitoring_event_offset_drive_slot + { + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_DRIVE_PRESENCE = 0x00, + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_DRIVE_FAULT = 0x01, + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_PREDICTIVE_FAILURE = 0x02, + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_HOT_SPARE = 0x03, + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_CONSISTENCY_CHECK_PARITY_CHECK_IN_PROGRESS = 0x04, + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_IN_CRITICAL_ARRAY = 0x05, + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_IN_FAILED_ARRAY = 0x06, + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_REBUILD_REMAP_IN_PROGRESS = 0x07, + IPMI_MONITORING_EVENT_OFFSET_DRIVE_SLOT_REBUILD_REMAP_ABORTED = 0x08, + }; + +enum ipmi_monitoring_event_offset_system_firmware_progress + { + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_ERROR = 0x00, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_HANG = 0x01, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_FIRMWARE_PROGRESS_SYSTEM_FIRMWARE_PROGRESS = 0x02, + }; + +enum ipmi_monitoring_event_offset_event_logging_disabled + { + IPMI_MONITORING_EVENT_OFFSET_EVENT_LOGGING_DISABLED_CORRECTABLE_MEMORY_ERROR_LOGGING_DISABLED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_EVENT_LOGGING_DISABLED_EVENT_TYPE_LOGGING_DISABLED = 0x01, + IPMI_MONITORING_EVENT_OFFSET_EVENT_LOGGING_DISABLED_LOG_AREA_RESET_CLEARED = 0x02, + IPMI_MONITORING_EVENT_OFFSET_EVENT_LOGGING_DISABLED_ALL_EVENT_LOGGING_DISABLED = 0x03, + IPMI_MONITORING_EVENT_OFFSET_EVENT_LOGGING_DISABLED_SEL_FULL = 0x04, + IPMI_MONITORING_EVENT_OFFSET_EVENT_LOGGING_DISABLED_SEL_ALMOST_FULL = 0x05, + IPMI_MONITORING_EVENT_OFFSET_EVENT_LOGGING_DISABLED_CORRECTABLE_MACHINE_CHECK_ERROR_LOGGING_DISABLED = 0x06, + }; + +enum ipmi_monitoring_event_offset_watchdog1 + { + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG1_BIOS_WATCHDOG_RESET = 0x00, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG1_OS_WATCHDOG_RESET = 0x01, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG1_OS_WATCHDOG_SHUT_DOWN = 0x02, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG1_OS_WATCHDOG_POWER_DOWN = 0x03, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG1_OS_WATCHDOG_POWER_CYCLE = 0x04, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG1_OS_WATCHDOG_NMI_DIAGNOSTIC_INTERRUPT = 0x05, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG1_OS_WATCHDOG_EXPIRED_STATUS_ONLY = 0x06, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG1_OS_WATCHDOG_PRE_TIMEOUT_INTERRUPT_NON_NMI = 0x07, + }; + +enum ipmi_monitoring_event_offset_system_event + { + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_EVENT_SYSTEM_RECONFIGURED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_EVENT_OEM_SYSTEM_BOOT_EVENT = 0x01, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_EVENT_UNDETERMINED_SYSTEM_HARDWARE_FAILURE = 0x02, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_EVENT_ENTRY_ADDED_TO_AUXILIARY_LOG = 0x03, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_EVENT_PEF_ACTION = 0x04, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_EVENT_TIMESTAMP_CLOCK_SYNC = 0x05, + }; + +enum ipmi_monitoring_event_offset_critical_interrupt + { + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_FRONT_PANEL_NMI_DIAGNOSTIC_INTERRUPT = 0x00, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_BUS_TIMEOUT = 0x01, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_IO_CHANNEL_CHECK_NMI = 0x02, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_SOFTWARE_NMI = 0x03, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_PCI_PERR = 0x04, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_PCI_SERR = 0x05, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_EISA_FAIL_SAFE_TIMEOUT = 0x06, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_BUS_CORRECTABLE_ERROR = 0x07, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_BUS_UNCORRECTABLE_ERROR = 0x08, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_FATAL_NMI = 0x09, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_BUS_FATAL_ERROR = 0x0A, + IPMI_MONITORING_EVENT_OFFSET_CRITICAL_INTERRUPT_BUS_DEGRADED = 0x0B, + }; + +enum ipmi_monitoring_event_offset_button_switch + { + IPMI_MONITORING_EVENT_OFFSET_BUTTON_SWITCH_POWER_BUTTON_PRESSED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_BUTTON_SWITCH_SLEEP_BUTTON_PRESSED = 0x01, + IPMI_MONITORING_EVENT_OFFSET_BUTTON_SWITCH_RESET_BUTTON_PRESSED = 0x02, + IPMI_MONITORING_EVENT_OFFSET_BUTTON_SWITCH_FRU_LATCH_OPEN = 0x03, + IPMI_MONITORING_EVENT_OFFSET_BUTTON_SWITCH_FRU_SERVICE_REQUEST_BUTTON = 0x04, + }; + +enum ipmi_monitoring_event_offset_chip_set + { + IPMI_MONITORING_EVENT_OFFSET_CHIP_SET_SOFT_POWER_CONTROL_FAILURE = 0x00, + IPMI_MONITORING_EVENT_OFFSET_CHIP_SET_THERMAL_TRIP = 0x01, + }; + +enum ipmi_monitoring_event_offset_cable_interconnect + { + IPMI_MONITORING_EVENT_OFFSET_CABLE_INTERCONNECT_IS_CONNECTED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_CABLE_INTERCONNECT_CONFIGURATION_ERROR = 0x01, + }; + +enum ipmi_monitoring_event_offset_system_boot_initiated + { + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_BOOT_INITIATED_INITIATED_BY_POWER_UP = 0x00, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_BOOT_INITIATED_INITIATED_BY_HARD_RESET = 0x01, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_BOOT_INITIATED_INITIATED_BY_WARM_RESET = 0x02, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_BOOT_INITIATED_USER_REQUESTED_PXE_BOOT = 0x03, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_BOOT_INITIATED_AUTOMATIC_BOOT_TO_DIAGNOSTIC = 0x04, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_BOOT_INITIATED_OS_RUN_TIME_SOFTWARE_INITIATED_HARD_RESET = 0x05, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_BOOT_INITIATED_OS_RUN_TIME_SOFTWARE_INITIATED_WARM_RESET = 0x06, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_BOOT_INITIATED_SYSTEM_RESTART = 0x07, + }; + +enum ipmi_monitoring_event_offset_boot_error + { + IPMI_MONITORING_EVENT_OFFSET_BOOT_ERROR_NO_BOOTABLE_MEDIA = 0x00, + IPMI_MONITORING_EVENT_OFFSET_BOOT_ERROR_NON_BOOTABLE_DISKETTE_LEFT_IN_DRIVE = 0x01, + IPMI_MONITORING_EVENT_OFFSET_BOOT_ERROR_PXE_SERVER_NOT_FOUND = 0x02, + IPMI_MONITORING_EVENT_OFFSET_BOOT_ERROR_INVALID_BOOT_SECTOR = 0x03, + IPMI_MONITORING_EVENT_OFFSET_BOOT_ERROR_TIMEOUT_WAITING_FOR_USER_SELECTION_OF_BOOT_SOURCE = 0x04, + }; + +enum ipmi_monitoring_event_offset_os_boot + { + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_A_BOOT_COMPLETED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_C_BOOT_COMPLETED = 0x01, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_PXE_BOOT_COMPLETED = 0x02, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_DIAGNOSTIC_BOOT_COMPLETED = 0x03, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_CD_ROM_BOOT_COMPLETED = 0x04, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_ROM_BOOT_COMPLETED = 0x05, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_BOOT_COMPLETED_BOOT_DEVICE_NOT_SPECIFIED = 0x06, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_STARTED = 0x07, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_COMPLETED = 0x08, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_ABORTED = 0x09, + IPMI_MONITORING_EVENT_OFFSET_OS_BOOT_BASE_OS_HYPERVISOR_INSTALLATION_FAILED = 0x0A, + }; + +enum ipmi_monitoring_event_offset_os_critical_stop + { + IPMI_MONITORING_EVENT_OFFSET_OS_CRITICAL_STOP_CRITICAL_STOP_DURING_OS_LOAD = 0x00, + IPMI_MONITORING_EVENT_OFFSET_OS_CRITICAL_STOP_RUN_TIME_CRITICAL_STOP = 0x01, + IPMI_MONITORING_EVENT_OFFSET_OS_CRITICAL_STOP_OS_GRACEFUL_STOP = 0x02, + IPMI_MONITORING_EVENT_OFFSET_OS_CRITICAL_STOP_OS_GRACEFUL_SHUTDOWN = 0x03, + IPMI_MONITORING_EVENT_OFFSET_OS_CRITICAL_STOP_SOFT_SHUTDOWN_INITIATED_BY_PEF = 0x04, + IPMI_MONITORING_EVENT_OFFSET_OS_CRITICAL_STOP_AGENT_NOT_RESPONDING = 0x05, + }; + +enum ipmi_monitoring_event_offset_slot_connector + { + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_FAULT_STATUS_ASSERTED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_IDENTIFY_STATUS_ASSERTED = 0x01, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_SLOT_CONNECTOR_DEVICE_INSTALLED_ATTACHED = 0x02, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_SLOT_CONNECTOR_READY_FOR_DEVICE_INSTALLATION = 0x03, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_SLOT_CONNECTOR_READY_FOR_DEVICE_REMOVAL = 0x04, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_SLOT_POWER_IS_OFF = 0x05, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_SLOT_CONNECTOR_DEVICE_REMOVAL_REQUEST = 0x06, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_INTERLOCK_ASSERTED = 0x07, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_SLOT_IS_DISABLED = 0x08, + IPMI_MONITORING_EVENT_OFFSET_SLOT_CONNECTOR_SLOT_HOLDS_SPARE_DEVICE = 0x09, + }; + +enum ipmi_monitoring_event_offset_system_acpi_power_state + { + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_S0_G0 = 0x00, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_S1 = 0x01, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_S2 = 0x02, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_S3 = 0x03, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_S4 = 0x04, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_S5_G2 = 0x05, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_S4_S5_SOFT_OFF = 0x06, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_G3_MECHANICAL_OFF = 0x07, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_SLEEPING_IN_AN_S1_S2_OR_S3_STATES = 0x08, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_G1_SLEEPING = 0x09, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_S5_ENTERED_BY_OVERRIDE = 0x0A, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_LEGACY_ON_STATE = 0x0B, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_LEGACY_OFF_STATE = 0x0C, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_UNSPECIFIED = 0x0D, + IPMI_MONITORING_EVENT_OFFSET_SYSTEM_ACPI_POWER_STATE_UNKNOWN = 0x0E, + }; + +enum ipmi_monitoring_event_offset_watchdog2 + { + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_TIMER_EXPIRED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_HARD_RESET = 0x01, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_POWER_DOWN = 0x02, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_POWER_CYCLE = 0x03, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_RESERVED1 = 0x04, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_RESERVED2 = 0x05, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_RESERVED3 = 0x06, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_RESERVED4 = 0x07, + IPMI_MONITORING_EVENT_OFFSET_WATCHDOG2_TIMER_INTERRUPT = 0x08, + }; + +enum ipmi_monitoring_event_offset_platform_alert + { + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_ALERT_PLATFORM_GENERATED_PAGE = 0x00, + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_ALERT_PLATFORM_GENERATED_LAN_ALERT = 0x01, + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_ALERT_PLATFORM_EVENT_TRAP_GENERATED = 0x02, + IPMI_MONITORING_EVENT_OFFSET_PLATFORM_ALERT_PLATFORM_GENERATED_SNMP_TRAP = 0x03, + }; + +enum ipmi_monitoring_event_offset_entity_presence + { + IPMI_MONITORING_EVENT_OFFSET_ENTITY_PRESENCE_ENTITY_PRESENT = 0x00, + IPMI_MONITORING_EVENT_OFFSET_ENTITY_PRESENCE_ENTITY_ABSENT = 0x01, + IPMI_MONITORING_EVENT_OFFSET_ENTITY_PRESENCE_ENTITY_DISABLED = 0x02, + }; + +enum ipmi_monitoring_event_offset_lan + { + IPMI_MONITORING_EVENT_OFFSET_LAN_HEARTBEAT_LOST = 0x00, + IPMI_MONITORING_EVENT_OFFSET_LAN_HEARTBEAT = 0x01, + }; + +enum ipmi_monitoring_event_offset_management_subsystem_health + { + IPMI_MONITORING_EVENT_OFFSET_MANAGEMENT_SUBSYSTEM_HEALTH_SENSOR_ACCESS_DEGRADED_OR_UNAVAILABLE = 0x00, + IPMI_MONITORING_EVENT_OFFSET_MANAGEMENT_SUBSYSTEM_HEALTH_CONTROLLER_ACCESS_DEGRADED_OR_UNAVAILABLE = 0x01, + IPMI_MONITORING_EVENT_OFFSET_MANAGEMENT_SUBSYSTEM_HEALTH_MANAGEMENT_CONTROLLER_OFF_LINE = 0x02, + IPMI_MONITORING_EVENT_OFFSET_MANAGEMENT_SUBSYSTEM_HEALTH_MANAGEMENT_CONTROLLER_UNAVAILABLE = 0x03, + IPMI_MONITORING_EVENT_OFFSET_MANAGEMENT_SUBSYSTEM_HEALTH_SENSOR_FAILURE = 0x04, + IPMI_MONITORING_EVENT_OFFSET_MANAGEMENT_SUBSYSTEM_HEALTH_FRU_FAILURE = 0x05, + }; + +enum ipmi_monitoring_event_offset_battery + { + IPMI_MONITORING_EVENT_OFFSET_BATTERY_BATTERY_LOW = 0x00, + IPMI_MONITORING_EVENT_OFFSET_BATTERY_BATTERY_FAILED = 0x01, + IPMI_MONITORING_EVENT_OFFSET_BATTERY_BATTERY_PRESENCE_DETECTED = 0x02, + }; + +enum ipmi_monitoring_event_offset_session_audit + { + IPMI_MONITORING_EVENT_OFFSET_SESSION_AUDIT_SESSION_ACTIVATED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_SESSION_AUDIT_SESSION_DEACTIVATED = 0x01, + IPMI_MONITORING_EVENT_OFFSET_SESSION_AUDIT_INVALID_USERNAME_OR_PASSWORD = 0x02, + IPMI_MONITORING_EVENT_OFFSET_SESSION_AUDIT_INVALID_PASSWORD_DISABLE = 0x03, + }; + +enum ipmi_monitoring_event_offset_version_change + { + IPMI_MONITORING_EVENT_OFFSET_VERSION_CHANGE_HARDWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY = 0x00, + IPMI_MONITORING_EVENT_OFFSET_VERSION_CHANGE_FIRMWARE_OR_SOFTWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY = 0x01, + IPMI_MONITORING_EVENT_OFFSET_VERSION_CHANGE_HARDWARE_INCOMPATABILITY_DETECTED_WITH_ASSOCIATED_ENTITY = 0x02, + IPMI_MONITORING_EVENT_OFFSET_VERSION_CHANGE_FIRMWARE_OR_SOFTWARE_INCOMPATABILITY_DETECTED_WITH_ASSOCIATED_ENTITY = 0x03, + IPMI_MONITORING_EVENT_OFFSET_VERSION_CHANGE_ENTITY_IS_OF_AN_INVALID_OR_UNSUPPORTED_HARDWARE_VERSION = 0x04, + IPMI_MONITORING_EVENT_OFFSET_VERSION_CHANGE_ENTITY_CONTAINS_AN_INVALID_OR_UNSUPPORTED_FIRMWARE_OR_SOFTWARE_VERSION = 0x05, + IPMI_MONITORING_EVENT_OFFSET_VERSION_CHANGE_HARDWARE_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL = 0x06, + IPMI_MONITORING_EVENT_OFFSET_VERSION_CHANGE_SOFTWARE_OR_FW_CHANGE_DETECTED_WITH_ASSOCIATED_ENTITY_WAS_SUCCESSFUL = 0x07, + }; + +enum ipmi_monitoring_event_offset_fru_state + { + IPMI_MONITORING_EVENT_OFFSET_FRU_STATE_FRU_NOT_INSTALLED = 0x00, + IPMI_MONITORING_EVENT_OFFSET_FRU_STATE_FRU_INACTIVE = 0x01, + IPMI_MONITORING_EVENT_OFFSET_FRU_STATE_FRU_ACTIVATION_REQUESTED = 0x02, + IPMI_MONITORING_EVENT_OFFSET_FRU_STATE_FRU_ACTIVATION_IN_PROGRESS = 0x03, + IPMI_MONITORING_EVENT_OFFSET_FRU_STATE_FRU_ACTIVE = 0x04, + IPMI_MONITORING_EVENT_OFFSET_FRU_STATE_FRU_DEACTIVATION_REQUESTED = 0x05, + IPMI_MONITORING_EVENT_OFFSET_FRU_STATE_FRU_DEACTIVATION_IN_PROGRESS = 0x06, + IPMI_MONITORING_EVENT_OFFSET_FRU_STATE_FRU_COMMUNICATION_LOST = 0x07, + }; + +#ifdef __cplusplus +} +#endif + +#endif /* IPMI_MONITORING_OFFSETS_H */ diff --git a/source/freeipmi/usr/include/ipmiconsole.h b/source/freeipmi/usr/include/ipmiconsole.h new file mode 100644 index 00000000..8a19bfe0 --- /dev/null +++ b/source/freeipmi/usr/include/ipmiconsole.h @@ -0,0 +1,1017 @@ +/*****************************************************************************\ + * $Id: ipmiconsole.h,v 1.89 2010-08-03 00:10:59 chu11 Exp $ + ***************************************************************************** + * Copyright (C) 2007-2012 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 + * UCRL-CODE-221226 + * + * This file is part of Ipmiconsole, a set of IPMI 2.0 SOL libraries + * and utilities. For details, see http://www.llnl.gov/linux/. + * + * Ipmiconsole 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. + * + * Ipmiconsole 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 Ipmiconsole. If not, see . +\*****************************************************************************/ + +#ifndef IPMICONSOLE_H +#define IPMICONSOLE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * Libipmiconsole 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 LIBIPMICONSOLE_VERSION_MAJOR 1 +#define LIBIPMICONSOLE_VERSION_MINOR 2 +#define LIBIPMICONSOLE_VERSION_PATCH 2 + +/* + * IPMI Console Error Codes + */ +#define IPMICONSOLE_ERR_SUCCESS 0 +#define IPMICONSOLE_ERR_CTX_NULL 1 +#define IPMICONSOLE_ERR_CTX_INVALID 2 +#define IPMICONSOLE_ERR_ALREADY_SETUP 3 +#define IPMICONSOLE_ERR_NOT_SETUP 4 +#define IPMICONSOLE_ERR_CTX_NOT_SUBMITTED 5 +#define IPMICONSOLE_ERR_CTX_IS_SUBMITTED 6 +#define IPMICONSOLE_ERR_PARAMETERS 7 +#define IPMICONSOLE_ERR_HOSTNAME_INVALID 8 +#define IPMICONSOLE_ERR_IPMI_2_0_UNAVAILABLE 9 +#define IPMICONSOLE_ERR_CIPHER_SUITE_ID_UNAVAILABLE 10 +#define IPMICONSOLE_ERR_USERNAME_INVALID 11 +#define IPMICONSOLE_ERR_PASSWORD_INVALID 12 +#define IPMICONSOLE_ERR_K_G_INVALID 13 +#define IPMICONSOLE_ERR_PRIVILEGE_LEVEL_INSUFFICIENT 14 +#define IPMICONSOLE_ERR_PRIVILEGE_LEVEL_CANNOT_BE_OBTAINED 15 +#define IPMICONSOLE_ERR_SOL_UNAVAILABLE 16 +#define IPMICONSOLE_ERR_SOL_INUSE 17 +#define IPMICONSOLE_ERR_SOL_STOLEN 18 +#define IPMICONSOLE_ERR_SOL_REQUIRES_ENCRYPTION 19 +#define IPMICONSOLE_ERR_SOL_REQUIRES_NO_ENCRYPTION 20 +#define IPMICONSOLE_ERR_BMC_BUSY 21 +#define IPMICONSOLE_ERR_BMC_ERROR 22 +#define IPMICONSOLE_ERR_BMC_IMPLEMENTATION 23 +#define IPMICONSOLE_ERR_CONNECTION_TIMEOUT 24 +#define IPMICONSOLE_ERR_SESSION_TIMEOUT 25 +#define IPMICONSOLE_ERR_EXCESS_RETRANSMISSIONS_SENT 26 +#define IPMICONSOLE_ERR_EXCESS_ERRORS_RECEIVED 27 +#define IPMICONSOLE_ERR_OUT_OF_MEMORY 28 +#define IPMICONSOLE_ERR_TOO_MANY_OPEN_FILES 29 +#define IPMICONSOLE_ERR_SYSTEM_ERROR 30 +#define IPMICONSOLE_ERR_INTERNAL_ERROR 31 +#define IPMICONSOLE_ERR_ERRNUMRANGE 32 + +/* + * Debug Flags + * + * Utilized with ipmiconsole_engine_init() or with struct + * ipmiconsole_engine_config below for debugging. + * + * When used with ipmiconsole_engine_init(), enables debugging in + * libipmiconsole global activities, such as the libipmiconsole engine + * threads. + * + * When used with struct ipmiconsole_engine_config and a context, + * enables debugging specific to an IPMI connection with a specific + * host. + * + * STDOUT - Output debugging to stdout + * STDERR - Output debugging to stderr + * SYSLOG - Output debugging to the Syslog + * FILE - Output debugging to files in current working directory + * IPMI_PACKETS - Dump IPMI Packets too + * DEFAULT - Informs library to use default, may it be standard + * or configured via libipmiconsole.conf. + */ +#define IPMICONSOLE_DEBUG_STDOUT 0x00000001 +#define IPMICONSOLE_DEBUG_STDERR 0x00000002 +#define IPMICONSOLE_DEBUG_SYSLOG 0x00000004 +#define IPMICONSOLE_DEBUG_FILE 0x00000008 +#define IPMICONSOLE_DEBUG_IPMI_PACKETS 0x00000010 +#define IPMICONSOLE_DEBUG_DEFAULT 0xFFFFFFFF + +/* + * IPMI Privilege Constants + * + * Utilized with struct ipmiconsole_ipmi_config below to specify a + * privilege level to authenticate with. + */ +#define IPMICONSOLE_PRIVILEGE_USER 0 +#define IPMICONSOLE_PRIVILEGE_OPERATOR 1 +#define IPMICONSOLE_PRIVILEGE_ADMIN 2 + +/* + * Workaround Flags + * + * Utilized with struct ipmiconsole_ipmi_config below to specify + * workarounds for specific motherboard manufacturers. + * + * AUTHENTICATION_CAPABILITIES + * + * This workaround flag will skip early checks for username + * capabilities, authentication capabilities, and K_g support and + * allow IPMI authentication to succeed. It works around multiple + * issues in which the remote system does not properly report username + * capabilities, authentication capabilities, or K_g status. + * + * INTEL_2_0_SESSION + * + * This workaround flag will work around several Intel IPMI 2.0 + * authentication issues. The issues covered include padding of + * usernames, automatic acceptance of a RAKP 4 response integrity + * check when using the integrity algorithm MD5-128, and password + * truncation if the authentication algorithm is HMAC-MD5-128. + * + * SUPERMICRO_2_0_SESSION + * + * This workaround option will work around several Supermicro IPMI 2.0 + * authentication issues on motherboards w/ Peppercon IPMI firmware. + * The issues covered include handling invalid length authentication + * codes. + * + * SUN_2_0_SESSION + * + * This workaround flag will work work around several Sun IPMI 2.0 + * authentication issues. The issues covered include invalid lengthed + * hash keys, improperly hashed keys, and invalid cipher suite + * records. This workaround automatically includes the + * OPEN_SESSION_PRIVILEGE workaround. + * + * OPEN_SESSION_PRIVILEGE + * + * This workaround flag will slightly alter FreeIPMI's IPMI 2.0 + * connection protocol to workaround an invalid hashing algorithm used + * by the remote system. The privilege level sent during the Open + * Session stage of an IPMI 2.0 connection is used for hashing keys + * instead of the privilege level sent during the RAKP1 connection + * stage. This workaround is automatically triggered with the + * SUN_2_0_SESSION workaround. + * + * NON_EMPTY_INTEGRITY_CHECK_VALUE + * + * This workaround option will work around an invalid integrity check + * value during an IPMI 2.0 session establishment when using Cipher + * Suite ID 0. The integrity check value should be 0 length, however + * the remote motherboard responds with a non-empty field. + * + * NO_CHECKSUM_CHECK + * + * This workaround option will work around motheboards that calculate + * checksums incorrectly in IPMI command responses, but the packet is + * otherwise valid. Users are cautioned on the use of this option, as + * it removes some validation of packet integrity. However, it is + * unlikely to be an issue in most situations. + * + * SERIAL_ALERTS_DEFERRED + * + * This workaround option will set serial alerts to be deferred + * instead of have them be failures. This works around motherboards + * that perform IPMI over serial along with IPMI serial over LAN. + * + * INCREMENT_SOL_PACKET_SEQUENCE + * + * This workaround option will increment the SOL payload packet + * sequence number under dire circumstances. Normally SOL should + * never do this, however some motherboards have shown to get "stuck" + * due to an internal bug on the motherboard. This workaround can + * help in getting the BMC un-stuck. + * + * IGNORE_SOL_PAYLOAD_SIZE + * + * This workaround flag will not check for valid SOL payload sizes and + * assume a proper set. It works around remote systems that report + * invalid IPMI 2.0 SOL payload sizes. + * + * IGNORE_SOL_PORT + * + * This workaround flag will ignore alternate SOL ports specified + * during the protocol. It works around remote systems that report + * invalid alternate SOL ports. + * + * SKIP_SOL_ACTIVATION_STATUS + * + * This workaround flag will not check the current activation status + * of SOL during the protocol setup. It works around remote systems + * that do not properly support this command. + * + * SKIP_CHANNEL_PAYLOAD_SUPPORT + * + * This workaround flag will skip the portion of the protocol that + * checks if SOL is supported on the current channel. It works around + * remote systems that do not properly support this command. + * + * DEFAULT + * + * Informs library to use default, may it be the standard default or + * a default configured via libipmiconsole.conf. + * + * Note: The non-logical bitmask order below is set for future + * expansion and matching w/ libfreeipmi. + */ +#define IPMICONSOLE_WORKAROUND_AUTHENTICATION_CAPABILITIES 0x00000001 +#define IPMICONSOLE_WORKAROUND_INTEL_2_0_SESSION 0x00000002 +#define IPMICONSOLE_WORKAROUND_SUPERMICRO_2_0_SESSION 0x00000004 +#define IPMICONSOLE_WORKAROUND_SUN_2_0_SESSION 0x00000008 +#define IPMICONSOLE_WORKAROUND_OPEN_SESSION_PRIVILEGE 0x00000010 +#define IPMICONSOLE_WORKAROUND_NON_EMPTY_INTEGRITY_CHECK_VALUE 0x00000020 +#define IPMICONSOLE_WORKAROUND_NO_CHECKSUM_CHECK 0x00000040 +#define IPMICONSOLE_WORKAROUND_SERIAL_ALERTS_DEFERRED 0x00000080 +#define IPMICONSOLE_WORKAROUND_INCREMENT_SOL_PACKET_SEQUENCE 0x00000100 +#define IPMICONSOLE_WORKAROUND_IGNORE_SOL_PAYLOAD_SIZE 0x01000000 +#define IPMICONSOLE_WORKAROUND_IGNORE_SOL_PORT 0x02000000 +#define IPMICONSOLE_WORKAROUND_SKIP_SOL_ACTIVATION_STATUS 0x04000000 +#define IPMICONSOLE_WORKAROUND_SKIP_CHANNEL_PAYLOAD_SUPPORT 0x08000000 +#define IPMICONSOLE_WORKAROUND_DEFAULT 0xFFFFFFFF + +/* + * Engine Flags + * + * Utilized with struct ipmiconsole_engine_config below to alter + * libipmiconsole engine behavior. + * + * CLOSE_FD + * + * By default, the ipmiconsole engine will not close the file + * descriptor (returned by ipmiconsole_ctx_fd()) when an error occurs + * within the ipmiconsole engine (such as a session timeout). A user + * will subsequently see an EOF on a read() or an EPIPE on a write() + * to know an error occurred. + * + * This flag will inform the engine to close the file descriptor on + * error. This will change the behavior of how the user should + * program with the file descriptor. For example, calls to read() and + * write() would likely return with EBADF errors instead of EOF or + * EPIPE errors respectively. Calls to select() may return with EBADF + * errors and calls to poll() could result in POLLNVAL returned + * events. + * + * OUTPUT_ON_SOL_ESTABLISHED + * + * When submitting a context to the engine non-blocking, another way + * to determine if the SOL session has been established is if data has + * output from the remote console and is available for you to read. + * Under most circumstances, this isn't a controllable situation. + * + * This flag will inform the engine to output a single NUL character + * ('\0') to the console once a SOL session has been established. If + * the CLOSE_FD flag isn't used above, this would allow the user to + * expect an EOF vs. 1 byte of data on a read() to determine if the + * SOL session has failed or succeeded. The user may choose to output + * the NUL anyways (it should do no harm) or simply throw out the + * first byte ever read from remote console. + * + * LOCK_MEMORY + * + * Inform libipmiconsole to lock memory to prevent sensitive + * information (such as usernames and passwords) to be non-swappable. + * + * SERIAL_KEEPALIVE + * + * On some motherboards, it's been observed that IPMI connections + * between the IPMI client and remote BMC/server can stay alive while + * the remote server's internal connection between the BMC and serial + * chip can be lost. This has been observed under several situations, + * such as when the remote system is rebooted or a IPMI SOL session is + * stolen. + * + * The affect is that this loss of the serial connection will not be + * noticed by the IPMI client until serial data is transfered from the + * client to the BMC and a timeout (or similar error) eventually occurs. + * The IPMI client must then reconnect to restablish the session. + * + * This is a severe problem for IPMI clients that predominantly log + * serial data or display serial output without user interactivity. + * From the IPMI client perspective, there is simply no output from + * the serial port and no error has actually occurred. + * + * This option will inform the libipmiconsole engine to send serial + * keepalive packets in addition to the IPMI keepalive packets that + * normally keep a connection alive. The serial keepalive packets are + * standard SOL payload packets, but contain a single NUL character in + * them. The single NUL character is to ensure that the underlying + * serial receiver is alive and functioning. Retransmission and + * timeouts are handled identically to normal IPMI packets in the code + * (e.g. as if somebody typed a character). The serial keepalive + * packets are dispatched if a SOL packet response has not been + * received within the length of time of a session timeout. + * + * This option is highly recommended for IPMI clients that do not have + * high user interactivity, as this may discover broken connections + * far more quickly. However, caution should be maintained, as the + * NUL character byte may affect the remote system depending on what + * input it may or may not be expecting. + * + * SERIAL_KEEPALIVE_EMPTY + * + * This option is identical to SERIAL_KEEPALIVE, except that the + * serial keepalive packets are empty and without character data. On + * some motherboards, this may be sufficient to deal with the "serial + * keepalive" issue and character data need not be sent with each + * packet. On some systems though, a SOL packet without character + * data may not be ACKed, and therefore the keepalive fails. + * + * DEFAULT + * + * Informs library to use default, may it be the standard default or + * a default configured via libipmiconsole.conf. + */ +#define IPMICONSOLE_ENGINE_CLOSE_FD 0x00000001 +#define IPMICONSOLE_ENGINE_OUTPUT_ON_SOL_ESTABLISHED 0x00000002 +#define IPMICONSOLE_ENGINE_LOCK_MEMORY 0x00000004 +#define IPMICONSOLE_ENGINE_SERIAL_KEEPALIVE 0x00000008 +#define IPMICONSOLE_ENGINE_SERIAL_KEEPALIVE_EMPTY 0x00000010 +#define IPMICONSOLE_ENGINE_DEFAULT 0xFFFFFFFF + +/* + * Behavior Flags + * + * Utilized with struct ipmiconsole_protocol_config below to atler + * SOL connection behavior. + * + * ERROR_ON_SOL_INUSE + * + * Under most circumstances, if SOL is detected as being in use, + * libipmiconsole will attempt to deactivate the earlier SOL session + * and activate the SOL session under the current one. This default + * behavior exists for several reasons, most notably that earlier SOL + * sessions may have not been able to be deactivated properly. This + * security flag changes the default behavior to return an error if + * SOL is already detected as being in use. If it is detected as in + * use, the errnum returned from ipmiconsole_ctx_errnum() would be + * IPMICONSOLE_ERR_SOL_INUSE. + * + * DEACTIVATE_ONLY + * + * Only attempt to deactivate the SOL session. If an SOL session is + * not active, do nothing. + * + * DEACTIVATE_ALL_INSTANCES + * + * When a SOL session is deactivated via the DEACTIVATE_ONLY flag, + * only the currently configured SOL payload instance will be + * deactivated, not any other instance. This flag will inform + * libipmiconsole to deactivate all presently activated instances. + * This may be useful in a few circumstances where a user might want + * to deactivate all current sessions. + * + * DEFAULT + * + * Informs library to use default, may it be the standard default or + * a default configured via libipmiconsole.conf. + */ +#define IPMICONSOLE_BEHAVIOR_ERROR_ON_SOL_INUSE 0x00000001 +#define IPMICONSOLE_BEHAVIOR_DEACTIVATE_ONLY 0x00000002 +#define IPMICONSOLE_BEHAVIOR_DEACTIVATE_ALL_INSTANCES 0x00000004 +#define IPMICONSOLE_BEHAVIOR_DEFAULT 0xFFFFFFFF + +/* + * Context Status + * + * Returned by ipmiconsole_ctx_status() below. + * + * ERROR + * + * An error has occurred retrieving the status. + * + * NOT_SUBMITTED + * + * The context has not been submitted to the engine. + * + * SUBMITTED + * + * The context has been submitted to the engine. SOL has not been + * established and an error has not yet occurred. + * + * SOL_ERROR + * + * The context has received an error during SOL establishment. + * + * SOL_ESTABLISHED + * + * The context has established a SOL session. + * + */ +enum ipmiconsole_ctx_status +{ + IPMICONSOLE_CTX_STATUS_ERROR = -1, + IPMICONSOLE_CTX_STATUS_NOT_SUBMITTED = 0, + IPMICONSOLE_CTX_STATUS_SUBMITTED = 1, + IPMICONSOLE_CTX_STATUS_SOL_ERROR = 2, + IPMICONSOLE_CTX_STATUS_SOL_ESTABLISHED = 3, +}; +typedef enum ipmiconsole_ctx_status ipmiconsole_ctx_status_t; + +/* + * ipmiconsole_ipmi_config + * + * IPMI configuration for a connection to a remote IPMI machine. + * Defaults can be modified using the libipmiconsole.conf file. + * + * username + * + * BMC username. Pass NULL ptr for default username. Standard + * default is the null (e.g. empty) username. Maximum length of 16 + * bytes. + * + * password + * + * BMC password. Pass NULL ptr for default password. Standard + * default is the null (e.g. empty) password. Maximum length of 20 + * bytes. + * + * k_g + * + * BMC Key for 2-key authentication. Pass NULL ptr to use the + * default. Standard default is the null (e.g. empty) k_g, + * which will use the password as the BMC key. The k_g key need not + * be an ascii string. + * + * k_g_len + * + * Length of k_g. Necessary b/c k_g may contain null values in its + * key. Maximum length of 20 bytes. + * + * privilege_level + * + * privilege level to authenticate with. + * + * Supported privilege levels: + * + * IPMICONSOLE_PRIVILEGE_USER + * IPMICONSOLE_PRIVILEGE_OPERATOR + * IPMICONSOLE_PRIVILEGE_ADMIN + * + * Pass < 0 for default. Standard default is + * IPMICONSOLE_PRIVILEGE_ADMIN. + * + * cipher_suite_id + * + * Cipher suite identifier to determine authentication, integrity, + * and confidentiality algorithms to use. + * + * Supported Cipher Suite IDs + * (Key: A - Authentication Algorithm + * I - Integrity Algorithm + * C - Confidentiality Algorithm) + * + * 0 - A = None; I = None; C = None + * 1 - A = HMAC-SHA1; I = None; C = None + * 2 - A = HMAC-SHA1; I = HMAC-SHA1-96; C = None + * 3 - A = HMAC-SHA1; I = HMAC-SHA1-96; C = AES-CBC-128 + * 6 - A = HMAC-MD5; I = None; C = None + * 7 - A = HMAC-MD5; I = HMAC-MD5-128; C = None + * 8 - A = HMAC-MD5; I = HMAC-MD5-128; C = AES-CBC-128 + * 11 - A = HMAC-MD5; I = MD5-128; C = None + * 12 - A = HMAC-MD5; I = MD5-128; C = AES-CBC-128 + * 15 - A = HMAC-SHA256; I = None; C = None + * 16 - A = HMAC-SHA256; I = HMAC-SHA256-128; C = None + * 17 - A = HMAC-SHA256; I = HMAC-SHA256-128; C = AES-CBC-128 + * + * Pass < 0 for default. Standard default is 3. + * + * workaround_flags + * + * Bitwise OR of flags indicating IPMI implementation changes. Some + * BMCs which are non-compliant and may require a workaround flag + * for correct operation. Pass IPMICONSOLE_WORKAROUND_DEFAULT for + * default. Standard default is 0, no modifications to the IPMI + * protocol. + */ +struct ipmiconsole_ipmi_config +{ + char *username; + char *password; + unsigned char *k_g; + unsigned int k_g_len; + int privilege_level; + int cipher_suite_id; + unsigned int workaround_flags; +}; + +/* + * ipmiconsole_protocol_config + * + * Configuration information for the IPMI protocol management. + * Defaults can be modified using the libipmiconsole.conf file. + * + * session_timeout_len + * + * Specifies the session timeout length in milliseconds. Pass <= 0 + * for default. Standard default is 60000 (60 seconds). + * + * retransmission_timeout_len + * + * Specifies the packet retransmission timeout length in + * milliseconds. Pass <= 0 for default. Standard default is + * 500 (0.5 seconds). + * + * retransmission_backoff_count + * + * Specifies the packet retransmission count until retransmission + * timeout lengths will be backed off. Pass <= 0 for default. + * Standard default is 2. + * + * keepalive_timeout_len + * + * Specifies the session timeout length in milliseconds until a + * keepalive packet is sent. Pass <= 0 for default. Standard + * default is 20000 (20 seconds). + * + * retransmission_keepalive_timeout_len + * + * Specifies the keepalive packet retransmission timeout length in + * milliseconds. Pass <= 0 for default. Standard default is + * 5000 (5 seconds). + * + * acceptable_packet_errors_count + * + * Specifies the maximum number of consecutive packet errors that + * can be received from a remote BMC before an error is returned and + * the session ended. Pass <= 0 for default. Standard + * default is 16. + * + * Note: This has been added to the behavior of the IPMI engine due + * to issues where remote BMCs can become "un-synced" with sequence + * numbers due to a network kernel boot. It is possible a stream of + * packets can be sent to the remote client with session sequence + * numbers that are excessively outside of the acceptable window + * range. + * + * maximum_retransmission_count + * + * Specifies the maximum number of retransmissions that can be sent + * for any IPMI packet before an error is returned and the session + * ended. Pass <= 0 for default. Standard default is 16. + * + * Note: This has been added to the behavior of the IPMI engine due + * to issues where remote BMCs can become "un-synced" with sequence + * numbers due to a network kernel boot. It is possible for some + * packets (in particular 'ping' packets to keep an IPMI session + * alive) to be accepted by the remote BMC, but not SOL packets. + * + */ +struct ipmiconsole_protocol_config +{ + int session_timeout_len; + int retransmission_timeout_len; + int retransmission_backoff_count; + int keepalive_timeout_len; + int retransmission_keepalive_timeout_len; + int acceptable_packet_errors_count; + int maximum_retransmission_count; +}; + +/* + * ipmiconsole_engine_config + * + * Configuration information for how the engine should interact with + * the user or API. Defaults can be modified using the + * libipmiconsole.conf file. + * + * engine_flags + * + * Bitwise OR of flags indicating how the ipmiconsole engine should + * behave for a particular context. Pass IPMICONSOLE_ENGINE_DEFAULT + * for default. Standard default is 0. + * + * behavior_flags + * + * Bitwise OR of flags indicating any protocol behavior that should + * be changed from the default. Pass IPMICONSOLE_BEHAVIOR_DEFAULT + * for default. Standard default is 0. + * + * debug_flags + * + * Bitwise OR of flags indicating how debug output should (or should + * not) be output. Pass IPMICONSOLE_DEBUG_DEFAULT for default. + * Standard default is 0. + * + */ +struct ipmiconsole_engine_config +{ + unsigned int engine_flags; + unsigned int behavior_flags; + unsigned int debug_flags; +}; + +/* + * Context Config Option + * + * Used for setting or getting advanced configuration options. See + * ipmiconsole_ctx_set_config_option() and + * ipmiconsole_ctx_get_config_option(). + * + * SOL_PAYLOAD_INSTANCE + * + * The SOL payload instance number to be used. Defaults to 1 and has + * range of 1 to 15. Most systems only support a single instance, + * however a few allow users to access multiple. They could be used + * to allow multiple users to see the same serial session, or allow + * users to access different serial sessions behind a device. It is + * not commonly available or necessary when communicating via SOL to a + * single server. The SOL payload instance number is specified and + * retrieved via a pointer to an unsigned int. + * + */ +enum ipmiconsole_ctx_config_option +{ + IPMICONSOLE_CTX_CONFIG_OPTION_SOL_PAYLOAD_INSTANCE = 0, +}; +typedef enum ipmiconsole_ctx_config_option ipmiconsole_ctx_config_option_t; + +#define IPMICONSOLE_THREAD_COUNT_MAX 32 + +typedef struct ipmiconsole_ctx *ipmiconsole_ctx_t; + +/* + * Ipmiconsole_callback + * + * Function prototype for a callback function. + * ipmiconsole_engine_submit() below. + */ +typedef void (*Ipmiconsole_callback)(void *); + +/* + * ipmiconsole_engine_init + * + * Initialize the ipmiconsole engine. Engine threads will be created + * which will manage SOL sessions for the user. This function must be + * called before ipmi console contexts can be submitted into the + * engine. This call will also parse and load alternate defaults from + * the libipmiconsole.conf defaults file. + * + * Parameters: + * + * thread_count + * + * Number of threads the engine will support. Pass 0 for default of 4. + * + * debug_flags + * + * Bitwise OR of flags indicating how debug output should (or should + * not) be output. Pass 0 for default of no debugging. + * + * Returns 0 on success, -1 on error. On error errno will be set to + * indicate error. Possible errnos are ENOMEM if memory cannot be + * allocated. + */ +int ipmiconsole_engine_init (unsigned int thread_count, + unsigned int debug_flags); + +/* + * ipmiconsole_engine_submit + * + * Submit a context to the ipmiconsole engine non-blocking. This + * function can return prior to a SOL session being established. A + * return value of 0 indicates the context was submitted properly. A + * return value of -1 indicates an error occurred during the + * submission. On an error, ipmiconsole_ctx_errnum() can be used to + * determine the type of error that occured. + * + * After a context has been submitted, the user may determine if a SOL + * session has been established several ways: + * + * A) Poll on the context status, retrieved via + * ipmiconsole_ctx_status(). On an error, ipmiconsole_ctx_errnum() + * can be used to determine the specific IPMI related error that + * occurred. + * + * B) Poll on the context file descriptor, retrieved via + * ipmiconsole_ctx_fd(). A SOL establishment error will result in an + * EOF being returned on the file descriptor. A proper SOL + * establishment can be determined via a readable character on the + * file descriptor. The use of the OUTPUT_ON_SOL_ESTABLISHED Engine + * flag above can aid in this. The CLOSE_FD Engine flag can be set to + * slightly alter this behavior, please see above. On an error, + * ipmiconsole_ctx_errnum() can be used to determine the specific IPMI + * related error that occurred. + * + * C) Specify a callback function. The callback function specified as + * a parameter below will be called directly after a SOL session has + * been established or a session establishment error has occurred + * (e.g. SOL not supported, authentication error, etc.). Within those + * callback functions, ipmiconsole_ctx_status() can be used to + * determine which has occurred. This callback will be called by the + * engine thread, therefore users may need to protect their + * application's shared data. + * + * Due to the non-blocking semantics of this function, it is possible + * that multiple errors could occur simultaneously and the errnum + * retrieved via ipmiconsole_ctx_errnum() may not be the one that + * caused the SOL session to fail. However, this will not occur given + * proper usage of the API. For example, if the user called + * ipmiconsole_engine_submit() twice with the same context, an SOL + * error in the engine background could race with the setting of the + * errnum IPMICONSOLE_ERR_CTX_IS_SUBMITTED in the second call. + * + * Parameters: + * + * callback + * + * If specified, a callback function will be called from the engine + * when a SOL session has been established or a SOL establishment + * error has occurred. Will only be called under a non-blocking + * engine submission via ipmiconsole_engine_submit(). Will be + * called once and only once during an individual engine submission. + * For example, if a SOL session is established then a later session + * timeout occurs, the later session timeout will not generate a + * function call to the callback. Pass NULL for no callback. + * + * The callback function can be called simultaneously from different + * engine threads. It is the user's responsibility to protect + * against any race conditions in their callback function. + * + * callback_arg + * + * Specify an arbitrary argument to be passed to the callback + * routine. If the callback will be required to process the context + * status, the context should be included in this argument. + * + * Returns 0 on success, -1 on error. ipmiconsole_ctx_errnum() can be + * called to determine the cause of the error. + */ +int ipmiconsole_engine_submit (ipmiconsole_ctx_t c, + Ipmiconsole_callback callback, + void *callback_arg); + +/* + * ipmiconsole_engine_submit_block + * + * Submit a context to the ipmiconsole engine and block until a SOL + * session is established or an error/timeout occurs. A return value + * of 0 indicates the SOL session was established and a -1 indicates + * an error occurred. On an error, ipmiconsole_ctx_errnum() can be + * used to determine the type of error that occured. + * + * Returns 0 on success, -1 on error. ipmiconsole_ctx_errnum() can be + * called to determine the cause of the error. + */ +int ipmiconsole_engine_submit_block (ipmiconsole_ctx_t c); + +/* + * ipmiconsole_engine_teardown + * + * Teardown the ipmiconsole engine. This function will destroy + * all threads and contexts managed by the engine. + * + * Parameters: + * + * cleanup_sol_sessions + * + * If set to non zero, SOL sessions will be torn down cleanly. + * ipmiconsole_engine_teardown() will block until all active ipmi + * sessions have been closed cleanly or timed out. + */ +void ipmiconsole_engine_teardown (int cleanup_sol_sessions); + +/* + * ipmiconsole_ctx_create + * + * Create an ipmiconsole context. The context can then be submitted + * into the ipmiconsole engine (via ipmiconsole_engine_submit() or + * ipmiconsole_engine_submit_block()) to establish a SOL session. The + * context cannot be submitted to the ipmiconsole engine more than + * once. After it has been submitted to the ipmiconsole engine, it + * cannot be reused. + * + * Parameters: + * + * hostname + * + * Host or IP address you wish to connect to. + * + * ipmi_config + * + * IPMI configuration. See ipmiconsole_ipmi_config definition + * above. + * + * protocol_config + * + * IPMI protocol configuration. See ipmiconsole_protocol_config + * definition above. + * + * engine_config + * + * Ipmiconsole engine configuration. See ipmiconsole_engine_config + * definition above. + * + * Returns ctx on success, NULL on error. On error errno will be set to + * indicate error. Possible errnos are EINVAL on invalid input, + * ENOMEM if memory cannot be allocated, EMFILE if process file + * descriptors limits have been reached, and EAGAIN if + * ipmiconsole_engine_init() has not yet been called. + */ +ipmiconsole_ctx_t ipmiconsole_ctx_create (const char *hostname, + struct ipmiconsole_ipmi_config *ipmi_config, + struct ipmiconsole_protocol_config *protocol_config, + struct ipmiconsole_engine_config *engine_config); + +/* + * ipmiconsole_ctx_set_config + * + * Set the value of an advanced configuration value. This + * configuration value must be set prior to a context being submitted + * to the ipmiconsole engine (via ipmiconsole_engine_submit() or + * ipmiconsole_engine_submit_block()). After it has been submitted to + * the ipmiconsole engine, it cannot be changed. + * + * See enum ipmiconsole_ctx_config_option above for config options and + * pointer types expected by this function. + * + * Returns 0 on success, -1 on error. ipmiconsole_ctx_errnum() can be + * called to determine the cause of the error. + */ +int ipmiconsole_ctx_set_config (ipmiconsole_ctx_t c, + ipmiconsole_ctx_config_option_t config_option, + void *config_option_value); +/* + * ipmiconsole_ctx_get_config + * + * Get the value of an advanced configuration value. + * + * See enum ipmiconsole_ctx_config_option above for config options and + * pointer types expected by this function. + * + * Returns 0 on success, -1 on error. ipmiconsole_ctx_errnum() can be + * called to determine the cause of the error. + */ +int ipmiconsole_ctx_get_config (ipmiconsole_ctx_t c, + ipmiconsole_ctx_config_option_t config_option, + void *config_option_value); + +/* + * ipmiconsole_ctx_errnum + * + * Returns the errnum of the most recently recorded error for the + * context that has not yet been read by the user. + */ +int ipmiconsole_ctx_errnum (ipmiconsole_ctx_t c); + +/* + * ipmiconsole_ctx_strerror + * + * Returns a pointer to statically allocated string describing the + * error code in errnum. + */ +char *ipmiconsole_ctx_strerror (int errnum); + +/* + * ipmiconsole_ctx_errormsg + * + * Returns a pointer to statically allocated string describing the + * most recent error for the context. + */ +char *ipmiconsole_ctx_errormsg (ipmiconsole_ctx_t c); + +/* + * ipmiconsole_ctx_status + * + * Returns the current context status. Primarily used to determine if + * a context submission (submitted non-blocking via + * ipmiconsole_engine_submit()) has been established or not. Returns + * IPMICONSOLE_CTX_STATUS_ERROR (-1) on error. + */ +ipmiconsole_ctx_status_t ipmiconsole_ctx_status (ipmiconsole_ctx_t c); + +/* + * ipmiconsole_ctx_fd + * + * Returns a file descriptor for console reading and writing after it + * has been submitted to the engine. Returns -1 on error. + * ipmiconsole_ctx_errnum() can be called to determine the cause of + * the error. + * + * If the user closes the file descriptor while the serial over lan + * session is established, the session will be torn down in the + * engine. + * + * If an error occurs on the engine side (for example a session + * timeout) the other end of the file descriptor pair (from which this + * fd is a part of) will be closed. The error can be determined via + * ipmiconsole_ctx_errnum(). The user of this file descriptor will + * typically see this affect via an EOF on a read() or an EPIPE on a + * write(). For alternate file descriptor behavior, see ENGINE flags + * above. + */ +int ipmiconsole_ctx_fd (ipmiconsole_ctx_t c); + +/* + * ipmiconsole_ctx_generate_break + * + * Generate a break on an active serial over LAN session. + * + * Returns 0 on success, -1 on error. ipmiconsole_ctx_errnum() can be + * called to determine the cause of the error. + */ +int ipmiconsole_ctx_generate_break (ipmiconsole_ctx_t c); + +/* + * ipmiconsole_ctx_destroy + * + * Destroy a context. Will close file descriptor retrieved from + * ipmiconsole_ctx_fd(). + */ +void ipmiconsole_ctx_destroy (ipmiconsole_ctx_t c); + +/* + * ipmiconsole_username_is_valid + * + * Convenience function to determine if a username is valid. Note that + * a NULL pointer, which would result in libipmiconsole using a + * default value, is considered an invalid input here. + * + * Returns 1 if username is valid, 0 if it is not. + */ +int ipmiconsole_username_is_valid (const char *username); + +/* + * ipmiconsole_password_is_valid + * + * Convenience function to determine if a password is valid. Note + * that a NULL pointer, which would result in libipmiconsole using a + * default value, is considered an invalid input here. + * + * Returns 1 if password is valid, 0 if it is not. + */ +int ipmiconsole_password_is_valid (const char *password); + +/* + * ipmiconsole_k_g_is_valid + * + * Convenience function to determine if a k_g is valid. Note that a + * NULL pointer, which would result in libipmiconsole using a default + * value, is considered an invalid input here. + * + * Returns 1 if k_g is valid, 0 if it is not. + */ +int ipmiconsole_k_g_is_valid (const unsigned char *k_g, unsigned int k_g_len); + +/* + * ipmiconsole_privilege_level_is_valid + * + * Convenience function to determine if a privilege level is valid. + * Note that a negative value, which would result in libipmiconsole + * using a default value, is considered an invalid input here. + * + * Returns 1 if privilege level is valid, 0 if it is not. + */ +int ipmiconsole_privilege_level_is_valid (int privilege_level); + +/* + * ipmiconsole_cipher_suite_id_is_valid + * + * Convenience function to determine if a cipher suite id is valid. + * Note that a negative value, which would result in libipmiconsole + * using a default value, is considered an invalid input here. + * + * Returns 1 if cipher suite id is valid, 0 if it is not. + */ +int ipmiconsole_cipher_suite_id_is_valid (int cipher_suite_id); + +/* + * ipmiconsole_workaround_flags_is_valid + * + * Convenience function to determine if workaround flags are valid. + * Note that a bitmask value of IPMICONSOLE_WORKAROUND_DEFAULT, which + * would result in libipmiconsole using a default value, is considered + * an invalid input here. + * + * Returns 1 if workaround flags are valid, 0 if they are not. + */ +int ipmiconsole_workaround_flags_is_valid (unsigned int workaround_flags); + +#ifdef __cplusplus +} +#endif + +#endif /* IPMICONSOLE_H */ diff --git a/source/freeipmi/usr/include/ipmidetect.h b/source/freeipmi/usr/include/ipmidetect.h new file mode 100644 index 00000000..ebe40b22 --- /dev/null +++ b/source/freeipmi/usr/include/ipmidetect.h @@ -0,0 +1,184 @@ +/*****************************************************************************\ + * $Id: ipmidetect.h,v 1.11 2010-02-08 22:02:31 chu11 Exp $ + ***************************************************************************** + * Copyright (C) 2007-2012 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 + * UCRL-CODE-228523 + * + * This file is part of Ipmidetect, tools and libraries for detecting + * IPMI nodes in a cluster. For details, see http://www.llnl.gov/linux/. + * + * Ipmidetect 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. + * + * Ipmidetect 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 Ipmidetect. If not, see . +\*****************************************************************************/ + +#ifndef IPMIDETECT_H +#define IPMIDETECT_H + +#include + +/* + * Libipmidetect 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 LIBIPMIDETECT_VERSION_MAJOR 1 +#define LIBIPMIDETECT_VERSION_MINOR 0 +#define LIBIPMIDETECT_VERSION_PATCH 0 + +/* + * Ipmidetect Error Codes + */ + +#define IPMIDETECT_ERR_SUCCESS 0 +#define IPMIDETECT_ERR_HANDLE_NULL 1 +#define IPMIDETECT_ERR_HANDLE_INVALID 2 +#define IPMIDETECT_ERR_CONNECT 3 +#define IPMIDETECT_ERR_CONNECT_TIMEOUT 4 +#define IPMIDETECT_ERR_HOSTNAME_INVALID 5 +#define IPMIDETECT_ERR_ISLOADED 6 +#define IPMIDETECT_ERR_NOTLOADED 7 +#define IPMIDETECT_ERR_OVERFLOW 8 +#define IPMIDETECT_ERR_PARAMETERS 9 +#define IPMIDETECT_ERR_NULLPTR 10 +#define IPMIDETECT_ERR_OUT_OF_MEMORY 11 +#define IPMIDETECT_ERR_NOTFOUND 12 +#define IPMIDETECT_ERR_CONF_PARSE 13 +#define IPMIDETECT_ERR_CONF_INPUT 14 +#define IPMIDETECT_ERR_CONF_INTERNAL 15 +#define IPMIDETECT_ERR_INTERNAL 16 +#define IPMIDETECT_ERR_ERRNUMRANGE 17 + +typedef struct ipmidetect *ipmidetect_t; + +/* + * ipmidetect_handle_create + * + * Create an ipmidetect handle. + * + * Returns handle on success, NULL on error + */ +ipmidetect_t ipmidetect_handle_create (void); + +/* ipmidetect_handle_destroy + * + * Destroy an ipmidetect handle. + * + * Returns 0 on success, -1 on error + */ +int ipmidetect_handle_destroy (ipmidetect_t handle); + +/* + * ipmidetect_load_data + * + * Loads data from the ipmidetectd daemon to determine which nodes + * have been detected. + * + * If 'hostname' is NULL, 'port' is <= 0, or 'timeout_len' <=0, the + * respective defaults will be used. + * + * Returns 0 on success, -1 on error + */ +int ipmidetect_load_data (ipmidetect_t handle, + const char *hostname, + int port, + int timeout_len); + +/* + * ipmidetect_errnum + * + * Return the most recent error number. + * + * Returns error number on success + */ +int ipmidetect_errnum (ipmidetect_t handle); + +/* + * ipmidetect_strerror + * + * Return a string message describing an error number. + * + * Returns pointer to message on success + */ +char *ipmidetect_strerror (int errnum); + +/* + * ipmidetect_errormsg + * + * Return a string message describing the most recent error. + * + * Returns pointer to message on success + */ +char *ipmidetect_errormsg (ipmidetect_t handle); + +/* + * ipmidetect_perror + * + * Output a message to standard error + */ +void ipmidetect_perror (ipmidetect_t handle, const char *msg); + +/* + * ipmidetect_get_detected_nodes_string + * + * Retrieve a ranged string of up nodes and store it in the buffer + * + * Returns 0 on success, -1 on error + */ +int ipmidetect_get_detected_nodes_string (ipmidetect_t handle, + char *buf, + int buflen); + +/* + * ipmidetect_get_undetected_nodes_string + * + * Retrieve a ranged string of undetected nodes and store it in the buffer + * + * Returns 0 on success, -1 on error + */ +int ipmidetect_get_undetected_nodes_string (ipmidetect_t handle, + char *buf, + int buflen); + +/* + * ipmidetect_is_node_detected + * + * Check if a node is detected + * + * Returns 1 if detected, 0 if undetected, -1 on error + */ +int ipmidetect_is_node_detected (ipmidetect_t handle, const char *node); + +/* + * ipmidetect_is_node_undetected + * + * Check if a node is undetected + * + * Returns 1 if undetected, 0 if detected, -1 on error + */ +int ipmidetect_is_node_undetected (ipmidetect_t handle, const char *node); + +#endif /* IPMIDETECT_H */ diff --git a/source/freeipmi/usr/lib/libfreeipmi.a b/source/freeipmi/usr/lib/libfreeipmi.a new file mode 100644 index 00000000..b61c088a Binary files /dev/null and b/source/freeipmi/usr/lib/libfreeipmi.a differ diff --git a/source/freeipmi/usr/lib/libfreeipmi.la b/source/freeipmi/usr/lib/libfreeipmi.la new file mode 100755 index 00000000..5e33cbd8 --- /dev/null +++ b/source/freeipmi/usr/lib/libfreeipmi.la @@ -0,0 +1,41 @@ +# libfreeipmi.la - a libtool library file +# Generated by ltmain.sh (GNU libtool) 2.2.6b +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libfreeipmi.so.17' + +# Names of this library. +library_names='libfreeipmi.so.17.0.0 libfreeipmi.so.17 libfreeipmi.so' + +# The name of the static archive. +old_library='libfreeipmi.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lpthread /usr/lib64/libgcrypt.la /usr/lib64/libgpg-error.la -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libfreeipmi. +current=17 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/lib' diff --git a/source/freeipmi/usr/lib/libfreeipmi.so.17.0.0 b/source/freeipmi/usr/lib/libfreeipmi.so.17.0.0 new file mode 100755 index 00000000..6d0d2d2f Binary files /dev/null and b/source/freeipmi/usr/lib/libfreeipmi.so.17.0.0 differ diff --git a/source/freeipmi/usr/lib/libipmiconsole.a b/source/freeipmi/usr/lib/libipmiconsole.a new file mode 100644 index 00000000..9b4923cb Binary files /dev/null and b/source/freeipmi/usr/lib/libipmiconsole.a differ diff --git a/source/freeipmi/usr/lib/libipmiconsole.la b/source/freeipmi/usr/lib/libipmiconsole.la new file mode 100755 index 00000000..b678db82 --- /dev/null +++ b/source/freeipmi/usr/lib/libipmiconsole.la @@ -0,0 +1,41 @@ +# libipmiconsole.la - a libtool library file +# Generated by ltmain.sh (GNU libtool) 2.2.6b +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libipmiconsole.so.2' + +# Names of this library. +library_names='libipmiconsole.so.2.3.2 libipmiconsole.so.2 libipmiconsole.so' + +# The name of the static archive. +old_library='libipmiconsole.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' /usr/lib/libfreeipmi.la -lpthread /usr/lib64/libgcrypt.la /usr/lib64/libgpg-error.la -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libipmiconsole. +current=5 +age=3 +revision=2 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/lib' diff --git a/source/freeipmi/usr/lib/libipmiconsole.so.2.3.2 b/source/freeipmi/usr/lib/libipmiconsole.so.2.3.2 new file mode 100755 index 00000000..476c3dd1 Binary files /dev/null and b/source/freeipmi/usr/lib/libipmiconsole.so.2.3.2 differ diff --git a/source/freeipmi/usr/lib/libipmidetect.a b/source/freeipmi/usr/lib/libipmidetect.a new file mode 100644 index 00000000..827874ad Binary files /dev/null and b/source/freeipmi/usr/lib/libipmidetect.a differ diff --git a/source/freeipmi/usr/lib/libipmidetect.la b/source/freeipmi/usr/lib/libipmidetect.la new file mode 100755 index 00000000..77b35df2 --- /dev/null +++ b/source/freeipmi/usr/lib/libipmidetect.la @@ -0,0 +1,41 @@ +# libipmidetect.la - a libtool library file +# Generated by ltmain.sh (GNU libtool) 2.2.6b +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libipmidetect.so.0' + +# Names of this library. +library_names='libipmidetect.so.0.0.0 libipmidetect.so.0 libipmidetect.so' + +# The name of the static archive. +old_library='libipmidetect.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libipmidetect. +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/lib' diff --git a/source/freeipmi/usr/lib/libipmidetect.so.0.0.0 b/source/freeipmi/usr/lib/libipmidetect.so.0.0.0 new file mode 100755 index 00000000..748878e1 Binary files /dev/null and b/source/freeipmi/usr/lib/libipmidetect.so.0.0.0 differ diff --git a/source/freeipmi/usr/lib/libipmimonitoring.a b/source/freeipmi/usr/lib/libipmimonitoring.a new file mode 100644 index 00000000..36f268fb Binary files /dev/null and b/source/freeipmi/usr/lib/libipmimonitoring.a differ diff --git a/source/freeipmi/usr/lib/libipmimonitoring.la b/source/freeipmi/usr/lib/libipmimonitoring.la new file mode 100755 index 00000000..e6d84bde --- /dev/null +++ b/source/freeipmi/usr/lib/libipmimonitoring.la @@ -0,0 +1,41 @@ +# libipmimonitoring.la - a libtool library file +# Generated by ltmain.sh (GNU libtool) 2.2.6b +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libipmimonitoring.so.5' + +# Names of this library. +library_names='libipmimonitoring.so.5.0.6 libipmimonitoring.so.5 libipmimonitoring.so' + +# The name of the static archive. +old_library='libipmimonitoring.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='' + +# Libraries that this one depends upon. +dependency_libs=' /usr/lib/libfreeipmi.la -lpthread /usr/lib64/libgcrypt.la /usr/lib64/libgpg-error.la -lm' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libipmimonitoring. +current=5 +age=0 +revision=6 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/usr/lib' diff --git a/source/freeipmi/usr/lib/libipmimonitoring.so.5.0.6 b/source/freeipmi/usr/lib/libipmimonitoring.so.5.0.6 new file mode 100755 index 00000000..efd7ac28 Binary files /dev/null and b/source/freeipmi/usr/lib/libipmimonitoring.so.5.0.6 differ diff --git a/source/freeipmi/usr/lib/pkgconfig/libfreeipmi.pc b/source/freeipmi/usr/lib/pkgconfig/libfreeipmi.pc new file mode 100644 index 00000000..c47417d3 --- /dev/null +++ b/source/freeipmi/usr/lib/pkgconfig/libfreeipmi.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: libfreeipmi +Description: FreeIPMI library +Version: 1.5.1 +Cflags: -I${includedir} +Libs: -L${libdir} -lfreeipmi diff --git a/source/freeipmi/usr/lib/pkgconfig/libipmiconsole.pc b/source/freeipmi/usr/lib/pkgconfig/libipmiconsole.pc new file mode 100644 index 00000000..f836cf00 --- /dev/null +++ b/source/freeipmi/usr/lib/pkgconfig/libipmiconsole.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: libipmiconsole +Description: FreeIPMI library for serial-over-lan (SOL) remote console access +Version: 1.5.1 +Cflags: -I${includedir} +Libs: -L${libdir} -lipmiconsole diff --git a/source/freeipmi/usr/lib/pkgconfig/libipmidetect.pc b/source/freeipmi/usr/lib/pkgconfig/libipmidetect.pc new file mode 100644 index 00000000..cdaf44b9 --- /dev/null +++ b/source/freeipmi/usr/lib/pkgconfig/libipmidetect.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: libipmidetect +Description: FreeIPMI library to discover IPMI capable hardware +Version: 1.5.1 +Cflags: -I${includedir} +Libs: -L${libdir} -lipmidetect diff --git a/source/freeipmi/usr/lib/pkgconfig/libipmimonitoring.pc b/source/freeipmi/usr/lib/pkgconfig/libipmimonitoring.pc new file mode 100644 index 00000000..9cd914ac --- /dev/null +++ b/source/freeipmi/usr/lib/pkgconfig/libipmimonitoring.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: libipmimonitoring +Description: FreeIPMI library for IPMI system event and sensor monitoring +Version: 1.5.1 +Cflags: -I${includedir} +Libs: -L${libdir} -lipmimonitoring diff --git a/source/freeipmi/usr/sbin/bmc-config b/source/freeipmi/usr/sbin/bmc-config new file mode 100755 index 00000000..4371caa3 --- /dev/null +++ b/source/freeipmi/usr/sbin/bmc-config @@ -0,0 +1,15 @@ +#!/bin/sh + +options="--category=core" + +while test $# != 0 + do + case "$1" in + *) + options="$options $1" + ;; + esac + shift +done + +exec /usr/sbin/ipmi-config $options diff --git a/source/freeipmi/usr/sbin/bmc-device b/source/freeipmi/usr/sbin/bmc-device new file mode 100755 index 00000000..6c4ebf9a Binary files /dev/null and b/source/freeipmi/usr/sbin/bmc-device differ diff --git a/source/freeipmi/usr/sbin/bmc-info b/source/freeipmi/usr/sbin/bmc-info new file mode 100755 index 00000000..ffcdb4a0 Binary files /dev/null and b/source/freeipmi/usr/sbin/bmc-info differ diff --git a/source/freeipmi/usr/sbin/bmc-watchdog b/source/freeipmi/usr/sbin/bmc-watchdog new file mode 100755 index 00000000..3ee50057 Binary files /dev/null and b/source/freeipmi/usr/sbin/bmc-watchdog differ diff --git a/source/freeipmi/usr/sbin/ipmi-chassis b/source/freeipmi/usr/sbin/ipmi-chassis new file mode 100755 index 00000000..74ba2005 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-chassis differ diff --git a/source/freeipmi/usr/sbin/ipmi-chassis-config b/source/freeipmi/usr/sbin/ipmi-chassis-config new file mode 100755 index 00000000..7e216897 --- /dev/null +++ b/source/freeipmi/usr/sbin/ipmi-chassis-config @@ -0,0 +1,15 @@ +#!/bin/sh + +options="--category=chassis" + +while test $# != 0 + do + case "$1" in + *) + options="$options $1" + ;; + esac + shift +done + +exec /usr/sbin/ipmi-config $options diff --git a/source/freeipmi/usr/sbin/ipmi-config b/source/freeipmi/usr/sbin/ipmi-config new file mode 100755 index 00000000..3af93c1b Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-config differ diff --git a/source/freeipmi/usr/sbin/ipmi-dcmi b/source/freeipmi/usr/sbin/ipmi-dcmi new file mode 100755 index 00000000..90bbdd5b Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-dcmi differ diff --git a/source/freeipmi/usr/sbin/ipmi-fru b/source/freeipmi/usr/sbin/ipmi-fru new file mode 100755 index 00000000..19ffdcba Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-fru differ diff --git a/source/freeipmi/usr/sbin/ipmi-locate b/source/freeipmi/usr/sbin/ipmi-locate new file mode 100755 index 00000000..3ba96ab0 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-locate differ diff --git a/source/freeipmi/usr/sbin/ipmi-oem b/source/freeipmi/usr/sbin/ipmi-oem new file mode 100755 index 00000000..c5f194ca Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-oem differ diff --git a/source/freeipmi/usr/sbin/ipmi-pef-config b/source/freeipmi/usr/sbin/ipmi-pef-config new file mode 100755 index 00000000..c0748bfb --- /dev/null +++ b/source/freeipmi/usr/sbin/ipmi-pef-config @@ -0,0 +1,15 @@ +#!/bin/sh + +options="--category=pef" + +while test $# != 0 + do + case "$1" in + *) + options="$options $1" + ;; + esac + shift +done + +exec /usr/sbin/ipmi-config $options diff --git a/source/freeipmi/usr/sbin/ipmi-pet b/source/freeipmi/usr/sbin/ipmi-pet new file mode 100755 index 00000000..2c911c0f Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-pet differ diff --git a/source/freeipmi/usr/sbin/ipmi-raw b/source/freeipmi/usr/sbin/ipmi-raw new file mode 100755 index 00000000..143d80d0 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-raw differ diff --git a/source/freeipmi/usr/sbin/ipmi-sel b/source/freeipmi/usr/sbin/ipmi-sel new file mode 100755 index 00000000..2aa17271 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-sel differ diff --git a/source/freeipmi/usr/sbin/ipmi-sensors b/source/freeipmi/usr/sbin/ipmi-sensors new file mode 100755 index 00000000..00904f7b Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmi-sensors differ diff --git a/source/freeipmi/usr/sbin/ipmi-sensors-config b/source/freeipmi/usr/sbin/ipmi-sensors-config new file mode 100755 index 00000000..cec13d3e --- /dev/null +++ b/source/freeipmi/usr/sbin/ipmi-sensors-config @@ -0,0 +1,15 @@ +#!/bin/sh + +options="--category=sensors" + +while test $# != 0 + do + case "$1" in + *) + options="$options $1" + ;; + esac + shift +done + +exec /usr/sbin/ipmi-config $options diff --git a/source/freeipmi/usr/sbin/ipmiconsole b/source/freeipmi/usr/sbin/ipmiconsole new file mode 100755 index 00000000..b6d745d6 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmiconsole differ diff --git a/source/freeipmi/usr/sbin/ipmidetect b/source/freeipmi/usr/sbin/ipmidetect new file mode 100755 index 00000000..c4147085 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmidetect differ diff --git a/source/freeipmi/usr/sbin/ipmidetectd b/source/freeipmi/usr/sbin/ipmidetectd new file mode 100755 index 00000000..798b8ea1 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmidetectd differ diff --git a/source/freeipmi/usr/sbin/ipmimonitoring b/source/freeipmi/usr/sbin/ipmimonitoring new file mode 100755 index 00000000..46fd1d31 --- /dev/null +++ b/source/freeipmi/usr/sbin/ipmimonitoring @@ -0,0 +1,26 @@ +#!/bin/sh + +options="--output-sensor-state" +verboseset=0 + +while test $# != 0 + do + case "$1" in + --legacy-output) + options="$options --ipmimonitoring-legacy-output" + ;; + -v) + verboseset=1 + ;; + *) + options="$options $1" + ;; + esac + shift +done + +if [ "$verboseset" = "0" ]; then + options="$options --ignore-not-available-sensors" +fi + +exec /usr/sbin/ipmi-sensors $options diff --git a/source/freeipmi/usr/sbin/ipmiping b/source/freeipmi/usr/sbin/ipmiping new file mode 100755 index 00000000..444b2c96 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmiping differ diff --git a/source/freeipmi/usr/sbin/ipmipower b/source/freeipmi/usr/sbin/ipmipower new file mode 100755 index 00000000..1a797a96 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmipower differ diff --git a/source/freeipmi/usr/sbin/ipmiseld b/source/freeipmi/usr/sbin/ipmiseld new file mode 100755 index 00000000..5288fae7 Binary files /dev/null and b/source/freeipmi/usr/sbin/ipmiseld differ diff --git a/source/freeipmi/usr/sbin/rmcpping b/source/freeipmi/usr/sbin/rmcpping new file mode 100755 index 00000000..11fdbd9e Binary files /dev/null and b/source/freeipmi/usr/sbin/rmcpping differ diff --git a/source/freeipmi/usr/share/doc/freeipmi/AUTHORS b/source/freeipmi/usr/share/doc/freeipmi/AUTHORS new file mode 100644 index 00000000..0f34e844 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/AUTHORS @@ -0,0 +1,57 @@ +Maintainer: +Albert Chu + +Developers: +Albert Chu +Anand Babu +Anand Avati +Balamurugan +Ian Zimmerman +Raghavendra + +Patch Contributions: +Dmitry Frolov +Ingo van Lil +Levi Pearson +Tom Zimmerman +Phil Knirsch +Jan Forch +Fillod Stephane +Holger Liebig +Dan Lukes +Arnaud Quette +Diego Elio Pettenò +Kaiwang Chen +Jan Safranek +Thomas Renninger +Dave Love +Dan Lukes +Shashi Dande +Markus Blank-Burian +David Binderman +Denys Vlasenko +Ales Ledvinka +Klaus Kaempf +Dick Detweiler +Dave Walker , +Claudio Cesar Sanchez Tejeda +Mark Rusk +And probably others ... + +Package Maintainers: +Dmitry Frolov - FreeBSD +Phil Knirsch - Redhat & Fedora +Jan Safranek - Redhat & Fedora +Yaroslav Halchenko - Debian + +Contrib Contributions: +Kaiwang Chen + +Web Site: +Anand Babu + +Evaluation/Testing/Reverse Engineering: +Joseph Ruscio +Shuichi Ihara +Ryan Cox +and others ... diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING b/source/freeipmi/usr/share/doc/freeipmi/COPYING new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ZRESEARCH b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ZRESEARCH new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ZRESEARCH @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.bmc-watchdog b/source/freeipmi/usr/share/doc/freeipmi/COPYING.bmc-watchdog new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.bmc-watchdog @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-dcmi b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-dcmi new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-dcmi @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-fru b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-fru new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmi-fru @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiconsole b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiconsole new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiconsole @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmidetect b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmidetect new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmidetect @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmimonitoring b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmimonitoring new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmimonitoring @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiping b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiping new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiping @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmipower b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmipower new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmipower @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiseld b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiseld new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.ipmiseld @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.pstdout b/source/freeipmi/usr/share/doc/freeipmi/COPYING.pstdout new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.pstdout @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/source/freeipmi/usr/share/doc/freeipmi/COPYING.sunbmc b/source/freeipmi/usr/share/doc/freeipmi/COPYING.sunbmc new file mode 100644 index 00000000..8085cda9 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/COPYING.sunbmc @@ -0,0 +1,35 @@ +The file libfreeipmi/driver/freeipmi_bmc_intf.h is from ipmitool +(http://sourceforge.net/projects/ipmitool) and comes with the +following license. + +---- +Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +Redistribution of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +Redistribution in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +Neither the name of Sun Microsystems, Inc. or the names of +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. + +This software is provided "AS IS," without a warranty of any kind. +ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, +INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. +SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE +FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING +OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL +SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, +OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR +PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF +LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, +EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +---- diff --git a/source/freeipmi/usr/share/doc/freeipmi/ChangeLog b/source/freeipmi/usr/share/doc/freeipmi/ChangeLog new file mode 100644 index 00000000..9942f14c --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/ChangeLog @@ -0,0 +1,21978 @@ +2015-12-01 Albert Chu + + * NEWS, configure.ac: Update for release. + + * Tagged freeipmi-1-5-1 + +2015-11-04 Albert Chu + + * configure.ac, freeipmi.spec.in: Add systemd support. + +2015-11-02 Albert Chu + + * libfreeipmi/sel/ipmi-sel-string.c: Code cleanup. + +2015-10-29 Albert Chu + + * configure.ac: Update library versions for eventually 1.5 release. + +2015-10-29 Albert Chu + + * ipmi-oem/ipmi-oem-intelnm.c: Fix typo. + + * ipmi-oem/ipmi-oem-intelnm.c: Fix logic error in searching code in various "get" functions. + + * ipmi-oem/ipmi-oem-intelnm.c: Fix logic errors in new command additions. + + * libfreeipmi/cmds/ipmi-oem-intel-node-manager-cmds.c: Fix error in new templates. + +2015-10-29 Albert Chu + + * doc/freeipmi-faq.texi: URL updates and minor doc update. + +2015-10-28 Albert Chu + + * Add warnings to deprecated header files. + + * Various code cleanup. + +2015-10-27 Albert Chu + + * libfreeipmi/include/freeipmi/templates/: Move some files to oem subdirectory. + + * freeipmi.spec.in: Update for new header directories. + + * libfreeipmi/freeipmi/spec/oem/ipmi-slave-address-oem-linux-kernel-spec.h: New file. + + * libfreeipmi/include/Makefile.am, + libfreeipmi/include/freeipmi/freeipmi.h.in, + libfreeipmi/include/freeipmi/spec/ipmi-slave-address-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-slave-address-oem-spec.h: + Update for new file. + + * libfreeipmi/: Various code cleanup. + +2015-10-21 Albert Chu + + * Various minor bug fixes, cleanup, and distcheck fixes. + +2015-10-20 Albert Chu + + Re-org of OEM code for future. + + * libfreeipmi/include/freeipmi/sdr/, + libfreeipmi/include/freeipmi/record-format: Split OEM .h files + into vendor specific files. + + * libfreeipmi/sdr, libfreeipmi/record-format: Split OEM files into + specific vendor files. + + * ipmi-sensors/: Split OEM files into motherboard files. + + * libfreeipmi/sel: Split OEM files into motherboard files. + +2015-10-19 Albert Chu + + Re-org of OEM code for future. + + * libfreeipmi/include/freeipmi/spec/: Split OEM .h files into vendor specific files. + + * libfreeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.c: + Split OEM files into specific vendor files. + +2015-10-19 Albert Chu + + Merge branch intelnm30 + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h, + libfreeipmi/sel/ipmi-sel-string-intel-node-manager.c: Support + Intel NM 3.0 SEL events. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-numbers-oem-spec.h: + Add new sensor numbers. + + * libfreeipmi/include/freeipmi/cmds/ipmi-oem-intel-node-manager-cmds.h, + libfreeipmi/include/freeipmi/api/ipmi-oem-intel-node-manager-api.h + * libfreeipmi/cmds/ipmi-oem-intel-node-manager-cmds.c, + libfreeipmi/api/ipmi-oem-intel-node-manager-api.c, + ipmi-oem/ipmi-oem-intelnm.c: Update for Intel NM 3.0 changes. + +2015-10-16 Albert Chu + + * ipmi-oem/ipmi-oem-intelnm.c (ipmi_oem_intelnm_get_node_manager_statistics): + Fix errors in units in output. + + * ipmi-oem/ipmi-oem-intelnm.c (ipmi_oem_intelnm_set_node_manager_policy): + Fix error in setting logic. + + * libfreeipmi/include/freeipmi/api/ipmi-oem-intel-node-manager-cmds-api.h, + ipmi_cmd_oem_intel_node_manager_set_node_manager_policy_boot_time_policy (ipmi_cmd_oem_intel_node_manager_set_node_manager_policy_boot_time_policy): + New function. + + * libfreeipmi/include/freeipmi/cmds/ipmi-oem-intel-node-manager-cmds.h, + libfreeipmi/cmds/ipmi-oem-intel-node-manager-cmds.c (fill_cmd_oem_intel_node_manager_set_node_manager_policy_boot_time_policy): + New function. + +2015-09-30 Albert Chu + + Merge branch intel2600v3. + + * libfreeipmi/include/freeipmi/spec/ipmi-product-id-spec.h: Add + Intel product id's for S2600KP, S2600WT2, S2600WTT. + + * libfreeipmi/sel/ipmi-sel-string-intel.c: Support Intel Node + Manager SEL events on Intel S2600KP, S2600WT2, S2600WTT. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-numbers-oem-spec.h: + Add sensor numbers for Intel S2600KP, S2600WT2, S2600WTT. + + * libfreeipmi/include/freeipmi/spec/ipmi-slave-address-oem-spec.h: + Add slave addresses for Intel S2600KP, S2600WT2, S2600WTT. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h, + libfreeipmi/sel/ipmi-sel-string-intel.c: Support OEM sel events + for Intel S2600KP, S2600WT2, S2600WTT. + + * man/ipmi-sel.8.pre.in: Update motherboard support list. + +2015-10-14 Albert Chu + + * libfreeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.c: + Fix typo taret -> target. + +2015-10-14 Albert Chu + + * ipmi-oem/: Update get-power-supply-status2 on Supermicro based + on mailing list discussion. + +2015-09-30 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-slave-address-spec.h, + libfreeipmi/include/freeipmi/record-format/ipmi-sel-oem-record-format.h, + libfreeipmi/sel/ipmi-sel-string.c, + libfreeipmi/sel/ipmi-sel-string-linux-kernel.h, + libfreeipmi/sel/ipmi-sel-string-linux-kernel.c: Support Linux + kernel panics in SEL. + +2015-09-29 Newell Jensen + + * ipmi-locate/ipmi-locate.c (main), + libfreeipmi/locate/ipmi-locate-smbios.c (ipmi_locate_smbios_get_device_info), + libfreeipmi/locate/ipmi-locate-acpi-spmi.c (ipmi_locate_acpi_spmi_get_device_info), + libfreeipmi/locate/ipmi-locate-dmidecode.c (ipmi_locate_dmidecode_get_device_info): + Fix ipmi locate probing on arm32 & arm64. + +2015-09-24 Newell Jensen + + * ipmi-locate/ipmi-locate.c (main): Fix probing issue on arm32 & arm64 + systems. + +2015-09-23 Albert Chu + + * libfreeipmi/include/freeipmi/record-format/ipmi-fru-information-record-format.h, + libfreeipmi/fru/: Update FRU Multirecord Area for NVM Express + record range (IPMI Errata 7). + +2015-09-15 Albert Chu + + * ipmi-oem/: Update get-power-supply-status2 on Supermicro based + on mailing list discussion. + +2015-09-09 Albert Chu + + * ipmi-oem/: Support get-power-supply-status2 on Supermicro. + + * libfreeipmi/util/ipmi-error-util.c (ipmi_completion_code_strerror_r): + Support Master read/write specific error codes. + +2015-08-18 Craig + + * ipmi-sensors/ipmi-sensors-output-common.c (ipmi_sensors_get_thresholds): + Handle additional corner case reading sensor thresholds. + +2015-08-18 Albert Chu + + * ipmi-sensors/ipmi-sensors-output-common.c (ipmi_sensors_get_thresholds): + Handle several additional error cases with getting sensor + thresholds. + +2015-07-30 Albert Chu + + * ipmi-config/ipmi-config/ipmi-config-category-dcmi-dcmi-conf-section.c (asset_tag_commit): + Revert workaround for Supermicro motherboard. + +2015-07-27 Albert Chu + + * ipmi-config/ipmi-config/ipmi-config-category-dcmi-dcmi-conf-section.c (asset_tag_commit): + Add workaround for Supermicro motherboard. + +2015-07-27 Albert Chu + + * ipmi-config/ipmi-config-category-chassis-boot-flags.c (_get_boot_flags): + Fix debug message output error. + +2015-06-24 Albert Chu + + * Update copyright year globally. + +2015-06-01 Albert Chu + + * Audit and fix all strtol parse corner cases. + +2015-06-01 James Buren + + * ipmi-config/ipmi-config-argp.c (_ipmi_config_parse_channel_number): + Fix strtol parse corner case. + +2015-04-02 Albert Chu + + * man/ipmiconsole.8.pre.in: Remove duplicate information. (bug + #44698) + +2015-01-06 Albert Chu + + * libfreeipmi/libcommon/ipmi-crypt.c (crypt_init): Only call + gcry_control w/ GCRYCTL_SET_THREAD_CBS once. It appears newer + version of libgcrypt cannot handle entering this function + simulatenously by multiple threads, leading to segfaults. + +2015-01-06 Albert Chu + + * common/toolcommon/tool-cmdline-common.c: Fix parsing corner case + with --fanout option. + +2014-12-10 Albert Chu + + * ipmi-config/ipmi-config-category-core-user-sections.c (_set_user_access): + Workaround issue on Supermicro X10DDW-i. + +2014-12-10 Albert Chu + + * ipmi-config/ipmi-config-category-pef-alert-policy-table.c (_set_alert_policy_table): + Use convenience function ipmi_config_find_section appropriately. + +2014-12-09 Albert Chu + + * ipmi-config/ipmi-config-category-core-lan-conf-section.c: Fix + vlan_id from uint8_t to uint16_t. + + Found by jbd at jbdenis dot net + +2014-12-09 Albert Chu + + * libfreeipmi/: Support Get Device SDR Info, Get Device SDR, and + Reserve Device SDR Repository commands in API as needed. + +2014-11-14 Albert Chu + + * libfreeipmi/driver/ipmi-sunbmc-driver.c, + libfreeipmi/driver/ipmi-ssif-driver.c, + libfreeipmi/driver/ipmi-openipmi-driver.c: Loop on select() call + if interrupted by EINTR. Issue found by Robin Geyer (robin dot geyer at tu-dresden dot de) + +2014-11-14 Albert Chu + + * bmc-info/bmc-info.c (display_system_info_common): Fix cut & + paste error handling bug. + +2014-11-07 Albert Chu + + * libfreeipmi/spec/ipmi-sensor-and-event-code-tables-spec.c: Fix + typo. (Found by Werner Fischer). + +2014-11-03 Albert Chu + + * Found by Satya Nishtala + + Fix typo throughout with "Tegulu" language, which should be + "Telugu". Typo exists in originally FRU specification. + +2014-10-30 Albert Chu + + * doc/freeipmi-faq.texi: Fix typo and update with examples. Add + support updates. + +2014-10-29 Albert Chu + + Merge branch ddr4 + + * libfreeipmi/include/freeipmi/record-format/ipmi-fru-dimmspd-record-format.h, + libfreeipmi/record-format/ipmi-fru-dimmspd-record-format.c, + libfreeipmi/include/freeipmi/templates/ipmi-fru-dimmspd-record-format-templates.h: + Add DDR4 SPD FRU support. + + * libfreeipmi/include/freeipmi/spec/ipmi-jedec-manufacturer-identification-code-spec.h, + libfreeipmi/spec/ipmi-jedec-manufacturer-identification-code-spec.c, + libfreeipmi/spec/jedec-raw.txt, + libfreeipmi/util/ipmi-jedec-manufacturer-identification-code-util.c: + Update jedec manufacturer listings. + + * libfreeipmi/spec/ipmi-iana-enterprise-numbers-spec.c: Update + IANA manufacturer listings. + + * ipmi-fru/: Support DDR4 module output. Add extra output to DDR3 modules. + +2014-10-22 Albert Chu + + * ipmi-chassis/ipmi-chassis-argp.c: Options now require arguments, + remove OPTION_ARG_OPTIONAL flag in parsing. + + * ipmi-chassis/: Add comments on legacy options. + +2014-10-21 Albert Chu + + * ipmi-raw/: Fix corner case with empty lines when inputting + commands via standard in or --file. + +2014-10-14 Albert Chu + + * doc/freeipmi-faq.texi: Add notes on ipmitool vs ipmi-sensors + "ok" reading. + +2014-08-19 Mark Rusk + + * libfreeipmi/locate/ipmi-locate-dmidecode.c: Fix multiple UEFI + bugs. Remove assumption EFI only works with IA64. Fix endline + parse issue. + +2014-08-14 Albert Chu + + * Support SSIF IPMB bridging. + +2014-07-15 Markus Blank-Burian + + * Support Supermicro H8DGU and H8DG6 systems. + +2014-07-14 Yaroslav Halchenko + + * Fix various typos in code and documentation. + +2014-07-10 Albert Chu + + * man/libipmiconsole.3.pre.in: Document libipmiconsole.conf manpage. + +2014-07-01 Albert Chu + + * libipmiconsole/ipmiconsole_processing.c (_check_payload_sizes_legitimate): + Fix max_sol_character_send_size corner case calculation. Should + be based on "inbound" size not "outbound" size. + +2014-05-30 Shashi Dande + + * libfreeipmi/api/ipmi-ssif-driver-api.h, + libfreeipmi/api/ipmi-ssif-driver-api.c (api_ssf_cmd): Retry reads + as needed. + +2014-05-07 Klaus Kaempf + + * ipmipower/ipmipower_ping.c: Fix compile bug. + +2014-03-19 Albert Chu + + * ipmipower/: Support 'ipmiping' workaround. + +2014-03-19 David Binderman + + * libfreeipmi/interpret/ipmi-interpret.c: Fix leap before you look + bugs. + +2014-03-13 Albert Chu + + * ipmi-oem/: Support Supermicro get-power-supply-status + and get-pmbus-power-supply-status commands. + +2014-03-12 Albert Chu + + * doc/freeipmi-faq.texi: Add notes on ipmi-detect for IPMI + discovery. + +2014-02-21 Albert Chu + + * libipmiconsole/ipmiconsole_processing.c (_sol_retransmission_timeout): + Only increment sol packet sequence number for workaround once. + +2014-02-20 Albert Chu + + * libipmiconsole, ipmiconsole, common/parsecommon: Support + SERIAL_ALERTS_DEFERRED workaround. Support + INCREMENT_SOL_PACKET_SEQUENCE workaround. + +2014-02-20 Albert Chu + + * libfreeipmi/include/freeipmi/templates/ipmi-rmcpplus-support-and-payload-cmds-templates.h, + libfreeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.c: Fix + payload, two fields were flipped by accident. Make fields required and not optional. + +2014-02-06 Albert Chu + + * Porting issues discovered by Mark Pettit + + http://theviewfrom8.blogspot.com/2012/11/how-to-build-freeipmi-on-mac-os-x.html + + basic code derived from his webpage. + + * libfreeipmi/driver/ipmi-semaphores.h: Union semun defined in + sys/sem.h for FreeBSD and APPLE. + + * configure.ac, common/toolcommon/pstdout.c, + common/toolcommon/tool-daemon-common.h: sighandler_t not defined + in signal.h, handled appropriately. + +2014-01-27 Anonymous + + * man/Makefile.am: Fix man pages built with cpp-4.8 + +2014-01-15 Albert Chu + + * libfreeipmi/sel/, libfreeipmi/include/freeipmi/spec/, Support + OEM events for Intel Windmill motherboards in ipmi-sel. + + * freeipmi/record-format/ipmi-sel-oem-record-format.h: New file + + * libfreeipmi/include/freeipmi/util/ipmi-sensor-and-event-code-tables-util.h, + libfreeipmi/util/ipmi-sensor-and-event-code-tables-util.c (ipmi_get_oem_sensor_type_message, + ipmi_get_event_messages): Adjust API for new OEM sensors with non-standard config. + + * ipmi-sensors/, libipmimonitoring/: Adjust for changes in API. + +2014-01-09 Albert Chu + + * Adjust comments/documentation for Quanta Winterfell & Wiwynn + Windmill. Motherboard is Intel Windmill on all of them. + +2014-01-08 Albert Chu + + * Adjust comments/documentation for Quanta Winterfell & Wiwynn + Windmill. Motherboard in use was previously misidentified. + +2014-01-07 Albert Chu + + Add DCMI configuration support in ipmi-config. + + * ipmi-config/: Add basic DCMI configuration support. + + * man/: Add appropriately DCMI config subsections to manpages. + + * libfreeipmi/: Fix various corner cases. + + * ipmi-config/, ipmi-sensors/: Fix various corner cases for Quanta + Winterfell motherboard. + + * man/: Document workarounds. + +2014-01-03 Albert Chu + + * Update copyright globally. + +2014-01-03 Albert Chu + + * ipmi-dcmi/, man/, ipmi-config/: Fix various English and typos. + +2013-12-20 Albert Chu + + Add 'inteldcmi' inband driver. + + * libfreeipmi/: Add support for "inteldcmi" in-band driver. + + * README, doc/, man/: Add documentation for inteldcmi driver. + +2013-12-20 Albert Chu + + * man/freeipmi.7.pre.in, README: Fix some English. + + * man/libfreeipmi.3.pre.in: Add forgotten driver. + +2013-12-19 Dave Love + + * ipmi-sensors/ipmi-sensors.c (_calculate_record_ids): Check + record number against array length. + + * common/toolcommon/tool-sensor-common.h (MAX_SENSOR_RECORD_IDS): + Increase to 1024. + +2013-12-12 Albert Chu + + * bmc-info/: Support 'guidformat' workaround flag. + + * bmc-info/: Fix default GUID output format, one field appears to + be output incorrectly. + +2013-12-12 Albert Chu + + * bmc-info/: Support output of System GUID by default and support + --get-system-guid option. + +2013-12-12 Albert Chu + + * ipmi-config/: Decimal values that cannot be encoded accurately + now report a clearer error message through the + IPMI_CONFIG_VALIDATE_VALUE_CANNOT_BE_ENCODED_ACCURATELY validate + error code. + +2013-12-11 Albert Chu + + * ipmi-config/: Re-work error message outputs so fatal error + messages are always output. + +2013-12-11 Albert Chu + + * libfreeipmi/util/ipmi-sensor-util.c (ipmi_sensor_decode_raw_value): + Fix error in input checks. + +2013-12-11 Albert Chu + + * ipmi-config/ipmi-config-category-sensors-threshold-section.c: + Fix error message cut & paste typo. + +2013-12-05 Albert Chu + + * ipmiseld/ipmiseld.c: Fix error message typo. + +2013-12-02 Albert Chu + + * freeipmi.spec.in: Add forgotten manpage. + +2013-12-02 Albert Chu + + * doc/freeipmi-faq.txi: Update with new information on OS issues. + +2013-12-02 Albert Chu + + * bmc-watchdog/bmc-watchdog.c (_fiid_obj_get_safe): New function. + + * bmc-watchdog/bmc-watchdog.c (_get_watchdog_timer_cmd): Use + _fiid_obj_get_safe and do not exit on data not available errors. + +2013-11-26 Albert Chu + + * doc/freeipmi-faq.txi: Update with new information. + +2013-11-14 Albert Chu + + * libfreeipmi/sdr/ipmi-sdr-cache-create.c (ipmi_sdr_cache_create): + Fix bug w/ Fujitsu SDR count workaround. + +2013-11-14 Albert Chu + + * ipmiconsole/, libipmiconsole/: Support solchannelsupport + workaround option / + IPMICONSOLE_WORKAROUND_SKIP_CHANNEL_PAYLOAD_SUPPORT workaround + flag. + +2013-11-13 Albert Chu + + * doc/freeipmi-bugs-issues-and-workarounds.txt, + man/manpage-common-workaround-outofband-15-text.man: Document + workaround for Quanta Winterfell. + +2013-11-13 Albert Chu + + Update with Errata 5 changes to IPMI 2.0 spec. + + * libfreeipmi/cmds/ipmi-pef-and-alerting-cmds.c, + libfreeipmi/include/freeipmi/templates/ipmi-pef-and-alerting-cmds-templates.h, + ipmi-config/ipmi-config-category-pef-alert-string.c: + Filter numbers are now 8 bit fields instead of 7 bit fields. + + * libfreeipmi/util/ipmi-cipher-suite-util.c, + libfreeipmi/include/freeipmi/util/ipmi-cipher-suite-util.h: Cipher + Suites 15-19 now fully confirmed, remove comments + + * etc/freeipmi_interpret_sensor.conf, + etc/freeipmi_interpret_sel.conf, + libipmimonitoring/ipmi_monitoring_bitmasks.h, + libipmimonitoring/ipmi_monitoring_offsets.h, + man/freeipmi_interpret_sel.conf.5.pre.in, + man/freeipmi_interpret_sensor.conf.5.pre.in, + libfreeipmi/interpret/ipmi-interpret-config-sel.c, + libfreeipmi/interpret/ipmi-interpret-config-sensor.c, + libfreeipmi/spec/ipmi-sensor-and-event-code-tables-spec.c, + libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h: + Support new offset for power supply sensor. + + * etc/freeipmi_interpret_sensor.conf, + etc/freeipmi_interpret_sel.conf, + libipmimonitoring/ipmi_monitoring_bitmasks.h, + libipmimonitoring/ipmi_monitoring_offsets.h, + man/freeipmi_interpret_sel.conf.5.pre.in, + man/freeipmi_interpret_sensor.conf.5.pre.in, + libfreeipmi/interpret/ipmi-interpret-config-sel.c, + libfreeipmi/interpret/ipmi-interpret-config-sensor.c, + libfreeipmi/spec/ipmi-sensor-and-event-code-tables-spec.c, + libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h: + Support new offset for os boot sensor. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-types-spec.h: + Document legacy/new name choice. + + * libfreeipmi/include/freeipmi/cmds/ipmi-messaging-support-cmds.h, + libfreeipmi/include/freeipmi/spec/ipmi-system-info-parameters-spec.h, + libfreeipmi/include/freeipmi/templates/ipmi-messaging-support-cmds-templates.h, + libfreeipmi/include/freeipmi/api/ipmi-messaging-support-cmds-api.h, + libfreeipmi/cmds/ipmi-messaging-support-cmds.c, + libfreeipmi/api/ipmi-messaging-support-cmds-api.c: Support new + System Info Parameters Present OS Version Number, BMC URL, and + Base OS/Hypervisor URL. + + * bmc-info/bmc-info.c: Support Present OS Version Number, BMC URL, + and Base OS/Hypervisor URL system info output. + + * bmc-device/: Support --set-present-os-version-number, + --set-bmc-url, --set-base-os-hypervisor-url. + +2013-10-30 Denys Vlasenko + + * libfreeipmi/util/ipmi-rmcpplus-util.c (ipmi_rmcpplus_check_rakp_4_integrity_check_value): + Fix incorrect secure memset call. + +2013-10-23 Denys Vlasenko + + * libfreeipmi/util/ipmi-rmcpplus-util.c (ipmi_calculate_sik): Fix + big endian bug. + +2013-09-24 Albert Chu + + * man/ipmi-sel.8.pre.in: Add note about very verbose output. + +2013-09-23 Albert Chu + + * libfreeipmi/sel/ipmi-sel-string.c (_output_oem_record_data): + Output record type under verbose mode. + (Feature recommended by Rob Swindell - swindell at broadcom dot + com). + +2013-09-18 Albert Chu + + Merge branch intelnm20 ; Add support for Intel Node Manager 2.0. + + * libfreeipmi/sel/ipmi-sel-string-intel-node-manager.c: Support + changes to Intel NM 2.0 events and add new Intel NM 2.0 events. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-event-reading-type-code-oem-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-sensor-numbers-oem-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-sensor-types-oem-spec.h, + libfreeipmi/include/freeipmi/cmds/ipmi-oem-intel-node-manager-cmds.h, + libfreeipmi/include/freeipmi/api/ipmi-oem-intel-node-manager-cmds-api.h, + libfreeipmi/include/freeipmi/templates/ipmi-oem-intel-node-manager-cmds-templates.h + libfreeipmi/include/freeipmi/spec/ipmi-cmd-oem-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-comp-code-oem-spec.h: + Update with changes and/or additions from Intel NM 2.0 spec. + + * ipmi-oem/: Support changes to commands due to Intel NM 2.0 events. + + * ipmi-oem/ipmi-oem-intelnm.c (_ipmi_oem_intelnm_sdr_callback), + ipmi-sensors/ipmi-sensors.c (_display_sensors), + libfreeipmi/sel/ipmi-sel-string-intel-node-manager.c (_intel_node_manager_sdr_callback): + Comment on 2.0 no longer needing SDR searching. + +2013-09-13 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-cmd-oem-spec.h: Fix + invalid hex for + IPMI_CMD_OEM_INTEL_NODE_MANAGER_SET_NODE_MANAGER_ALERT_DESTINATION + and + IPMI_CMD_OEM_INTEL_NODE_MANAGER_GET_NODE_MANAGER_ALERT_DESTINATION. + + * ipmi-oem/: Enable support of IntelNM + get-node-manager-alert-destination and + set-node-manager-alert-destination. + +2013-08-28 Albert Chu + + * libfreeipmi/include/freeipmi/api/ipmi-api.h: Document mapping of + IPMI completion codes and RMCPPlus codes to API error codes. + + * Update freeipmi libraries/tools to check/use API error codes + correctly. + +2013-08-27 Albert Chu + + Merge branch configcollapse. + + * ipmi-config/: New tool. + + * bmc-config/, ipmi-pef-config/, ipmi-sensors-config/, + ipmi-chassis-config/: Remove tools. + + * common/configtool/: Remove common files. + + * common/toolcommon/: Update config file parsing to recognize + ipmi-config and legacy options. + + * doc/, man/: Update documentation appropriately for change. + +2013-08-22 Albert Chu + + * configure.ac, NEWS: Update for release. + +2013-08-13 Albert Chu + + * man/bmc-config.conf.5.pre.in: Fix section typos. + + * man/libfreeipmi.3.pre.in, man/freeipmi.7.pre.in, + man/freeipmi.conf.5.pre.in: Add missing tool. + +2013-08-09 Albert Chu + + * doc/: Update all docs w/ dates. + +2013-08-02 Albert Chu + + * libfreeipmi/sdr/ipmi-sdr-parse-util.c (ipmi_sdr_parse_entity_sensor_name): + Handle special corner case w/ double printed name. + +2013-07-03 John Gilmore + + * Fix compiler issues w/ gcc-2.96. + +2013-07-03 Albert Chu + + * ipmi-sensors/ipmi-sensors-output-common.c (ipmi_sensors_get_thresholds): + When thresholds access reported by SDR is fixed/unreadable, the + prior interpretation was that thresholds were not available. The + apparent correct interpretation is that thresholds are only + unreadable via the get threshold command, but thresholds can still + be read in the SDR. Code has been altered to meet this + assumption. Issue discovered and proper interpretation determined + by Holger Liebig . + +2013-06-26 Mario Jungwirth + + * libipmimonitoring/ipmi_monitoring.h.in: Remove invalid declaration. + +2013-06-25 Albert Chu + + * libfreeipmi/api/ipmi-api-util.c (api_set_api_errnum_by_bad_response), + libfreeipmi/api/ipmi-api.c. libfreeipmi/include/freeipmi/api/ipmi-api.h: + Support new IPMI_ERR_COMMAND_INVALID_OR_UNSUPPORTED error code. + +2013-06-17 Albert Chu + + * bmc-info/bmc-info.c (display_system_info_common): Workaround + issue on Bull 510 systems. + +2013-06-17 Albert Chu + + * man/manpage-common-troubleshooting-inband-outofband.man: New + common manpage. + + * man/: Add inband & outofband common troubleshooting to most + FreeIPMI tool manpages. + +2013-05-30 Ales Ledvinka + + * common/toolcommon/pstdout.c (pstdout_vprintf): Fix portability + bug, va_list is not a pointer type. + +2013-05-29 Albert Chu + + * man/manpage-common-time-options.man: Fix typo. + + * configure.ac, NEWS: Update for release. + +2013-05-16 Albert Chu + + * libfreeipmi/util/ipmi-sensor-and-event-code-tables-util.c (ipmi_get_event_messages): + Fix sensor event message corner case w/ OEM sensors. + +2013-05-16 Albert Chu + + * libfreeipmi/include/freeipmi/util/ipmi-util.h, + libfreeipmi/util/ipmi-util.c (ipmi_checksum_incremental, ipmi_checksum_final): New + function. + + * libfreeipmi/util/ipmi-util.c (_checksum): New common function. + + * libfreeipmi/util/ipmi-util.c (ipmi_checksum): Use _checksum + common function. + + * libfreeipmi/sdr/: Support checksums in SDR cache files to detect corruption. + +2013-05-09 Albert Chu + + * bmc-device/bmc-device.c (get_sel_time_utc_offset): Fix output + string error. + +2013-05-08 Albert Chu + + * libfreeipmi/interface/ipmi-network.h, + libfreeipmi/interface/ipmi-network.c (ipmi_network_sendto): New + function. + + * libfreeipmi/interface/ipmi-rmcpplus-interface.c (ipmi_rmcpplus_sendto): + Call ipmi_network_sendto common function. + + * libfreeipmi/interface/ipmi-lan-interface.c (ipmi_lan_sendto): + Call ipmi_network_sendto common function, do not pad legacy byte. + +2013-05-08 Albert Chu + + * libfreeipmi/record-format/ipmi-fru-dimmspd-record-format.c, + libfreeipmi/include/freeipmi/templates/ipmi-fru-dimmspd-record-format-templates.h: + Fix mistakes in tmpl_fru_dimm_spd_ddr3_record template. + + * ipmi-fru/ipmi-fru-output.h, ipmi-fru/ipmi-fru-output.c: Fix area + length from uint8_t to unsigned int globally. + + * ipmi-fru/ipmi-fru-output.c (ipmi_fru_output_dimm): Fix object + creation corner case. + + * libfreeipmi/util/ipmi-jedec-manufacturer-identification-code-util.c (ipmi_jedec_manufacturer_id_search): + Fix parameter check corner case. + +2013-05-08 Albert Chu + + * libfreeipmi/include/freeipmi/util/ipmi-timestamp-util.h, + libfreeipmi/util/ipmi-timestamp-util.c (ipmi_timestamp_string): + Support specific UTC offset being specified. + + * ipmi-fru/, bmc-device/, ipmi-sel/, ipmi-sensors/, ipmi-dcmi/, + ipmi-oem/: Support new --utc-offset option. + + * common/toolcommon/: Support new options and config file options + appropriately. + + * man/: Update for new option. + +2013-05-07 Albert Chu + + Merge branch 'utcoffsetcmd' + + * libfreeipmi/util/ipmi-timestamp-util.c (ipmi_timestamp_string): + Make default output unconverted. + + * libfreeipmi/util/ipmi-timestamp-util.c (ipmi_timestamp_string): + Support UTC_TO_LOCALTIME and LOCALTIME_TO_UTC flag to allow user + to specify if time is actually UTC. + + * ipmi-fru/, bmc-device/, ipmi-sel/, ipmi-sensors/, ipmi-dcmi/, + ipmi-oem/: Support new --utc-to-localtime and --localtime-to-utc + options. + + * common/toolcommon/: Support new options and config file options + appropriately. + + * man/: Update for new options. + +2013-05-06 Albert Chu + + * libfreeipmi/: Get SEL Time UTC Offset and Set SEL Time UTC + Offset payloads. + + * bmc-device/: Support --get-sel-time-utc-offset and + -set-sel-time-utc-offset. + +2013-05-06 Peter Volkov + + * configure.ac: Update for autoconf 1.14. + +2013-05-03 Albert Chu + + Merge 9651:9663 branch 'ddr3' + + Add support to interpret DDR3 SDRAM memory modules + + * libfreeipmi/include/freeipmi/record-format/ipmi-fru-dimmspd-record-format.h, + libfreeipmi/record-format/ipmi-fru-dimmspd-record-format.c, + libfreeipmi/include/freeipmi/templates/ipmi-fru-dimmspd-record-format-templates.h: + New files. + + * libfreeipmi/include/freeipmi/spec/ipmi-jedec-manufacturer-identifcation-code-spec.h, + libfreeipmi/spec/ipmi-jedec-manufacturer-identifcation-code-spec.c, + libfreeipmi/include/freeipmi/util/ipmi-jedec-manufacturer-identifcation-code-util.h, + libfreeipmi/util/ipmi-jedec-manufacturer-identifcation-code-util.c: + New files. + + * libfreeipmi/include/freeipmi/fru/ipmi-fru.h, + libfreeipmi/fru/ipmi-fru.c, libfreeipmi/fru/ipmi-fru-defs.h: + Support IPMI_FRU_FLAGS_READ_RAW flag and + IPMI_FRU_AREA_TYPE_RAW_DATA. + + * ipmi-fru/ipmi-fru.c (_print_except_default_fru_cb): Add + additional bridging case. + + * ipmi-fru/: Support FRU output of DDR3 SDRAM dimms. + +2013-05-02 Albert Chu + + * libfreeipmi/sel/ipmi-sel-string.c (_output_date): Fix memory + buffer overrun (Bug location found by Rob Swindell - swindell at + broadcom dot com). + +2013-04-30 Albert Chu + + Merge branch 'timestampspecial' + + Handle special case timestamps such as 0xFFFFFFFF and timestamps < + 0x2000000, per chapter 37 of IPMI specification. + + * libfreeipmi/include/freeipmi/spec/ipmi-timestamp-spec.h: New file. + + * libfreeipmi/include/freeipmi/util/ipmi-timestamp-util.h, + libfreeipmi/util/ipmi-timestamp-util.c: New timestamp utility files. + + * ipmi-fru/, bmc-device/, ipmi-sel/, ipmi-sensors/, ipmi-dcmi/, + ipmi-oem/, libfreeipmi/sel/: Use new timestamp utility function. + +2013-04-29 Albert Chu + + Merge branch 'fru12' + + Update for FRU Storage Definition Revision 1.2. + + * libfreeipmi/include/freeipmi/record-format/ipmi-fru-information-record-format.h: + Define new macro IPMI_FRU_MFG_DATE_TIME_UNSPECIFIED and IPMI_FRU_PEAK_CAPACITY_UNSPECIFIED. + + * ipmi-fru/ipmi-fru-output.c (ipmi_fru_output_board_info_area): + Output manufacturing time as unspecified as appropriate. + + * ipmi-fru/ipmi-fru-output.c (ipmi_fru_output_power_supply_information): + Output peak capacity as unspecified as appropriate. + + * libfreeipmi/include/freeipmi/spec/ipmi-fru-chassis-types-spec.h, + libfreeipmi/spec/ipmi-fru-chassis-types-spec.c: Add new chassis + types. + + * libfreeipmi/include/freeipmi/fru/ipmi-fru.h, + libfreeipmi/include/freeipmi/record-format/ipmi-fru-information-record-format.h, + libfreeipmi/fru/ipmi-fru.c (_read_multirecord_area_data): Update + + * libfreeipmi/include/freeipmi/fru/ipmi-fru.h, + libfreeipmi/fru/ipmi-fru-data.c (ipmi_fru_multirecord_power_supply_information): + Return low/high end input voltage ranges as signed integers. + + * ipmi-fru/: Output low/high end voltage ranges as signed integers. + + * libfreeipmi/include/freeipmi/record-format/ipmi-fru-information-record-format.h, + libfreeipmi/record-format/ipmi-fru-information-record-format.c: + Support tmpl_fru_extended_dc_output and tmpl_fru_extended_dc_load + templates. + + * libfreeipmi/include/freeipmi/fru/ipmi-fru.h, + libfreeipmi/fru/ipmi-fru-data.c (ipmi_fru_multirecord_extended_dc_output, + ipmi_fru_multirecord_extended_dc_load): New functions. + + * ipmi-fru/: Support output of extended DC output and extended dc load. + +2013-04-26 Albert Chu + + Merge branch 'sendto' + + Modify architecture to send IPMI 1.5 network packets via one + function and IPMI 2.0 network packets via another function. IPMI + 1.5 packets must be padded for legacy reasons, however IPMI 2.0 + packets should not be padded. + (Issue discovered by Rob Swindell - swindell at broadcom dot com). + + * libfreeipmi/include/freeipmi/interface/ipmi-rmcpplus-interface.h, + libfreeipmi/interface/ipmi-rmcpplus-interface.c (ipmi_rmcpplus_sendto, + ipmi_rmcpplus_recvfrom): New functions to handle non-legacy pad in + IPMI 2.0. + + * libfreeipmi/interface/ipmi-network.h, + libfreeipmi/interface/ipmi-network.c: New files. + + * libfreeipmi/interface/ipmi-lan-interface.c (ipmi_lan_recvfrom): + Adjust to use new common function. + + * libfreeipmi/api/ipmi-lan-session-common.c (_api_lan_2_0_cmd_send): + Use new ipmi_rmcpplus_sendto. + + * ipmipower/, libipmiconsole/ : Support sending packets via + ipmi_lan_sendto or ipmi_rmcpplus_sendto. + +2013-04-26 Albert Chu + + * Globally fix copyright years from ending in 2012 to ending in + 2013. + +2013-04-25 Albert Chu + + * libfreeipmi/interface/ipmi-rmcpplus-interface.c (_construct_payload_confidentiality_aes_cbc_128): + Fix confidentiality trailer pad calculation corner case. (Bug + location found by Rob Swindell - swindell at broadcom dot com). + +2013-04-25 Albert Chu + + * Support HP Proliant DL160 G8 OEM sensors. + +2013-04-24 Albert Chu + + * ipmi-dcmi/ipmi-dcmi.c (_sensor_info_output): Fix output + calculation errors. (Bug location found by Michael Winiarski - + michael dot winiarski at hp dot com). + +2013-04-24 Albert Chu + + * libfreeipmi/cmds/ipmi-dcmi-cmds.c: Fix null terminator on + tmpl_dcmi_rolling_average_time_period (Recommended fix by Michael + Winiarski - michael dot winiarski at hp dot com). + +2013-04-18 Albert Chu + + * libipmiconsole/ipmiconsole_processing.c (_process_protocol_state_activate_payload_sent): + Change "BMC Error" to "SOL Inuse" error message. + +2013-04-03 Albert Chu + + * doc/freeipmi-faq.texi: Note kernel driver issue. + +2013-03-25 Peter Volkov + + * Fix out of trunk source build. + +2013-03-11 Holger Liebig + + * ipmi-dcmi/: Output temperature sampling period appropriately. + + * libfreeipmi/cmds/ipmi-dcmi-cmds.c: Update + tmpl_cmd_dcmi_get_dcmi_capability_info_mandatory_platform_attributes_rs + with newer optional fields. + +2013-03-08 Albert Chu + + * Add support for Supermicro X9SCM-iiF OEM sensors/events. + +2013-03-08 Albert Chu + + * man/ipmi-sensors.8.pre.in: Fix typo (Found by Werner Fischer). + +2013-02-28 Anonymous + + * libfreeipmi/sel/ipmi-sel-string-intel.c (sel_string_output_intel_event_data2_event_data3): + Fix string overflow. + +2013-02-21 Albert Chu + + * Add support for Supermicro X9SPU-F-0 OEM sensors/events. + + * Add support for Supermicro X9DRI-LN4F+ OEM + interpretations (forgotten earlier). + +2013-01-22 Albert Chu + + * bmc-config/bmc-config.c (_bmc_config), + ipmi-pef-config/ipmi-pef-config.c (_ipmi_pef_config), + ipmi-chassis-config/ipmi-chassis-config.c (_ipmi_chassis_config), + ipmi-sensors-config/ipmi-sensors-config.c (_ipmi_sensors_config): + If only non-fatal errors occurred during operation, exit with + status 1. Exit with status 2 on fatal errors. + + * man/manpage-common-config-diagnostics.man: New file. + + * man/bmc-config.8.pre.in, man/ipmi-sensors-config.8.pre.in, + man/ipmi-chassis-config.8.pre.in, man/ipmi-pef-config.8.pre.in: + Update for changes in exit value behavior. + +2013-01-22 Albert Chu + + * man/manpage-common-config-tool-options.man: Add clarification + about use w/ hostranges and hostrange options. + +2013-01-22 Albert Chu + + * common/toolcommon/pstdout.h, + common/toolcommon/pstdout.c (pstdout_vprintf, pstdout_vfprintf): + New functions. + + * common/configtool/config-tool-utils.h, + common/configtool/config-tool-utils.c (config_pstdout_fprintf): + New function. + + * common/configtool/config-tool-checkout.c, + common/configtool/config-tool-comment.c: Call + config_pstdout_fprintf instead of pstdout_fprintf to deal with + corner case when user specifys filename with --filename option in + config tools. + +2013-01-09 Albert Chu + + Fix bugs found by static code analysis done by Redhat/Fedora. + + * ipmidetect/ipmidetect-argp.c (_read_nodes_from_stdin): Fix + potential NUL termination corner case. + + * libfreeipmi/sel/ipmi-sel-string-intel.c (sel_string_output_intel_event_data3_discrete_oem) + (sel_string_output_intel_event_data2_event_data3): Fix potential + initialization bug. + + * libfreeipmi/interface/rmcp-interface.c (assemble_rmcp_pkt): Fix + copy and paste error output. + + * libfreeipmi/api/ipmi-pef-and-alerting-cmds-api.c (ipmi_cmd_alert_immediate): + Fix cut and paste bug. + + * libfreeipmi/api/ipmi-api.c (ipmi_ctx_destroy): Fix memset size + bug. + + * libfreeipmi/api/ipmi-lan-session-common.c (api_lan_2_0_cmd_wrapper): + Add assert to protect against potential API mis-call and + subsequent segfault. + + * libfreeipmi/util/ipmi-util.c (ipmi_get_random): Fix potential fd leak. + + * bmc-info/bmc-info.c (display_channel_info): Add missing break. + + * ipmi-pet/ipmi-pet.c (_ipmi_pet_form_sel_record): Fix unsigned vs + signed int mis-assignment. + + * ipmiseld/ipmiseld.c (_alloc_host_data): Fix error case mem-leak. + + * bmc-watchdog/bmc-watchdog-argp.c (cmdline_parse): Add missing break; + + * ipmi-oem/ipmi-oem-intel.c (ipmi_oem_intel_set_power_restore_delay): + Fix invalid shift. + +2012-01-09 Albert Chu + + * common/miscutil/heap.c (heap_insert, heap_pop): Fix mutex unlock + corner case on error cases. + + * common/miscutil/heap.c: Remove unused legacy code. + +2012-12-05 Albert Chu + + * Add support for Supermicro X9DRI-LN4F+ OEM sensors/events. + +2012-10-29 Albert Chu + + * man/: Fix typos. + +2012-10-10 Albert Chu + + * libipmiconsole/: IPMICONSOLE_DEBUG_FILE now dumps to current + working directory instead of /var/log. This is a debug feature + and not a logging feature. + +2012-10-09 Dave Walker , + + * common/toolcommon/tool-daemon-common.c (daemonize_common): Check + read and write for errors. + +2012-10-05 Albert Chu + + * libfreeipmi/, libipmiconsole/, libipmimonitoring/, + common/parsecommon/, man/: Support new + NO_CHECKSUM_CHECK/nochecksumcheck workaround to deal with + Supermicro motherboards that incorrectly calculate packet + checksums. + +2012-10-04 Albert Chu + + Add OEM extension support for Dell Poweredge R720 + + * ipmi-oem/: Support Dell get-nic-selection-failover, + set-nic-selection-failover, power-monitoring-over-interval, + power-monitoring-interval-range, get-blade-slot-info, + get-last-post-code. Support new version of active-lom-status for + R720. Support Dell specific OEM completion codes. + + * libfreeipmi/include/freeipmi/spec/ipmi-oem-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h: + Add updates based on Dell documentation. + + * libfreeipmi/include/freeipmi/spec/ipmi-product-id-spec.h: Update + for new R720. + + * libfreeipmi/util/ipmi-sensor-and-event-code-tables-util.c (ipmi_get_oem_sensor_type_message): + Support Dell R720. + + * libfreeipmi/sel/ipmi-sel-string-dell.c: Update for new SEL + events in Dell R720. Handle a few additional R610/R710 cases that + were missed in earlier changes. + +2012-09-27 Albert Chu + + * man/manpage-common-workaround-extra-text.man: Fix typo. + +2012-09-21 Albert Chu + + * libfreeipmi/debug/ipmi-debug.c (ipmi_obj_dump): Always output + SDR and SEL record data in byte array format. + + * libfreeipmi/fiid/fiid.c (fiid_obj_get): Fix value retrieval + corner case, most notably coming up in debug output. + +2012-09-20 Albert Chu + + * libfreeipmi/include/freeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.h: + Create payload instance macros. + + * libfreeipmi/cmds/ipmi-rmcpplus-support-and-payload-cmds.c (fill_cmd_activate_payload) + (fill_cmd_activate_payload_sol, fill_cmd_deactivate_payload) + (fill_cmd_suspend_resume_payload_encryption) + (fill_cmd_get_payload_instance_info): Add payload instance + parameter check. + + * libipmiconsole/ (ipmiconsole_ctx_set_config) + (ipmiconsole_ctx_get_config): New functions. + + * libipmiconsole/: Support + IPMICONSOLE_CTX_CONFIG_OPTION_SOL_PAYLOAD_INSTANCE configuration + option. Support IPMICONSOLE_BEHAVIOR_DEACTIVATE_ALL_INSTANCES + behavior flag. + + * libipmiconsole/: Report BMC_BUSY if SOL activation limit + reached. + + * ipmiconsole/: Add --sol-payload-instance and + --deactivate-all-instances options. + + * doc/freeipmi-testing.txt, + doc/freeipmi-bugs-issues-and-workarounds.txt: Update with SOL + instance discoveries. + +2012-09-11 Albert Chu + + * libipmiconsole/ipmiconsole.h.in: Fix comment English. + +2012-09-07 Claudio Cesar Sanchez Tejeda + + * ipmiseld/ipmiseld-common.c: Fix "format not a string literal and + no format arguments" issue. + +2012-08-15 Albert Chu + + * libfreeipmi/sdr/ipmi-sdr-cache-create.c (_sdr_cache_get_record): + Add workaround for Xyratex motherboard issue. + + * libfreeipmi/interpret/: Add sensor/sel interpretations for OS + boot, System Event Transition State, Platform Alert State, Boot + Error State, and OS Critical Stop State. + + * Globally support "noauthcodecheck" workaround to deal with + issues on Xyratex HB-F8-SRAY. + + * Globally handle + IPMIPOWER_MSG_TYPE_PRIVILEGE_LEVEL_CANNOT_BE_OBTAINED error when + returned from activate session to deal with issues on Xyratex + HB-F8-SRAY. + +2012-08-09 Albert Chu + + * man/ipmi-oem.8.pre.in: Clarify configuration in IntelNM. + +2012-08-08 Albert Chu + + * doc/freeipmi-faq.texi: Add section on common differences. + +2012-08-07 Albert Chu + + * libfreeipmi/: For consistency to other changes, rename + 'fru-parse' sub-library in libfreeipmi to 'fru' library. All + appropriately function names, macros, etc. updated appropriately. + + * ipmi-pet/, ipmi-fru/: Update appropriately. + + * libfreeipmi/fru/ipmi-fru.c, + libfreeipmi/include/freeipmi/fru/ipmi-fru.h (ipmi_fru_read_multirecord_record_type_id): + New function. Rename from + ipmi_fru_read_multirecord_record_type. + +2012-08-06 Albert Chu + + * Merge intelnm15 branch. + + * ipmi-oem/: Add IntelNM get-node-manager-capabilities, + node-manager-policy-control, get-node-manager-policy, + set-node-manager-policy, remove-node-manager-policy, + get-node-manager-alert-thresholds, + set-node-manager-alert-thresholds, + get-node-manager-policy-suspend-periods, + set-node-manager-policy-suspend-periods, + set-node-manager-power-draw-range, + get-node-manager-alert-destination, + set-node-manager-alert-destination. + + * libfreeipmi/: Fix Intel NM bugs. + + * ipmi-pef-config/: Support volatile alert string 0 and lan alert + destination 0. + +2012-08-03 Albert Chu + + * doc/freeipmi-faq.texi: Add Wistron to OEM list. + +2012-07-31 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-oem-spec.h, ipmi-oem/: + Fix macro naming. + + * ipmi-oem/: Support Wistron read/write/clear-proprietary-string. + + * ipmi-fru/: Support Wistron OEM FRU record. + + * libfreeipmi/fru-parse/ipmi-fru-parse.c, + libfreeipmi/include/freeipmi/fru-parse/ipmi-fru-parse.h (ipmi_fru_parse_read_multirecord_record_type): + New function. + + * libfreeipmi/include/freeipmi/record-format/ipmi-fru-oem-record-format.h: New file. + +2012-07-30 Albert Chu + + * configure.ac: Prep for beta release. + + * README, man/freeipmi.7.pre.in: Update with ipmiseld information. + + * libfreeipmi/include/Makefile.am: Add missing files. + +2012-07-27 Albert Chu + + * ipmi-sensors/: Support --output-sensor-thresholds. + +2012-07-26 Albert Chu + + * man/ipmi-oem.8.pre.in: Add motherboard support information. + +2012-07-24 Albert Chu + + * Fix error output message after confirmation from vendor on text. + +2012-07-23 Albert Chu + + * ipmi-oem/ipmi-oem-intelnm.c: Use + _ipmi_oem_intelnm_bad_completion_code in additional situation. + +2012-07-19 Albert Chu + + * ipmi-oem/: Add intelnm get-node-manager-capabilities. + + * libfreeipmi/: Adjust some intel NM fields/macro names for + correctness based on Intel NM spec. Fix several bugs in Intel NM + implementation. + +2012-07-19 Albert Chu + + * ipmi-oem/: Fix and support Wistron set-password-policy. + +2012-07-18 Albert Chu + + * ipmi-oem/: Remove Wistron get-password-policy. + +2012-07-16 Albert Chu + + * ipmi-oem/ipmi-oem-intelnm.c (_ipmi_oem_intelnm_bad_completion_code): + Handle bad completion code commonly for all Intel NM. + + * ipmi-oem/: Support Wistron get/set-password-policy. + +2012-07-13 Albert Chu + + * libfreeipmi/include/freeipmi/sdr/ipmi-sdr-oem.h, + libfreeipmi/sdr/ipmi-sdr-oem.c: New files. + + * ipmi-sensors/ipmi-sensors.c, + ipmi-sensors/ipmi-sensors-oem-intel-node-manager.c, + ipmi-oem/ipmi-oem-intelnm.c, + libfreeipmi/sel/ipmi-sel-string-intel-node-manager.c: Use new + ipmi_sdr_oem_parse_intel_node_manager. + + * libfreeipmi/api/: Increase default ipmb timeout. + +2012-07-10 Albert Chu + + Add new tool ipmiseld. + + * ipmiseld/: New tool. + + * common/, etc/, man/: Add new manpage entries, init scripts, + config files, as needed. + + * man/manpage-common-troubleshooting-sel.man: Create new common + SEL troubleshooting common manpage. + + * config/ac_ipmiseld_cache_dir.m4, + config/ac_ipmiseld_config_file.m4: New files. + + * man/, freeipmi.spec.in, configure.ac: Update appropriately for + new tool. + + * libfreeipmi/include/freeipmi/api/ipmi-api.h, + libfreeipmi/api/ipmi-api.c: Move some internal macros to + ipmi-api.h so apps know default values. + +2012-07-10 Albert Chu + + Support OEM extensions for Wistron / Dell Poweredge C6220. + + * libfreeipmi/include/freeipmi/spec/ipmi-oem-spec.h: Rename + several macros for use clarity. + + * ipmi-oem/: Add Wistron OEM extension commands. + + * ipmi-oem/ipmi-oem-thirdparty.h, + ipmi-oem/ipmi-oem-thirdparty.c (ipmi_oem_thirdparty_get_system_info_block_pstring): + New function. + + * ipmi-oem/ipmi-oem-dell.c (_get_dell_system_info_long_string): + Use new common function + ipmi_oem_thirdparty_get_system_info_block_pstring. + + * ipmi-sensors/: Support OEM SDR record output details. + +2012-07-10 Albert Chu + + * Fix up 'make dist' to not distribute files generated by + configure. + +2012-07-09 Albert Chu + + * freeipmi.spec.in: Update w/ recent changes. + +2012-07-06 Albert Chu + + * libfreeipmi/util/ipmi-sensor-util.c (ipmi_sensor_units_string): + Fix units output corner case. + + * bmc-info/bmc-info.c (display_system_info_common): Fix + not-supported completion code detection. + +2012-07-05 Albert Chu + + * ipmi-oem/: Tweak logic of Ipmi_oem_comp_code_strerror callback. + +2012-07-05 Albert Chu + + * Add support for assume max record sdr record count. + +2012-07-03 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-oem.h: Add additional + Poweredge details. + +2012-06-28 Albert Chu + + * ipmi-oem/ipmi-oem-dell.c (ipmi_oem_dell_get_system_info): Fix + error output corner case. + +2012-06-26 Albert Chu + + * man/ipmi-oem.8.pre.in: Fix vendor specific documentation error. + +2012-06-25 Albert Chu + + * ipmi-oem/: Move more macros to ipmi-oem-spec.h. General code + cleanup. + + * libfreeipmi/include/freeipmi/spec/ipmi-channel-spec.h: Add + additional macros. + + * bmc-info/, bmc-config/, ipmi-pef-config/: Use new macros + appropriately. + +2012-06-21 Albert Chu + + * common/toolcommon/tool-config-file-common.c: Fix casting bug w/ + signed vs unsigned ints. + + * Make all verbose_count variables in tools unsigned ints. + +2012-06-18 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-oem-spec.h: New file. + + * ipmi-oem/: Migrate various information into new ipmi-oem-spec.h + file and + libfreeipmi/include/spec/ipmi-system-info-parameters-oem-spec.h. + + * ipmipower/, libfreeipmi/sel/: Use new macros in ipmi-oem-spec.h. + + * ipmi-oem/ipmi-oem-thirdparty.h, ipmi-oem/ipmi-oem-thirdparty.c: + New files. + + * ipmi-oem/ipmi-oem-inventec.c, ipmi-oem/ipmi-oem-quanta.c: + Migrate some commmon functions to ipmi-oem-thirdparty.c and + ipmi-oem-thirdparty.h. + +2012-06-15 Albert Chu + + * libfreeipmi/interpret/: Support new interpretations based on + sensors found on IBM X3850 X5: Version Change, System Firmware + Progress Transition Severity, Button/Switch Transition Severity, + Chassis Transition Severity, POST Memory Resize State, + Cable/Interconnect Transition Severity, Boot Error Transition + Severity, Slot Connector Transition Severity, Memory State, and + Memory Transition Severity. + + * etc/freeipmi_interpret_sel.conf, + etc/freeipmi_interpret_sensor.conf, man/: Update appropriately for + changes. + + * etc/, man/: Add missing documentation. + +2012-06-07 Albert Chu + + * libfreeipmi/sdr/ipmi-sdr-cache-create.c (ipmi_sdr_cache_create): + Fix slight logic bug with cache_create_flags. + +2012-06-06 Albert Chu + + * common/toolcommon/Makefile.am: Fix build bug. + +2012-06-05 Albert Chu + + * common/miscutil/conffile.c, + libfreeipmi/util/ipmi-sensor-and-event-code-tables-util.c, + libfreeipmi/util/ipmi-sensor-util.c, + libfreeipmi/util/ipmi-device-types-util.c, : Fix -Wformat-security + warnings. + +2012-06-04 Yaroslav Halchenko + + * man/ipmi-oem.8.pre.in: Minor tune ups. + +2012-06-01 Albert Chu + + Merge branch intels2600jfrevision + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h, + libfreeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.c: + Update event messages for Intel S2600JF based on documentation + changes from Intel. + +2012-06-01 Albert Chu + + * Add support for Supermicro X9DRi-F OEM sensors/events. + +2012-05-31 Albert Chu + + * common/toolcommon/tool-daemon-common.h, + common/toolcommon/tool-daemon-common.c (daemon_sleep): New + function. + + * bmc-watchdog/: Use new common functions. + + * ipmidetectd/ipmidetectd.c: Shutdown cleanly on signals. + +2012-05-30 Albert Chu + + * man/, etc/: Add forgotten config entries. + +2012-05-29 Albert Chu + + * man/ipmi-sel.8.pre.in: Fix typo. + + * common/toolcommon/tool-config-file-common.c: Fix parsing for + target-slave-address. + +2012-05-29 Albert Chu + + * common/parsecommon/parse-common.h, + common/parsecommon/parse-common.c (parse_get_freeipmi_outofband_flags, + parse_get_freeipmi_outofband_2_0_flags, + parse_get_freeipmi_inband_flags): New functions. + + * bmc-watchdog/, common/toolcommon/: Use new convenience functions + appropriately. + +2012-05-26 Albert Chu + + * man/manpage-common-troubleshooting-sel.man: New file. + + * man/ipmi-sel.8.pre.in: Update for new common file. + +2012-05-26 Albert Chu + + * bmc-config/, ipmi-pef-config/, ipmi-sensors-config/, + ipmi-chassis-config/: Fix bug in which cipher suite ID input was + not allowed. + + * man/manpage-common-sdr-options.man: Add extra info for + sdr-cache-file option. + + * common/toolcommon/, man/: Undo split of SDR option + "sdr-cache-directory" into separate macro/man option. + + * common/toolcommon/, man/: Split SDR option "sdr-cache-file" and + "sdr-cache-directory" into separate macros/man files. + + * man/manpage-common-sdr-options-heading.man, + man/manpage-common-sdr-options-file-directory.man: New files. + Split off from man/manpage-common-sdr-options.man. + + * man/manpage-common-sdr-cache-options-heading.man, + man/manpage-common-sdr-cache-file-directory.man, + man/manpage-common-sdr-cache-ignore.man: New renamed files. + + * man/: Update manpages appropriately for new files. + +2012-05-26 Albert Chu + + * ipmi-pet/ipmi-pet-argp.c: Fix argp output, ipmi-pet does not + take hostranged arguments. + + * common/toolcommon/tool-cmdline-common.h: Code cleanup. + +2012-05-25 Albert Chu + + * common/toolcommon/tool-sensor-common.h, + common/toolcommon/tool-sensor-common.c (valid_sensor_types): + Remove unused parameters. + + * ipmi-sensors/, ipmi-sel/: Update for changes. + + * ipmi-pet/ipmi-pet.c (_ipmi_pet): Destroy interpret_ctx during + cleanup. + +2012-05-24 Albert Chu + + * common/toolcommon/tool-sensor-common.h, + common/toolcommon/tool-sensor-common.c (parse_sensor_types): New + common function. + + * ipmi-sensors/, ipmi-sel/: Use common function appropriately. + + * common/toolcommon/tool-event-common.h, + common/toolcommon/tool-event-common.c (event_data_info): Remove + function. + + * ipmi-sel/: Update for changes. + +2012-05-24 Albert Chu + + * libipmimonitoring/: Support entity sensor names flags. + + * contrib/libipmimonitoring/: Update with new flags options. + + * libfreeipmi/sdr/: Support stack of saving offsets when calls to + ipmi_sdr_cache_iterate are made. + +2012-05-24 Albert Chu + + * libipmimonitoring/ipmi_monitoring.h.in: Fix bug in + ASSUME_BMC_OWNER bitmask. + +2012-05-24 Albert Chu + + * Deprecate use of --skip-checks in ipmi-fru in favor of + "skipchecks" workaround flag. + + * Deprecate use of --assume-system-event-records in ipmi-sel in + favor of "assumesystemevent" workaround flag. + +2012-05-23 Albert Chu + + * libfreeipmi/include/freeipmi/sel/ipmi-sel.h, + libfreeipmi/sel/ipmi-sel.c (ipmi_sel_ctx_set_parameter, + ipmi_sel_ctx_get_parameter): New functions. + + * libfreeipmi/include/freeipmi/sel/ipmi-sel.h, + libfreeipmi/sel/ipmi-sel.c (ipmi_sel_ctx_set_interpret): Removed + function. + + * ipmi-sel/, ipmi-pet/: Adjust for lib changes. + + * common/toolcommon/, ipmi-sensors/, libfreeipmi/sel/, + libipmimonitoring/: Use ipmi_sdr_parse_sensor_name as needed. + +2012-05-22 Albert Chu + + * libfreeipmi/interpret/: Support Supermicro OEM SEL event + interpretations. + + * libfreeipmi/interpret/ipmi-interpret-config-sel.c, + etc/freeipmi_interpret_sel.conf: Fix comment typos. + + * libfreeipmi/include/freeipmi/sdr/ipmi-sdr.h, + libfreeipmi/sdr/ipmi-sdr-parse-util.c (ipmi_sdr_parse_sensor_name): + New function. + +2012-05-22 Albert Chu + + * libfreeipmi/include/freeipmi/sel/ipmi-sel.h, libfreeipmi/sel/: + Support interpretation of event in sel library. Support %I string + output. + + * common/toolcommon/tool-event-common.h, + common/toolcommon/tool-event-common.c (event_load_event_state_config_file): + New function. + + * Globally update tools as necessary for changes. + +2012-05-22 Albert Chu + + * common/toolcommon/tool-sdr-cache-common.h, + common/toolcommon/tool-sdr-cache-common.c (sdr_cache_setup_debug): + Remove function. Fold into sdr_cache_create_and_load. + + * Globally update tools as necessary for changes. + +2012-05-21 Albert Chu + + * libfreeipmi/include/freeipmi/sel/ipmi-sel.c, libfreeipmi/sel/: + Support IPMI_SEL_STRING_FLAGS_ENTITY_SENSOR_NAMES flag. + + * Adjust tools and common/toolcommon for new option. + +2012-05-21 Albert Chu + + Merge branch entitysensornamesredo. + + * libfreeipmi/include/freeipmi/sdr/, libfreeipmi/sdr/: Support new + stats functions to compile useful info from the SDR. + + * common/toolcommon/tool-sensor-common.h, + common/toolcommon/tool-sensor-common.c: Update for new SDR stats + functions. + + * Globally update tools as necessary for changes. + + * libfreeipmi/include/freeipmi/util/ipmi-sensor-units-util.h, + libfreeipmi/include/freeipmi/util/ipmi-sensor-units-util.c: Remove + files. Collapse code into ipmi-sensor-util.h and + ipmi-sensor-util.c. + + * libfreeipmi/include/freeipmi/sdr/ipmi-sdr.h (ipmi_sdr_parse_entity_sensor_name): + New function. + + * libfreeipmi/sdr/ipmi-sdr-parse-util.c: New + file. + + * libfreeipmi/include/freeipmi/spec/ipmi-entity-ids-spec.h: + Support system and device relative entity instance number macros. + + * libfreeipmi/sel/ipmi-sel.c (ipmi_sel_ctx_create): Use + ipmi_sdr_cache_sdr_version instead of ipmi_sdr_cache_first to + check for open SDR for reading. + + * Globally update tools as necessary for new functions. + + * libfreeipmi/sdr/ipmi-sdr-common.h, + libfreeipmi/sdr/ipmi-sdr-common.c (sdr_set_current_offset): New + common function. + + * libfreeipmi/sdr/ipmi-sdr-cache-read.c: Adjust for new common function. + + * libfreeipmi/sdr/ipmi-sdr-defs.h, + libfreeipmi/sdr/ipmi-sdr-common.h, + libfreeipmi/sdr/ipmi-sdr-common.c (sdr_save_current_offset, + sdr_reset_current_offset): New common functions. + + * libfreeipmi/sdr/ipmi-sdr-cache-read.c (ipmi_sdr_cache_iterate): + Preserve current offset/iterator point when function was called. + +2012-05-17 Albert Chu + + Merge from branch toolcleanup2 + + * Globally cleanup variables and consistency of variables. + Whenever referring to the common_cmd_args use common_args. When + referring to command specific structs use cmd_args. + +2012-05-17 Albert Chu + + * common/toolcommon/: Consolidate hostrange and sdr common options + into the main common_cmd_args struct. + + * Globally update tools for changes. + + * common/toolcommon/tool-common.c (ipmi_open): Fix output corner + case. + + * common/toolcommon/tool-sensor-common.h: Pick more reasonable + maxes for the MAX_SENSOR_RECORD_IDS and MAX_SENSOR_TYPES macros. + +2012-05-16 Albert Chu + + * common/toolcommon/tool-common-sensor.h, + common/toolcommon/tool-sensor-common.c (list_sensor_types): Redo + to not take pstate parameter. + + * ipmi-sensors/, ipmi-sel/: Code cleanup with use of + list_sensor_type. Call before launching threads in tools since it + is identical in all outputs. + + * ipmi-sensors/ipmi-sensors.c (_ipmi_sensors): Fix bug in which + multiple workaround flags and workaround flags with bridging could + not be specified. + +2012-05-16 Albert Chu + + * ipmi-oem/ipmi-oem.c (main), bmc-device/bmc-device.c (main): Turn + on quiet caching if doing communication to multiple hosts. + +2012-05-16 Albert Chu + + * common/toolcommon/tool-sdr-cache-common.h, + common/toolcommon/tool-sdr-cache-common.c (sdr_cache_flush_cache): + Do not require ipmi_sdr_ctx_t parameter, create it inside + function. + + * Globally in tools, call sdr_cache_flush_cache() before opening + ipmi_open. + + * Globally cleanup usage of exit codes using EXIT_FAILURE and + EXIT_SUCCESS appropriately. Globally in tools cleanup general + exit code. + +2012-05-15 Albert Chu + + * ipmi-pet/: Fix bugs associated with new library checks for sdr + open for reading. + +2012-05-15 Albert Chu + + Merge branch toolcleanup + + * common/toolsdr/tool-sdr-cache-common.h, + common/toolsdr/tool-sdr-cache-common.c: Take struct sdr_cmd_args + pointer as argument instead of each desired parameter. + + * common/toolcommon/tool-common.h, + common/toolcommon/tool-common.c (ipmi_open): Take pstdout_state_t + parameter and output errors instead of returning error string in + buffer. + + * common/toolhostrange/tool-hostrange-common.h, + common/toolhostrange/tool-hostrange-common.c (pstdout_setup): Take + struct hostrange_cmd_args pointer as argument instead of each + desired parameter. + + * common/toolhostrange/tool-util-common.h, + common/toolhostrange/tool-util-common.c: New files, functions + split off from common/toolcommon/tool-common.h and + common/toolcommon/tool-common.c. + + * common/daemonutil/, common/tooloem/, common/toolsdr/, + common/toolevent/, common/toolsensor/, common/toolhostrange/: + Merge into common/toolcommon/ library. + + * Update tools appropriately for changes. + +2012-05-15 Albert Chu + + * libfreeipmi/: Rename a large number of internal functions with + 'ipmi' prefixes so they are not exported by libfreeipmi. + +2012-05-15 Albert Chu + + Merge movetolib branch + + * libfreeipmi/include/freeipmi/sel/ipmi-sel.h, + libfreeipmi/sel/ipmi-sel-string.c (_output_event_data1_event_data2_event_data3), + libfreeipmi/sel/ipmi-sel-string.c (sel_parse_format_record_string): + Support new '%E' for sel string outputs. + + * common/toolevent/tool-event-common.c (event_output_event): Use + new '%E' appropriately. + +2012-05-15 Albert Chu + + * libipmimonitoring/ipmimonitoring.map/: Explicitly list functions + to avoid errant functions being made global. + +2012-05-14 Albert Chu + + Cleanup sel-parse sub-library + + * Support IPMI_SEL_PARSE_ERR_SEL_ENTRIES_NOT_LOADED error code. + + * Properly trace all errors when debug tracing is enabled. + + * Condense both sets of record parsing functions into one set. + + * libfreeipmi/sel-parse/ipmi-sel-parse-common.h, + libfreeipmi/sel-parse/ipmi-sel-parse-common.c (sel_parse_get_previous_state_or_severity): + Change to _get_previous_state_or_severity and put in + libfreeipmi/sel-parse/ipmi-sel-parse-string.c. + + * libfreeipmi/interpret/, common/toolevent/, ipmi-sel/, ipmi-pet/: + Update appropriately for changes. + + * Convert the 'sel-parse' library to 'sel'. + + * ipmi-sel/ipmi-sel.h: Rename to ipmi-sel_.h to avoid naming + conflict. + +2012-05-14 Albert Chu + + * Various code cleanup when calling ipmi_sdr_cache_iterate + callbacks. + +2012-05-13 Albert Chu + + * libfreeipmi/include/freeipmi/api/ipmi-api.h, + libfreeipmi/api/ipmi-api.c (ipmi_ctx_get_target): New function. + + * libfreeipmi/sel-parse/ipmi-sel-parse.c (ipmi_sel_parse_ctx_create): + Check that sdr is open for reading and ipmi_ctx open. + + * libfreeipmi/fru-parse/ipmi-fru-parse.c (ipmi_fru_parse_ctx_create): + Check that ipmi_ctx is open. + + * libfreeipmi/sensor_read/ipmi-sensor_read.c (ipmi_sensor_read_ctx_create): + Check that ipmi_ctx is open. + + * ipmi-sel/: Update for API changes. + +2012-05-12 Albert Chu + + Merge sdrrearch branch. + + * libfreeipmi/include/freeipmi/sdr/ipmi-sdr.h, libfreeipmi/sdr: + Turn sdr-cache libfreeipmi sub-library into sdr sub-library. + + * libfreeipmi/include/freeipmi/sdr-parse/ipmi-sdr-parse.h, + libfreeipmi/sdr-parse: Remove sub-library. Fold into sdr + sub-library. Support ability to call parsing functions w/o + passing in sdr buffer and using internal buffer during iteration. + + * libfreeipmi/include/sdr/ipmi-sdr.h, + libfreeipmi/sdr/ipmi-sdr-cache-read.c (ipmi_sdr_cache_iterate): + New function. + + * common/toolsdr/tool-sdr-cache-common.h, + common/toolsdr/tool-sdr-cache-common.c (sdr_cache_setup_debug): + New common function for many tools. + + * Globally adjust tools and libraries for changes. + +2012-05-11 Albert Chu + + * Support --target-channel-number and --target-slave-address + options for all inband activities. + +2012-05-10 Albert Chu + + Merge branch frubrudge + + * ipmi-fru/: If builtin FRU device has SDR entry, output SDR entry + name instead of fixed string. + + * libfreeipmi/include/freeipmi/sdr-parse/ipmi-sdr-parse.h, + libfreeipmi/sdr-parse/ipmi-sdr-parse.c (ipmi_sdr_parse_management_controller_device_locator_parameters): + Support ability to parse all fields from a managemnet controller + deivce locator record. + + * ipmi-sensors/ipmi-sensors-detailed-output.c (_detailed_output_management_controller_device_locator_record): + Output more information about Management Controller Device + Records. + + * ipmi-fru/: Support --bridge-fru option. + + * libfreeipmi/fru-parse/ipmi-fru-parse.c (_read_fru_data): Handle + message timeout errors when bridging. + + * libfreeipmi/fru-parse/ipmi-fru-parse.c: Check ipmi ctx errnum + before checking for bad completion codes. + + * common/toolcommon/, man/, etc/: Update with new option support + appropriately. + + * libfreeipmi/api/ipmi-kcs-driver-api.c (ipmi_kcs_cmd_api_ipmb): + Sleep a little bit between re-reads to limit spinning. + +2012-05-10 Albert Chu + + * libfreeipmi/fru-parse/ipmi-fru-parse.c (_read_fru_data): Handle + additional device busy errors. + +2012-05-10 Albert Chu + + * libfreeipmi/api/ipmi-api.c: End bridging when closing ipmi + session. Do not support setting bridging targets when session not + open. Do not require setting both channel and rs_addr, pick + appropriate default when only one is set. Do not turn on bridging + if user configures defaults. + + * libfreeipmi/include/freeipmi/api/ipmi-api.h: Update comments. + +2012-05-09 Albert Chu + + * libfreeipmi/include/freeipmi/api/ipmi-api.h, + libfreeipmi/api/ipmi-api.c (ipmi_ctx_set_target): New function. + + * libfreeipmi/api/: Support ability to run bridged IPMI commands + without having to call _ipmb equivalent functions. + + * libfreeipmi/api/: Various code cleanup. + +2012-05-08 Albert Chu + + * libfreeipmi/include/freeipmi/templates/ipmi-oem-intel-node-manager-cmds-templates.h, + libfreeipmi/cmds/ipmi-oem-intel-node-manager-cmds.c: Fix field + name typo (Found by Werner Fischer). + +2012-05-08 Thomas Renninger + + * etc/ipmidetectd.init: Fix start run levels. + +2012-05-07 Albert Chu + + * libfreeipmi/sdr-cache/ipmi-sdr-cache-create.c (ipmi_sdr_cache_create): + Fix error code return value. + +2012-05-07 Albert Chu + + * common/toolevent/tool-event-common.c (event_output_event): + Remove dead code. + + * sel-parse/ipmi-sel-parse-string.c (_output_event_data2_event_data3): + Remove dead code. + +2012-05-06 Albert Chu + + * Add Supermicro H8DGU-F support for ipmi-sel and interpret + library. + + * Update docs for Supermicro H8DGU-F support. + +2012-05-06 Diego Elio Pettenò + + * Add support for Supermicro H8DGU-F to ipmi-sensors. + +2012-05-06 Albert Chu + + * ipmidetect/ipmidetect_.h, common/daemonutil/daemon-util.c: + Remove unnecessary includes. (Found by Diego Elio Pettenò) + +2012-05-05 Albert Chu + + * ipmiconsole/ipmiconsole-argp.c (ipmiconsole_argp_parse): Fix + password length check bug. (Found by Diego Elio Pettenò) + +2012-05-04 Albert Chu + + * common/toolcommon/, man/: Split SDR option "sdr-cache-directory" + into separate macro/man option. + + * ipmidetectd/: Rename files for consistency to other parts of + FreeIPMI. + + * toolevent/tool-event-common.c: Allow NULL for column_width input + as long as output will be comma separated. Allow NULL for + entity_id_counts if entity_sensor_names not desired. + +2012-05-03 Albert Chu + + * ipmidetectd/ipmidetectd_config.c (_usage): Fix cut and paste + typo. + +2012-05-03 Albert Chu + + * common/daemonutil/daemon-util.h, common/daemonutil/daemonutil.c: + New files and convenience library. + + * bmc-watchdog/, ipmidetectd/: Utilize new common library. + Various code cleanup as needed. + + * ipmidetectd/ipmidetectd_loop.h, ipmidetectd/ipmidetectd_loop.c: + Remove files. Collapse code in ipmidetectd.c. + + * ipmidetectd/ipmidetectd_argp.h, ipmidetectd/ipmidetectd_argp.c: + New files. + + * ipmidetectd/: Various code re-org for consistency to rest of + FreeIPMI. + + * ipmidetect/ipmidetect_.h, ipmidetect/ipmidetect-argp.h, + ipmidetect/ipmidetect-argp.c: New files. + + * ipmidetect/: Various code re-org for consistency to rest of + FreeIPMI. + +2012-05-02 Albert Chu + + * man/ipmidetectd.8.pre.in: Document that errors are logged to + syslog. + + * ipmidetectd/: Use miscutil error libraries instead of internal + debug functions. + + * ipmidetectd/ipmidetectd_debug.h, + ipmidetectd/ipmidetectd_debug.c: Remove files. + +2012-05-02 Albert Chu + + Merge branch bmcwatchdogrearch. Rearch bmc-watchdog to use all + new libraries available to it, make it more consistent to other + daemons, and properly reflect features/options. + + * libfreeipmi/api/: Support new IPMI_ERR_DRIVER_BUSY error code to + return when a driver is busy. + + * common/toolcommon/, bmc-watchdog/: Use miscutil common error + handling functions and properly syslog some initialize errors when + running as daemon. Utilize libfreeipmi api when appropriate + instead of bmc-watchdog specific functions. Remove support for + --logfile, all logs go to syslog now. Support --verbose-logging. + Various code cleanup for consistency to rest of FreeIPMI and other + changes. + + * etc/bmc-watchdog.logrotate, config/ac_bmc_watchdog_logfile.m4: + Remove files. + + * freeipmi.spec.in, configure.ac, etc/Makefile.am, + etc/freeipmi.conf, man/bmc-watchdog.8.pre.in, + man/freeipmi.conf.5.pre.in: Update appropriately for changes. + +2012-05-02 Albert Chu + + * man/freeipmi.conf.5.pre.in: Add ipmi-pet to list of supported + tools. + + * man/bmc-watchdog.8.pre.in: Remove legacy information. + + * bmc-watchdog/bmc-watchdog.c (_set_cmd): Fix --start-if-stopped + and --reset-if-running logic. + +2012-04-30 Albert Chu + + * bmc-watchdog/bmc-watchdog.c (_bmclog_write): Call fsync to sync + log errors to disk. + + * ipmiconsole/: Remove use of "error.h" convenience function. + Convenience functions were virtually unused. + +2012-04-21 Albert Chu + + * bmc-watchdog/bmc-watchdog.c: Handle SIGQUIT in addition to + SIGTERM and SIGINT. Properly set umask before writing pidfile. + Properly unlink/delete pidfile when necessary. Code cleanup. + + * ipmidetectd/ipmidetectd.c: Create pidfile on daemon startup. + Support debugging in production build. Fix segfault corner case. + Handle signals SIGINT, SIGTERM, and SIGQUIT. Code cleanup. + +2012-04-19 Albert Chu + + Merge branch seld + + Create new ipmiseld daemon. + + * ipmiseld/: New files. + + * man/ipmiseld.8.pre.in, man/ipmiseld.conf.5.pre.in: New files. + + * etc/ipmiseld.conf, etc/ipmiseld.init: New files. + + * config/ac_ipmiseld_config_file.m4: New file. + + * configure.ac, Makefile.am, etc/Makefile.am, man/Makefile.am, + freeipmi.spec.in: Update appropriately for new files and + directories. + + * common/daemonutil: New common files for daemon common functions. + + * ipmidetectd/: Use new daemonutil functions when appropriate. + +2012-04-19 Albert Chu + + Merge branch intels2600jf + + * ipmi-oem/: Add Intel --get-power-restore-delay, + --set-power-restore-delay, --get-bmc-service-status, + --set-bmc-service-status. + + * libfreeipmi/include/freeipmi/spec/, libfreeipmi/sel-parse/: + Re-arch SEL OEM interpretations of Quanta QSSC-S4R/Appro GB812X-CN + to prepare for Intel S2600JF/Appro 512X. Add QPI Interconnect + specific event offset messages. + + * libfreeipmi/sel-parse/: Support Intel S2600JF/Appro 512X OEM SEL + events. + + * libfreeipmi/include/: Add additions for Intel S2600JF/Appro 512x + + * man/: Update documentation for Intel S2600JF/Appro 512x support. + +2012-04-16 Albert Chu + + Merge reservedmacros branch. + + Fix bug #36177: reserved identifier violation. + + See https://www.securecoding.cert.org/confluence/display/seccode/DCL37-C.+Do+not+declare+or+define+a+reserved+identifier + + * Rename many header guards for compliance. + + * Fix inconsistencies with header guards #defines and #endif + comments. + + * Rename many macros for safety. + + * Fix file scope object naming issues. + + * Make some variables static that should be file local. + +2012-03-20 Albert Chu + + Merge intels5000pal branch. + + * libfreeipmi/interpret/: Support sensor Session Audit + intepretation. Convert default state of + IPMI_Session_Audit_Invalid_Username_Or_Password from Critical to + Warning. Support Voltage Limit sensors. Support SMI timeout on + Intel S5000PAL motherboard. + + * man/, etc/: Upate appropriately. + +2012-03-12 Albert Chu + + * ipmi-oem/ipmi-oem-supermicro.c + (ipmi_oem_supermicro_get_bmc_services_status, + ipmi_oem_supermicro_set_bmc_services_status): Fix error message + output. + +2012-03-06 Albert Chu + + * libfreeipmi/api/, libfreeipmi/cmds/: Support set sensor reading + and event status command functions. + + * bmc-device/: Support --set-sensor-reading-and-event-status. + +2012-03-06 Thomas Renninger + + * contrib/Makefile.am, Makefile.am, doc/Makefile.am: Fix docdir + usage for newer autotools. + +2012-03-06 Albert Chu + + * Support set sensor reading and event status command. + +2012-03-05 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-comp-code-spec.h: Add + macros for completion code ranges. + + * libfreeipmi/util/ipmi-error-util.c + (ipmi_completion_code_strerror_r): Use new macros. + +2012-03-01 Albert Chu + + * ipmipower/ipmipower_connection.c (_connection_setup): Support + ability to specify alternate port in hostname argument. + +2012-03-01 Albert Chu + + Merge altport branch. + + * libfreeipmi/api/ipmi-api.c (_setup_hostname), + libipmiconsole/ipmiconsole_defs.h, libipmiconsole/ipmiconsole.c + (ipmiconsole_ctx_create), libipmiconsole/ipmiconsole_ctx.h + (ipmiconsole_ctx_config_setup), libipmiconsole/ipmiconsole_ctx.c + (ipmiconsole_ctx_config_setup), ipmidetectd/ipmidetectd_loop.c + (_nodes_setup): Support ability to specify alternate port in + hostname argument or host config. + + * libipmimonitoring/ipmi_monitoring_ipmi_communication.c + (_ipmi_1_5_init, _ipmi_2_0_init, _outofband_init): Let various + error checking fall through to lower level APIs. + + * man/manpage-common-outofband-hostname.man, + man/manpage-common-outofband-hostname-hostranged.man, + man/ipmidetectd.conf.5.pre.in: Update manpages appropriately. + +2012-03-01 Albert Chu + + * libipmimonitoring/ipmi_monitoring_ipmi_communication.c + (_ipmi_1_5_init, _ipmi_2_0_init): Properly return connection + timeout error on connection timeout. + + * man/ipmidetectd.conf.5.pre.in: Fix some English. + +2012-03-01 Albert Chu + + * libipmimonitoring/, libipmiconsole/: Support Cipher Suite 15, + 16, and 17. + +2012-02-26 Yaroslav Halchenko + + * man/ipmi-chassis.8.pre.in: Fix typos. + +2012-02-24 Albert Chu + + Merge selreservation branch + + * libfreeipmi/: Support new functions + ipmi_sel_parse_ctx_register_reservation_id() and + ipmi_sel_parse_ctx_clear_reservation_id() in the sel-parse library + as well as a new error return of + IPMI_SEL_PARSE_ERR_RESERVATION_CANCELED. + + * ipmi-sel/: Support --post-clear option. + +2012-02-24 Albert Chu + + * common/miscutil/error.h, common/miscutil/error.c + (err_init_exit_value): New function. + + * ipmidetect/ipmidetect.c (main): Exit with value 2 on errors. + + * ipmipower/: Properly exit with 1 when an error occurs on IPMI + errors instead of just system errors. + + * man/: Add exit value diagnostics information to most manpages. + + * ipmipower/: Code cleanup for consistency to libipmiconsole code. + +2012-02-23 Albert Chu + + Merge sha256 branch. + + * Support Cipher Suite 15 and 16 globally. + + * Add details of Cipher Suite 18 and 19 globally. + + * bmc-config/bmc-config-rmcpplus-conf-privilege-section.c + (bmc_config_rmcpplus_conf_privilege_section_get): Add + configuration for Maximum_Privilege_Cipher_Suite_Id_15. + +2012-02-22 Albert Chu + + * bmc-config/bmc-config-rmcpplus-conf-privilege-section.c + (id_checkout): Fix cipher suite privilege + configuration corner cases workaround on HP DL145. + + * man/manpage-common-workaround-outofband-20-text.man: Document + Intel S2600JF/Appro 512X workaround. + + * bmc-config/bmc-config-rmcpplus-conf-privilege-section.c (_rmcpplus_cipher_suite_id_privilege_setup): + Workaround cipher suite privilege configuration bug in Intel + S2600JF/Appro 512X. + +2012-02-22 Albert Chu + + * common/toolcommon/tool-cmdline-common.c (common_parse_opt), + common/toolcommon/tool-config-file-common.c + (_config_file_cipher_suite_id): Differentiate between invalid and + unsupported cipher suites in error message output. + +2012-02-21 Albert Chu + + * doc/freeipmi-bugs-issues-and-workarounds.txt, + man/ipmi-sensors.8.pre.in: Update information concerning + 'discretereading' workaround. + + * ipmi-sensors/: Code cleanup, rename 'reading' to + 'sensor_reading' for consistency. + + * libfreeipmi/cmds/ipmi-lan-cmds.c: Fix packet layout for + tmpl_cmd_get_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entry_support_rs. + + * doc/freeipmi-faq.texi: Add Powerman configuration notes for + C410x. Fix various parts. + +2012-02-17 Albert Chu + + * ipmipower/: Various code cleanup. Change "DIAG_INTR" to + "DIAGNOSTIC_INTERRUPT" in code for readability. Make code + consistent to other codein FreeIPMI. Add asserts as needed. + + * Globally: Various code cleanup. Use switch statements where it + would be more appropriate for performance improvements. + +2012-02-17 Albert Chu + + Merge dellc410x + + * ipmipower/: Add --oem-power-type option and support C410x OEM + power type. Support ability to input power control to same host + multiple times under OEM conditions. Serialize power control + operations to same host. + + * ipmipower/ipmipower_oem.h, ipmipower/ipmipower_oem.c: New files. + + * ipmipower/: Various code cleanup given re-architecture. + + * common/miscutil/hostlist.c: Remove fprintf debug error messages + from tool. + + * ipmi-oem/ipmi-oem-dell.c: Fix C410X corner case. + +2012-02-10 Albert Chu + + * libfreeipmi/api/ipmi-api.c (ipmi_ctx_open_inband): Add comment + about openipmi driver. + +2012-02-08 Albert Chu + + * doc/freeipmi-coding.txt, README.build: Add configure notes. + +2012-02-07 Albert Chu + + * libfreeipmi/sel-parse/: Support Supermicro SEL CPU Temp events. + +2012-02-06 Albert Chu + + * man/ipmi-sel.8.pre.in: Fix option typo. + +2012-01-31 Albert Chu + + * man/ipmi-oem.8.pre.in: Update supported motherboard information + based on tests from Ryan Cox. + +2012-01-30 Albert Chu + + * man/ipmi-oem.8.pre.in: Update supported motherboard information + based on tests from Ryan Cox. + +2012-01-27 Albert Chu + + * man/ipmi-oem.8.pre.in: Update information based on tests from + Ryan Cox. + +2012-01-18 Albert Chu + + * man/ipmi-sel.8.pre.in: Clarify usefulness of event direction. + +2012-01-17 Albert Chu + + * ipmipower/ipmipower.h: Redo packet validation macros. + + * libfreeipmi/include/freeipmi/cmds/ipmi-chassis-cmds.h: Define + macros for on vs off power. + + * ipmipower/ipmipower_powercmd.c (_process_ipmi_packets): Use new + macros. + +2012-01-16 Albert Chu + + * man/manpage-common-inband.man: Clarify argument input. + +2012-01-15 Albert Chu + + * doc/freeipmi-faq.texi: Add some OpenIPMI linux kerneld driver + notes. + +2012-01-15 Albert Chu + + Merge branch dellsolinstancecapacity + + * libipmiconsole/ipmiconsole_processing.c (_check_sol_activated): + Workaround bug in Dell Poweredge M605, Dell Poweredge M610, and + Dell Poweredge M915 where instance count of SOL is returned as 0. + +2012-01-13 Albert Chu + + * Audit and add asserts appropriately to large number of functions. + + * common/configtool/: All config tools support hostranges, so + replace PSTDOUT_PRINTF with pstdout_printf, PSTDOUT_FPRINTF with + pstdout_fprintf, and PSTDOUT_PERROR with pstdout_perror. + +2012-01-13 Albert Chu + + * doc/solstatediagram.dot: SOL State Diagram documentation. + +2012-01-13 Albert Chu + + * libipmiconsole/ipmiconsole_processing.c + (_process_protocol_state_deactivate_payload_sent): Fix deactivate + only corner case in which session not closed cleanly. + +2012-01-12 Albert Chu + + Merge branch redotemplatedocs + + * libfreeipmi/include/freeipmi/templates/: Redo format. Update + OEM motherboard lists. + + * + libfreeipmi/include/record-format/ipmi-oem-intel-node-manager-cmds.h: + Update motherboard list. + + * libfreeipmi/: Clean up some comments in various files. + +2012-01-12 Albert Chu + + * libfreeipmi/sensor-read/ipmi-sensor-read.c + (_sensor_reading_corner_case_checks): Handle corner case in Sun + Blade 6000M2. + +2012-01-11 Albert Chu + + Merge sunbladex6250sensor branch + + * libfreeipmi/sensor-read/ipmi-sensor-read.c + (_sensor_reading_corner_case_checks): Handle corner case in Sun + Blade x6250. + + * libfreeipmi/sensor-read/ipmi-sensor-read.c + (_sensor_reading_corner_case_checks): Slightly alter error code + return interpretations. + +2012-01-10 Albert Chu + + * common/toolcommon/tool-config-file-common.c: Fix several config + file option parsing bugs. + +2012-01-10 Albert Chu + + * doc/freeipmi-faq.texi: Add conman configuration FAQ example. + Add terminology, ganglia, nagios info. + +2012-01-09 Albert Chu + + * doc/freeipmi-faq.texi: Add powerman configuration FAQ example. + +2012-01-09 Albert Chu + + * Merge 8250:8352 ipmioemdellgetsysteminfo. + + * ipmi-oem/ipmi-oem-dell.c: Add Dell get-system-info + 'slot-number', 'system-revision', 'embedded-video-status', + 'idrac-info', 'idrac-ipv4-url', 'idrac-gui-webserver-control', + 'cmc-ipv4-url', 'cmc-ipv6-info', 'cmc-ipv6-url' k eys. Support + 12G mac addresses. Support better error messages. + +2012-01-09 Albert Chu + + * libfreeipmi/: Add re-arm sensor events functions. + + * bmc-device/: Support --rearm-sensor. + + * README, man/freeipmi.7.pre.in: Update description of bmc-device. + +2012-01-09 Albert Chu + + * man/ipmi-oem.8.pre.in: Add SDR caching information to specific + OEM commands. + +2012-01-08 Albert Chu + + * Update/fix various documentation and comments. + +2012-01-08 Albert Chu + + * libfreeipmi/cmds/ipmi-sensor-cmds.c, + libfreeipmi/include/freeipmi/templates/ipmi-sensor-cmds-templates.h: + Re-arm Sensor Events fields are optional not required. + +2012-01-08 Albert Chu + + * libipmiconsole/: Don't deactivate the SOL payload when it + appears the SOL session has been stolen. + +2012-01-07 Albert Chu + + Merge serialkeepalive branch + + * libipmiconsole/: Add SERIAL_KEEPALIVE_EMPTY flag support. + + * libipmiconsole/ipmiconsole_processing.c + (_serial_keepalive_timeout): Fix keepalive calculation to avoid + spinning. + + * ipmiconsole/: Add --serial-keepalive-empty support. + + * configure.ac: Update versioning for libipmiconsole. + +2012-01-07 Albert Chu + + * Update/fix various documentation and comments. + +2012-01-06 Albert Chu + + * bmc-watchdog/: Fix usage output typo. + +2012-01-06 Jan Safranek + + * ipmidetectd/, bmc-watchdog/: Fix race in daemon setup code to + function with new systemd. + +2012-01-06 Albert Chu + + * Update/fix various documentation and comments. + +2012-01-05 Albert Chu + + Merge 8269:8289 from c410x branch. + + * ipmi-oem/: Support Dell C410x OEM extension slot-power-toggle, + slot-power-control, get-port-map, and set-port-map. + +2011-12-22 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-system-info-parameters-oem-spec.h: Fix macro names. + +2011-12-22 Albert Chu + + Merge branch qsscs4r. + + * libfreeipmi/sel-parse/, libfreeipmi/interpret/: Support Quanta + QSSC-S4R/Appro GB812X-CN OEM SEL Events. + + * libfreeipmi/interpret/, ipmi-sensors/: Re-organize code for + future growth. Most notably, split up OEM extensions into + individual vendor files/functions. + + * ipmi-sensors/: Support Quanta QSSC-S4R OEM SDR records. + + * libfreeipmi/interpret/: Support Fan assert/deassert sensor/sel + interpretations. Support Quanta QSSC-S4R OEM sensors and SEL + events. + +2011-12-21 Albert Chu + + * Update/fix/remove OEM extension download links + +2011-12-20 Albert Chu + + * libfreeipmi/util/ipmi-sensor-and-event-code-tables-util.c (ipmi_get_oem_specific_message): + Fix bug loading incorrect tables. + + * libfreeipmi/sel-parse/ipmi-sel-parse-string-intel.c (ipmi_sel_parse_output_intel_event_data2_event_data), + libfreeipmi/include/freeipmi/spec/ipmi-slave-address-oem-spec.h: + Remove IPMI_GENERATOR_ID_OEM_INTEL_BIOS_POST macro, which was only + supposed to be an example in Intel documentation. + +2011-12-20 Albert Chu + + * Branch Release-1_1_0_branch for FreeIPMI 1.1.0 stable branch + +2011-12-20 Albert Chu + + * Update documentation for Quanta QSSC-S4R/Appro GB812X-CN + +2011-12-19 Albert Chu + + * libfreeipmi/fru-parse/: Support IPMI_FRU_PARSE_ERR_DEVICE_BUSY error code. + + * ipmi-fru/: Do not consider a busy device a fatal error. + + * Document Appro GB812X-CN IPMI compliance issues. + +2011-12-19 Albert Chu + + * libfreeipmi/: Support IPMI_FLAGS_IGNORE_AUTHENTICATION_CODE + workaround flag. + + * ipmi-sensors/: Support 'ignoreauthcode' workaround flag. + +2011-12-16 Kaiwang Chen + + * contrib/pet/petalert.pl, contrib/pet/README: Support and + document NSCA. + +2011-12-15 Albert Chu + + * libfreeipmi/cmds/libfreeipmi/cmds/ipmi-pef-and-alerting-cmds.c (fill_cmd_set_pef_configuration_parameters_pef_control): + Fix config setting bug for Enable_PEF_Event_Messages. + +2011-12-15 Kaiwang Chen + + * contrib/pet/README: Updated information about Poweredge 1950. + +2011-12-14 Albert Chu + + * contrib/pet/README: Fix some text and formatting. + + * libfreeipmi/src/util/pimi-sensor-and-event-code-tables-util.c (_supermicro_oem_temp_level_sensor_supported): + Common function for common code. + +2011-12-14 Kaiwang Chen + + * contrib/pet/: Support 'perf' token option. + +2011-12-13 Albert Chu + + Build system rework. + + * contrib/, libfreeipmi/: Remove most subdir Makefiles. + + * Various Makefile.am cleanup. + + * freeipmi.spec.in: Move libipmimonitoring contrib into devel package. + +2011-12-13 Kaiwang Chen + + * contrib/pet/check_rmcpping, contrib/pet/ipminodes.cfg: New files. + + * contrib/pet/: Significant doc updates. + +2011-12-13 Albert Chu + + * Minor documentation updates. + + * Minor packaging fixes to fix distcheck. + +2011-12-12 Albert Chu + + Giant re-org of code. + + * Store all manpages stored in man/. + + * Store all /etc appropriate files in etc/. + + * Move common/src libs to common/. + + * Remove many src directories, move sources up a directory. + + * Various Makefile cleanups. + +2011-12-12 Albert Chu + + * examples/: Remove directory. Move files into contrib/libipmimonitoring. + + * Install contribs into doc/contrib/ + + * freeipmi.spec.in: Fixup for recent changes. + +2011-12-12 Kaiwang Chen + + * libfreeipmi/src/api/ipmi-api-util.c (_api_ipmi_cmd_post): Fix + corner case bug. + + * contrib/pet/petalert.pl: Support workaround option. + +2011-12-09 Albert Chu + + * libfreeipmi/src/api/: Fix completion code check corner case with + IPMI_FLAGS_NO_LEGAL_CHECK. + + * libfreeipmi/: Minor code cleanup. + +2011-12-09 Kaiwang Chen + + * libfreeipmi/src/api/: Fix bug with IPMI_FLAGS_NO_LEGAL_CHECK + use. + +2011-12-08 Albert Chu + + * Support IPMI_FLAGS_NO_LEGAL_CHECK flag in libfreeipmi. + +2011-12-07 Kaiwang Chen + + * contrib/pet/petalert.pl: Support PET acknowledge option. + +2011-12-07 Albert Chu + + * ipmi-pet/: Support "malformedack" workaround option. + +2011-12-07 Albert Chu + + * common/man/: Various additions, tweaks, and modifications. + +2011-12-06 Albert Chu + + * libfreeipmi/src/api: Re-arch LAN code to timeout on malformed + packets rather than do an immediate retry. + +2011-12-05 Kaiwang Chen + + * ipmi-pet/src/ipmi-pet.c (_ipmi_pet_parse_trap_data): Pass raw + localtimestamp, not locally adjusted timestamp. + +2011-12-05 Albert Chu + + * common/man/: Various code re-org and cleanup. + + * Fix up manpages for easier future maintenance. + + * Remove warnings when "compiling" manpages. + + * Fix compile warnings. + + * ipmi-pet/: Adjust ipmi-pet to look more like remaining FreeIPMI + manpages. + + * Various manpage doc updates. + +2011-12-05 Albert Chu + + * ipmi-pet/src/: Fix warning. + +2011-12-02 Albert Chu + + * Update IANA Enterprise validity macro. + +2011-12-01 Albert Chu + + * Various documentation updates. + + * Update copyright years for release in 2012. + +2011-11-30 Albert Chu + + * Various documentation updates. + +2011-11-28 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_daemon_cmd_error_exit) + (_daemon_cmd_error_noexit): Do not assume semaphore deleted on + EINVAL. + +2011-11-18 Albert Chu + + * libfreeipmi/src/api/: Common function code cleanup. + + * libfreeipmi/src/spec/: Update iana numbers list. + +2011-11-18 Albert Chu + + * libfreeipmi/src/api/: Remove duplicate parameter checks. Write + common functions for variety of code. + +2011-11-18 Albert Chu + + * libfreeipmi/: Add support for IPMI firmware firewall and command + discovery payloads. Perform some code cleanup. + +2011-11-16 Albert Chu + + * Continued code cleanup. Remove unnecessary null checks. + Remove excessive/unnecessary initializations. Fix minor bugs. + Fix code inconsistency styles. Remove unused functions. + + * Update additional documentation about new ipmi-pet tool. + +2011-11-15 Albert Chu + + * Code cleanup and minor fixes. Remmove unnecessary if checks for + free() globally. Remove excessive initializations. Fix minor + bugs. + +2011-11-15 Albert Chu + + * Support IPMI_FLAGS_NOSESSION in libfreeipmi. + + * libfreeipmi/include/freeipmi/record-format/ipmi-platform-event-trap-record-format.h: + Support macros for sequence number. + + * Support --pet-acknowledge in ipmi-pet. + +2011-11-15 Albert Chu + + * ipmi-pet/ipmi-pet.8.pre.in: Add examples. + +2011-11-15 Kaiwang Chen + + * contrib/pet/petalert.pl: Support various new features. + +2011-11-14 Albert Chu + + * libfreeipmi/include/freeipmi/api/ipmi-api.h: Update documentation. + + * libfreeipmi/src/api/ipmi-lan-session-common.c: Code cleanup. + +2011-11-14 Kaiwang Chen + + * Add contrib/pet/petalert.pl script from Kaiwang + Chen (kaiwang.chen AT gmail DOT com). + +2011-11-14 Albert Chu + + * Support Supermicro X9SCM-F IANA change. + +2011-11-08 Albert Chu + + * Support Supermicro X9SCA-F-O OEM sensors. + +2011-11-08 Albert Chu + + Merge branch ipmipet. + + * ipmi-pet/: New tool. + + * libfreeipmi/include/freeipmi/record-format/ipmi-platform-event-trap-record-format.h: + New file. + + * common/src/toolcommon/: Update tool common function appropriately for new tool. + + * common/src/toolsensor/tool-sensor-common.h, + common/src/toolsensor/tool-sensor-common.c (calculate_column_widths_ignored_sdr_cache, + get_entity_id_string): New functions. + + * common/src/toolsdr/tool-sdr-cache-common.h, + common/src/toolsdr/tool-sdr-cache-common.c (ipmi_sdr_cache_search_sensor_wrapper): + Write new common function. + + * common/src/toolevent/: New common library. + + * ipmi-sel/: Update to use new convenience functions. + +2011-11-01 Albert Chu + + * ipmi-raw/src/ipmi-raw.c: Code cleanup. Output line numbers when + there is an error on file/stdin input. + +2011-10-31 Albert Chu + + * ipmi-sel/src/ipmi-sel.c (_normal_output_date_and_time) + (_normal_output_not_available_date_and_time): Split into date and + time specific functions. Adjust other code appropriately. + +2011-10-28 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-entity-ids-spec.h, + libfreeipmi/src/spec/ipmi-entity-ids-spec.c: Add new defines for + non-standard entity ids to model sensor types code. + + * libfreeipmi/include/freeipmi/util/ipmi-entity-ids-util.h, + libfreeipmi/src/util/ipmi-entity-ids-util.c: New file. + + * common/src/toolsensor/tool-sensor-common.c (get_entity_sensor_name_string): + Use new library function. + + * ipmi-sel/src/ipmi-sel.c (_normal_output_sensor_name_and_type): + Code cleanup, split function into _normal_output_sensor_name and + _normal_output_sensor_type. Update code accordingly. + + * libfreeipmi/src/fru-parse/, + libfreeipmi/include/freeipmi/fru-parse/ipmi-fru-parse.h: Allow + creation of FRU ctx with NULL ipmi_ctx. + +2011-10-27 Albert Chu + + * Support new --sdr-cache-file option globally. + +2011-10-27 Albert Chu + + * common/src/toolsdr/: Code cleanup, make internal functions static. + +2011-10-24 Albert Chu + + * libfreeipmi/src/fru-parse/ipmi-fru-parse-data.c: Add forgotten headers. + + * ipmi-sel/: Code cleanup, do not pass unnecessary parameters to functions. + +2011-10-24 Albert Chu + + * Update documentation with OEM support information. + +2011-10-21 Albert Chu + + * ipmi-raw/src/: Use unsigned int for cmd_length. + + * common/src/miscutil/conffile.c: Update to latest version. + +2011-10-21 Albert Chu + + * bmc-info/: Output GUID w/ lower case hex characters, as defined + in Wired for Management spec. + +2011-10-20 Albert Chu + + * ipmi-sel/, ipmi-sensors/: Remove unnecessary includes, add + appropriate ones. + + * bmc-info/: Various code cleanup, use macros when appropriate. + +2011-10-19 Albert Chu + + * ipmi-raw/src/ipmi-raw.c: Check for valid netfn request input. + + * libfreeipmi/src/api/: Check for valid netfn request input on raw functions. + +2011-10-19 Albert Chu + + * Global cleanup, consistently and correctly check for errors when + calling strtol, strtoul, strtod, etc. + +2011-10-19 Albert Chu + + * ipmi-raw/src/ipmi-raw-argp.c: Fix error message. Check raw byte + inputs for correctness. + +2011-10-19 Albert Chu + + * Document Intel S2600JF/Appro 512X IPMI bugs. + +2011-10-18 Albert Chu + + * ipmi-raw/, ipmi-oem/: Fix allocation bug due to much larger + _SC_ARG_MAX on RHEL6. Assume max args appropriately for each + tool. + + * ipmi-raw/, ipmi-oem/: Output error when excess arguments + specified. + +2011-10-17 Albert Chu + + * ipmi-sel/, libfreeipmi/src/sel-parse/: Fix the assumesystemevent + workaround. + +2011-10-17 Albert Chu + + * Support Intel Node Manager sensor/SEL events for Intel + S2600JF/Appro 512X. + +2011-10-17 Albert Chu + + * libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c (get_management_subsystem_health_event_data2_message): + Fix corner case output bug. + +2011-10-17 Albert Chu + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache-read.c (ipmi_sdr_cache_search_sensor), + libfreeipmi/src/sdr-cache/ipmi-sdr-cache-defs.h: Fix corner case + where invalid SDR record could be loaded if shared sensors are + utilized on event only records. + +2011-10-14 Albert Chu + + * etc/freeipmi.conf: Fix example/doc consistency. + +2011-10-13 Albert Chu + + * ipmi-locate/src/ipmi-locate.h: Fix typo. + + * ipmi-locate/src/ipmi-locate-argp.c: Fix copyright year typo. + + * ipmi-locate/src/ipmi-locate_.h: Renamed from ipmi-locate.h. + Done for code consistency to how ipmiconsole handles its + ipmiconsole_.h. + +2011-10-13 Albert Chu + + * Update copyright globally. + +2011-10-06 Albert Chu + + * Document HP Itegrity rx3600 workaround. + +2011-09-23 Albert Chu + + * libipmiconsole/src/Makefile.am: Fix logdir creation bug, should + not hardcode /var for localstatedir. + + * libipmimonitoring/src/Makefile.am: Properly hide local library + symbols. + +2011-09-26 Diego Elio Pettenò + + * configure.ac, ipmi-sensors/src/Makefile.am: ipmimonitoring is + generated referring to /usr/local even if configured with + --prefix=/usr . This was caused by the broken expansion of the + sbin path in configure.ac. + + To resolve the issue, this change no longer consider + ipmimonitoring to be expanded by configure itself, but is rather + processed at build time with sed so that make takes care of the + expansion. + + The file is also not distributed (since it needs to be regenerated + depending on configure options), but its sources are. + +2011-09-23 Albert Chu + + * ipmipower/ipmipower.conf.5, ipmiconsole/ipmiconsole.conf.5: + Remove headers. + + * libipmimonitoring/ipmi_monitoring_sensors.conf.5, + libipmimonitoring/ipmimonitoring.conf.5, + libipmimonitoring/ipmimonitoring_sensors.conf.5, + libipmimonitoring/libipmimonitoring.conf.5: New files. + + * libipmimonitoring/ipmi_monitoring_sensors.conf.5.pre.in, + libipmimonitoring/ipmimonitoring.conf.5.pre.in, + libipmimonitoring/ipmimonitoring_sensors.conf.5.pre.in, + libipmimonitoring/libipmimonitoring.conf.5.pre.in: Remove files. + + * configure.ac, libipmimonitoring/Makefile.am: Adjust. + +2011-09-22 Dave Love + + * bmc-device/bmc-device.8.pre.in: Fix typos. + +2011-09-21 Albert Chu + + * Remove Magnum X7SBI-LN4 sensor interpretation, not needed. + + * Support Supermicro X8SIE OEM sensors. + +2011-09-20 Albert Chu + + * Fix use of new interpret library interpretation rules. + + * libfreeipmi/src/interpret/: Support chip set transition + severity, current severity, memory redundancy, and system event + state interpretations. + + * libfreeipmi/src/interpret/ipmi-interpret-config-sel.c + (_cb_sel_parse): Fix parse corner case. + +2011-09-20 Albert Chu + + * Support Supermicro X7DB8, X8DTN, X7SBI-LN4, X8DTL OEM sensors. + +2011-09-19 Albert Chu + + * ipmi-dcmi/: Handle additional error codes for optional portions. + +2011-09-19 Albert Chu + + * Support Supermicro X8DTN+-F OEM sensors. + +2011-09-16 Albert Chu + + * ipmipower/ipmipower.conf.5.pre.in, + ipmiconsole/ipmiconsole.conf.5.pre.in: Remove files. + + * ipmipower/ipmipower.conf.5, ipmiconsole/ipmiconsole.conf.5: New + files. + + * configure.ac, ipmipower/Makefile.am, ipmiconsole/Makefile.am: + Adjust. + +2011-09-15 Albert Chu + + * ipmi-sensors/, libfreeipmi/src/sensor-read/, + libfreeipmi/include/freeipmi/sensor-read/, + common/src/parsecommon/: Support new "assumebmcowner" workaround. + +2011-09-15 Albert Chu + + * ipmi-sensors/ipmi-sensors.8.pre.in: Fix some text. Remove + experimental tag from --bridge-sensors option. + + * libfreeipmi/src/sensor-read/ipmi-sensor-read.c: Add comments on + workaround needs. + +2011-09-15 Albert Chu + + * libipmimonitoring/: Support IGNORE_SCANNING_DISABLED workaround. + +2011-09-15 Albert Chu + + * ipmi-sensors/ipmi-sensors.8.pre.in: Update motherboards + workaround may work on. + +2011-09-14 Albert Chu + + * libfreeipmi/src/debug/ipmi-debug.c (ipmi_dump_hex): Output + correct byte length of hex array. + + * libfreeipmi/src/api/ipmi-api.c (ipmi_cmd_raw): Fix debug dump + output corner case. + + * libfreeipmi/src/api/ipmi-api.c (ipmi_cmd_raw_ipmb): Add debug + dump support for special case drivers. + +2011-09-13 Albert Chu + + * ipmipower/: Do not poll stdin when operating in non-interactive + mode. + +2011-09-13 Albert Chu + + * libfreeipmi/src/interpret/: Support cooling device redundancy + interpretation. + + * man/: Update manpages for new interpret configuration options. + +2011-09-12 Albert Chu + + * libfreeipmi/src/interpret/: Support transition severity + sensor/sel interpretations for temperature, voltage, fan, and + power supply sensor types. + +2011-09-07 Diego Elio Pettenò + + * bmc-watchdog/src/bmc-watchdog.c: By writing a pidfile, init + scripts can rely on that to kill or signal the running daemon + instance. This is important because relying on the process name + can be troublesome when using Linux Containers, for instance. + +2011-09-06 Diego Elio Pettenò + + * libfreeipmi/src/Makefile.am: The -module option is used to tell + libtool that the library is not to be used to link against, but + only loaded at runtime, which is not the case for this library. + +2011-08-29 Albert Chu + + * Support Supermicro X9SCL and X9SCM OEM sensors. + +2011-08-29 Albert Chu + + * Merge from branch dcmiupdate. Make additions in DCMI v1.5 specification. + +2011-08-25 Albert Chu + + * libfreeipmi/: Support + IPMI_SENSOR_READ_FLAGS_IGNORE_SCANNING_DISABLED sensor-read + workaround flag. + + * ipmi-sensors/: Support 'ignorescanningdisabled' workaround + option. + +2011-08-09 Albert Chu + + * bmc-watchdog/bmc-watchdog.logrotate: Reduce logrotate output spam. + +2011-07-20 Arnaud Quette + + * ipmi-fru/src/ipmi-fru-output.c: Fix typo. + +2011-07-11 Albert Chu + + * Support Supermicro X8SIL-F OEM Sensors. + +2011-06-30 Albert Chu + + * ipmi-fru/src/ipmi-fru-output.c (_output_field): Remove cut and + paste duplicate code. + +2011-06-29 Arnaud Quette + + * configure.ac, Makefile.am: fix m4 macro reference for libtoolize. + This allows to call the system provided 'autoreconf' instead of autogen.sh + +2011-06-29 Arnaud Quette + + * configure.ac: fix indentation inconsistencies, remove extraneous spaces + and escape single quotes that break some color highlighting systems. + +2011-06-30 Arnaud Quette + + * configure.ac: add AM_PROG_CC_C_O, needed for per-target flags + (ipmipower/src/Makefile.am and ipmipower/src/argv.c) + +2011-06-29 Albert Chu + + * freeipmi.spec.in: Add pkg-config files. + +2011-06-28 Arnaud Quette + + * Add pkg-config support for all FreeIPMI libraries. + +2011-05-31 Albert Chu + + * Fix typo globally, IPMI_CMD_DCMI_GET_DCMI_CAPABILITIY_INFO to + IPMI_CMD_DCMI_GET_DCMI_CAPABILITY_INFO. + +2011-05-24 Holger Liebig + + * ipmi-dcmi/src/ipmi-dcmi.c: Fix asset tag/string identifier + overwriting bug. Update to handle setting asset tag and + management identifier string according to DCMI v1.5 spec. + +2011-05-18 Albert Chu + + * bmc-config/bmc-config.8.pre.in: Add additional troubleshooting + information. + +2011-05-12 Holger Liebig + + * ipmi-dcmi/src/ipmi-dcmi-argp.c: Fix command line parsing bug. + +2011-05-04 Albert Chu + + * Update documents and comments with additional motherboard + workaround information. + +2011-04-27 Albert Chu + + * common/src/miscutil/: Remove unnecessary locking calls. + +2011-04-18 Albert Chu + + * libipmiconsole/: Support convenience functions for determining + whether user inputs are valid or not. + +2011-04-18 Albert Chu + + * libipmiconsole/src/ipmiconsole.h: Update comments to show + support for cipher suite id 17. + +2011-04-07 Albert Chu + + * Add Intel SR1625/S5500WB OEM SEL interpration. + + * libfreeipmi/src/interpret/ipmi-interpret.c: Support + interpretations of OEM sensor types w/ generic event/reading type + codes. + +2011-04-06 Albert Chu + + * Add Intel SR1625 OEM sensor interpretation. + +2011-04-05 Albert Chu + + * libfreeipmi/src/drivers/: Support SPIN_POLL option for faster + inband IPMI under certain circumstances. Timeout after a + consistent time rather than a poll-attempted guess. + + * libfreeipmi/src/api/ipmi-api.c: Adjust default polling interval + for KCS. + + * Support "spinpoll" workaround for all tools and libipmimonitoring. + +2011-04-01 Albert Chu + + * Support additional sensor and sel interpretations. + +2011-03-31 Albert Chu + + * Support "discretereading" in libipmimonitoring. + +2011-03-29 Albert Chu + + * common/src/parsecommon/, ipmi-sensors/, + libfreeipmi/src/sensor-read/: Support new "discretereading" + workaround in ipmi-sensors. + +2011-03-29 Albert Chu + + * doc/freeipmi-hostrange.txt: Fix some English. + +2011-03-22 Albert Chu + + * Support package version string in libfreeipmi. + +2011-03-16 Albert Chu + + * Support package version number macros in libfreeipmi. + +2011-03-16 Albert Chu + + * libipmiconsole/: Slightly alter mechanism for selecting standard + defaults vs. config file defaults. + + * libipmiconsole/: Fix bug where an empty string k_g key (e.g. "") + would not overwrite the default k_g key specified in a config + file. + + * libipmiconsole/src/ipmiconsole.c (ipmiconsole_ctx_create): Force + ipmiconsole_engine_init() to be called prior to creating a + context. + + * common/src/parsecommon/: Fix assert corner case. + +2011-03-14 Albert Chu + + * Support library version numbers in libfreeipmi, libipmiconsole, + libipmidetect, and libipmimonitoring. + +2011-03-11 Albert Chu + + * common/src/parsecommon/parse-common.h, + common/src/parsecommon/parse-common.c, + common/src/toolcommon/tool-cmdline-common.c: Support ability to + configure "none" workaround flags. May be useful for overriding + workaround flags configured in freeipmi.conf. + + * common/src/toolcommon/tool-cmdline-common.c (common_parse_opt): + Fix bug in which workaround flags on the command line may not + overwrite config file workaround flags. + + * ipmipower/src/ipmipower_prompt.c (_cmd_workaround_flags): + Support ability to reconfigure workaround flags to 'none' via + ipmipower prompt. + + * ipmipower/src/ipmipower_prompt.c (_cmd_config): Fix + workaround-flags config output bug. + +2011-03-10 Albert Chu + + * bmc-info/: Handle additional error conditions within Get System + Info Parameter calls. + +2011-03-09 Albert Chu + + * libipmiconsole/src/ipmiconsole_ctx.c + (__ipmiconsole_ctx_connection_cleanup): Only call the callback if + an error occurred during a session submission, not if an error + occurred in API land. + +2011-03-08 Albert Chu + + * libipmiconsole/src/ipmiconsole_engine.c, + libipmiconsole/src/ipmiconsole_garbage_collector.c: Add + mutex/conditional to protect against theoretical race between + engine and garbage collector on teardown. + + * configure.ac: Increment library revision. + +2011-02-24 Albert Chu + + * ipmi-oem/src/ipmi-oem-intel.c: Fix portability bug to Solaris 10. + +2011-02-21 Albert Chu + + * Documentation Dell Poweredge R210 OEM sensor. + + * libfreeipmi/src/interpret/ipmi-interpret-config-sensor.c: Fix + Dell OEM default bug. + +2011-02-18 Albert Chu + + * common/man/manpage-common-entity-sensor-names.man: Fix + formatting error. + +2011-02-18 Albert Chu + + * Overwrite symlinks during make install. + +2011-02-17 Albert Chu + + * bmc-config/src/bmc-config-user-sections.c (username_commit): + Handle corner case in which motherboard does not allow + configuration of identical username. + +2011-02-17 Albert Chu + + * Support Supermicro X7DBR-3 OEM Sensors. + +2011-02-17 Albert Chu + + * libfreeipmi/src/interpret/: Support Dell Module/Board OEM sensor + interpretation. + +2011-02-17 Albert Chu + + * contrib/ganglia/ganglia_ipmi_sensors.pl, + contrib/nagios/nagios_ipmi_sensors.pl: Do not exit out if an error + occurs, an error could have occurred if one node out of a + hostrange fails. + +2011-02-17 Albert Chu + + * Support Supermicro X8DT3-LN4F motherboard. + +2011-02-14 Albert Chu + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache-create.c + (_sdr_cache_record_write): Fix compliance bug on HP Proliant + DL585G7. + +2011-02-04 Christopher Maestas and Albert Chu + + * contrib/ganglia/ganglia_ipmi_sensors.pl: Support new -r option. + +2011-02-01 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_deamon_cmd_error_exit): Fix + typo, rename to 'deamon' to 'daemon'. Fix elsewhere + appropriately. + + * bmc-watchdog/src/bmc-watchdog.c (_daemon_setup, _daemon_cmd): + Call _bmclog() and exit(1) instead instead of _err_exit(). + +2011-01-28 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-comp-code-spec.h: Fix + spelling typo. + +2011-01-28 Albert Chu + + * doc/freeipmi-faq.texi: Add additional info on determining if + your system has IPMI support. + +2011-01-27 Albert Chu + + * bmc-info/: Support motherboards that don't implement Get Device + Guid. + +2011-01-27 Albert Chu + + * Support Supermicro X8DTL-3F. + +2011-01-27 Albert Chu + + Various ipmi-locate fixes based on user comments + + * common/man/manpage-common-troubleshooting.man: Add "driver + timeout" error description. + + * ipmi-locate/ipmi-locate.8.pre.in: Add text on how ipmi-locate + can be used. + + * doc/freeipmi-faq.texi: Add info on determining if your system + has IPMI. + + * ipmi-locate/src/ipmi-locate.c: Fix error message output for + clarity. + +2011-01-24 Albert Chu + + * ipmi-sensors/, libfreeipmi/: Support ignore unrecognized events + capability. + +2011-01-24 Albert Chu + + * ipmi-oem/ipmi-oem.8.pre.in: Document what is wrtten to eeprom to + clear them. + +2011-01-20 Albert Chu + + * configure.ac, NEWS: Update for 1.0.1 release. + + * Fix a few more documentation typos. + + * doc/freeipmi-design.txt: New document. + + * doc/freeipmi-coding.txt: Split out information into + freeipmi-design.txt, tweak text. + +2011-01-19 Albert Chu + + * libipmiconsole/src/ipmiconsole.h: Fix comment typos/English. + +2011-01-18 Albert Chu + + * ipmi-sensors/src/ipmimonitoring.in: Fix portability. + +2011-01-18 Albert Chu + + * ipmipower/src/Makefile.am: Fix build error. + +2011-01-18 Holger Liebig + + * common/src/toolhostrange/Makefile.am: Fix build error. + +2011-01-18 Albert Chu + + * ipmi-dcmi/: Fix UTF-8 corner case. + +2011-01-13 Albert Chu + + * ipmi-sensors/: Support --ipmimonitoring-legacy-output. + +2011-01-12 Albert Chu + + * common/man/: Fix some manpage typos. + +2011-01-11 Albert Chu + + * ipmi-dcmi/, libfreeipmi/include/freeipmi/cmds/ipmi-dcmi-cmds.h, + libfreeipmi/src/cmds/ipmi-dcmi-cmds.c: Update asset-tag getting + and setting based on 1.1 errata. + +2011-01-10 Albert Chu + + * ipmi-dcmi/, libfreeipmi/include/freeipmi/cmds/ipmi-dcmi-cmds.h, + libfreeipmi/src/cmds/ipmi-dcmi-cmds.c: Various DCMI updates for + 1.1 spec and 1.1 errata. + +2011-01-03 Albert Chu + + * doc/: Fix typos. + + * contrib/ganglia/: Fix temperature, rpm, voltage reporting corner case. + +2010-12-14 Albert Chu + + * ipmi-oem/: Fix Intel Node Manager corner cases. + +2010-12-13 Albert Chu + + * ipmi-oem/: Support basic Intel Node Manager commands. + + * libfreeipmi/: Code re-org on Intel Node Manager code. + +2010-12-09 Albert Chu + + * ipmi-sensors/: Support Intel Node Manager sensors. + +2010-12-08 Albert Chu + + * libfreeipmi/: Add initial Intel Node Manager support. + +2010-12-02 Albert Chu + + * libfreeipmi/src/fru-parse/: Fix leap year calculation bug. + +2010-12-01 Albert Chu + + * libfreeipmi/src/interpret/: Support ability to configure + interpretation of out of spec sensor events and sel events. + +2010-11-18 Albert Chu + + * bmc-config/: Re-do lan/serial_user_session_limit workaround to + work for multi-channel. + +2010-11-18 Albert Chu + + * bmc-config/: Fix bug in HP DL145 RMCPplus workaround. + +2010-11-17 Albert Chu + + * bmc-config/: Fix bug in HP DL145 RMCPplus privilege key. + +2010-11-17 Albert Chu + + * Remove CONFIG_ERR_NON_FATAL_ERROR_REQUIRED_FIELD_NOT_FOUND error + code, does not function is initially required. + + * bmc-config/: Output error message directly instead of using + CONFIG_ERR_NON_FATAL_ERROR_REQUIRED_FIELD_NOT_FOUND. + +2010-11-17 Albert Chu + + * common/src/configtool/: Support new + CONFIG_ERR_NON_FATAL_ERROR_REQUIRED_FIELD_NOT_FOUND error code. + + * bmc-config/: Fix workaround for HP DL145 RMCPplus privilege + key configuration when commiting privilege changes. + +2010-11-17 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-privilege-level-spec.h: + Define IPMI_PRIVILEGE_LEVEL_UNSPECIFIED. + +2010-11-16 Albert Chu + + * bmc-config/: Cleanup cipher suite id loading and caching code. + + * bmc-config/: Support workaround of HP DL145 RMCPplus privilege + key configuration. + +2010-11-16 Albert Chu + + * libfreeipmi/src/interpret/: Support ability to configure + interpretation when no sensor event occurs, rather than assuming + it is always Nominal. + +2010-11-15 Albert Chu + + * libfreeipmi/src/interpret/: Support OEM bitmask configuration of + event bitmask 0 as a special case to cover case in which sensor + event bitmask is 0. + + * libfreeipmi/src/interpret/: Have Dell Power Optimized sensor + report Nominal if no event occurs. + +2010-11-15 Albert Chu + + * libfreeipmi/src/interpret/: Support different format for OEM + configuration. Support multiple manufacturer/product ids to be + specified for an interpretation. + + * Support Supermicro X8DTU-6+ OEM sensor interpretations. + +2010-11-11 Albert Chu + + * Create 'ipmi-detect' symlink and manpage to link to 'ipmidetect'. + + * freeipmi.spec.in: Update appropriately for updates/changes. + +2010-11-11 Albert Chu + + Branch 'reorg'. + + * Re-org code base for consistency in code tree. + + * examples/: New directory. + + * ipmimonitoring/src/examples/: Remove directory, move files to + examples/. + + * libipmimonitoring/: New directory. + + * ipmimonitoring/src/libipmimonitoring/: Remove directory, move to + libipmimonitoring/. + + * libipmiconsole/: New directory. + + * ipmiconsole/src/libipmiconsole/: Remove directory, move to + libipmiconsole/. + + * ipmiconsole/src/ipmiconsole/: Remove directory, move source to + ipmiconsole/src/. + + * libipmidetect/: New directory. + + * ipmidetect/src/libipmidetect/: Remove directory, move source to + libipmidetect/. + + * ipmidetectd/: New directory. + + * ipmidetect/src/ipmidetectd/: Remove directory, move source to + ipmidetectd/. + + * ipmidetect/src/ipmidetect/: Remove directory, move source to + ipmidetect/src/. + +2010-11-11 Albert Chu + + * Create 'ipmi-power' symlink and manpage to link to 'ipmipower'. + + * Create 'ipmi-ping' symlink and manpage to link to 'ipmiping'. + + * Create 'rcmp-ping' symlink and manpage to link to 'rcmpping'. + + * Create 'ipmi-console' symlink and manpage to link to 'ipmiconsole'. + + * freeipmi.spec.in: Update appropriately for updates/changes. + +2010-11-10 Albert Chu + + Branch serialnulping + + * ipmiconsole/src/libipmiconsole/: Support serial keepalive. + + * ipmiconsole/: Support --serial-keepalive option. + +2010-11-05 Albert Chu + + * common/src/toolcommon/tool-cmdline-common.h, + common/src/toolcommon/tool-cmdline-common.c + (verify_common_cmd_args_inband, verify_common_cmd_args_outofband): + New functions. + + * common/src/toolcommon/tool-cmdline-common.c + (verify_common_cmd_args): Re-arch to use new functions. + + * ipmipower/src/ipmipower_argp.c (_ipmipower_args_validate, + ipmipower_argp_parse): Re-arch to use new functions and reduce + duplicate code. + + * Globally, support special case handling if user inputs a k_g key + of 0. Is possible with hex input (e.g. -k 0x00). + +2010-11-05 Albert Chu + + * common/src/parsecommon/: New common code library. + + * ipmiconsole/: Support libipmiconsole.conf file. Support default + of 4 threads. Increase k_g buffer size to max + 1. + +2010-11-05 Albert Chu + + * Support Supermicro X8DTU-6+ OEM sensors. + +2010-11-02 Albert Chu + + * ipmi-sel/: Fix output corner case for N/A outputs. + +2010-10-22 Albert Chu + + * ipmi-sel/: Fix corner case with --output-oem-event-strings, did + not work with OEM record types. + +2010-10-21 Albert Chu + + * ipmi-sel/: Fix corner case, --output-oem-event-strings does not + require --interpret-oem-data. + +2010-10-21 Holger Liebig + + * libfreeipmi/src/sel-parse/ipmi-sel-parse-string-fujitsu.c: Fix + error message corner case. + +2010-10-20 Albert Chu + + * Code cleanup for consistency to FreeIPMI code style. + + * Re-work OEM SEL interpretations to not call Fujitsu Get SEL + Entry Long Text for every event. + + * ipmi-sel/: Support --output-oem-event-string. + +2010-10-20 Holger Liebig + + * Add initial Fujitsu OEM sensor and SEL support. + +2010-10-19 Albert Chu + + * Rename IPMI_COMP_CODE_REQUEST_SENSOR_DATA_OR_RECORD_NOT_PRESENT + to IPMI_COMP_CODE_REQUESTED_SENSOR_DATA_OR_RECORD_NOT_PRESENT + globally. + + * libfreeipmi/src/sensor-read/: For + IPMI_COMP_CODE_REQUESTED_SENSOR_DATA_OR_RECORD_NOT_PRESENT + completion code, return sensor unavailable rather than sensor + cannot be obtained. + +2010-10-14 Albert Chu + + * man/: Update workaround flags options. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h: Fix comment typo. + +2010-10-13 Albert Chu + + * bmc-config/: Have IPv4 parameters commented out by default. + +2010-10-12 Albert Chu + + * libfreeipmi/: Support RMCP port configuration. + + * bmc-config/: Support RMCP port configuration. + +2010-10-11 Albert Chu + + * libfreeipmi/: Support LAN ipv4 header parameters configuration. + + * bmc-config/: Support LAN ipv4 header parameters configuration. + + * bmc-config/: Move vlan output to only under verbose mode. + +2010-09-23 Albert Chu + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache-create.c + (_sdr_cache_get_record): Improve SDR caching speed. + +2010-09-17 Albert Chu + + * Globally re-architect to split workaround flags into inband, + outofband, and outofband 2.0 workaround flags. Re-architect will + save bits for future workarounds and possible future expansion + (e.g. protocol 3.0, etc.). + +2010-09-15 Albert Chu + + * Support 'assumeio' inband workaround. + +2010-09-14 Albert Chu + + * libfreeipmi/src/sel-parse/: Support Intel NM OEM sensor names. + + * Probe for Intel NM SDR entry as necessary. + +2010-09-13 Albert Chu + + * ipmi-oem/: Move some OEM commands from Dell to Inventec. What + was thought to be Dell additions was in fact not. + +2010-09-13 Albert Chu + + * Support Intel NM SEL events for all motherboards. + +2010-09-13 Albert Chu + + * libfreeipmi/src/api/ipmi-api.c (ipmi_ctx_open_inband): Fix + fallthrough error corner case. + +2010-09-08 Albert Chu + + Merge from intels5500wb branch. + + * Add Intel S5500WB OEM SEL support. + + * Re-arch some sel-parse code for performance. + + * libfreeipmi/src/sel-parse/ipmi-sel-parse.c: Fix event_data1 + parsing bug. + + * ipmi-oem/: Add Intel restore-configuration, get-smtp-config, and + set-smtp-config support. + + * Various minor code fixes. + +2010-09-07 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-comp-code-spec.h: Fix + macro names for consistency to other parts of FreeIPMI. + + * Adjust remaining code throughout for consistency. + +2010-09-01 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-cmd-oem-spec.h: Fix typo + in macro. + +2010-08-31 Albert Chu + + * ipmi-oem/: Support inventec restore-to-defaults. + + * Document more inventec oem additions. + +2010-08-31 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-detailed-output.c + (_detailed_output_event_enable): Gracefully handle + IPMI_COMP_CODE_COMMAND_RESPONSE_COULD_NOT_BE_PROVIDED error. + +2010-08-25 Albert Chu + + * ipmi-oem/: Support Quanta get/set-nic-mode, + get/set-bmc-services, get-account-status, get/set-dns-config, + get/set-web-server-config, get/set-power-management-config, + get/set-sol-idle-timeout, get/set-telnet-ssh-redirect-status, + read/write-mac-address. + + * ipmi-oem/: Support get/set-telnet-ssh-redirect-status for + inventec. + +2010-08-24 Albert Chu + + * ipmi-oem/: Fix and support inventec get-account-status. + + * Fix typos: TS12 -> FS12 motherboard. + + * ipmi-oem/: Support Inventec get/set-sol-idle-timeout. Implement + get/set-telnet-ssh-redirect-status. + + * ipmi-oem/: Fix range checking on parameter inputs. + + * ipmi-oem/: Fix and support Inventec get/set-dns-config. + +2010-08-23 Albert Chu + + * ipmi-oem/: Implement inventec get-account-status, + get-dns-config, and set-dns-config. Fix variable argument help + output bug. + +2010-08-23 Albert Chu + + * ipmi-dcmi/: Support --set-asset-tag, + --get-management-controller-identifier-string, and + --set-management-controller-identifier-string. + +2010-08-23 Albert Chu + + * bmc-watchdog/, bmc-device/: Fix some documentation + typos/inconsistencies. + +2010-08-20 Albert Chu + + * Support DCMI 1.1 Specification. Re-org various code for + consistency to DCMI 1.1 specification organization. + +2010-08-20 Albert Chu + + * libfreeipmi/src/api/ipmi-lan-session-common.c + (_ipmi_lan_2_0_cmd_wrapper_verify_packet): Fix error check corner + case. + +2010-08-18 Albert Chu + + * ipmi-oem/: Tweak Fujitsu get-sel-entry-long-text based on + comments by Holger Liebig. Other minor tweaks for code + consistency. + +2010-08-18 Dan Lukes + + * ipmi-oem/: Fix for bugs in Fujitsu get-sel-entry-long-text OEM + command. + +2010-08-18 Albert Chu + + * libfreeipmi/src/debug/, + common/man/manpage-common-cipher-suite-id-details.man: Add SHA256 + support. + + * Variety of mods to remove compiler warnings. + +2010-08-18 Holger Liebig + + * Add SHA256 support globally. + +2010-08-17 Albert Chu + + * ipmi-oem/: Re-format Fujitsu get-sel-entry-long-text for + consistency to remaining ipmi-oem code. Re-work to go through + multiple iterations. + + * Add manpage entry for Fujitsu get-sel-entry-long-text OEM + command. + +2010-08-17 Dan Lukes + + * ipmi-oem/: Support Fujitsu get-sel-entry-long-text OEM command. + +2010-08-13 Albert Chu + + * ipmi-oem/: Various code consistency cleanup. + + * libfreeipmi/include/freeipmi/spec/: Various filename and macro + name changes for consistency to IPMI spec. + + * Various code cleanup. + +2010-08-12 Albert Chu + + * ipmimonitoring/: Update examples and library comments. + + * ipmidetect/ipmidetectd.init: Fix for /etc/freeipmi/ + +2010-08-11 Albert Chu + + * Move config files to /etc/freeipmi/. Support legacy config + files. + + * Fix distcheck bugs. + +2010-08-11 Albert Chu + + * libfreeipmi/: Support Chassis Boot Option Boot Initiator Info + and Boot Initiator Mailbox. + + * libfreeipmi/: Re-work Chassis Boot Option configs to support + valid/invalid parameter config on parameters. + + * ipmi-chassis-config/: Set don't clear valid bits after setting + boot flags. + + * config/ac_ipmipower_config_file.m4: New file. + + * config/ac_ipmiconsole_config_file.m4: New file. + + * configure.ac: Calculate ipmipower.conf and ipmiconsole.conf + legacy conf files via configure. + + * ipmipower/, ipmiconsole/: Use macros from autoconf instead of + hard defined default conf locations. + + * ipmidetect/ipmidetect.conf: Add example file. + + * freeipmi.spec.in: Update appropriately for distribution changes. + + * Various code cleanup. + +2010-08-09 Albert Chu + + * Convert Repo to Subversion. + +2010-08-06 Albert Chu + + * ipmi-sel/ipmi-sel.8.pre.in, ipmi-fru/ipmi-fru.8.pre.in: Cleanup + and re-format a bit. + +2010-08-06 Albert Chu + + * Fix SOL_Retry_Count validation bug. + + * ipmipower/src/: Fix workaround flag config output corner case. + + * Support bmc-config 'solchannelassumelanchannel' workaround. + + * common/man/manpage-common-config-tool-options-sol-channel-number.man: Fix text. + +2010-08-06 Albert Chu + + * freeipmi.spec.in: Update for payload dir. + + * Fix --enable-rawumps corner cases. + + * Fix SOL single-channel corner case. + +2010-08-05 Albert Chu + + * Support --enable-rawdumps compile option. + +2010-08-05 Albert Chu + + * common/src/configtool/: Support 'veryslowcommit' workaround in + config tools for very slow BMCs. + + * bmc-config/: Fix multi-channel corner cases. + + * common/man/: Update very verbose description case in config tools. + +2010-08-03 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/, ipmi-sel/, bmc-device/: + Fix corner case with time calculating and daylight savings. + +2010-08-02 Albert Chu + + * libfreeipmi/src/api/, ipmipower/, + ipmiconsole/src/libipmiconsole/: Revert OPEN_SESSION_PRIVILEGE + rework done on 2010-07-13. Change is unnecessary. + +2010-08-02 Albert Chu + + * tagged pre_multi_channel_config + + * libfreeipmi/src/util/ipmi-channel-util.c + (ipmi_get_channel_numbers): New function. + + * libfreeipmi/src/util/ipmi-channel-util.c: Re-arch/cleanup for + new functionality. + + * common/man/manpage-common-config-tool-options-verbose.man, + common/man/manpage-common-config-tool-options-very-verbose.man: + New files. + + * common/man/manpage-common-config-tool-options.man: Split out + verbose option appropriately. + + * Adjust config tool manpages appropriately. + + * common/src/configtool/config-tool-checkout.c: If user specifies + keypairs, don't output section comments. + + * common/src/configtool/: Introduce CONFIG_DO_NOT_LIST flag. Only + do not show sections with this flag when --list is done. + + * common/src/configtool/, bmc-config/: Make verbose output only + for extra sections & fields. Make very verbose output only for + info on why fields were/were not readable/writeable/etc. + + * bmc-config/src/: Show all sections that can be checked out, + including verbose ones when -v isn't specified. + + * bmc-config/src/: If CONFIG_DO_NOT_CHECKOUT is specified for an + entire section, do not force CONFIG_DO_NOT_CHECKOUT if user + specifies section on command line. Do not force + CONFIG_DO_NOT_CHECKOUT if user specifies key-pair on the command + line. + + * bmc-config/, ipmi-pef-config/: Support new configuration fields + and sections for multi-channel configuration support. + + * Various code cleanup. + + * tagged post_multi_channel_config + +2010-07-29 Albert Chu + + * Split off SOL payloads into new files and outside of + SOL-Commands. + +2010-07-28 Albert Chu + + * libfreeipmi/: Support Chassis Boot Options, Lan Configuration + Parameters, Serial/Modem Configuration, SOL Configuration + Parameters, System Info Parameters, and PEF Configuration + Parameters Set In Progress. + + * Fix some template bugs/typos. + +2010-07-27 Albert Chu + + * libfreeipmi/: Support Chassis Service Partition Selector and + Chassis Service Partition Scan templates, functions, etc. + + * Various cleanup. + +2010-07-23 Albert Chu + + * doc/freeipmi-faq.texi: Update with x86-64 build instructions and + libgcrypt information. + +2010-07-22 Albert Chu + + * libfreeipmi/src/sel-parse/: Workaround compliance issue in + Supermicro H8QME. + +2010-07-22 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/: Fix seg-fault corner case. + + * ipmimonitoring/src/libipmimonitoring/: Support ability to read + SEL sensor numbers. Fix sensor number reading corner case. + + * ipmimonitoring/src/examples/: Output sensor number in examples. + +2010-07-21 Albert Chu + + * libfreeipmi/src/sel-parse/: Fix corner case, do not error out if + SEL is empty. + +2010-07-13 Albert Chu + + * libfreeipmi/src/api/, ipmipower/, + ipmiconsole/src/libipmiconsole/: Re-work OPEN_SESSION_PRIVILEGE + workaround to handle an additional OPEN_SESSION_PRIVILEGE corner + case. + +2010-07-13 Albert Chu + + * Various documentation updates. + +2010-07-12 Albert Chu + + * ipmi-oem/: Support Supermicro get-bmc-services-status and + set-bmc-services-status. + +2010-07-12 Albert Chu + + * Various documentation updates. + +2010-07-08 Albert Chu + + * ipmi-oem/: Uncomment Quanta reset-to-defaults commands, is now + functional w/ proper documentation. + +2010-07-08 Dick Detweiler + + * common/src/pingtool/ping-tool-common.c (_cmdline_parse): Fix + casting bug. + +2010-07-08 Albert Chu + + * bmc-config/bmc-config.8.pre.in: Add small OEM config note. + +2010-07-07 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_packet.c + (ipmiconsole_packet_unassemble): On several errors, assume + malformed packet, not internal error. + +2010-07-07 Albert Chu & Anonymous Avocent Developer + + * ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_sol_bmc_to_remote_console_packet, + _process_protocol_state_sol_session_receive): If SOL is + deactivating, don't bother sending Deactivate Payload command, + simply close session. + +2010-07-06 Albert Chu + + * configure.ac: Support --without-random-device. + +2010-07-02 Albert Chu + + * Fix compile bug w/ macro renaming. + +2010-07-01 Albert Chu + + * Prefix macros not intended to be used by users. + +2010-06-30 Albert Chu + + * Support Supermicro X8DTU motherboard product id. + +2010-06-30 Albert Chu + + * bmc-config/, ipmi-pef-config/, common/src/configtool/: Support + --lan-channel-number, --serial-channel-number. + +2010-06-30 Albert Chu + + * Fix manpage consistency throughout. + +2010-06-30 Jan Safranek + + * ipmidetect/src/ipmidetectd/ipmidetectd_config.c: Fix parsing of + unknown arguments. +< +2010-06-28 Albert Chu + + * bmc-watchdog/: Fix "ignorestateflag" workaround for more corner + cases. + +2010-06-22 Albert Chu + + * libfreeipmi/src/util/ipmi-channel-util.c: Fix legacy corner + case. + +2010-06-17 Albert Chu + + * bmc-watchdog/: Fix --version option. + +2010-06-15 Albert Chu + + * bmc-watchdog/: Support 'ignorestateflag' workaround. + +2010-06-14 Albert Chu + + * libfreeipmi/include/freeipmi/templates/ipmi-messaging-support-cmds-templates.h, + libfreeipmi/src/cmds/ipmi-messaging-support-cmds.c: Modify template to ensure some fields + that are required are actually optional. + +2010-06-14 Albert Chu + + * Add 'slowcommit' workaround to config tools, to workaround BMCs + that cannot take large amounts of data. + +2010-06-11 Albert Chu + + * ipmimonitoring/: Support '%' as sensor units. + +2010-06-11 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/: Fix units output corner + case. + +2010-06-11 Albert Chu + + * Return 'privilege level cannot be obtained' error code when + rmcpplus status of 'invalid role' returned. + +2010-06-11 Albert Chu + + * Document issues with Intel S5500WBV/Penguin Relion 700 + motherboard. + +2010-06-10 Albert Chu + + * doc/freeipmi-faq.texi: Fix URL to Conman. + +2010-06-10 Albert Chu + + * Rename 'supermicro20b' to 'integritycheckvalue' and rework + specifically on one issue, rather than a set of issues. + +2010-06-09 Albert Chu + + * Fix ipmi-sensors output corner case in which percent was output + as "% unspecified" instead of "%". + +2010-06-07 Albert Chu + + * Fix 'supermicro20b' workaround in ipmiconsole. + +2010-06-04 Albert Chu + + * Support 'supermicro20b' workaround in ipmipower, + libipmimonitoring, and libipmiconsole. + +2010-06-04 Albert Chu + + * Remove RAKP4 auto accept for intel20 workaround, should not + accept if two part authentication cannot be completed. + +2010-06-03 Albert Chu + + * Support supermicro20b workaround. + + * Document support appropriately. + +2010-06-02 Albert Chu + + * Various documentation and comment updates. + +2010-05-27 Albert Chu + + * Document workarounds and issues with Supermicro X8DTG + motherboard. + + * common/man/manpage-common-troubleshooting.man: Update w/ inband + troubleshooting. + + * common/man/manpage-common-troubleshooting-lan-only.man: New + file. + + * ipmipower/, ipmiconsole/: Update manpages w/ lan-only + troubleshooting. + +2010-05-26 Frank Steiner (http://www.bio.ifi.lmu.de/~steiner/) + + * bmc-watchdog/freeipmi-bmc-watchdog.init: exit status from rc_ + functions is not returned by init script. + +2010-05-25 Albert Chu + + * Support Supermicro X8DTG motherboard. + +2010-05-21 Albert Chu + + * libfreeipmi/src/interpret/: Support different SEL event + interpretation on assertion vs. deassertion. Various code + cleanup. + + * libfreeipmi/: Various code cleanup. + +2010-05-17 Albert Chu + + * ipmi-dcmi/, libfreeipmi/: Fix copyright headers on all DCMI + related files. + +2010-05-14 Albert Chu + + * ipmi-sensors/src/ipmimonitoring: Remove. + + * ipmi-sensors/src/ipmimonitoring.in: New file. + + * configure.ac, ipmi-sensors/src/Makefile.am: Fix portability + install bug. + +2010-05-14 Albert Chu + + * ipmi-oem/src/ipmi-oem-quanta.c: Fix minor bugs. + + * libfreeipmi/src/interpret/: Fix bitmask corner case. + + * libfreeipmi/src/util/: Fix bitmask corner case. + + * ipmi-pef-config/: Code cleanup, use macro instead of magic number. + +2010-05-13 Albert Chu + + * libfreeipmi/src/interpret/ipmi-interpret.c: Fix threshold sensor + state interpretation corner case. + +2010-05-13 Albert Chu + + * ipmi-oem/src/: Fix bitmask bug. + + * ipmi-oem/src/ipmi-oem-quanta.c: Add macro and output for + Westmere-EP processor. + + * libfreeipmi/src/sel-parse/ipmi-sel-parse-string-quanta.c: Make + DIMM output more detailed. + +2010-05-12 Albert Chu + + * ipmimonitoring/: Various comment/documentation updates. + +2010-05-11 Albert Chu + + * libfreeipmi/include/freeipmi/spec/: Support Quanta S99Q/Dell + FS12-TY OEM commands. + + * ipmi-oem/: Support Quanta S99Q/Dell FS12-TY OEM commands. + + * libfreeipmi/src/sel-parse/: Support Quanta S99Q/Dell FS12-TY OEM + SEL events. + + * libfreeipmi/, ipmi-oem/: Minor cleanup. + +2010-05-07 Albert Chu + + * ipmi-oem/src/ipmi-oem-ibm.c: Fix potential corner case. + +2010-05-07 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-cmd-oem-spec.h: Fix macro + typo. + +2010-05-06 Albert Chu + + *common/src/configtool/config-tool-section.h, + common/src/configtool/config-tool-section.c + (config_sections_validate_keyvalue_inputs): Do not take + value_input_required parameter. + + * bmc-config/, ipmi-pef-config/, ipmi-sensors-config/, + ipmi-chassis-config/: Re-work for change in + config_sections_validate_keyvalue_inputs. Do not check value + inputs when --checkout is specified since it is not necessary. + +2010-05-05 Dave Love > + + * bmc-watchdog/bmc-watchdog.8.pre.in: Fix formatting. + +2010-05-04 Albert Chu + + * Fix make distcheck. + +2010-05-03 Albert Chu + + * libfreeipmi/src/driver/ipmi-sunbmc-driver.c, + libfreeipmi/src/driver/ipmi-openipmi-driver.c: Fix string + concatentation bugs in error strings. + +2010-05-03 Albert Chu + + Build sunbmc driver w/o bmc_intf.h being found. + + * COPYING.sunbmc: New file. + + * README.sunbmc: Removed. + + * libfreeipmi/src/driver/freeipmi_bmc_intf.h: New file. + + * libfreeipmi/src/driver/ipmi-sunbmc-driver.c: Adjusted appropriately. + + * configure.ac, freeipmi.spec.in, Makefile.am, + doc/freeipmi-faq.texi: Adjusted appropriately. + + * libfreeipmi/src/driver/ipmi-sunbmc-driver.c + (ipmi_sunbmc_ctx_io_init): Fix initialization corner case is + putmsg interface is used over ioctl interface. + + * libfreeipmi/src/driver/ipmi-sunbmc-driver.c + (_set_sunbmc_ctx_errnum_by_errno): Assume EINVAL errno is a system + error (b/c system does not support ioctl). + + * libfreeipmi/src/driver/ipmi-sunbmc-driver.c + (ipmi_sunbmc_ctx_errmsg): Fix string concat bug. + +2010-05-03 Albert Chu + + * libfreeipmi/: If sunbmc driver is not supported, report "device + not supported" instead of "internal error". + +2010-04-30 Albert Chu + + * configure.ac: Update library versions appropriately. + +2010-04-30 Dave Love + + * ipmi-pef-config/src/Makefile.am (install-exec-hook): Don't use + `cp -d'. + +2010-04-29 Albert Chu + + * doc/: Update for Quanta S99Q/Dell FS12-TY. + + * bmc-config/: Work around node busy issues with Quanta S99Q/Dell + FS12-TY. + +2010-04-28 Albert Chu + + * libfreeipmi/src/cmds/ipmi-lan-cmds.c + (fill_cmd_set_lan_configuration_parameters_bad_password_threshold): + Fix error check. + +2010-04-28 Albert Chu + + * Rename dimm macros specifically for motherboard they work on. + + * Support Inventec 5442/Dell Xanadu III error codes and Dimms. + +2010-04-27 Albert Chu + + * Rename "Xanadu2" to "Xanadu II" globally in documents, comments, + and codeto be consistent to Dell product name. + + * Document/support Inventec 5442/Dell Xanadu III. + +2010-03-22 Albert Chu + + * Various code cleanup, organizational cleanup, fix rpm building, etc. + +2010-03-19 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/: Support SEL monitoring. + + * ipmimonitoring/src/libipmimonitoring/: Support event/reading + type code in sensor iterator. + + * ipmimonitoring/src/examples/: Add SEL monitoring example. + + * Various code cleanup. + + * Minor bug fixes. + +2010-03-10 Albert Chu + + Merge sel_interpret_branch. + + * Add interpret sel support in interpret library to libfreeipmi. + + * libfreeipmi/src/sel-parse/: Do not require valid ipmi_ctx. + Functions performing ipmi communication will simply error. + + * ipmi-sel/: Support --output-event-state option. + + * Consistently name interpret 'sensors' to 'sensor'. + + * Minor cleanup and minor fixes. + +2010-03-08 Albert Chu + + * libfreeipmi/src/interpret/ipmi-interpret.c (_get_sensor_state): + Return UNKNOWN state if invalid sensor bitmask returned. + +2010-03-03 Albert Chu + + * ipmi-sel/: Fix possible HP workaround bug. + +2010-03-02 Albert Chu + + * ipmi-oem/: Fix column output for IBM get-led. + +2010-03-02 Albert Chu + + * Fix Posix time portability globally. + +2010-03-02 Albert Chu + + * ipmi-sel/: Support --date-range and --exclude-date-range. + +2010-03-02 Albert Chu + + * ipmi-oem/: Uncomment IBM Get LED, verified. Sensor search bug + fix. + +2010-03-01 Albert Chu + + * ipmi-oem/: Fix IBM Get LED. + +2010-02-27 Albert Chu + + * ipmi-oem/: Add Dell Get Active LOM Status support. + +2010-02-25 Albert Chu + + * ipmi-oem/: Add IBM get-led base code. + +2010-02-21 Albert Chu + + * ipmi-sel/, common/src/toolcommon/: Support + --output-manufacturer-id. Alter OEM record output to align with + columns by outputting "N/A" in appropriate fields and putting + manufacturer ID in event output. + +2010-02-19 Albert Chu + + * ipmi-sensors/: Ensure multiple event output strings separated by + space in simple output. + +2010-02-18 Albert Chu + + * ipmi-sensors/: Code cleanup. + +2010-02-17 Albert Chu + + * ipmi-sensors/, common/src/toolsensor/, man/: Support numeric + input for --sensor-types and --exclude-sensor-types. + + * common/src/, ipmi-sel/: Support --sensor-types and + --exclude-sensor-types options. + +2010-02-16 Albert Chu + + From pre_ipmimonitoring_to_ipmi_sensors_branch + + * ipmi-sensors/ipmimonitoring.8: New file. + + * ipmi-sensors/src/ipmimonitoring: New file. + + * ipmimonitoring/ipmimonitoring.8.pre.in: Remove file. + + * ipmimonitoring/src/ipmimonitoring/: Remove ipmimonitoring. + + * ipmimonitoring/src/examples/: Add ipmimonitoring-sensors example. + + * common/src/toolcommon/: Make ipmimonitoring config file options + backwards compatible to ipmi-sensors. + + * common/src/toolsensor/: Code cleanup given changes. + + * etc/, doc/, man/: Update appropriately for changes. + + * configure.ac: Update appropriately for changes. + +2010-02-16 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-simple-output.c + (_simple_output_full_record): Fix comma separated output corner + case. + +2010-02-12 Albert Chu + + * ipmi-sensors-config/ipmi-sensors-config.8.pre.in, + libfreeipmi/libfreeipmi.3.pre.in: Fix typos, pef-config to + ipmi-pef-config. + + * doc/freeipmi-hostrange.txt: Add some option info. + +2010-02-11 Albert Chu + + * libfreeipmi/src/api/ipmi-lan-session-common.c + (_ipmi_lan_2_0_cmd_wrapper_verify_packet): Fix session sequence + number wrap around corner case. + +2010-02-11 Albert Chu + + * ipmimonitoring/src/libipmimonitoring: Fix sensor naming. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_bitmasks.h: + New file. + + * freeipmi.spec.in: Update appropriately. + +2010-02-10 Albert Chu + + * ipmimonitoring/libipmimonitoring.3.pre.in: Update for recent + changes. + + * ipmimonitoring/src/libipmimonitoring/: Code cleanup. + +2010-02-09 Albert Chu + + * common/src/toolsensor/, ipmi-sensors/, ipmimonitoring/, + ipmi-sel/: Various code cleanup. + + * common/src/toolhostrange/pstdout.h, + common/src/toolhostrange/pstdout.c: For wrapper pstdout's use + normal printf/fprintf/perror if library not initialzed. + + * COPYING.ZRESEARCH: Update to GPLv3. + +2010-02-09 Albert Chu + + * contrib/ganglia/: Update appropriately for changes. + + * contrib/ganglia/ganglia_ipmi_sensors.pl: Updated for new output + format and options. Support ability to monitor sensor state. + Support -T and -t options to allow option to monitor only sensor + state or sensor readings. + + * contrib/ganglia/ganglia_ipmimonitoring.pl: Remove file. + Superseded by changes in ganglia_ipmi_sensors.pl. + + * contrib/nagios/nagios_ipmi_sensors.pl: New file. + + * contrib/nagios/nagios_ipmimonitoring.pl: Remove file. + Superseded by nagios_ipmi_sensors.pl. + +2010-02-08 Albert Chu + + Continue update to GPLv3 globally. + + * Replace LLNL tool COPYING files w/ GPLv3 COPYING file. + + * DISCLAIMER.rmcpping, DISCLAIMER.rmcpping.UC, COPYING.rmcpping: + Remove files, "rmcpping" is a part of "ipmiping." + + * Update LLNL ipmi tool project headers. + + * Fix LLNL ipmi tool project head typos. + + * common/man/: Update manpages w/ GPLv3 info. + + * common/man/manpage-common-gpl-freeipmi-text.man: New file. + + * Fix other miscallaneous header files. + +2010-02-08 Albert Chu + + * ipmi-locate/: Support --defaults option. + +2010-02-08 Albert Chu + + * doc/: Fix Linux vs. GNU/Linux usage. + +2010-02-05 Albert Chu + + Begin update to GPLv3 globally. + + * Replace COPYING w/ GPLv3 COPYING file. + + * Update all FreeIPMI core team code header files. + + * Fix up some header file inconsistencies. + +2010-02-05 Albert Chu + + * ipmimonitoring/: Rename a number of functions to specify that + they are sensor monitoring functions. This is to prepare for + future API additions for SEL monitoring. + +2010-02-03 Albert Chu + + * libfreeipmi/src/interpret/: Fix OEM parsing issue. + + * libfreeipmi/src/interpret/: Support Supermicro OEM by default. + + * ipmi-sensors/: Support OEM interpretations in ipmi-sensors. + + * libfreeipmi/src/interpret/: Add Dell OEM interpretations. + +2010-02-02 Albert Chu + + * libfreeipmi/src/interpret/, + libfreeipmi/include/freeipmi/interpret/, ipmimonitoring/: Support + OEM sensor interpretations. + + * common/src/miscutil/conffile.c, common/src/miscutil/conffile.h: + Update to support infinite option arguments. + +2010-02-01 Albert Chu + + * ipmiconsole/ipmiconsole.8.pre.in: Format change. + + * ipmimonitoring/src/ipmimonitoring/: Update for newer sensor types. + + * ipmimonitoring/src/ipmimonitoring/: Various cleanup. + + * ipmimonitoring/: Support OEM bitmask types. + +2010-01-29 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/ + (ipmi_monitoring_read_sensor_bitmask_strings): New function. + + * ipmimonitoring/src/libipmimonitoring/ + (ipmi_monitoring_sensor_bitmask_string): Removed function. + + * ipmimonitoring/src/ipmimonitoring/: Update appropriately for API + change. + +2010-01-29 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-detailed-output.c + (_detailed_output_event_enable): Fix mem-leak. + + * libfreeipmi/include/util/ipmi-sensor-util.h, + libfreeipmi/src/util/ipmi-sensor-util.c, * + libfreeipmi/include/util/ipmi-sensor-and-event-code-tables.h, + libfreeipmi/src/util/ipmi-sensor-and-event-code-tables.c, + (ipmi_get_sensor_event_messages, ipmi_get_event_messages): Rename + ipmi_get_sensor_event_messages to ipmi_get_event_messages. Add + IPMI_GET_EVENT_MESSAGES_FLAGS_SENSOR_READING bitmask. + + * libfreeipmi/include/util/ipmi-sensor-and-event-code-tables.h, + libfreeipmi/src/util/ipmi-sensor-and-event-code-tables.c + (ipmi_get_oem_event_bitmask_message): Renamed from + ipmi_get_oem_sensor_event_bitmask_message. + + * ipmi-sensors/: Update appropriately. + +2010-01-29 Albert Chu + + * libfreeipmi/include/util/ipmi-sensor-util.h, + libfreeipmi/src/util/ipmi-sensor-util.c + (ipmi_get_sensor_event_messages): New function. + + * ipmi-sensors/: Use ipmi_get_sensor_event_messages(). + +2010-01-27 Albert Chu + + * ipmi-sensors/: Support --output-sensor-state and + --sensor-state-config-file. + + * man/freeipmi.conf.5.pre.in: Fix language consistency. + + * libfreeipmi/include/freeipmi/interpret/ipmi-interpret.h, + libfreeipmi/src/interpret/ipmi-interpret-defs.h: Support + IPMI_INTERPRET_FLAGS_INTERPRET_OEM_DATA flag. + +2010-01-25 Albert Chu + + * doc/freeipmi-coding.txt: Fix typos. + +2010-01-21 Albert Chu + + * README, man/freeipmi.7.pre.in: Additional general information added. + +2010-01-21 Albert Chu + + * ipmi-pef-config/ipmi-pef-config.8.pre.in: Fix typo. + +2010-01-20 Albert Chu + + * ipmi-sensors/: Support --output-event-bitmask option. + + * ipmi-sensors/: Re-org and cleanup code significantly. + +2010-01-19 Albert Chu + + * libfreeipmi/include/freeipmi/spec/: Update macros based on Dell docs. + + * ipmi-oem/: Update code appropriately. + + * ipmi-oem/: Change get-power-headroom-info to get-power-head-room + for consistency to Dell docs. Backwards compatability maintained. + +2010-01-18 Andrew Wansink and Albert Chu + + * Fix portability issues to Solaris w/ MAXHOSTNAMELEN definition. + +2010-01-15 Albert Chu + + * libfreeipmi/src/sel-parse/ipmi-sel-parse-string-sun.h, + libfreeipmi/src/sel-parse/ipmi-sel-parse-string-sun.c: New files. + + * libfreeipmi/src/sel-parse/ipmi-sel-parse-string.c: Support Sun + interpretations. + + * ipmi-sel/ipmi-sel.8.pre.in: Update motherboard list. + + * doc/freeipmi-faq.texi: Update vendor list. + +2010-01-14 Klaus Kaempf + + * libfreeipmi/src/cmds/ipmi-messaging-support-cmds.c + (fill_cmd_set_system_info_parameters_primary_operating_system_name): + Fix cut and paste typo. + +2010-01-08 Albert Chu + + * ipmi-sensors/, ipmimonitoring/: Fix manpage examples. + +2010-01-08 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-product-id-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-iana-enterprise-numbers-spec.h: + Add Sun manufacturer and product IDs. + +2010-01-08 Albert Chu + + Merge lib_interpret_branch + + * ipmimonitoring/src/libipmimonitoring/: Support + IPMI_MONITORING_ERR_SENSOR_CONFIG_FILE_DOES_NOT_EXIST error code. + Remove unused IPMI_MONITORING_ERR_CONFIG_FILE_PARSE error code. + + * Add interpret sub library to libfreeipmi. + + * ipmimonitoring/src/libipmimonitoring/: Re-adjust library to use + interpret sub-library instead of internal. Maintain backwards + compatability to original config file. + + * freeipmi.spec.in: Update appropriately for changes. + +2010-01-07 Albert Chu + + * doc/freeipmi-coding.txt: Update text. + +2009-12-28 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.h: Fix + tabbing. + + * doc/freeipmi-libraries.txt, libfreeipmi/libfreeipmi.3.pre.in: + Remove dcmi sub-library, was removed. + +2009-12-24 Albert Chu + + * doc/freeipmi-oem-documentation-requirements.txt: Update. + +2009-12-23 Albert Chu + + * doc/freeipmi-oem-documentation-requirements.txt: Update. + +2009-12-23 Albert Chu + + * Globally fix copyright years for 2010. + +2009-12-23 Albert Chu + + * ipmi-oem/: Support dell get-chassis-identify-status. + + * ipmi-oem/: Support 'guid', 'chassis-service-tag', + 'chassis-related-service-tag', 'board-revision' for Dell + get-system-info. + +2009-12-23 Albert Chu + + * ipmi-oem/ipmi-oem.8.pre.in: Fix grammer typo. + +2009-12-22 sandeep patra + + * ipmi-pef-config/src/Makefile.am: Fix portability bug to cygwin. + +2009-12-22 Albert Chu + + * doc/freeipmi-faq.texi: Add operating sytems section. + +2009-12-21 Albert Chu + + * ipmi-sensors/: Output Entity String along with "Container Entity + ID" or "FRU Entity ID". + +2009-12-21 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-cmd-oem-spec.h: Update + appropriately w/ Dell docs given. + + * libfreeipmi/include/freeipmi/spec/ipmi-system-info-parameter-oem-spec.h: + Update appropriately w/ Dell docs given. + + * ipmi-oem/: Update commands, output, comments, etc. w/ Dell docs + given. + +2009-12-17 Holger Liebig + + * ipmi-oem/src/ipmi-oem-fujitsu.c: Correct ambiguities from the + official documentation. + +2009-12-17 Albert Chu + + * ipmi-dcmi/src/ipmi-dcmi.c (_get_power_limit, set_power_limit): + Implement workaround to deal w/ DCMI interpretation issue. + +2009-12-17 Albert Chu + + * man/freeipmi.7.pre.in, + common/man/manpage-common-workaround-heading-text.man, README: Add + some workaround information. + + * doc/freeipmi-bugs-issues-and-workarounds.txt: Rework some text. + +2009-12-16 Albert Chu + + * doc/freeipmi-bugs-issues-and-workarounds.txt: Document + workaround/interpretation issue in DCMI. + + * ipmi-dcmi/src/ipmi-dcmi.c (_get_power_limit, get_power_limit, + set_power_limit): Implement workaround to deal w/ DCMI + interpretation issue. + + * ipmi-dcmi/: Support --interpret-oem-data option. + + * ipmi-dcmi/, common/src/toolcommon/tool-config-file-common.h, + common/src/toolcommon/tool-config-file-common.c, + man/freeipmi.conf.5.pre.in, etc/freeipmi.conf: Support + --interpret-oem-data config file option. + + * libfreeipmi/include/freeipmi/cmds/ipmi-dcmi-oem-cmds.h: New + file. + +2009-12-16 Albert Chu + + * doc/freeipmi-bugs-and-workarounds.txt: Rename to + freeipmi-bugs-issues-and-workarounds.txt. + + * doc/freeipmi-bugs-issues-and-workarounds.txt: Update w/ + "interpretation" issues. + + * ipmpower/, ipmiconsole/src/libipmiconsole/, + libfreeipmi/src/api/: More accurately comment on IPMI compliance + issue. + + * freeipmi.spec.in: Update appropriately for doc change. + +2009-12-16 Albert Chu + + * common/src/miscutil/hostlist.c, common/src/miscutil/hostlist.h: + Update newest lib versions. + +2009-12-15 Albert Chu + + * doc/freeipmi-coding.txt: Add section on OEM extensions. + +2009-12-15 Albert Chu + + * common/src/tooloem/: New convenience lib. + + * ipmi-fru/, ipmi-sensors/, ipmi-sel/: Use new convenience lib for + common actions of --interpret-oem-data. + + * common/man/manpage-common-interpret-oem-data.man: Slightly + modify statement. + + * ipmi-dcmi/ipmi-dcmi.8.pre.in: Fix text for exception actions. + + * ipmi-dcmi/src/ipmi-dcmi.c (_get_power_limit, set_power_limit): + Output error messages for special completion codes. + +2009-12-15 Holger Liebig + + * libfreeipmi/src/cmds/ipmi-dcmi-cmds.c, + libfreeipmi/include/freeipmi/templates/ipmi-dcmi-cmds-templates.h: + Fix incorrect correction_time_limit field sizes. + + * libfreeipmi/include/freeipmi/spec/ipmi-netfn-spec.h + (IPMI_NET_FN_GROUP_EXTENSION, IPMI_NET_FN_OEM_GROUP): Fix macro + checks. + +2009-12-14 Albert Chu + + * ipmi-raw/ipmi-raw.8.pre.in: Fix spelling typo. + + * man/freeipmi.7.pre.in: Fix punctuation typo. + + * common/man/manpage-common-hostranged-text-threads.man: New file. + + * common/man/manpage-common-hostranged-text-shell.man: Collapse + text into manpage-common-hostranged-text-main.man. Remove file. + + * Add new documentation to manpages as needed. + + * ipmipower/ipmipower.8.pre.in: Document how ipmipower is + different than other tools in parallelism. + +2009-12-14 Albert Chu + + * libfreeipmi/include/freeipmi/cmds/ipmi-dcmi-cmds.h: Add macros + for OEM min/max exception actions. + + * ipmi-dcmi/src/ipmi-dcmi-argp.c: Fix command line parsing of + --activate-deactivate-power-limit. + +2009-12-14 Holger Liebig + + * libfreeipmi/src/cmds/ipmi-dcmi-cmds.c, + libfreeipmi/include/freeipmi/templates/ipmi-dcmi-cmds-templates.h: + Fix invalid + tmpl_cmd_dcmi_get_dcmi_capability_info_enhanced_system_power_statistics_attributes_rs + template. + + * ipmi-dcmi/src/ipmi-dcmi.c (get_asset_tag, _sensor_info_output, + get_power_limit, _output_power_statistics): Fix output bugs and + typos. + +2009-12-14 Albert Chu + + * common/src/toolhostrange/tool-hostrange-common.c + (eliminate_nodes, pstdout_setup): Fix corner case where eliminate + option leads to 0 hosts. + + * Adjust all tools appropriately for change. + + * ipmidetect/src/ipmidetectd/ipmidetectd_loop.c (_fds_setup): + Setup listening socket to be able to more quickly reuse local + addresses. + + * ipmipower/, ipmiconsole/src/libipmiconsole/, ipmidetectd/: + Adjust workaround to deal with OSes that will return ECONNRESET or + ECONNREFUSED if the IPMI port cannot be reached. + + * ipmipower/, ipmiconsole/src/libipmiconsole/, ipmidetectd/: + Adjust workaround to deal with OSes that will return ECONNRESET or + ECONNREFUSED if the IPMI port cannot be reached to not use + select(). + +2009-12-13 Albert Chu + + * libfreeipmi/src/util/ipmi-sensor-units-util.c + (ipmi_sensor_units_string): Fix output corner case. + +2009-12-12 Albert Chu + + * libfreeipmi/src/api/ipmi-lan-session-common.c: Header file + cleanup. + + * common/src/toolsensor/, common/src/toolcommon/: Adjust macros + for cygwin. + + * ipmipower/, ipmiconsole/src/libipmiconsole/, ipmidetectd/: + Adjust workaround to deal with OSes that will return ECONNRESET or + ECONNREFUSED if the IPMI port cannot be reached. + + * Fix compiler warnings. + +2009-12-11 Holger Liebig and Albert Chu + + * ipmipower/, common/src/pingtool/, ipmidetect/src/ipmidetectd/, + ipmiconsole/src/libipmiconsole/, libfreeipmi/src/api/: Support + workaround to deal with OSes that will return ECONNRESET or + ECONNREFUSED if the IPMI port cannot be reached. + +2009-12-11 Albert Chu + + * libfreeipmi/src/api/ipmi-lan-session-common.c + (_ipmi_lan_cmd_recv, _ipmi_lan_2_0_cmd_recv): Do not pass from + parameter if not necessary. + +2009-12-11 Albert Chu + + Fix up cygwin portability issues. + + * common/src/portability/freeipmi-portability.h: Do not define + log2 if it's already defined. + + * libfreeipmi/src/driver/ipmi-openipmi-driver.c: Define + __USE_LINUX_IOCTL_DEFS as needed. + +2009-12-11 Holger Liebig + + * libfreeipmi/src/locate/ipmi-locate-util.c + (locate_set_locate_errnum_by_errno), + libfreeipmi/src/sdr-cache/ipmi-sdr-cache-util.c + (sdr_cache_set_sdr_cache_errnum_by_errno): Fix logic bugs. + +2009-12-11 Albert Chu + + * doc/freeipmi-faq.texi: Update special section. + +2009-12-10 Albert Chu + + Merge changes from ipmimonitoring_rearch_branch + + * ipmimonitoring/: Rearch to support more sensor types. + +2009-12-10 Albert Chu + + * libfreeipmi/include/freeipmi/record-format/ipmi-sdr-record-format.h: + Cleanup linearization macros. + +2009-12-10 Albert Chu + + * ipmipower/ipmipower.8.pre.in, ipmiconsole/ipmiconsole.8.pre.in: + Remove legacy comments. + + * doc/freeipmi-faq.texi: Add "special" note. + + * bmc-info/bmc-info.8.pre.in: Fix formatting. + +2009-12-10 Albert Chu + + * libfreeipmi/include/freeipmi/cmds/ipmi-messaging-support-cmds.h: + Fix typing inconsistency. + + * common/src/portability/freeipmi-portability.h: Fix whitespace + formatting. + +2009-12-09 Albert Chu + + * ipmi-sel/src/ipmi-sel.c (_normal_output_event): Remove legacy + special/unique checks that are no longer needed. + + * ipmipower/src/ipmipower.c: Fix whitespace. + +2009-12-09 Albert Chu + + * doc/freeipmi-bugs-and-workarounds.txt: Update w/ more stuff. + + * doc/freeipmi-oem-documentation-requirements.txt: Minor updates. + + * libfreeipmi/src/sel-parse/ipmi-sel-parse-string.c: Fix + whitespace. + + * libfreeipmi/include/freeipmi/sel-parse/ipmi-sel-parse.h: Fix + API documentation. + +2009-12-08 Albert Chu + + * ipmiconsole/, ipmipower/, libfreeipmi/: Support ability to + report incompatible crypt library. + +2009-12-08 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (ipmiconsole_engine_setup): Fix error message. + + * doc/freeipmi-testing.txt: Update w/ nice to have sel test. + + * doc/freeipmi-coding.txt: Update w/ config tools info. + +2009-12-07 Albert Chu + + * ipmi-sel/src/ipmi-sel.c (_display_sel_records): Tweak column + size slightly for common scenario. + + * ipmi-sel/src/ipmi-sel.c (_display_sel_records): Fix output + corner case when --ignore-sdr-cache is specified. + + * doc/freeipmi-testing.txt: Update w/ nice to have sel test. + + * doc/freeipmi-coding.txt: Update w/ workaround info. + +2009-12-07 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-detailed-output.c + (_output_device_type_and_modifier): Fix output corner case. + +2009-12-07 Albert Chu + + * Tagged Release-0_8_0_base. + + * Branched Release-0_8_0_branch. + +2009-12-07 Albert Chu + + * common/src/: Fix various memleaks. + +2009-12-05 Albert Chu + + * bmc-config/, ipmi-pef-config/, ipmi-chassis-config/, + ipmi-sensors-config/: Minor re-arch/code cleanup. + +2009-12-04 Albert Chu + + * doc/freeipmi-bugs-and-workings.txt: Add alert policy workaround + for Fujitsu. + + * ipmi-pef-config/: Support workaround for Alert Policy Config on + Fujitsu motherboards. + +2009-12-04 Albert Chu + + * Update comp code macros to more closely match IPMI spec. + + * Various doc updates. + +2009-12-02 Albert Chu + + * ipmi-oem/: Comment out inventec firmware update support until + Dell can verify. + +2009-12-02 Albert Chu + + * Tagged Release-0_8_0_beta7. + +2009-12-02 Albert Chu + + * Fix comments. + + * ipmi-oem/: Re-architect for oem command specific completion codes. + +2009-12-01 Albert Chu + + * ipmi-oem/: Support inventec firmware update. + +2009-11-30 Albert Chu + + * ipmi-oem/: Complete Fujitsu OEM commands. + + * ipmi-oem/: Code cleanup. + + * ipmi-oem/: Rename "get/set-nic-status" to "get/set-nic-mode" for + consistency to OEM doc. + +2009-11-26 Albert Chu + + * ipmi-oem/: add flags for future use needs. + +2009-11-26 Albert Chu + + * libfreeipmi/: Fix templates given dcmi reorg. + +2009-11-25 Cyril Brulebois + + * Fix portability issue for kfreebsd. + +2009-11-25 Albert Chu + + * libfreeipmi/: Re-org dcmi to be organized like oem extensions + instead of in separate directory. + + * freeipmi.spec.in: Update for change. + +2009-11-24 Albert Chu + + * libfreeipmi/: Support reading raw readings from sensor-read + library. + + * freeipmi.spec.in: Add missing docs. + + * libfreeipmi/: Increase KCS retry/timeout for ipmb messages. + + * libfreeipmi/: Fix error message output corner case. + +2009-11-24 Albert Chu + + * ipmi-oem/: Fix Fujitsu OEM command. + +2009-11-24 Albert Chu + + * Support debug dumping in openipmi driver for ipmb requests. + +2009-11-23 Albert Chu + + * ipmi-oem/: Support additional Fujitsu OEM commands. + + * libfreeipmi/src/util/ipmi-sensor-units-util.c: Make interesting + output combination cleaner. + +2009-11-23 Albert Chu + + * Tagged Release-0_8_0_beta6. + +2009-11-22 Albert Chu + + * libfreeipmi/: Various code cleanup. Support raw ipmb. + + * ipmi-raw/: Support bridging. + +2009-11-19 Albert Chu + + * Continue code cleanup. + + * ipmi-sensors/: Fix output corner case. + +2009-11-18 Albert Chu + + * libfreeipmi/: Support sensor bridging across different channels. + + * libfreeipmi/src/debug/: Fix rmcpplus ipmb output corner case. + + * libfreeipmi/src/api/: Fix ipmi 2.0 ipmb bridging. + +2009-11-17 Albert Chu + + * ipmi-sensors/: Fix debug output typos. + +2009-11-16 Albert Chu + + * Tagged Release-0_8_0_beta5. + +2009-11-14 Yaroslav Halchenko + + * ipmi-sensors/: Fix output typo "Nominal reading" -> "Nominal + Reading". + +2009-11-13 Albert Chu + + * ipmi-oem/: Support Fujitsu OEM commands from online + documentation. + +2009-11-13 Albert Chu + + * Fix documentation typos. + +2009-11-12 Yaroslav Halchenko + + * Fix manpage comments. + +2009-11-10 Albert Chu + + * common/src/toolhostrange/, contrib/: Update copyrights. + +2009-11-06 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_ipmi_retransmission_timeout): On excessive retransmissions, + error with "connection timeout" if we are at the beginning of the + protocol. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_check_try_new_port): Add special case. If reported console port + is the wrong endian, flip it back to the right endian. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_process_protocol_state_close_session_sent): Fix corner case + dealing with console port change. + +2009-11-06 Albert Chu + + * Document SOL bugs on Supermicro X8DTH-iF. + +2009-11-06 Albert Chu + + * ipmi-pef-config/: Support hex codes for event filter sensor + types. + +2009-11-06 Albert Chu + + * ipmi-pef-config/ipmi-pef-config.8.pre.in: Fix typo. + +2009-11-04 Albert Chu + + * Support "skip sol activation status" workaround for + ipmiconsole/libipmiconsole. + +2009-11-04 Albert Chu + + * Cleanup documents and code, i.e. != e.g. + + * Add more documentation. + +2009-11-03 Albert Chu + + * libfreeipmi/include/freeipmi/sdr-cache/, + libfreeipmi/src/sdr-cache/: Remove ability to check for duplicate + sensor numbers, is invalid b/c of different slave addresses. + +2009-11-02 Albert Chu + + * Tagged Release-0_8_0_beta4. + +2009-11-02 Albert Chu + + * doc/freeipmi-oem-documentation-requirements.txt: New doc. + +2009-10-28 Albert Chu + + * Fix corner case. + +2009-10-26 Albert Chu + + * Various code cleanup. + + * common/src/toolcommon/tool-cmdline-common.h, + common/src/toolcommon/tool-cmdline-common.c: Return errors on bad + workaround flags. Split out tool specific workaround flags. + + * ipmi-fru/, ipmi-sel/: Make tool specific workaround flags. + +2009-10-23 Albert Chu + + * ipmiconsole/src/ipmiconsole/: Output escape menu with + appropriate escape char. + +2009-10-23 Albert Chu + + * Tagged Release-0_8_0_beta3. + +2009-10-22 Albert Chu + + * Fix Netbsd portability bugs discovered by John Heasley . + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (ipmiconsole_engine_thread_create): Fix pthread corner case found + by John Heasley . + +2009-10-15 Albert Chu + + * libfreeipmi/src/sel-parse/: Fix/enhance Dell SEL event interpretations. + +2009-10-14 Albert Chu + + * ipmi-sensors/, ipmimonitoring/, common/src/toolcommon/, etc/: + Fix config file parsing or documentation bugs. + +2009-10-14 Albert Chu + + * common/src/toolhostrange/pstdout.c + (_pstdout_output_consolidated_finish): Fix typo. + + * common/src/toolhostrange/pstdout.c: Up output buffer size. + +2009-10-13 Albert Chu + + * ipmi-sel/, ipmi-fru/: Add motherboard documentation. + +2009-10-13 Albert Chu + + * ipmi-sel/: Change verbosity defaults. + + * libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c + (ipmi_event_message_separator): New function. + + * libfreeipmi/src/sel-parse/: Use ipmi_event_message_separator + appropriately for event messages. + + * libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c: + Tweak message outputs appropriately for consistency and + correctness. + + * Tagged Release-0_8_0_beta2. + +2009-10-12 Albert Chu + + * ipmi-sel/: Support --tail option. + +2009-10-05 Albert Chu + + * Support shared sensors w/ event only sdr records. + + * doc/: Various tweaks. + +2009-10-05 Albert Chu + + * Tagged Release-0_8_0_beta1. + +2009-10-05 Albert Chu + + * + libfreeipmi/include/freeipmi/cmds/ipmi-bmc-watchdog-timer-cmds.h: + Fix macro calculation bug. + +2009-10-02 Albert Chu + + * Change --show-sensor-type back to --no-sensor-type-output. + Adjust for logical change in option. + + * ipmi-sel/, common/src/toolsensor/: Fix column alignmnent corner + case. + + * ipmi-sel/: Collapse event and event detail into one column. + + * ipmi-sel/, libfreeipmi/src/sel-parse/: Fix record id column + alignment. + +2009-10-01 Jan Safranek + + * Fix LSB compliance issues with bmc-watchdog and ipmidetectd init + scripts, logrotate, and sysconfig file naming. + +2009-10-01 Albert Chu + + * Change --no-sensor-type-output to --show-sensor-type. Adjust + for logical change in option. + + * Support --no-header-output option in ipmi-sel, ipmi-sensors, and + ipmimonitoring. + + * ipmi-sel/, libfreeipmi/src/sel-parse/: Tweak output. + +2009-09-30 Albert Chu + + * Change --no-sensor-type to --no-sensor-type-output. + + * common/man/: Various cleanup. + + * libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c: + Make FRU state event data 2 output more detailed. + + * freeipmi.spec.in: Add ipmidetectd.conf. + +2009-09-29 Albert Chu + + * Suppoert --no-sensor-type in ipmi-sel, ipmi-sensors, and + ipmimonitoring. + + * libfreeipmi/src/fru-parse/: Handle no information corner case. + +2009-09-28 Albert Chu + + * libfreeipmi/src/sensor-read/ipmi-sensor-read.c: Fix error return + code corner case. + +2009-09-26 Albert Chu + + * libfreeipmi/src/sel-parse/: Code cleanup, split out OEM + interpretations into vendor specific files. + +2009-09-24 Albert Chu + + * Fix make distcheck. + +2009-09-24 Jan Safranek + + * bmc-watchdog/freeipmi-bmc-watchdog.init, + ipmidetectd/freeipmi-ipmidetectd.init: Various fixes to make init + scripts LSB compliant. + + * ipmidetect/ipmidetectd.conf: New file. + +2009-09-24 Albert Chu + + * ipmidetect/freeipmi-ipmidetectd.init, + bmc-watchdog/freeipmi-bmc-watchdog.init: untabify, cleanup + formatting. + +2009-09-23 Albert Chu + + * ipmi-oem/: Support get/set power management on inventec. + + * ipmi-oem/: Support get/set leds on sun. + + * ipmi-oem/: Various cleanup. + + * ipmi-sensors/, libfreeipmi/: Make generic device locator and + management controller sdr records have entity instance and type. + Adjust code in sdr-parse appropriately, adjust ipmi-sensors + appropriately. + + * ipmi-oem/, common/src/toolsensor/: Support Sun LED get/set. + +2009-09-22 Albert Chu + + * ipmi-dcmi/: Fix output corner case. + + * libfreeipmi/src/dcmi/: Fix get sensor info corner case. + + * libfreeipmi/src/sel-parse/: Add inventec port80 code event + interpretation. + + * ipmi-oem/: Add set-system-guid for inventec. Add set-asset-tag + for dell. + + * ipmi-oem/: Add set-fcb-version for dell. Add get/set board id. + + * ipmi-oem/: Add get/set web-server-config for inventec. + + * ipmi-oem/: Add get/set authentication config for inventec. + +2009-09-21 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-device-types-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-device-types-oem-spec.h: + New files. + + * libfreeipmi/src/spec/ipmi-sensor-and-event-code-tables-spec.c, + libfreeipmi/src/spc/ipmi-sensor-and-event-code-tables-oem-spec.c: + New files. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h: + Make string arrays of offsets public. + + * libfreeipmi/src/spec/ipmi-device-types-spec.c: New files. + + * libfreeipmi/include/freeipmi/util/ipmi-device-types-util.h, + libfreeipmi/src/util/ipmi-device-types-util.c: New files + + * ipmi-sensors/src/: Support device type and device modifier + string outputs. Support oem outputs in generic device locators. + +2009-09-18 Albert Chu + + * libfreeipmi/src/utils/ipmi-sensor-and-event-code-tables-util.c: + Fix corner case in system firmware progress error data2 + output. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h: + Add event data2 and data3 macros. + + * libfreeipmi/src/sel-parse/: Fix Dell OEM interpretations. + + * Various code cleanup. + +2009-09-17 Albert Chu + + * ipmi-oem/: Add inventec restore-to-defaults. + + * ipmi-oem/: Add inventec read/clear eeprom support. + +2009-09-16 Albert Chu + + * common/man/manpage-common-legacy-output.man: Update text. + + * ipmi-sensors/, ipmimonitoring/: Support --shared-sensors option. + +2009-09-16 Albert Chu + + * ipmi-sensors/, ipmimonitoring/, ipmi-sel/, libfreeipmi/: Rename + sensor "group" to sensor "type" globally for consistency to IPMi + spec. + +2009-09-15 Albert Chu + + * bmc-device/: Add error check for generator id input. + +2009-09-14 Albert Chu + + * bmc-device/: Support --platform-event option. + + * Manpage additions. + +2009-09-11 Albert Chu + + * libfreeipmi/src/sel-parse/ipmi-sel-parse-string.c: Fix and add + new Dell interpretations based on Dell specs. + +2009-09-10 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-cmd-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-chassis-boot-options-parameter-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-lan-parameter-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-pef-parameter-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-serial-modem-parameter-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-sol-parameter-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-system-info-parameter-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-netfn-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-comp-code-oem-spec.h: New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-system-info-parameter-spec.h: + Rename from ipmi-system-info-parameter-spec.h (plural parameters). + + * libfreeipmi/include/freeipmi/spec/ipmi-product-id-spec.h: New + file, rename from ipmi-oem-spec.h. + + * Various code cleanup using new macros. + +2009-09-09 Albert Chu + + * ipmidetectd/ipmidetectd.conf.5.pre.in: Fix typo. + + * libfreeipmi/include/freeipmi/spec/ipmi-slave-address-oem-spec.h: + New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-numbers-oem-spec.h: + New file. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-spec.h: + New file. + + * Various code cleanup using new macros. + + * ipmimonitoring/: Update for consistency. Update w/ ipmi errata additions. + + * libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c: + Update for errata changes. + + * + libfreeipmi/include/freeipmi/spec/ipmi-sensor-and-event-code-tables-oem-spec.h: + New file. + +2009-09-08 Albert Chu + + * Rename ipmi-vendor-spec.h to ipmi-oem-spec.h. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-types-oem-spec.h: + New file. + + * + libfreeipmi/include/freeipmi/spec/ipmi-event-reading-type-code-oem-spec.h: + New file. + + * Various code cleanup using new macros. + +2009-09-04 Albert Chu + + * Various code cleanup. + +2009-09-03 Albert Chu + + * libfreeipmi/include/freeipmi/util/ipmi-iana-enterprise-numbers-util.h, + libfreeipmi/src/util/ipmi-iana-enterprise-numbers-util.c: New + files. + + * libfreeipmi/, bmc-info/, ipmi-sensors/, ipmi-fru/: Use new + utility function appropriately. + + * libfreeipmi/: Add supermicro iana support. + + * libfreeipmi/, ipmi-sensors/: Support Supermicro oem sensors. + +2009-09-02 Albert Chu + + * Code cleanup, "macroize" a lot of code. + +2009-09-01 Albert Chu + + * Update IANA enterprise numbers array. + + * libfreeipmi/include/freeipmi/spec/ipmi-vendor-spec.h: New file. + + * Update code to use macros from vendor spec. + + * Add and use macros for ipmi 1.5 and ipmi 2.0. + + * Macroize system event record code. + + * Macroize event type codes. + + * Adjust ipmimonitoring event type codes appropriately. + + * Macroize sensor types throughout. + +2009-08-31 Albert Chu + + * Document workarounds necessary for newer Supermicro + motherboards. Various commenting cleanup. + +2009-08-27 Albert Chu + + * libfreeipmi/src/sel-parse/: Add additional Dell OEM + interpretations. + +2009-08-26 Albert Chu + + * libfreeipmi/src/sel-parse/: Add additional Dell OEM + interpretations. + + * ipmi-sel/, libfreeipmi/src/sel-parse/: Support ipmi version in + OEM interpretations. + +2009-08-25 Albert Chu + + * ipmi-oem/: Fix Dell power capacity output. + +2009-08-25 Albert Chu + + * ipmi-sel/: Rename --delete-all to --clear for consistency to + IPMI spec. + + * libfreeipmi/src/sel-parse/: Cleanup OEM code. + + * ipmi-sensors/: Cleanup OEM code. + +2009-08-24 Albert Chu + + * ipmi-oem/: Fix Dell active directory output. Support type + configuration. + + * ipmi-oem/: Output potential key=value pair inputs when user does + not specify any. + +2009-08-24 Albert Chu + + * bmc-info/: Re-work format of interpret-oem-data output. + + * bmc-device/: Add --set-system-firmware-version, + --set-system-name, --set-primary-operating-system-name, and + --set-operating-system-name support. + +2009-08-21 Albert Chu + + * ipmi-sel/: Support --assume-system-event-records. + + * bmc-config/, ipmi-pef-config/: Report some fatal errors under + non-veborse mode. + +2009-08-21 Albert Chu + + * libfreeipmi/, ipmipower/, common/man/: Support 'authcap' + workaround for motherboard that do not properly report + authentication support. + +2009-08-21 Albert Chu + + * ipmi-sel/, libfreeipmi/src/sel-parse/: Support Dell OEM sel + event. + + * ipmi-raw/: Change default privilege from user to admin. + + * etc/freeipmi.conf: Document correct default privileges. + +2009-08-20 Albert Chu + + * ipmi-oem/: Support supermicro get extra firmware info. + +2009-08-19 Albert Chu + + * freeipmi.spec.in: Update URL to gnu.org. + + * ipmi-oem/: Complete get active directory config. + + * ipmi-oem/: Complete set active directory config. + +2009-08-18 Albert Chu + + * ipmi-oem/: Redo Dell additions due to extra info given from + Dell. + + * ipmi-oem/: Redo "api" to set various dell configurations. + + * ipmi-oem/: Begin active directory config support. + +2009-08-17 Albert Chu + + * Collapse get authentication capabilities v1.5 and v2.0 into one + template, function, packet, etc. throughout. + + * Collapse set user password v1.5 and v2.0 into one template, + function, packet, etc. throughout. + + * Various minor code cleanup. + +2009-08-13 Albert Chu + + * ipmi-oem/: Redo Dell additions due to extra info given from + Dell. + +2009-08-13 Albert Chu + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache-create.c + (ipmi_sdr_cache_create): Add workaround for Fujitsu RX 100. + +2009-08-10 Albert Chu + + * libfreeipmi/src/fru-parse/ipmi-fru-parse.c + (ipmi_fru_parse_next): Fix parsing corner case. + +2009-08-10 Albert Chu + + * common/src/toolsdr/tool-sdr-cache-common.c (sdr_cache_create): + Fix output corner case. + +2009-08-08 Albert Chu + + * ipmi-oem/: Code cleanup. + + * common/src/configtool/: Support invalid/unsupported data non-fatal error. + +2009-08-07 Albert Chu + + * ipmi-oem/: Support verbose option. + + * ipmi-oem/: Suppor dell get/set services commands. + +2009-08-06 Albert Chu + + * ipmi-oem/: Support Dell reset-to-defaults command. + + * common/src/debugutil/, libfreeipmi/: Properly handle group + extensions in debug output. Support better OEM debug output. + + * ipmi-oem/: Support special "list" OEM ID. + +2009-08-06 Albert Chu + + * bmc-config/src/bmc-config-lan-conf-user-security.h, + bmc-config/src/bmc-config-lan-conf-user-security.c: New files. + + * bmc-config/src/: Support Bad Password Threshold configuration. + + * libfreeipmi/: Support 'change bits' flag in set user access + command. + + * common/src/configtool/: Allow empty strings as valid empty on + command line. + +2009-08-05 Albert Chu + + * libfreeipmi/: Update Full Sensor Record for errata 372 changes. + + * libfreeipmi/: Support session handle in close session (errata + 387). + + * libfreeipmi/include/freeipmi/spec/ipmi-netfn-spec.h: Add Group + Extension codes, OEM Group codes, Group Extension Identification, + and extra macros. + + * libfreeipmi/src/dcmi/, common/src/debugutil/: Update to use new + macros appropriately and output more correct output. + + * libfreeipmi/src/util/: Update sensor and event code tables for + new errata. + + * ipmi-sel/, libfreeipmi/src/sel-parse/: Handle unique corner case + output of new sensor type events from errata. + + * libfreeipmi/include/freeipmi/cmds/, libfreeipmi/src/cmds/, + ipmi-chassis-config/: Support new boot flag options. + + * libfreeipmi/: Supporte HMAC-SHA256 macros. + + * libfreeipmi/include/freeipmi/spec/: Update entity ids from errata. + + * libfreeipmi/: Support LAN config bad password threshold. + +2009-08-04 Albert Chu + + * bmc-config/: Fix bmc-config corner case, assume LAN channel is + SOL Payload Channel cannot be read. + + * ipmi-oem/: Support Dell OEM for power capacity management. + +2009-08-04 Albert Chu + + * ipmi-oem/: Support Dell OEM for avg and peak power history. + +2009-08-03 Albert Chu + + * ipmi-oem/: Support Dell OEM to read NIC MAC addresses. + + * ipmi-oem/: Support Dell power supply info OEM command. + + * libfreeipmi/src/sel-parse/, ipmi-sel/: Add additional Inventec + OEM interpretations. + + * ipmi-oem/: Support Dell instantaneous power and Dell headroom + OEM commands. + +2009-08-02 Albert Chu + + * ipmi-oem/: Support 'list' command to all OEM IDs. + +2009-08-01 Albert Chu + + * common/src/configtool/config-tool-utils.h, + common/src/configtool/config-tool-utils.c + (config_is_non_fatal_error): New function. + + * bmc-config/, common/src/configtool/, ipmi-pef-config/, + ipmi-chassis-config/: Use config_is_non_fatal_error appropriately. + +2009-07-31 Albert Chu + + * ipmi-oem/: Support Dell get/set NIC selection. + +2009-07-31 Albert Chu + + * libfreeipmi/, ipmi-sensors/, ipmi-sel/, bmc-info/: Collapse API + "BAD_COMPLETION_CODE" variants into single "BAD_COMPLETION_CODE" + error code. + + * common/src/configtool/: Output "Not Supported" for fields that + are not supported. + + * Various code cleanup. + +2009-07-30 Albert Chu + + * bmc-config/: Configure "Password" before "Enable_User" for + security. + + * bmc-config/: Workaround Dell Poweredge lan_conf_auth settings. + +2009-07-30 Albert Chu + + * bmc-config/: Fix Lan Session Limit corner case. + + * bmc-config/: Workaround Dell Poweredge enable user bug. + +2009-07-29 Albert Chu + + * bmc-info/: Support Dell Poweredge R610 Aux Info. + +2009-07-25 Albert Chu + + * ipmi-oem/: Support Dell get/set sol inactivity timeout. + +2009-07-25 Albert Chu + + * ipmi-oem/: Support get/set-bmc-services. + +2009-07-24 Albert Chu + + * common/man/manpage-common-oem-interpretation.man: New file. + + * bmc-info/, ipmi-sel/: Begin documentation of motherboards + supported through --interpret-oem-data. + + * + libfreeipmi/include/freeipmi/util/ipmi-sensor-and-event-code-tables-util.h, + libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c: + Make parameter types consistent to rest of FreeIPMI. + + * + libfreeipmi/include/freeipmi/util/ipmi-sensor-and-event-code-tables-util.h, + libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c + (ipmi_get_oem_generic_event_message, + ipmi_get_oem_sensor_type_code_message): New functions. + + * ipmi-sensors/, ipmi-sel/: Support Dell Poweredge R610 sensors. + + * Add documentation throughout on what motherboards are OEM + supported. + +2009-07-16 Albert Chu + + * ipmi-oem/: Support Dell get-fcb-version command. + + * ipmi-oem/: Re-arch dell oem options. + +2009-07-13 Albert Chu + + * ipmi-oem/: Support Dell get-product-name command. + +2009-07-09 Fillod Stephane , Albert Chu + + * configure.ac, libfreeipmi/: Support --without-encryption build + option. + +2009-07-09 Fillod Stephane + + * configure.ac: Fix macro name typo. + + * configure.ac, common/src/portability/freeipmi-portability.h: Add + portability for cbrt. + + * common/src/toolcommon/tool-cmdline-common.c + (verify_common_cmd_args): Do not check for execute permissions on + driver device. + +2009-07-08 Albert Chu + + * libfreeipmi/: Get Device ID response field + "auxiliary_firmware_revision_information" is optional. + + * libfreeipmi/: Support IPMI_FLAGS_NO_VALID_CHECK flags. Support + new functions ipmi_ctx_get_flags and ipmi_ctx_set_flags. + + * libfreeipmi/src/sensor-read/: Probably support workarounds w/ + IPMI_FLAGS_NO_VALID_CHECK. + +2009-07-06 Albert Chu + + * libfreeipmi/src/sel-parse/: Add Inventec 5441 Memory Error OEM + interpretation. + + * ipmi-sel/src/: Alter event data output conditions. + + * libfreeipmi/src/sel-parse/: Do not output oem codes when they + are unspecified (i.e. 0xFF). + +2009-07-01 Albert Chu + + * libfreeipmi/src/sensor-read/ipmi-sensor-read.c + (_sensor_reading_corner_case_checks): Accept + IPMI_COMP_CODE_REQUEST_PARAMETER_NOT_SUPPORTED as an ok error + code. + + * libfreeipmi/src/api/ipmi-lan-session-common.c: Fix potential + segfault corner cases. + + * libfreeipmi/src/sel-parse/: Alter date output format to be + consistent to other tools. + +2009-06-30 Albert Chu + + * ipmi-oem/: Support dell oem commands. + + * libfreeipmi/include/freeipmi/spec/ipmi-netfn-spec.h: Fix + IPMI_NET_FN_RQ_VALID and IPMI_NET_FN_RS_VALID to allow OEM network + functions. + + * libfreeipmi/src/api/: Support debug hex output for + openipmi/sunbmc on raw commands. + + * tagged post_dell_oem + +2009-06-29 Albert Chu + + * tagged pre_dell_oem + + * libfreeipmi/: Add generic get/set system_info, + pef_configuration_parameters, lan_configuration_parameters, + serial_configuration_parameters, and sol_configuration_parameters + functions. Allowing OEM parameter selectors for potential OEM + configuration. + +2009-06-26 Albert Chu + + * libfreeipmi/: Add get/set bmc global enables support. + + * bmc-device/: Support --get-bmc-global-enables. + + * libfreeipmi/include/freeipmi/templates/: Add additional + documentation. Add forgotten templates. + +2009-06-24 Albert Chu + + * tagged pre_ipmipower_err_handling + + * ipmipower/src/ipmipower_error.h, + ipmipower/src/ipmipower_error.c: New files. + + * ipmipower/src/ierror.h, ipmipower/src/ierror.c: Remove files. + + * ipmipower/: Various re-arch to make tool more like other + FreeIPMI tools. Use new debug libs. + + * tagged post_ipmipower_err_handling + +2009-06-24 Albert Chu + + * ipmipower/src/ipmipower.h: Fix assert bug. + +2009-06-24 Albert Chu + + * common/src/toolsensor/, ipmimonitoring/, ipmi-sel/: Support of + --entity-sensor-names option. + + * ipmi-sensors/: Clarify Entity-ID output. + + * common/man/manpage-common-entity-sensor-names.man: New file. + + * common/src/toolcommon/: Support entity-sensor-names in config + file. + + * Various code cleanup. + +2009-06-23 Albert Chu + + * doc/freeipmi-testing.txt: New file. + +2009-06-23 Albert Chu + + * bmc-info/: Support --get-system-info option. When options + dictate it, output system info. + + * common/src/toolsensor/, ipmi-sensors/: Begin support of + --entity-sensor-names option. + +2009-06-23 Albert Chu + + * libfreeipmi/include/freeipmi/util/ipmi-sensors-util.h, + libfreeipmi/src/util/ipmi-sensors-util.c + (ipmi_sensor_decode_tolerance, ipmi_sensor_decode_accuracy, + ipmi_sensor_decode_resolution): New functions. + + * libfreeipmi/include/freeipmi/sdr-parse/ipmi-sdr-parse.h, + libfreeipmi/src/sdr-parse/ipmi-sdr-parse.c + (ipmi_sdr_parse_tolerance, ipmi_sdr_parse_accuracy): New + functions. + + * ipmi-sensors/: Support accuracy, resolution, and tolerance output. + +2009-06-22 Albert Chu + + * libfreeipmi/src/sel-parse/: Use short messages not long ones. + + * ipmimonitoring/: Remove short option 'i' for + --ignore-not-interpretable-sensors. + + * ipmi-sensors/, common/src/toolcommon/: Add + --ignore-not-available-sensors option. + + * ipmimonitoring/ipmimonitoring.8.pre.in: Note different between + --ignore-not-interpretable-sensors and --ignore-na-sensors in + ipmi-sensors. + + * libfreeipmi/include/freeipmi/sdr-parse/, + libfreeipmi/src/sdr-parse/ + (ipmi_sdr_parse_sensor_reading_ranges_specified): New function. + + * ipmi-sensors/: Do not output Nominal, Normal Min., Normal + Max. reading unless SDR flags indicate unavailable. + + * libfreeipmi/include/freeipmi/sdr-parse/, + libfreeipmi/src/sdr-parse/ + (ipmi_sdr_parse_sensor_direction): New function. + + * ipmi-sensors/: Output sensor direction under very verbose output. + +2009-06-21 Albert Chu + + * ipmi-oem/src/: Add options output into --list output, remove + description output. + + * libfreeipmi/: Make ipmi_entity_ids_pretty array. + +2009-06-20 Albert Chu + + * libfreeipmi/src/fru-parse/: Handle + FRU parsing corner case. + + * libfreeipmi/: Add get system guid command. Add system info commands. + + * libfreeipmi/: Make configuration parameter data fields optional. + + * bmc-config/, ipmi-pef-config/, common/src/configtool/: Code cleanup. + + * libfreeipmi/: Add master write read support. + + * Various code cleanup. + +2009-06-19 Albert Chu + + * libfreeipmi/src/fru-parse/: Handle FRU read corner case. + +2009-06-19 Albert Chu + + * ipmi-sensors/src/ipmi-sensors.c: Software sensors output "N/A" + instead of "Unknown" now. + + * libfreeipmi/include/freeipmi/spec/ipmi-comp-code-spec.h, + libfreeipmi/src/util/ipmi-error-util.c: Add "Send Message" + specific completion codes. + + * libfreeipmi/src/sensor-read/: Consider "message timeout" errors + a "sensor reading unavailable" error so tools can continue on. + + * libfreeipmi/src/api/: Consider multiple additional error + codes/completion codes for "message timeout" error code instead of + "ipmi" error. + +2009-06-18 Albert Chu + + * libfreeipmi/include/freeipmi/api/ipmi-api.h, + libfreeipmi/src/api/ipmi-api.c (ipmi_ctx_find_inband): New + function. + + * common/src/toolcommon/tool-common.c, + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_ipmi_communication.c: + Use new ipmi_ctx_find_inband call. + + * Update some documentation. + +2009-06-17 Albert Chu + + * libfreeipmi/include/freeipmi/util/ipmi-outofband-util.h, + libfreeipmi/src/util/ipmi-outofband-util.c: New files. + + * libfreeipmi/include/freeipmi/util/, libfreeipmi/src/util/, + ipmipower/, ipmiconsole/, libfreeipmi/src/api/: Support common + session sequence number checking functions, authentication + capabilities checks, and open session response checks. + + * Various code cleanup. + +2009-06-11 Albert Chu + + * libfreeipmi/src/sel-parse/: Re-architect code to allow + --display and --display-range command to work much more quickly. + + * ipmi-sel/src/: Update appropriately for API changes. + +2009-06-11 Albert Chu + + * common/man/manpage-common-workaround-sol-only-text.man: Add new + motherboard to solpayloadsize workaround. + +2009-06-11 Albert Chu + + * Continue unassemble rework. + + * tagged pre_fiid_required_rearch + + * Support FIID_FIELD_MAKES_PACKET_VALID flag in fiid. Add + FIID_FIELD_MAKES_PACKET_VALID to all respective fields in reponse + packets. + + * tagged post_fiid_required_rearch + + * Slighlty rework FIID_FIELD_MAKES_PACKET_VALID to mean + "sufficient" if set, not "if only" set. + + * tagged pre_fiid_required_rearch2 + + * Rework fiid to make FIID_FIELD_MAKES_PACKET_VALID to + FIID_FIELD_MAKES_PACKET_SUFFICIENT. Add new API functions + appropriately. + + * Adjust interfaces to check for packet sufficiency, not validity. + + * tagged post_fiid_required_rearch2 + + * Add packet payload validity checks to ipmipower, ipmiconsole, + libfreeipmi API. + + * ipmipower/src/ipmipower_powercmd.c (ipmipower_powercmd_queue): + Fix Sun 2.0/Open Session Privilege workaround. + + * libfreeipmi/src/api/ipmi-api-util.c (api_ipmi_cmd_ipmb), + ipmipower/, ipmiconsole/: Add packet validity checks. + + * Various code cleanup and minor bug fixes. + + * tagged post_unassemble_rearch + +2009-06-10 Albert Chu + + * tagged pre_unassemble_rearch + + * Re-work all 'unassemble' code to return 1 if packet was fully + parsed vs. not fully parsed. + + * libfreeipmi/src/debug/: Handle more corner cases. Handle + ability to dump data under more bad situations. Consolidate and + cleanup code. + +2009-06-10 Albert Chu + + * common/man/manpage-common-workaround-text.man: Add additional + motherboard details. + +2009-06-10 Albert Chu + + * ipmiconsole/src/ipmiconsole/ipmiconsole.c: Consider + IPMICONSOLE_ERR_BMC_IMPLEMENTATION as a non-fatal error too. + +2009-06-09 Albert Chu + + * libfreeipmi/src/sensor-read/ipmi-sensor-read.c + (_sensor_reading_corner_case_checks): Ignore + IPMI_COMP_CODE_COMMAND_CANNOT_RESPOND get sensor reading errors. + +2009-06-09 Dave Love + + * common/man/manpage-common-workaround-sol-only-text.man, + common/man/manpage-common-workaround-text.man: Add additional + motherboard details. + +2009-06-09 Albert Chu + + * Perform "open session privilege" workaround when specifying "Sun + 2.0" workaround. + +2009-06-09 Albert Chu + + * common/src/toolcommon/tool-common.c (ipmi_open): Fix workaround + flags setting. + +2009-06-09 Albert Chu + + * libfreeipmi/src/api/ipmi-api.c: Fix assert corner case. + +2009-06-08 Albert Chu + + * ipmipower/src/ipmipower_wrappers.h, + ipmipower/src/ipmipower_wrappers.c: Removed files. + + * ipmipower/src/: Cleanup, do not use wrappers. Output errors + correctly. + + * tagged post_wrapper_cleanup + +2009-06-05 Albert Chu + + Variety of code cleanup. + + * libfreeipmi/src/api/ipmi-lan-session-common.c, ipmipower/src/: + Re-architect code such that packets only check fields that are + necessary. Re-architect code to handle packet "processing" + outside of "verification" functions. + + * Update comments with key-word "Compliance" when related to IPMI + compliance issues. + + * libfreeipmi/src/api/: Re-architect to not retransmit close + session commands when closing a session. + + * ipmiconsole/src/libipmiconsole/: Remove use of fiid wrappers. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_fiid_wrappers.h, + ipmiconsole/src/libipmiconsole/ipmiconsole_fiid_wrappers.c: Remove files. + + * tagged pre_wrapper_cleanup + + * ipmipower/src/wrappers.h, ipmipower/src/wrappers.c: Removed + files. + + * ipmipower/src/ipmipower_util.h, ipmipower/src/ipmipower_util.c: + New files. + + * ipmipower/src/: Cleanup, do not use wrappers. Output error + outputs consistently to other tools. + + * ipmipower/src/, libfreeipmi/src/api/, + ipmiconsole/src/libipmiconsole/: Properly iterate over + sendto/recvfrom when ok errors occur. + + * ipmiconsole/src/libipmiconsole/: Properly iterate over poll when + ok errors occur. + +2009-06-04 Albert Chu + + * freeipmi.spec.in: Add dcmi additions. + + * libfreeipmi/src/debug/ipmi-debug-kcs.c: Renamed to ipmi-debug-inband.c. + + * libfreeipmi/ (ipmi_debug_ssif_packet): New function. + + * libfreeipmi/: Support more detailed SSIF packet dumps. + +2009-06-04 Albert Chu + + * Due to a CVS crash on Savannah on 2009-05-31, redo a number of + changes from 2009-05-28. It is possible tags listed below on + 2009-05-28 are no longer valid. + +2009-06-04 Albert Chu + + * libfreeipmi/include/freeipmi/templates/ipmi-dcmi-templates.h: + Add forgotten file. + +2009-05-28 Albert Chu + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (_convert_to_ipmimonitoring_options): Fix sunbmc corner case. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_ipmi_communication.c + (_inband_init): Check workaround flags appropriately. + + * common/src/toolcommon/tool-common.c (ipmi_open), + ipmimonitoring/src/ipmimonitoring/: Fix in-band communication bug + when workaround flags for non-inband are specified. + +2009-05-28 Albert Chu + + * tagged finished_remove_legacy + + * Revert removal of options and legacy support. Went too aggressive. + + * tagged unfinished_remove_legacy + + * common/src/toolcommon/tool-cmdline-common.h: Code cleanup, + remove excess macros. + + * tagged redo_remove + + * "Re-claim" short options in ipmipower, ipmi-chassis, ipmi-raw, + ipmi-sel, ipmiconsole. + + * tagged redo_remove_done + + * ipmiconsole/src/ipmiconsole/: Remove legacy 'c' short option. + + * ipmipower/ipmipower.8.pre.in.: Remove short options. + +2009-05-27 Albert Chu + + * tagged pre_remove_many_short_options + + * "Re-claim" short options in ipmipower, ipmi-chassis, ipmi-raw, + ipmi-sel, ipmiconsole. + + * tagged post_remove_many_short_options + + * tagged pre_remove_legacy_options + + * Remove general legacy options. + + * Remove some legacy options from ipmipower and ipmimonitoring. + + * tagged post_remove_legacy_options + + * ipmiconsole/src/ipmiconsole/ipmiconsole_.h: Fix comment. + + * tagged pre_remove_legacy_config + + * common/src/toolcommon/tool-config-file-common.c: Remove some + legacy options. + + * tagged post_remove_legacy_config + + * ipmipower/src/ipmipower/ipmipower_prompt.c: Remove more + backwards compatability interactive mode options. + + * bmc-watchdog/src/: Remove legacy short options. + +2009-05-26 Albert Chu + + * libfreeipmi/include/freeipmi/dcmi/ipmi-dcmi.h, + libfreeipmi/include/freeipmi/templates/ipmi-dcmi-templates.h, + libfreeipmi/src/dcmi/ipmi-dcmi.c: New files. + + * libfreeipmi/include/freeipmi/freeipmi.h: Update appropriately + for new support. + + * doc/freeipmi-libraries.txt, libfreeipmi/libfreeipmi.3.pre.in: + Update with dcmi sub-lib info. + + * ipmi-dcmi/: New tool. + + * common/src/debugutil/: Support DCMI in debug output. + + * etc/, man/, common/src/toolcommon/: Support DCMI in config file. + + * COPYING.ipmi-dcmi, DISCLAIMER.ipmi-dcmi: New files. + +2009-05-26 Albert Chu + + * ipmi-sensors/, ipmimonitoring/: Support "all" and "none" for + command line record-ids and groups options. + + * ipmi-sel/: Support --exclude-display and --exclude-display-range. + +2009-05-26 Albert Chu + + * ipmi-sensors/, ipmimonitoring/, common/: Give --record-ids + "priority" over --groups. Re-org code, cleanup code, redo + documentation to indicate this fact. + + * common/src/toolsensor/tool-sensor-common.c + (calculate_record_ids): Allow mix-and-matching, where + --exclude-groups can work with --record-ids and + --exclude-record-ids can work with --groups. + + * common/src/toolsensor/: Code cleanup. + +2009-05-25 Albert Chu + + * ipmi-sensors/, ipmimonitoring/: Support short options for + --exclude-groups and --exclude-record-ids. + + * common/man/: update manpages appropriately. + +2009-05-22 Albert Chu + + * common/src/toolcommon/, ipmi-sensors/, + ipmimonitoring/src/ipmimonitoring/: Support --exclude-groups and + --exclude-record-ids. + + * common/src/toolsensor/, ipmi-sensors/, + ipmimonitoring/src/ipmimonitoring/: Move common sensor code into + common/src/toolsensor/. + + * Globally fix unsigned int/int macro issues. + +2009-05-20 Albert Chu + + * bmc-info/, common/src/toolcommon/: Support --interpret-oem-data. + + * ipmi-fru/, common/src/toolcommon/, + libfreeipmi/include/freeipmi/fru-parse/, + libfreeipmi/src/fru-parse/: Support --interpret-oem-data. + +2009-05-20 Albert Chu + + Code cleanup. + + * libfreeipmi/include/freeipmi/spec/ipmi-iana-enterprise-numbers-spec.h: + Add macros. + + * ipmi-sel/, libfreeipmi/src/sel-parse/: bmc-watchdog/, + libfreeipmi/src/util/: Use IANA macros. + + * libfreeipmi/include/freeipmi/cmds/, + libfreeipmi/include/freeipmi/templates/, libfreeipmi/src/cmds/, + bmc-info/: Remove OEM-isms out of library and into bmc-info. + +2009-05-20 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/: Support + IPMI_MONITORING_SENSOR_READING_FLAGS_INTERPRET_OEM_SENSORS flag. + + * libfreeipmi/include/freeipmi/sel-parse/, + libfreeipmi/src/sel-parse/: + IPMI_SEL_PARSE_STRING_FLAGS_INTERPRET_OEM_DATA. + + * common/src/toolcommon, ipmi-sel/, ipmi-sensors/, + ipmimonitoring/src/ipmimonitoring/: Support + --interpret-oem-data option. + + * common/man/manpage-common-interpret-oem-data.man: new file. + + * ipmi-sel/src/, libfreeipmi/src/sel-parse/: Support Inventec 5441 + OEM Sel interpretations + +2009-05-19 Albert Chu + + * common/src/toolcommon/tool-common.c: Attempt OpenIPMI and SunBMC + drivers first, since they cannot be discovered via probing, and to + avoid accidently using the KCS driver first. + +2009-05-18 Albert Chu + + * bmc-config/src/bmc-config-channel-common.c (_get_key_info, + _set_key_info): Fix set volatile vs. set non-volatile bug. + +2009-05-18 Albert Chu + + * Fix API change resulting bugs. + +2009-05-15 Albert Chu + + * Remove use of 'alloca', check return unlink, close, munmap as + needed or leave comments as to why return code not checked. + +2009-05-15 Albert Chu + + * Various signed/unsigned cleanup. Ensure right signs used + consistently. + + * libfreeipmi/src/libcommon/ipmi-crypt.c, + libfreeipmi/src/driver/ipmi-kcs-driver.c, + libfreeipmi/src/driver/ipmi-ssif-driver.c: Handle integer overflow + conditions. + + * Various code cleanup. + + * tagged post_int_overflow + +2009-05-14 Albert Chu + + * libfreeipmi/src/fiid/: Use unsigned ints for indexing. + + * tagged pre_int_overflow + + * libfreeipmi/src/fiid/fiid.c: Handle int/unsigned int overflow + conditions. Fix corner case, allow fields to be up to 256 chars, + not up to 255 chars. Fix signed/unsigned bugs. + + * libfreeipmi/src/interface/ipmi-rmpplus-interface.c + (assemble_ipmi_rmcpplus_pkt), + libfreeipmi/src/interface/ipmi-kcs-interface.c + (assemble_ipmi_kcs_pkt), + libfreeipmi/src/interface/ipmi-lan-interface.c (ipmi_lan_sendto, + assemble_ipmi_lan_pkt): Handle int/unsigned int overflow + conditions. + + * Various code cleanup. + +2009-05-12 Albert Chu + + * doc/: Update faq. + +2009-05-11 Albert Chu + + * Code cleanup. + +2009-05-08 Albert Chu + + * bmc-device/, bmc-info/: Continue to cleanup output format. + + * bmc-device/: Fix --get-mca-auxiliary-log-status bug. + + * ipmi-sensors/, ipmi-sel/, ipmi-pef-config/: Make + --info/--sdr-info commands have consistent output format. + + * ipmi-sensors/, ipmi-sel/: Add allocation info output to + --info/--sdr-info output. + + * bmc-info/: Don't output "GUID : " when specifying + --get-device-guid. + +2009-05-07 Albert Chu + + * ipmi-chassis/src/: Output text more consistently to IPMI spec. + Output format more cleanly. Output all frields from + --get-chassis-status. + + * libfreeipmi/src/cmds/ipmi-device-global-cmds.c: Fix template + field names "info" -> "information". + + * bmc-info/: Output text more consistently to IPMI spec. Output + all field information. Output GUID by default. Change --guid to + --get-device-guid. Support --get-device-id and + --get-channel-info. Add extra output info to channel output. + + * Additional code cleanup. + +2009-05-06 Albert Chu + + * libfreeipmi/include/freeipm/: Add various header comments. + + * libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c: + Make functions return > 0 value instead of ENOSPC if buffer too + small. + + * libfreeipmi/include/freeipmi/util/ipmi-channel-util.h, + libfreeipmi/include/freeipmi/util/ipmi-channel-util.c: New files. + + * libfreeipmi/include/freeipmi/api/ipmi-messaging-support-cmds-api.h, + libfreeipmi/src/api/ipmi-messaging-support-cmds-api.c + (ipmi_get_channel_number): Moved into util. + +2009-05-05 Albert Chu + + * bmc-device/bmc-device.8.pre.in: Add more examples and fix typos. + + * bmc-watchdog/, ipmi-chassis/, + libfreeipmi/include/freeipmi/cmds/: Check interval ranges on + inputs. + + * common/src/toolcommon/, ipmimonitoring/src/libipmimonitoring/: + Check for valid record_id inputs. + + * ipmimonitoring/src/libipmimonitoring/: Check for valid sensor + group inputs. + + * ipmi-fru/: Check for valid range of device id input. + + * bmc-device/, ipmi-chassis/: Verify sane inputs on 'set' options + that have multiple configurable settings. + + * Various code cleanup. + +2009-05-04 Albert Chu + + * ipmi-chassis/: Code cleanup for consistency to other tools. + + * ipmimonitoring/src/ipmimonitoring/: Fix --legacy-output. + +2009-05-04 Albert Chu + + * Various code cleanup. + + * tagged post_void_lib_cleanup + +2009-05-03 Albert Chu + + * Various code cleanup. + + * tagged pre_void_lib_cleanup + + * Cleanup libfreeipmi, use void * instead of uint8_t * or char * + when appropriate. + + * Various code cleanup. + +2009-05-03 Albert Chu + + * ipmi-raw/, ipmi-oem/: Fix glibc portability bugs. + + * ipmi-oem/: Fix debug output corner case. + +2009-05-02 Albert Chu + + * Fix coverity discovered errors. + +2009-05-01 Albert Chu + + * Continued lib cleanup. + + * ipmipower/src/ipmipower_util.h, ipmipower/src/ipmipower_util.c: + Removed files. + + * ipmiconsole/src/, ipmipower/src/: Various cleanup. + + * common/src/configtool/, bmc-config/, ipmi-pef-config/: Rename + config_section_update_keyvalue_output_int to + config_section_update_keyvalue_output_unsigned_int. + + * tagged post_int_cleanup + +2009-04-30 Albert Chu + + * Cleanup APIs. Return 'int' instead of 'int32_t'. Make + "uint32_t" an "unsigned int" when buffers are passed to API + functions. + + * libfreeipmi/: Rework ipmi_rmcpplus_calculate_payload_type() with + in/out parameter. + + * ipmiconsole/src/libipmiconsole/: Update for API change. + + * bmc-config/, ipmi-pef-config/, ipmi-chassis-config/, + common/src/configtool/config-tool-pef-conf-section.c: Fix read + only/write only completion code check usage. + + * common/src/pingtool/, ipmiping/, rmcpping/: API cleanup. + + * Various other code cleanup. + +2009-04-29 Albert Chu + + * Cleanup APIs. Return 'int' instead of 'int8_t' when size of + integer is clearly irrelevant. + + * Fix function name inconsistencies. + +2009-04-28 Albert Chu + + * tagged pre_int_cleanup + + * Cleanup APIs. Return 'int' instead of 'int8_t' when size of + integer is clearly irrelevant. + +2009-04-28 Albert Chu + + * libfreeipmi/: ipmi_get_channel_number now takes a parameter for + the returned channel number. + + * ipmi-oem/, bmc-device/, bmc-config/, pef-config/: Adjust for API + changes. + + * Various code cleanup. + +2009-04-27 Albert Chu + + * libfreeipmi/include/freeipmi/: Code cleanup. + +2009-04-23 Albert Chu + + * ipmipower/: Support identify-on, identify-off, identify-status + in interactive mode of ipmipower. + + * freeipmi.spec.in: Update for fru-parse. + +2009-04-22 Albert Chu + + * ipmi-oem/ipmi-oem.8.pre.in: Update inventec text. + + * ipmi-chassis/src/ipmi-chassis (get_chassis_status): Fix output + corner cases. + + * ipmi-chassis/: Rename --get-status to --get-chassis-status and + --get-capabilities to --get-chassis-capabilities. + +2009-04-21 Albert Chu + + * libfreeipmi/include/freeipmi/spec/ipmi-entity-ids-spec.h, + libfreeipmi/src/spec/ipmi-entity-ids-spec.c: New files. + + * ipmi-sensors/: Output Entity IDs under verbose instead of very + verbose mode. Output Entity ID type if available. + +2009-04-21 Albert Chu + + * ipmimonitoring/src/ipmimonitoring/: Have default output same + sensors as in ipmi-sensors, including those that can't be + interpreted. Support --ignore-non-interpretable-sensors. + + * ipmimonitoring/src/libipmimonitoring/: Rename + IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_UNREADABLE_SENSORS to + IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_NON_INTERPRETABLE_SENSORS.. + +2009-04-20 Albert Chu + + * ipmi-fru/src/ipmi-fru.c: Fix multirecord output. + +2009-04-17 Albert Chu + + From branch fru_lib_branch. + + * libfreeipmi/: Support new ipmi_dump_hex() debug function. + + * libfreeipmi/: Include new fru-parse subsection to libfreeipmi + library. + + * libfreeipmi/src/cmds/: Check for valid FRU device id input. + + * ipmi-fru/src/ipmi-fru-output.h, ipmi-fru/src/ipmi-fru-output.c: New files. + + * ipmi-fru/src/ipmi-fru-util.h, ipmi-fru/src/ipmi-fru-util.c, + ipmi-fru/src/ipmi-fru-info-area.h, + ipmi-fru/src/ipmi-fru-info-area.c, + ipmi-fru/src/ipmi-fru-multirecord-area.h, + ipmi-fru/src/ipmi-fru-multirecord-area.c: Removed files. + + * ipmi-fru/: Use new fru-parse library. Check for valid device id input. + + * Update documentation and manpages appropriately. + + * Various code cleanup. Fix various compiler warnings. + +2009-04-14 Albert Chu + + * bmc-config/src/bmc-config-user-sections.c (password20_checkout): + Fix diff check. + + * bmc-config/: Collapse "Password20" into "Password" field so + Password field supports both IPMI 1.5 and IPMI 2.0. + +2009-04-09 Albert Chu + + * Minor code cleanup. + +2009-04-09 Albert Chu + + * bmc-info/src/: Output Device ID, manufacturer ID, and product ID + as integer. + +2009-04-08 Albert Chu + + * ipmi-fru/src/ipmi-fru-info-area.c + (ipmi_fru_output_chassis_info_area): Output unknown chassis area + and continue to parse, instead of bailing out. + +2009-04-08 Albert Chu + + * common/src/configtool/, bmc-config/: Support ability to report + Not Supported on commit. + +2009-04-08 Albert Chu + + * common/man/manpage-common-workaround-sol-only-text.man + common/man/manpage-common-workaround-text.man + common/src/toolcommon/tool-cmdline-common.c + common/src/toolcommon/tool-cmdline-common.h + common/src/toolcommon/tool-common.c + ipmiconsole/src/ipmiconsole/ipmiconsole.c + ipmiconsole/src/libipmiconsole/ipmiconsole.h + ipmiconsole/src/libipmiconsole/ipmiconsole_defs.h + ipmiconsole/src/libipmiconsole/ipmiconsole_packet.c + ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.h + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_defs.h + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_ipmi_communication.c + libfreeipmi/include/freeipmi/api/ipmi-api.h + libfreeipmi/src/api/ipmi-api.c + libfreeipmi/src/api/ipmi-lan-session-common.c: Support Inventec + open session privilege workaround. Document that SOL Payload Size + workaround also needed. Return Password Invalid error when + "invalid integrity check value" returned from RAKP4. + +2009-04-07 Albert Chu + + * libfreeipmi/src/debug/ipmi-debug.c (ipmi_obj_dump): Special case + always dump payload data and user name in byte array format. + +2009-04-07 Albert Chu + + * ipmi-oem/src/ipmi-oem-argp.c, ipmi-raw/src/ipmi-raw.c: Fix glibc + 2.8 portability compile issue. + +2009-04-03 Albert Chu + + * ipmi-oem/ipmi-oem.8.pre.in: Update text. + +2009-04-02 Albert Chu + + * common/src/toolsensor/, ipmi-sensors/, ipmimonitoring/: Shorten + width of output by shortening headers. + + * Fix some --legacy-output issues. + +2009-03-31 Albert Chu + + * libfreeipmi/src/debug/ipmi-debug.c: Always output "raw_data" + fields as byte arrays. + +2009-03-30 Albert Chu + + * Remove "experimental" note about SUNBMC driver. + +2009-03-27 Albert Chu + + * ipmi-oem/: Code cleanup. + +2009-03-26 Albert Chu + + * libfreeipmi/src/debug/: Fix output bug. + + * bmc-info/: Output firmware revision with two chars as needed. + + * libfreeipmi/: Cleanup sel-parse library. Add parsing via record bufs functions. + +2009-03-23 Albert Chu + + * Rename pef-config to ipmi-pef-config. + + * freeipmi.spec.in: Fix build issues. + +2009-03-21 Albert Chu + + * ipmi-oem/: Support inventenc get-mad-address and + set-mac-address. + +2009-03-19 Albert Chu + + * Support verbose_count config file option. + + * common/src/toolcommon/tool-config-file-common.c: Fix potential + config file bug by clearing stack data. + +2009-03-19 Albert Chu + + * ipmi-oem/: Support inventec get-nic-status and set-nic-status + OEM commands. + +2009-03-19 Albert Chu + + * libfreeipmi/src/debug/ipmi-debug.c (ipmi_obj_dump): Output w/ %u + instead of %d. + + * libfreeipmi/src/api/ipmi-kcs-driver-api.c + (ipmi_kcs_cmd_raw_api): Fix debug dump bug. + +2009-03-18 Albert Chu + + * freeipmi/templates/ipmi-pef-and-alerting-cmds-templates.h, + freeipmi/templates/ipmi-rmcpplus-support-and-payload-cmds-templates.h, + freeipmi/templates/ipmi-sdr-repository-cmds-templates.h, + freeipmi/templates/ipmi-sel-cmds-templates.h, + freeipmi/templates/ipmi-sensor-cmds-templates.h, + freeipmi/templates/ipmi-serial-modem-cmds-templates.h, + freeipmi/templates/ipmi-sol-cmds-templates.h, + freeipmi/templates/rmcp-cmds-templates.h, + freeipmi/templates/ipmi-ipmb-interface-templates.h, + freeipmi/templates/ipmi-kcs-interface-templates.h, + freeipmi/templates/ipmi-lan-interface-templates.h, + freeipmi/templates/ipmi-rmcpplus-interface-templates.h, + freeipmi/templates/rmcp-interface-templates.h, + freeipmi/templates/ipmi-cipher-suite-record-format-templates.h, + freeipmi/templates/ipmi-fru-information-record-format-templates.h, + freeipmi/templates/ipmi-sdr-record-format-templates.h, + freeipmi/templates/ipmi-sel-record-format-templates.h: New files. + + * Various code cleanup. + +2009-03-17 Albert Chu + + * common/man/manpage-common-sdr-options.man: Fix typo. + + * libfreeipmi/include/freeipmi/templates/ipmi-bmc-watchdog-timer-cmds-templates.h, + libfreeipmi/include/freeipmi/templates/ipmi-chassis-cmds-templates.h, + libfreeipmi/include/freeipmi/templates/ipmi-device-global-cmds-templates.h, + libfreeipmi/include/freeipmi/templates/ipmi-event-cmds-templates.h, + libfreeipmi/include/freeipmi/templates/ipmi-fru-inventory-device-cmds-templates.h, + libfreeipmi/include/freeipmi/templates/ipmi-lan-cmds-templates.h, + libfreeipmi/include/freeipmi/templates/ipmi-messaging-support-cmds-templates.h: New files. + +2009-03-17 Albert Chu + + * common/src/toolcommon/, etc/, man/, ipmi-sel/, ipmi-sensors/, + ipmimonitoring/: Add forgotton config file options. + + * common/src/toolsensor/, ipmi-sensors/, ipmimonitoring/, + common/src/toolcommon/: Rename --sensor to --record-ids. + + * Various code cleanup. + +2009-03-16 Albert Chu + + * libfreeipmi/src/spec/ipmi-sensor-units-spec.c: Fix some sensor + units abbreviations. + + * common/man/manpage-common-sensor-common.man, + common/man/manpage-common-non-abbreviated-units.man, + common/man/manpage-common-comma-separated-output.man, + common/man/manpage-common-legacy-output.man: New files. + + * Cleanup up manpages. + + * ipmi-sel/, ipmi-sensors/, ipmimonitoring/: Support + --comma-separated-output. + + * common/src/configtool/, bmc-config/, ipmi-chassis-config/, + ipmi-sensors-config/, pef-config/: Support ability to report Read + Only error on commit. + + * bmc-config/bmc-config.8.pre.in: Add Dell issue. + +2009-03-13 Albert Chu + + * Change __PRETTY_FUNCTION__ -> __FUNCTION__ for portability. + + * ipmi-sensors/, ipmimonitoring/: Collapse some code using common + sensor code in common/src/toolcommon. + + * ipmi-sel/, libfreeipmi/src/sel-parse/: Fix output corner case + where "N/A ; text" could show up. + + * ipmi-sel/: Apply column alignment code to ipmi-sel for cleaner output. + + * ipmi-sel/: Support -vvv option. + + * common/src/toolsensor/, ipmimonitoring/, ipmi-sel/, + ipmi-sensors/: Support --non-abbreviated-units option. + +2009-03-12 Albert Chu + + * ipmi-sensors/, ipmimonitoring/: Collapse some code using common + sensor code in common/src/toolcommon. + + * Reorganization common/src/ with new convenience libs stored int + toolsdr/ and toolsensor/. + + * Various code cleanup. + +2009-03-11 Albert Chu + + * ipmi-sensors/, ipmimonitoring/src/ipmimonitoring/: Align columns + more intelligently based on max expected field sizes. + + * ipmi-sensors/, ipmimonitoring/: Default to abbreviated units. + + * common/src/toolcommon/tool-sensor-common.h, + common/src/toolcommon/tool-sensor-common.c: New files. + + * ipmi-sensors/, ipmimonitoring/: Collapse some code using common + sensor code. + + * ipmi-sensors/src/ipmi-sensors-argp.c + (_ipmi_sensors_args_validate): Check for "oem_reserved" sensor + group. + +2009-03-10 Albert Chu + + * config/ac_dont_check_for_root.m4: New file. + + * configure.ac, common/src/tool-common.c (ipmi_is_root): Support + option to not check for root in FreeIPMI tools. + +2009-03-09 Jan Forch + + * libfreeipmi/src/api/ipmi-api.c (_setup_hostname), + common/src/toolcommon/tool-sdr-cache-common.c + (_get_home_directory): Fix Solaris porting bugs. + +2009-03-09 Albert Chu + + * libfreeipmi/src/util/ipmi-sensor-units-util.c: Support + percentage sign. + +2009-03-07 Albert Chu + + * ipmi-sensors-config/, ipmi-sensors/: Support rates and modifiers + for units. + + * libfreeipmi/src/sel-parse/: Support rates and modifiers for + units. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-units-spec.h: Fix + field check macros. + + * ipmi-sel/: Support output corner case. Widen column width for event output. + +2009-03-06 Albert Chu + + * ipmi-sel/, ipmi-sensors/, ipmimontoring/: Make sensor group + size 24 columns. + + * ipmi-sel/: Fix formatting bug due to non-memsetted buffer. + + * libfreeipmi/src/sdr-parse/: Support sensor_units_percentage in + sensor_units parsing. + + * libfreeipmi/include/freeipmi/util/ipmi-sensor-units-util.h, + libfreeipmi/src/util/ipmi-sensor-units-util.c: New files. + +2009-03-06 Albert Chu + + * common/src/toolcommon/tool-fiid-util.h, + common/src/toolcommon/tool-fiid-util.c: Removed files. + + * Adjust tools to use new fiid functions/macros appropriately. + + * libfreeipmi/include/freeipmi/fiid/fiid.h, + libfreeipmi/src/fiid/fiid.c (FIID_TEMPLATE_FIELD_LOOKUP, + FIID_TEMPLATE_COMPARE, FIID_OBJ_TEMPLATE_COMPARE, + FIID_OBJ_PACKET_VALID, FIID_OBJ_FIELD_LOOKUP): New functions. + + * Use new macros as needed. + + * Remove pointless use of fiid_obj_field_len in certain functions. + + * Make parameters const char * instead of char * when appropriate + for API functions. + + * ipmi-sel/, ipmi-sensors/, ipmimontoring/: Collapse sensor group + size from 24 columns to 18. + +2009-03-05 Albert Chu + + * common/src/toolcommon/tool-fiid-util.h: Remove some macros. + + * common/src/toolcommon/tool-fiid-util.c: New file. + + * libfreeipmi/include/freeipmi/fiid/fiid.h, + libfreeipmi/src/fiid/fiid.c (FIID_OBJ_GET): New function. + + * Adjust tools to use new fiid functions/macros appropriately. + +2009-03-04 Albert Chu + + * Various code consistency style cleanup. + + * common/src/toolcommon/tool-common.c (ipmi_open): Check for + IPMI_ERR_PRIVILEGE_LEVEL_CANNOT_BE_OBTAINED for nice output. + +2009-03-03 Albert Chu + + * Fix spacing, tabbing, and indentation throughout code for + consistency. Add copyright to appropriate files. Remove + unnecessary extern "C" declarations. Variety of code cleanup. + +2009-03-01 Albert Chu + + * common/src/toolcommon/tool-fiid-util.h: Remove some macros. + + * Adjust tools to use fiid library directly. + +2009-02-26 Albert Chu + + * common/src/toolcommon/tool-fiid-util.h: Remove some macros. + + * Adjust tools to use fiid library directly. + +2009-02-24 Albert Chu + + * + ipmi-sensors-config/src/ipmi-sensors-config-sensor-event-enable-common.c + (_set_sensor_event_enable): Fix bit setting bug. + +2009-02-24 Albert Chu + + * common/src/toolcommon/tool-fiid-util.h: Remove some macros. + + * Adjust tools to use fiid library directly. + +2009-02-24 Albert Chu + + * ipmi-sel/ipmi-sel.8.pre.in: Note 1-Jan-1970 information. + +2009-02-23 Albert Chu + + * ipmiconsole/src/libipmiconsole/: Add extra debug messages. Add + extra header file documentation. + +2009-02-23 Albert Chu + + * ipmi-chassis-config/src/ipmi-chassis-config-map.c: Fix typo + "FLOOPY" to "FLOPPY". + +2009-02-23 Albert Chu + + Merge changes from libfreeipmi_cleanup_branch. + + * libfreeipmi/: Massive code cleanup; + + * libfreeipmi/src/drivers/: Add 'errormsg' functions. + + * libfreeipmi/src/api/ipmi-ctx.h, + libfreeipmi/src/api/ipmi-err-wrappers-api.h, + libfreeipmi/src/api/ipmi-err-wrappers-api.c, + libfreeipmi/src/api/ipmi-fiid-wrappers-api.h, + libfreeipmi/src/api/ipmi-fiid-wrappers-api.c: Removed files. + + * libfreeipmi/src/api/ipmi-api-trace.h, + libfreeipmi/src/api/ipmi-api-util.c, + libfreeipmi/src/api/ipmi-api-util.c, + libfreeipmi/src/locate/ipmi-locate-trace.h, + libfreeipmi/src/locate/ipmi-locate-util.c, + libfreeipmi/src/locate/ipmi-locate-util.c, + libfreeipmi/src/sdr-parse/ipmi-sdr-parse-trace.h, + libfreeipmi/src/sdr-parse/ipmi-sdr-parse-util.h, + libfreeipmi/src/sdr-parse/ipmi-sdr-parse-util.c, + libfreeipmi/src/sel-parse/ipmi-sel-parse-trace.h, + libfreeipmi/src/sel-parse/ipmi-sel-parse-util.h, + libfreeipmi/src/sel-parse/ipmi-sel-parse-util.c, + libfreeipmi/src/sensor-read/ipmi-sensor-read-trace.h, + libfreeipmi/src/sensor-read/ipmi-sensor-read-util.h, + libfreeipmi/src/sensor-read/ipmi-sensor-read-util.c, + libfreeipmi/src/api/ipmi-api-defs-trace.h, + libfreeipmi/src/driver/ipmi-driver-trace.h, + libfreeipmi/src/libcommon/ipmi-fill-util.h, + libfreeipmi/src/libcommon/ipmi-fiid-util.h, + libfreeipmi/src/libcommon/ipmi-fiid-util.c: New files. + + * libfreeipmi/src/libcommon/ipmi-err-wrappers.h: Remove all + unnecessary macros. + + * libfreeipmi/src/libcommon/ipmi-trace.h: Renamed from + libfreeipmi/src/libcommon/ipmi-err-wrappers.h. + + * libfreeipmi/src/api/: Remove use of IPMI_ERR_LIBRARY_ERROR, + replace with IPMI_ERR_INTERNAL_ERROR. + + * Rename all "IPMI_*_CTX_ERR" error codes to "IPMI_*_ERR" for + consistency throughout libs. + + * libfreeipmi/src/locate/: Rework to use context style API. + + * common/src/toolcommon/, bmc-watchdog, ipmi-locate/: Adjust for + new locate API. + + * common/src/toolcommon/tool-fiid-wrapers.h: Renamed to + tool-fiid-util.h for consistency. Rename all macros. + + * Update all tools appropriately for cleanup changes. + +2009-02-05 Albert Chu + + * libfreeipmi/src/api/ipmi-err-wrappers-api.c: New file. + + * libfreeipmi/src/api/ipmi-fiid-wrappers-api.c: New file. + + * Continue code cleanup. + +2009-02-04 Albert Chu + + * Various code cleanup. + +2009-02-03 Albert Chu + + * Various code cleanup. + +2009-02-03 Albert Chu + + From branch sdr_parse_branch. + + * libfreeipmi/: Include new sdr-parse subsection to libfreeipmi + library. + + * ipmi-sensors/, ipmi-fru/, ipmi-sensors-config/: Use new + sdr-parse library. + + * ipmimonitoring/src/libipmimonitoring/: Use new sdr-parse + library. + + * + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_fiid_wrapppers.h, + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_fiid_wrapppers.c: + Remove files. + + * libfreeipmi/src/sel-parse/: Use new sdr-parse library. + + * libfreeipmi/src/sensor-read/: Use new sdr-parse library. + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c: Removed unused + functions. + + * Update documentation and manpages appropriately. + + * Various code cleanup. + +2009-02-02 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/: Code cleanup. + +2009-01-30 Albert Chu + + * common/src/toolcommon/tool-sdr-common.c: Check return value from + fiid_obj_get. + + * ipmimonitoring/src/libipmimonitoring/: Code cleanup. + +2009-01-30 Albert Chu + + From branch sensors_read_branch. + + * libfreeipmi/: Include new sensor-read subsection to libfreeipmi + library. + + * ipmi-sensors/src/ipmi-sensors-reading.h, + ipmi-sensors/src/ipmi-sensors-reading.c: Removed files. + + * ipmi-sensors/: Use new sensor-read library. + + * ipmimonitoring/src/libipmimonitoring/: Use new sensor-read + library. + + * Update documentation and manpages appropriately. + +2009-01-28 Albert Chu + + * ipmi-fru/, ipmi-sensors/, libfreeipmi/src/sel-parse/, bmc-info/: + Output manufacturer name as well as ID in output. + + * ipmi-fru/: Output with 'h' suffix instead of '0x' prefix for + consistency to other tools. + +2009-01-27 Albert Chu + + * libfreeipmi/src/spec/ipmi-iana-enterprise-numbers-spec.c, + libfreeipmi/include/freeipmi/spec/ipmi-iana-enterprise-numbers-spec.h: + New files. + + * libfreeipmi/src/spec/enterprise-numbers.pl: Script to generate + ipmi-iana-enterprise-numbers-spec.c. + + * libfreeipmi/src/spec/enterprise-numbers.txt: Currently used + database used to generate enterprise numbers. + + * bmc-info/src/bmc-info.c (display_get_device_id): Output + manufacturer name as well as ID. + +2009-01-26 Albert Chu + + * Suppot --config-file option in all tools. + +2009-01-26 Albert Chu + + * ipmi-sel/, ipmimonitoring/, ipmi-sensors/: Fix new output corner + cases. Support --legacy-output in config file. + +2009-01-23 Albert Chu + + * ipmi-sensors/, ipmimonitoring/: Revert no-event output back to + "OK". + + * Support "errormsg" functions libfreeipmi API and fiid. + + * ipmimonitoring/src/ipmimonitoring/: Output groups/check groups + based on ipmi_sensor_types array. + +2009-01-22 Albert Chu + + * ipmi-sel/: Make output formatted for consistency to ipmi-sensors + and ipmimonitoring. + + * ipmi-sensors/: Also output analog data format name in very + verbose output. + + * Various code cleanup. + +2009-01-21 Albert Chu + + * ipmi-sensors/, ipmimonitoring/: Output units in non-abbreviated + form by default. Update manpages for output updates. + + * contrib/ganglia/, contrib/nagios/: Make scripts use + --legacy-output to continue working with ipmi-sensors and + ipmimonitoring. + + * ipmi-sensors/, ipmimonitoring/: Use %u instead of %d where + appropriate. + + * ipmi-sensors/: Output name of linearization on very verbose + output. + +2009-01-21 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/ + (ipmi_monitoring_sensor_readings_by_record_id_callback, + ipmi_monitoring_sensor_readings_by_sensor_group_callback): Remove + functions. Absorb callback routines into + ipmi_monitoring_sensor_readings_by_record_id and + ipmi_monitoring_sensor_readings_by_sensor_group. + + * ipmimonitoring/src/libipmimonitoring/: Rename most *iterator* + functions to *read* functions. Remove most *callback* functions. + Absorb *callback* functionality into *read* functions. + + * ipmimonitoring/src/libipmimonitoring/: Remove + IPMI_MONITORING_ERR_NOT_IN_CALLBACK error code. + + * ipmimonitoring/src/libipmimonitoring/: Remove + IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER16_BITMASK + sensor reading type. + + * ipmimonitoring/src/libipmimonitoring/: Support + ipmi_monitoring_read_sensor_bitmask(). Every sensor technically + has a bitmask that can be returned. Do not differentiate between + "primary" sensor reading. + + * ipmimonitoring/src/ipmimonitoring/: Update appropriately for changes. + + * ipmimonitoring/src/ipmimonitoring/: Update output for + consistency to ipmi-sensors. Support --legacy-output option. + +2009-01-21 Albert Chu + + * man/freeipmi.7.pre.in: Fix some text. + +2009-01-16 Albert Chu + + * configure.ac: Fix CFLAGS environment variable overwriting bug. + + * ipmimonitoring/src/libipmimonitoring/: Support threshold bitmask type. + +2009-01-15 Albert Chu + + * ipmimonitoring/src/ipmimonitoring/: Begin support of + --legacy-output option. + +2009-01-15 Albert Chu + + * Support --legacy-output option for ipmi-sensors. + + * ipmi-sensors/src/ipmi-sensors-very-verbose-display.c: + Consolidate "verbose output" into this file. + + * ipmi-sensors/src/ipmi-sensors-verbose-display.h, + ipmi-sensors/src/ipmi-sensors-verbose-display.c: Remove files. + + * ipmi-sensors/src/ipmi-sensors-very-verbose-display.h, + ipmi-sensors/src/ipmi-sensors-very-verbose-display.c: Renamed + ipmi-sensors/src/ipmi-sensors-detailed-output.h and + ipmi-sensors/src/ipmi-sensors-detailed-output.c respectively. + + * ipmi-sensors/src/ipmi-sensors-simple-display.h, + ipmi-sensors/src/ipmi-sensors-simple-display.c: Renamed + ipmi-sensors/src/ipmi-sensors-simple-output.h and + ipmi-sensors/src/ipmi-sensors-simple-output.c respectively. + + * ipmi-sensors/src/ipmi-sensors-output-common.h, + ipmi-sensors/src/ipmi-sensors-output-common.c: Renamed + ipmi-sensors/src/ipmi-sensors-output-common.h and + ipmi-sensors/src/ipmi-sensors-output-common.c respectively. + + * ipmi-sensors/: Change various output for readability and parsability. + + * ipmi-sensors/src/: Various code cleanup. + +2009-01-15 Albert Chu + + * ipmimonitoring/src/ipmimonitoring/: Ensure consistency in units + output to other tools. + +2009-01-14 Albert Chu + + * ipmi-sensors/src/: Don't output fields not related to + non-threshold sensors. + +2009-01-14 Albert Chu + + * ipmimonitoring/src/ipmimonitoring: For consistency to library + and other software, fix sensor group name outputs. + +2009-01-14 Albert Chu + + * Output and parse "Record ID" instead of "Record_ID" consistently. + + * ipmi-sel/: For consistency to ipmimonitoring, output Sensor Name + before Sensor Group. + + * ipmimonitoring/src/ipmimonitoring/: Fix header typo. + +2009-01-14 Dave Love + + * bmc-watchdog/freeipmi-bmc-watchdog.init: Make SuSE-compatible, + like the other init scripts. + +2009-01-13 Albert Chu + + * libfreeipmi/src/sel-parse/ipmi-sel-parse.c + (ipmi_sel_parse_read_channel_number): Check event format version + appropriately. + + * ipmi-sel/src/: Cleanup. + + * Globally add "table of contents" into manpages to illustrate + amount of text in the manpage so users (will hopefully) know what + is available in the manpage and how to look for howto information + in freeipmi(7). + +2009-01-12 Albert Chu + + * ipmi-sel/: Support --system-event-only and --oem-event-only + options. + + * Fix copyright dates globally. + +2009-01-09 Albert Chu + + * ipmi-sel/: Support very verbose output. + +2009-01-08 Albert Chu + + * libfreeipmi/src/sel-parse/: Various bug fixes. Offer more output options. + + * ipmi-sel/: Support --verbose output. Alter default output format. + +2009-01-07 Albert Chu + + * libfreeipmi/src/sel-parse/: Support LEGACY string output option. + + * ipmi-sel/: Support --legacy-output option. + +2009-01-07 Albert Chu + + * + libfreeipmi/include/freeipmi/record-format/ipmi-sel-record-format.h: + Cleanup macro names and add new macros as needed. + + * common/src/tool-sensor-common.h, common/src/tool-sensor-common.c + (sensor_classify): Removed function. + + * + libfreeipmi/include/freeipmi/util/ipmi-sensor-and-event-code-tables-util.h, + libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c + (ipmi_event_reading_type_code_class): New function. + + * ipmi-sensors/, ipmi-sensors-config/, ipmi-sel/: Update as + necessary for change from sensor_classify to + ipmi_event_reading_type_code_class. + + * common/src/tool-sensor-common.h, common/src/tool-sensor-common.c + (sensor_group): Removed function. + + * + libfreeipmi/include/freeipmi/util/ipmi-sensor-util.h, + libfreeipmi/src/util/ipmi-sensor-util.c + (ipmi_get_sensor_type_string): New function. + + * ipmi-sensors/, ipmi-sensors-config/, ipmi-sel/: Update as + necessary for change from sensor_classify to + ipmi_get_sensor_type_string. + + * common/src/tool-sensor-common.h, + common/src/tool-sensor-common.c: Removed files. + + * ipmi-sensors/, ipmi-sensors-config/, ipmi-sel/: Handle corner + case if ipmi_get_sensor_type_string returns NULL (i.e. sensor_type + unrecognized). + + * common/src/tool-fiid-wrappers.h + (_FIID_OBJ_GET_WITH_RETURN_VALUE): Rename to _FIID_OBJ_GET_WITH_RV + and make interface consistent to others. + + * ipmi-sensors/, ipmi-sensors-config/, bmc-info/, ipmi-chassis/, + ipmi-chassis-config/: Adjust for macro name change. + + * ipmi-sel/: Remove optional hex dump to file. + + * libfreeipmi/: Include new sel-parse subsection to libfreeipmi + library. + + * ipmi-sel/src/ipmi-sel-entry.h, ipmi-sel-entry.c: Removed files. + + * ipmi-sel/: Use new sel-parse library for SEL parsing/output. + + * Update documentation and manpages appropriately. + +2009-01-05 Albert Chu + + * libfreeipmi/: Add new IPMI_ERR_NOT_FOUND error code to + libfreeipmi api sub library. + + * libfreeipmi/src/api/ipmi-messaging-support-cmds-api.c + (ipmi_get_channel_number): Fix error code corner case bug. + +2009-01-05 Albert Chu + + * bmc-config/src/bmc-config-user-sections.c (_channel_info): Fix + Enable_user checkout corner case bug. + + * Minor documentation cleanup. + +2008-12-23 Albert Chu + + * ipmi-oem/src/ipmi-oem.h, ipmi-oem/src/ipmi-oem-argp.h: Fix + memory allocation bug. + +2008-12-18 Albert Chu + + * Global cleanup, specify static functions appropriately. + +2008-12-18 Albert Chu + + * ipmi-sel/src/ipmi-sel-entry.c (_get_sel_system_event_record): + Fix possible output error corner case. + + * ipmi-sel/src/ipmi-sel-argp.c (cmdline_parse): Check that record + ID inputs are not illegal record_id values. + + * ipmi-sensors/src/ipmi-sensors-argp.c, + ipmimonitoring/src/ipmimonitoring/ipmimonitoring-argp.c: Check + that inputted record IDs are not illegal record ID values. + +2008-12-17 Albert Chu + + * Minor documentation updates. + +2008-12-17 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/: Adjust callback function + to return integer for whether libipmimonitoring should continue or + not. + + * ipmimonitoring/src/ipmimonitoring/: Adjust code to use callback + functionality to display sensor readings as they are + read/analyzed. + +2008-12-16 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/: Support callback function + routines in sensor monitoring/reading. + + * configure.ac: Update lib version appropriately. + +2008-12-16 Albert Chu + + * ipmi-sel/src/ipmi-sel.c (_hex_display_sel_records): Carry over + previous fixes into this function. + +2008-12-15 Albert Chu + + * ipmi-fru/src/ipmi-fru.c (_output_fru): Cleanup output. + +2008-12-15 Albert Chu + + * libfreeipmi/src/debug/ipmi-debug-kcs.c: New file. + + * libfreeipmi/include/freeipmi/debug/ipmi-debug.h, + libfreeipmi/src/api/ipmi-api.c, + libfreeipmi/src/api/ipmi-kcs-interface-api.c: Support detailed KCS + debug output. + + * libfreeipmi/src/debug/ipmi-debug-lan.c (_ipmi_dump_lan_packet), + libfreeipmi/src/debug/ipmi-debug-rmcpplus.c + (_dump_rmcpplus_payload_data): Fix dump corner case. + +2008-12-12 Albert Chu + + * libfreeipmi/src/api/ipmi-lan-session-common.c + (ipmi_lan_2_0_open_session): Fix Intel 2.0 workarounds. + + * ipmipower/src/ipmipower_check.c (ipmipower_check_integrity_pad), + ipmiconsole/src/libipmiconsole/ipmiconsole_checks.c + (ipmiconsole_check_integrity_pad): Fix integrity check corner case + for certain cipher suite IDs. + + * ipmiconsole/ipmiconsole.8.pre.in: Add ipmiconsole + troubleshooting notes. + + * ipmi-chassis/src/ipmi-chassis.h: Change -I (--identify) option + to -i so it does not conflict with -I from --cipher-suite-id + option. + + * ipmi-fru/src/ipmi-fru-util.c (ipmi-fru/src/ipmi-fru-util.c): + Output failed checksums by default. + +2008-12-11 Albert Chu + + * libfreeipmi/include/freeipmi/record-format/ipmi-sdr-record-format.h: + Add record type names. Rename several macros for consistency to + IPMI spec. + + * ipmi-sensors/: Output record type names along with hex codes. + + * libfreeipmi/, common/src/toolcommon/, ipmi-sensors/, ipmi-sel/, + ipmi-sensors-config/, ipmimonitoring/: Update macros as necessary. + + * ipmi-sensors/: Output hex code along with group name in verbose + and very verbose modes. + +2008-12-09 Albert Chu + + * libfreeipmi/src/api/ipmi-lan-session-common.c + (ipmi_lan_2_0_open_session): Fix Intel 2.0 workarounds. + + * bmc-config/src/bmc-config-user-sections.c (enable_user_commit): + Fix workaround for enabling a user. + + * libfreeipmi/src/api/ipmi-lan-session-common.c + (_ipmi_lan_2_0_cmd_wrapper_verify_packet): Fix ipmi 2.0 error + handling corner case for some motherboards. + + * libfreeipmi/src/api/ipmi-lan-session-common.c + (ipmi_lan_2_0_open_session): Fix ipmi Intel 2.0 workaround. + +2008-12-09 Albert Chu + + * ipmi-oem/: Add supermicro reset-intrusion oem command. Add + --list option support. + +2008-12-09 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.c, + ipmiconsole/src/libipmiconsole/ipmiconsole_defs.h, + ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_process_protocol_state_activate_payload): Add workaround for + state machine cycle possibility. + +2008-12-08 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_packet.c + (ipmiconsole_ipmi_packet_assemble): Add workaround for Intel IPMI + 2.0 situation. + + * common/man/manpage-common-workaround-sol-only-text.man, + common/man/manpage-common-workaround-text.man: Change text for + workaround changes. + +2008-12-05 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_packet.c + (ipmiconsole_ipmi_packet_assemble): Fix Intel 2.0 workaround. + +2008-12-04 Albert Chu + + * common/man/manpage-common-workaround-sol-only-text.man, + common/man/manpage-common-workaround-text.man: Cleanup text. + +2008-12-04 Diego "Flameeyes" Petten + + * ipmi-oem/, ipmi-raw/: Fix portability for glibc 2.8. Remove use + of ARG_MAX and replace with sysconf call to _SC_ARG_MAX. + +2008-12-04 Albert Chu + + * bmc-config/: Add documentation on . + +2008-12-04 Dave Love + + * freeipmi.spec.in: Require /sbin/chkconfig, not chkconfig, to + work on SuSE. + +2008-12-03 Albert Chu + + * bmc-config/src/: Document various issues w/ comments. + + * common/src/configtool/: Support CONFIG_USERNAME_NOT_SET_YET + config flag. + + * bmc-config/src/: Support CONFIG_USERNAME_NOT_SET_YET in various + fields due to checkout issues with Sun X4140. + +2008-12-01 Albert Chu + + * ipmimonitoring/ipmi_monitoring_sensors.conf.5.pre.in: Fix typos. + +2008-11-27 Albert Chu + + * ipmi-sel/src/ipmi-sel-entry.c (ipmi_sel_get_entry): Fix output + corner case. + + * ipmimonitoring/: Add system ACPI power state and button switch + interpretations. Add forgotten bitmasks. Fix config file option + names. + + * ipmimonitoring/: Add new interpretations, button switch state, + entity presence device install, processor state. + + * libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c/: + Fix event message data2 output corner cases. + +2008-11-26 Albert Chu + + * ipmimonitoring/: Additional documentation updates. + + * ipmi-sensors/src/ipmi-sensors-reading.c (sensor_reading): Output + 'NA' is sensor scanning is disabled. + + * + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c + (_get_sensor_reading): Return 'unreadable sensor' for sensors + where sensor scanning is disabled. + + * ipmimonitoring/: Add new interpretations, power supply state, + drive slot state, drive slot predictive failure. + + * ipmiconsole/src/ipmiconsole.c (main): Fix workaround bug. + + * common/src/toolcommon/tool-cmdline-common.h, + common/src/toolcommon/tool-cmdline-common.c + (parse_workaround_flags), common/src/toolcommon/tool-common.c + (ipmi_open), ipmiconsole/src/ipmiconsole/ipmiconsole.c (main), + ipmipower/src/, libfreeipmi/include/freeipmi/api/ipmi-api.h, + libfreeipmi/src/api/ipmi-api.c (ipmi_ctx_open_outofband_2_0), + ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (_grab_ipmimonitoring_options): Remove workaround flags unused in + libfreeipmi. Make tool specific workarounds specific to tools. + + * ipmi-sel/src/: When retrieving SEL entries, always try to obtain + a reservation ID. + +2008-11-25 Albert Chu + + * ipmimonitoring/ipmi_monitoring_sensors.conf.5.pre.in, + ipmimonitoring/ipmimonitoring_sensors.conf.5.pre.in, + ipmimonitoring/ipmimonitoring.conf.5.pre.in, + ipmimonitoring/libipmimonitoring.conf.5.pre.in, : New files. + + * ipmimonitoring/ipmimonitoring.8.pre.in, + ipmimonitoring/libipmimonitoring.3.pre.in: Update for new manpage. + + * configure.ac, freeipmi.spec.in, ipmimonitoring/Makefile.am: + Adjust for new manpage. + +2008-11-24 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-display-common.c + (ipmi_sensors_get_thresholds): Fix workaround for motherboards w/o + get sensor thresholds command support. + + * ipmimonitoring/: Add fan transition availability interpretation. + + * ipmimonitoring/: Documentation additions and cleanup. + + * libfreeipmi/include/freeipmi/spec/ipmi-sensor-types-spec.h, + libfreeipmi/src/spec/ipmi-sensor-types-spec.c, + libfreeipmi/include/freeipmi/cmds/ipmi-pef-and-alerting-cmds.h, + pef-config/src/pef-config-map.c: Fix typos in sensor types macros + and strings. + + * ipmi-sensors/src: Fix corner cases in groups + verification/selection. + + * configure.ac: Update library revisions appropriately. + +2008-11-20 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-display-common.c + (ipmi_sensors_get_thresholds): Fix non-recoverable thresholds + output corner case. + + * ipmi-sensors/src/ipmi-sensors-simple-display.c + (sensors_display_simple_full_record): Output something other than + critical thresholds if critical thresholds are not available. + +2008-11-20 Albert Chu + + * common/src/toolcommon/tool-fiid-wrappers.h (_FIID_OBJ_SET): New + macro. + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c + (sdr_cache_get_thresholds_raw): New function. + + * ipmi-sensors/src/ipmi-sensors-display-common.c + (_get_sdr_sensor_thresholds): New function. + + * ipmi-sensors/src/ipmi-sensors-display-common.c + (ipmi_sensors_get_thresholds): Workaround motherboards w/o get + sensor thresholds command support. + + * ipmi-sensors-config/src/ipmi-sensors-config-threshold-section.c + (threshold_checkout): Workaround motherboards w/o get sensor + thresholds command support. + + * doc/freeipmi-bugs-and-workarounds.txt: Document new workaround. + +2008-11-19 Albert Chu + + * ipmimonitoring/: Add power unit device install interpretation. + + * ipmimonitoring/src/ipmimonitoring/ipmi_monitoring_sensor_config.c: + Fix invalid config option names for slot device installs sensors. + + * ipmimonitoring/ipmimonitoring.8.pre.in: Add extra documentation. + +2008-11-19 Albert Chu + + * bmc-info/src/bmc-info.c (display_get_device_id): Optionally + display auxiliary information. + +2008-11-17 Albert Chu + + * ipmi-raw/src/ipmi-raw-argp.c, ipmi-raw/ipmi-raw.8.pre.in: + Clarify usage. + + * common/src/toolcommon/tool-cmdline-common.c + (cmdline_config_file_parse): Fix corner case parsing bug. + +2008-11-10 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-verbose-display.c + (_output_verbose_header), + ipmi-sensors/src/ipmi-sensors-very-verbose-display.c + (_output_very_verbose_header): Fix semantic issue with verbose + output by clearly outputting sensor owner ID vs. slave + address/system software ID. + +2008-11-07 Albert Chu + + * bmc-device/bmc-device.8.pre.in: Fix typo. + + * ipmimonitoring/ipmimonitoring.8.pre.in: Fix typo. + +2008-11-07 Albert Chu + + * Fix compiler warnings. + +2008-11-07 Albert Chu + + * Tagged Release-0_7_0_base. + + * Branched Release-0_7_0_branch. + +2008-10-01 Albert Chu + + * ipmiconsole/ipmiconsole.8.pre.in: Add special workaround notes. + +2008-09-30 Albert Chu + + * ipmi-fru/src/ipmi-fru-multirecord-area.c: Fix record length + check bug. + +2008-09-30 Albert Chu + + * Tagged Release-0_7_0_beta0. + +2008-09-30 Albert Chu + + * Various doc updates. + +2008-09-29 Albert Chu + + * README.build: New file. + + * Makefile.am, freeipmi.spec.in: Add new file. + +2008-09-25 Albert Chu + + * Document sr1520ml server workarounds. + +2008-09-25 Albert Chu + + * freeipmi.spec.in: Fix freeipmi.conf permissions. + + * Document Intel x38ml workarounds. + + * Update workaround text/docs. + +2008-09-25 Dmitry Frolov + + * doc/freeipmi-faq.texi: Add FreeBSD information. + +2008-09-24 Albert Chu + + * ipmiconsole/src/libipmiconsole/: Fix incorrect port usage on + non-default port conditions. + +2008-09-24 Albert Chu + + * common/src/toolhostrange/tool-hostrange-common.c + (pstdout_setup): Fix potential segfault scenario. + + * common/src/toolhostrange/tool-hostrange-common.c + (pstdout_setup): Fix --eliminate corner case when one host is + specified. + +2008-09-23 Albert Chu + + * Fix parallel build bugs due to cycles in Makefile dependencies. + + * common/src/toolhostrange/: Split off tool hostrange into + separate lib from common/src/toolcommon/. + + * Fix minor bugs. + +2008-09-23 Dmitry Frolov + + * libfreeipmi/src/debug/ipmi-debug.c (ipmi_obj_dump): Fix printf + portability. + +2008-09-23 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_check_try_new_port): Fix corner case. + +2008-09-22 Albert Chu + + * common/src/configtool/config-tool-commit.c + (config_commit_section): Fix return code corner case. + +2008-09-19 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sdr_cache.c + (_ipmi_monitoring_sdr_cache_filename): Fix filename corner case. + +2008-09-19 Albert Chu + + * + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensors_config.c + (_cb_sensor_state_parse): Fix corner case. + +2008-09-17 Albert Chu + + * Fix distcheck globally. + + * ipmi-sensors/, ipmimonitoring/: Code cleanup. + + * configure.ac: update for beta release. + +2008-09-16 Albert Chu + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache-defs.h: Fix potential + portability issue. + + * libfreeipmi/src/fiid/fiid.c: Add template checks for valid key + name and key length. Add template checks for valid flags. + +2008-09-13 Albert Chu + + * ipmi-sensors/, ipmimonitoring/: Handle sensor completion code of + IPMI_COMP_CODE_PARAMETER_OUT_OF_RANGE and + IPMI_COMP_CODE_REQUEST_INVALID_DATA_FIELD as special case. + +2008-09-10 Albert Chu + + * ipmi-sensors/, ipmimonitoring/: Handle sensor completion code of + IPMI_COMP_CODE_COMMAND_ILLEGAL_FOR_SENSOR_OR_RECORD_TYPE as a + special case. + +2008-09-02 Dmitry Frolov + + * configure.ac, all Makefile.am: Fix porting for BSD. + +2008-08-29 Albert Chu + + * common/src/toolcommon/tool-config-file-common.c: Fix typo in + option name. + + * etc/freeipmi.conf: Add missing options. + +2008-08-28 Albert Chu + + * libfreeipmi/src/record-format/ipmi-sdr-record-format.c: Fix + field names. + + * ipmi-sensors/, common/src/toolcommon/: Adjust for new field names. + + * common/src/toolcommon/, ipmi-sensors/: Add additional output in + very verbose mode. + +2008-08-27 Albert Chu + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c + (sdr_cache_get_sensor_owner_lun): New function. + + * ipmi-sensors/: Add channel and lun info to verbose output. + + * ipmi-sensors/, ipmimonitoring/: Only call bridging if specified + channel is IPMB. + + * libfreeipmi/src/api/ipmi-sensors-cmds-api.c, + libfreeipmi/include/freeipmi/ipmi-sensors-cmds-api.h + (ipmi_cmd_get_sensor_reading_ipmb): Take lun parameter. + + * ipmi-sensors/, ipmimonitoring/: Pass SDR lun as well as slave + address for ipmb bridging. + + * ipmimonitoring/: Add fan redundancy interpretation. + + * ipmimonitoring/: Support alternate sensors config file. + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c + (sdr_cache_create_directory): New function. + + * common/src/toolcommon/tool-sdr-cache-common.c: Code cleanup. + + * ipmimonitoring/src/ipmimonitoring/: Code cleanup. + + * libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c, + libfreeipmi/include/freeipmi/util/ipmi-sensor-and-event-code-tables.h + (ipmi_get_sensor_type_code_message_short, + ipmi_get_generic_event_message_short): New functions. + + * ipmi-sensors/, ipmimonitoring/: Use short message versions + instead of long message versions under non-verbose output. + + * Tweak documentation. + +2008-08-26 Albert Chu + + * ipmimonitoring/: Support power supply redundancy interpretation. + Support voltage assertion interpretation. + + * libfreeipmi/src/api/ipmi-kcs-interface-api.c: Re-read if get + message queue is empty error. + + * ipmi-sensors/, ipmimonitoring/: Continue on if a message timeout + occured. It is not a fatal error. + + * libfreeipmi/src/debug/ (ipmi_obj_debug_ipmb): Fix output corner + case. + + * Tweak documentation. + +2008-08-25 Albert Chu + + * ipmi-sel/src/: Support debug dumping of SEL Event Records. + Handle sensor finding corner case on Supermicro. + + * ipmi-sensors/src/: Include sensor owner id type in slave address + output. + +2008-08-25 Albert Chu + + * tagged ipmi_chassis_boot_flags_valid_remove_pre + + * ipmi-chassis-config/: Do not allow configuration of + boot_flags_valid and its bit clearing. Always set + boot_flags_valid to 1 (i.e. "Yes"). + + * ipmi-chassis-config/src/ipmi-chassis-config-boot-flags-valid-bit-clearing.h, + ipmi-chassis-config/src/ipmi-chassis-config-boot-flags-valid-bit-clearing.c: + Removed files. + + * tagged ipmi_chassis_boot_flags_valid_remove_post + +2008-08-25 Albert Chu + + * ipmi-chassis-config/: Remove ipmi chassis boot flags workaround. + +2008-08-25 Albert Chu + + * merge in ipmb_branch + + * libfreeipmi/include/freeipmi/cmds/ipmi-event-commands.h, + libfreeipmi/src/cmds/ipmi-event-cmds.c, + libfreeipmi/src/api/ipmi-event-cmds.c, + libfreeipmi/include/freeipmi/api/ipmi-event-cmds-api.h: New files. + + * libfreeipmi/include/freeipmi/util/ipmi-ipmb-util.h, + libfreeipmi/src/util/ipmi-ipmb-util.c: New files. + + * libfreeipmi/include/freeipmi/freeipmi.h: Update for new files. + + * libfreeipmi/src/api/ipmi-api.c, + libfreeipmi/include/freeipmi/api/ipmi-api.h (ipmi_cmd_ipmb): New + function. + + * libfreeipmi/include/freeipmi/util/ipmi-error-util.c, + libfreeipmi/include/freeipmi/spec/ipmi-comp-code-spec.h: Support + error codes for get message command. + + * libfreeipmi/src/api/ipmi-kcs-interface-api.h, + libfreeipmi/src/api/ipmi-kcs-interface-api.c + (ipmi_kcs_cmd_api_ipmb): New function. + + * libfreeipmi/include/freeipmi/driver/ipmi-openipmi-driver.h, + libfreeipmi/src/driver/ipmi-openipmi-driver.c + (ipmi_openipmi_cmd_ipmb): New function. + + * libfreeipmi/src/api/ipmi-openipmi-interface-api.h, + libfreeipmi/src/api/ipmi-openipmi-interface-api.c + (ipmi_openipmi_cmd_api_ipmb): New function. + + * libfreeipmi/src/api/ipmi-lan-session-common.h, + libfreeipmi/src/api/ipmi-lan-session-common.c + (ipmi_lan_cmd_wrapper_ipmb, ipmi_lan_2_0_cmd_wrapper_ipmb): New + functions. + + * libfreeipmi/src/debug/ipmi-debug.c, + libfreeipmi/src/debug/ipmi-debug-lan.c, + libfreeipmi/src/debug/ipmi-debug-rmcpplus.c, + libfreeipmi/include/freeipmi/debug/ipmi-debug.h + (ipmi_dump_obj_ipmb, ipmi_dump_lan_packet_ipmb, + ipmi_dump_rmcpplus_packet_ipmb): New functions. + + * libfreeipmi/src/api/ipmi-api.c, libfreeipmi/src/api/ipmi-ctx.h: + Support ipmb debugging. + + * ipmi-sensors/: Support ipmb bridging. Support --bridge-sensors + option. Change default privilege to operator. Output "Unknown + State" if an unrecognized bit is set. Output busy sensors as "Unknown". + + * ipmimonitoring/src/libipmimonitoring/: Support + IPMI_MONITORING_SENSOR_READING_FLAGS_BRIDGE_SENSORS flag. + + * ipmimonitoring/: Output "Unknown State" if an unrecognized bit + is set. Handle and recognize busy sensors. Support + --bridge-sensors option. Change default privilege to operator. + + * common/src/toolcommon/tool-config-file-common.h, + common/src/toolcommon/tool-config-file-common.c: Support config + file configuration of --bridge-sensors. + + Various code cleanup and minor enhancements. + + * libfreeipmi/src/api/: Create and support new error message + IPMI_ERR_COMMAND_INVALID_FOR_SELECTED_INTERFACE. + +2008-08-22 Albert Chu + + * tagged ipmi_chassi_boot_flags_workaround_pre + + * ipmi-chassis-config/: Support workaround for boot flags. + + * tagged ipmi_chassi_boot_flags_workaround_post + +2008-08-18 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-ipmb-interface.h, + libfreeipmi/src/interface/ipmi-ipmb-interface.c: New files. + + * libfreeipmi/include/freeipmi/freeipmi.h: Update for new .h file. + + * Update Makefiles as needed for new files. + +2008-08-15 Albert Chu + + * libfreeipmi/: Support various new ipmi cmds from messaging + support section. + +2008-08-15 Albert Chu + + * libfreeipmi/: Support get system interface capabilities and get + bt interface capabilities commands, templates, and api calls. + + * bmc-device/: Support --get-ssif-interface-capabilities, + --get-kcs-interface-capabilities, --get-bt-interface-capabilities. + +2008-08-15 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c + (_get_sensor_reading): If sensor slave address is not BMC, + considering sensor unavailable. + + * libfreeipmi/include/freeipmi/sdr-cache/ipmi-sdr-cache.h, + libfreeipmi/src/sdr-cache/ipmi-sdr-cache-read.c + (ipmi_sdr_cache_search_sensor_number): Rename to + ipmi_sdr_cache_search_sensor. Search for sensor via sensor owner + id and sensor number. + + * ipmi-sel/src/ipmi-sel-entry.c (_find_sdr_record, + _get_sel_system_event_record): Find sensor via sensor number and + id. + + * libfreeipmi/include/freeipmi/spec/ipmi-slave-address-spec.h: + Rename IPMI_LAN_SLAVE_ADDRESS_BMC to IPMI_SLAVE_ADDRESS_BMC + (support IPMI_LAN_SLAVE_ADDRESS_BMC w/ legacy macro). + + * General code cleanup. + +2008-08-14 Albert Chu + + * ipmi-sensors/src/: If sensor slave address is not BMC, do not + read/output sensor reading. + +2008-08-14 Albert Chu + + * libfreeipmi/include/freeipmi/interface/ipmi-lan-interface.h, + libfreeipmi/src/interface/ipmi-lan-interface.c (fill_lan_msg_hdr): + Take rs_addr argument. + + * Adjust calls to fill_lan_msg_hdr globally as needed. + +2008-08-12 Albert Chu + + * Tagged sunbmc_pre_experimental + + * Document that sunbmc driver is experimental. + + * Tagged sunbmc_post_experimental + +2008-08-12 Albert Chu + + Add Solaris BMC interface. + + * libfreeipmi/include/freeipmi/driver/ipmi-sunbmc-driver.h: New file. + + * libfreeipmi/src/driver/ipmi-sunbmc-driver.c: New file. + + * libfreeipmi/src/api/ipmi-sunbmc-driver-api.h, + libfreeipmi/src/api/ipmi-sunbmc-driver-api.c: New files. + + * libfreeipmi/include/freeipmi/ipmi-api.h, + libfreeipmi/src/api/ipmi-ctx.h, libfreeipmi/src/api/ipmi-api.c, + libfreeipmi/src/api/ipmi-err-wrappers-api.h: Support + IPMI_DEVICE_SUNBMC. + + * libfreeipmi/include/freeipmi/freeipmi.h: add + libfreeipmi/include/freeipmi/driver/ipmi-sunbmc-driver.h. + + * configure.ac: check for sys/stropts.h, sys/int_types.h, bmc_intf.h. + + * common/src/toolcommon/tool-cmdline-common.h, + common/src/toolcommon/tool-cmdline-common.c, + common/src/toolcommon/tool-common.c.: Add Sun BMC driver cmdline + support. + + * README, man/freeipmi.7.pre.in, + common/man/manpage-common-driver.man: Update with sunbmc. + + * ipmimonitoring/, bmc-watchdog/: Support sunbmc driver. + + * README.sunbmc: New file. + + * doc/freeipmi-faq.texi: Update w/ SUNBMC driver compilation + support. + + * freeipmi.spec.in: Add README.sunbmc. + +2008-08-11 Albert Chu + + * man/freeipmi.conf.5.pre.in: Fix text. + + * ipmi-locate/src/ipmi-locate.c: Fix output format. + +2008-08-10 Albert Chu + + * bmc-config/, ipmi-chassis-config/, ipmi-sensors-config/, + pef-config/: Support hostrange config file options. + + * common/src/toolcommon/tool-config-file-common.h, + common/src/toolcommon/tool-config-file-common.c: Support tool + specific out of band configuration. + + * Globally update documentation and tools as needed. + +2008-08-08 Albert Chu + + * Documentation cleanup. + +2008-08-08 Albert Chu + + Merge contents from chassis_config_branch. + + * ipmi-chassis-config/Makefile.am, + ipmi-chassis-config/ipmi-chassis-config.8.pre.in, + ipmi-chassis-config/src/Makefile.am, + ipmi-chassis-config/src/ipmi-chassis-config.h, + ipmi-chassis-config/src/ipmi-chassis-config.c, + ipmi-chassis-config/src/ipmi-chassis-config-argp.h, + ipmi-chassis-config/src/ipmi-chassis-config-argp.c, + ipmi-chassis-config/src/ipmi-chassis-config-boot-flags.h, + ipmi-chassis-config/src/ipmi-chassis-config-boot-flags.c, + ipmi-chassis-config/src/ipmi-chassis-config-boot-flags-valid-bit-clearing.h, + ipmi-chassis-config/src/ipmi-chassis-config-boot-flags-valid-bit-clearing.c, + ipmi-chassis-config/src/ipmi-chassis-config-front-panel-buttons.h, + ipmi-chassis-config/src/ipmi-chassis-config-front-panel-buttons.c, + ipmi-chassis-config/src/ipmi-chassis-config-power-conf.h, + ipmi-chassis-config/src/ipmi-chassis-config-power-conf.c, + ipmi-chassis-config/src/ipmi-chassis-config-validate.h, + ipmi-chassis-config/src/ipmi-chassis-config-validate.c, + ipmi-chassis-config/src/ipmi-chassis-config-map.h, + ipmi-chassis-config/src/ipmi-chassis-config-map.c, + ipmi-chassis-config/src/ipmi-chassis-config-sections.h, + ipmi-chassis-config/src/ipmi-chassis-config-sections.c: New files. + + * common/src/configtool/config-tool-common.h, + common/src/configtool/config-tool-section.h, + common/src/configtool/config-tool-section.c, + common/src/configtool/config-tool-commit.c, + (config_section_create, config_commit_section): Add sectional pre + and post commit callback definitions and functions. + + * common/src/configtool/config-tool-checkout.c + (config_checkout_section): Support multiline descriptions. + + * bmc-config/src/, pef-config/src/, ipmi-sensors-config/src/: + Update for function call changes. + + * libfreeipmi/include/freeipmi/cmds/ipmi-chassis-cmds.h, + libfreeipmi/src/cmds/ipmi-chassis-cmds.c + (fill_set_front_panel_enables, + tmpl_cmd_set_front_panel_enables_rq, + tmpl_cmd_set_front_panel_enables_rs, + fill_cmd_set_system_boot_options_BMC_boot_flag_valid_bit_clearing, + tmpl_cmd_set_system_boot_options_BMC_boot_flag_valid_bit_clearing_rq, + tmpl_cmd_get_system_boot_options_BMC_boot_flag_valid_bit_clearing_rs): + Support new templates and functions. + + * libfreeipmi/include/freeipmi/api/ipmi-chassis-cmds-api.h, + libfreeipmi/src/cmds/ipmi-chassis-cmds-api.c + (ipmi_cmd_set_front_panel_enables, + ipmi_cmd_set_system_boot_options_boot_BMC_boot_flag_valid_bit_clearing + ipmi_cmd_get_system_boot_options_BMC_boot_flag_valid_bit_clearing): + New functions. + + * bmc-config/src/: Remove default checkout of + "Power_Restore_Policy". + + * ipmi-chassis/: Hide legacy chassis configuration commands/options. + + * configure.ac, Makefile.am, freeipmi.spec.in: Update as needed + for new files. + + * bmc-config/bmc-config.8.pre.in, pef-config/pef-config.8.pre.in, + ipmi-sensors-config/ipmi-sensors-config.8.pre.in, + ipmi-chassis/ipmi-chassis.8.pre.in, README, NEWS, + mans/freeipmi.7.pre.in, doc/freeipmi-faq.texi, + doc/freeipmi-coding.txt, doc/freeipmi-hostrange.txt: Update + appropriately with documentation updates. + + * libfreeipmi/src/cmds/ipmi-chassis-cmds.c + (fill_cmd_set_system_boot_options_boot_flags), + libfreeipmi/src/api/ipmi-chassis-cmds-api.c + (ipmi_cmd_set_system_boot_options_boot_flags): Fix input parameter + check. + + * Various code cleanup. + +2008-08-05 Albert Chu + + * bmc-config/: Support configurable Lan_Session_Limit and + Serial_Session_Limit. Update documentation as needed. + +2008-08-02 Albert Chu + + * Various documentation and manpage updates. + +2008-08-01 Albert Chu + + * ipmi-sensors-config/src/: Complete sensor event enable/disable support. + + * ipmimonitoring/: Support cable interconnect and boot error + interpretations. + + * ipmi-sensors-config/src/: Support cable interconnect and boot + error config. + +2008-07-31 Albert Chu + + * ipmi-sensors-config/src/: Begin specific event enable support. + + * common/src/configtool/config-tool-checkout.c: Fix checkout + corner case. Support different length lines in checkout. + + * bmc-config/, pef-config/, ipmi-sensors-config/: Support config + tool API change. + +2008-07-30 Albert Chu + + * ipmi-sensors-config/src/: Variety of code cleanup. + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c + (sdr_cache_get_assertion_supported, + sdr_cache_get_deassertion_supported, + sdr_cache_get_threshold_assertion_supported, + sdr_cache_get_threshold_deassertion_supported): New function.s + + * libfreeipmi/src/record-format/ipmi-sdr-record-format.c, + libfreeipmi/include/freeipmi/record-format/ipmi-sdr-record-format.h: + Add tmpl_sdr_compact_sensor_record_non_threshold_based_sensors and + tmpl_sdr_compact_sensor_record_threshold_based_sensors templates. + + * libfreeipmi/src/debug/ipmi-debug-sdr.c (ipmi_dump_sdr_record): + Support new compact record formats. + +2008-07-20 Albert Chu + + * ipmi-sensors-config/ipmi-sensors-config.8.pre.in: Update text. + + * configure.ac: Update lib versions. + +2008-07-19 Albert Chu + + * ipmi-sensors-config/src/ipmi-sensors-config-sensor-event-enable-common.h, + ipmi-sensors-config/src/ipmi-sensors-config-sensor-event-enable-common.c: + New files. + + * ipmi-sensors-config/: Support all event messages enable and + sensor scanning enable/disable. + +2008-07-16 Albert Chu + + * ipmi-sensors-config/: Remove discrete sensor hysteresis support. + Makes no sense. + + * ipmi-sensors-config/src/ipmi-sensors-config-utils.h, + ipmi-sensors-config/src/ipmi-sensors-config-utils.c + (create_section_name): New function. + + * ipmi-sensors-config/src/ipmi-sensors-config-utils.h, + ipmi-sensors-config/src/ipmi-sensors-config-utils.c + (convert_id_string): Rename to _convert_id_string, make static. + + * ipmi-sensors-config/src/ipmi-sensors-config-threshold-section.c, + ipmi-sensors-config/src/ipmi-sensors-config-threshold-section.h: + Use create_section_name appropriately. + +2008-07-15 Albert Chu + + * ipmi-sensors-config/src/ipmi-sensors-config-threshold-section.c: + Cleanup to prepare for hysteresis configuration support. + + * ipmi-sensors-config/: Support threshold hysteresis configuration. + + * ipmi-sensors-config/src/ipmi-sensors-config-discrete-section.h, + ipmi-sensors-config/src/ipmi-sensors-config-discrete-section.c: + New files. + + * ipmi-sensors-config/: Support hysteresis configuration on + discrete sensors. + + * common/src/config-checkout.c (config_checkout_section): Fix + corner case. + +2008-07-14 Albert Chu + + * ipmimonitoring/: Fix up -v output formatting. + + * common/src/configtool/config-tool-argp.c: Fix -v option support. + + * common/man/manpage-common-config-tool-options.man: Fix man options. + + * bmc-config/: Output authentication type enables and serial + conf, but only under verbose mode. + +2008-07-13 Albert Chu + + * tagged pre_remove_serial_bmc_config + + * bmc-config/: remove checkout of serial config sections/fields. + + * tagged post_remove_serial_bmc_config + + * ipmi-sensors/src/: Limit output in verbose and very verbose when + data is clearly irrelevant. + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (run_cmd_args): Similar to ipmi-sensors, output "OK" if a bitmask + sensor reading has no bits set. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c + (_threshold_sensor_reading): Check for valid analog data format as + well as linearization. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c + (_get_sensor_reading): Check for reading state in sensor reading. + + * ipmimonitoring/src/libipmimonitoring/: Support "connection + timeout" error message. + + * ipmimonitoring/: Support -v verbose option. + +2008-07-12 Albert Chu + + * Update bmc-config, pef-config, ipmi-sensors-config with some + config text. + +2008-07-11 Albert Chu + + * ipmi-sensors/src/: Output multiple event messages on multiple + lines under verbose mode. Retrieve hysteresis only from IPMI cmd, + not from SDR. Support output of event enable information in very + verbose mode. + + * common/src/miscutil/hostlist.c: update to newest lib version. + + * common/src/configtool/config-tool-common.h + (IPMI_CTX_ERRNUM_IS_FATAL_ERROR): New macro. + + * bmc-config/, pef-config/, ipmi-sensors-config/, + common/src/configtool/config-tool-pef-conf-section.c: Utilize + IPMI_CTX_ERRNUM_IS_FATAL_ERROR to check if an error from an IPMI + API cmd call is really non-fatal. + + * ipmi-sensors/src/: Limit output in verbose and very verbose when + data is clearly irrelevant. + +2008-07-10 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-reading.c + (_get_threshold_message_list, _get_generic_event_message_list, + _get_sensor_specific_event_message_list): Fix cleanup corner case. + +2008-07-10 Albert Chu + + * ipmipower/ipmipower.8.pre.in: Add default info. + + * man/freeipmi.conf.5.pre.in: Add default config file path info. + + * etc/: New dir. + + * etc/freeipmi.conf: New default freeipmi.conf file. + + * configure.ac, freeipmi.spec.in: Update appropriately for new files. + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c + (sdr_cache_get_sensor_capabilities): New function. + + * ipmi-sensors/src/ipmi-sensors-very-verbose-display.c + (_output_very_verbose_hysteresis): Before issuing hysteresis + command, check if hysteresis can even be read. + + * ipmi-sensors/src/ipmi-sensors-display-common.c + (ipmi_sensors_get_thresholds): Before issuing threshold reading + commands, check if threshold can even be read. + + * ipmi-sensors/src/ipmi-sensors-reading.c (sensor_reading): Check + for unavailable sensor readings. + + * ipmi-sensors/src/ipmi-sensors-reading.c (_get_na_message_list): + New function. + + * ipmi-sensors/src/ipmi-sensors-reading.c (sensor_reading): If + sensor is not linear or has invalid analog_data_format, still try + to get proper event message list before falling through. + +2008-07-09 Albert Chu + + * libfreeipmi/include/freeipmi/cmds/ipmi-sensor-cmds.h, + libfreeipmi/src/cmds/ipmi-sensor-cmds.c, + libfreeipmi/include/api/ipmi-sensor-cmds-api.h, + libfreeipmi/src/api/ipmi-sensor-cmds-api.c: Support Get/Set event + enable commands. + + * Globally rename "sensor_state" to "sensor_event_bitmask" for + consistency to get/set enable commands and for clarification from + ipmimonitoring's "sensor_state". + + * ipmi-sensors/: Re-order hysteresis output with positive first, + for consistency to IPMI spec. Gather hysteresis values from IPMI + command when available. + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c + (sdr_cache_get_hysteresis_real): Removed function. + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c + (sdr_cache_get_hysteresis_integeer): Renamed to sdr_cache_get_hysteresis. + +2008-07-08 Albert Chu + + * ipmi-sel/, bmc-device/: Move --get-time and --set-time from + ipmi-sel to --get-sel-time and --set-sel-time in bmc-device. + + * libfreeipmi/include/freeipmi/api/ipmi-sdr-repository-cmds-api.h, + libfreeipmi/include/freeipmi/cmds/ipmi-sdr-repository-cmds.h, + libfreeipmi/src/api/ipmi-sdr-repository-cmds-api.c, + libfreeipmi/src/cmds/ipmi-sdr-repository-cmds.c: Support get/set + SDR repository time commands. + + * bmc-device/: Support --get-sdr-repository-time and + --set-sdr-repository-time. + + * libfreeipmi/include/freeipmi/cmds/ipmi-sel-cmds.h, + libfreeipmi/src/cmds/ipmi-sel-cmds.c, + libfreeipmi/include/api/ipmi-sel-cmds-api.h, + libfreeipmi/src/api/ipmi-sel-cmds-api.c: Support Get Auxiliary Log + status IPMI command. + + * bmc-device/: Support --get-mca-auxiliary-log-status. + + * libfreeipmi/: various minor code cleanup. + + * libfreeipmi/include/freeipmi/cmds/ipmi-sensor-cmds.h, + libfreeipmi/src/cmds/ipmi-sensor-cmds.c, + libfreeipmi/include/api/ipmi-sensor-cmds-api.h, + libfreeipmi/src/api/ipmi-sensor-cmds-api.c: Support Get/Set + hysteresis commands. + +2008-07-07 Albert Chu + + * libfreeipmi/include/freeipmi/api/ipmi-lan-cmds-api.h, + libfreeipmi/include/freeipmi/cmds/ipmi-lan-cmds.h, + libfreeipmi/src/api/ipmi-lan-cmds-api.c, + libfreeipmi/src/cmds/ipmi-lan-cmds.c: Support get IP/UDP/RMCP + statistics command. + + * libfreeipmi/src/api/ipmi-lan-cmds-api.c + (ipmi_cmd_suspend_bmc_arps): Fix parameter corner case check. + + * bmc-device/: Support --get-lan-statistics and + --clear-lan-statistics. + + * bmc-device/: Various minor cleanup. + +2008-07-07 Albert Chu + + Support --sdr-cache-recreate globally. + + * common/src/toolcommon/tool-cmdline-common.h, + common/src/toolcommon/tool-cmdline-common.c: Support new + --sdr-cache-recreate option. + + * common/man/manpage-common-sdr-options.man: Document new --sdr-cache-recreate option. + + * common/src/toolcommon/tool-sdr-cache-common.h, + common/src/toolcommon/tool-sdr-cache-common.c + (sdr_cache_create, sdr_cache_create_and_load): Add support for + --sdr-cache-recreate. + + * ipmi-sensors/src/ipmi-sensors.c, ipmi-sel/src/ipmi-sel.c, + ipmi-fru/src/ipmi-fru.c, + ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c, + ipmi-sensors-config/src/ipmi-sensors-config.c: Update for new + sdr_cache_create_and_load call. + + * contrib/ganglia/ganglia_ipmi_sensors.pl, + contrib/ganglia/ganglia_ipmimonitoring.pl, + contrib/nagios/nagios_ipmimonitoring.pl: Use --sdr-cache-recreate + when appropriate. + + * freeipmi.spec.in: Fix build problem. + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (run_cmd_args): Preserve old output format when no messages can be + output. + + * ipmi-chassis/: Document power-on-hours typically abbreviated to POH. + +2008-07-07 Albert Chu + + * bmc-config/src/bmc-config.c, pef-config/src/pef-config.c, + ipmi-sensors-config/src/ipmi-sensors-config.c: Fix error message + output corner cases. + +2008-07-03 Albert Chu + + * configure.ac: Check for stristr. + + * common/src/portability/freeipmi-portability.h, + common/src/portability/freeipmi-portability.c (freeipmi_stristr): + New function. + + * bmc-config/src/: Use stristr when appropriate. + +2008-07-03 Albert Chu + + * ipmi-chassis/ipmi-chassis.8.pre.in: Update some text. + + * libfreeipmi/include/freeipmi/cmds/ipmi-device-global-cmds.h: Add + "NO_CHANGE" macros. + + * bmc-device/: Support --get-acpi-power-state. + + * libfreeipmi/src/api/ipmi-device-global-cmds.c + (ipmi_cmd_set_acpi_power_state): Fix parameter check bug. + + * bmc-device/: Support --set-acpi-power-state. + + * bmc-config/src/: Output lan authentication enables fields + dependent on authentication support fields. + + * configure.ac: Get getpwuid_r portability bug. + +2008-07-01 Albert Chu + + * bmc-device/bmc-device.8.pre.in: Tweak text. + + * libfreeipmi/include/freeipmi/cmds/ipmi-device-global-cmds.h, + libfreeipmi/src/cmds/ipmi-device-global-cmds.c, + libfreeipmi/include/api/ipmi-device-global-cmds-api.h, + libfreeipmi/src/api/ipmi-device-global-cmds-api.c: Support Get + Self Test Results IPMI command. + + * bmc-device/: Support get self test results. + + * libfreeipmi/include/freeipmi/cmds/ipmi-device-global-cmds.h, + libfreeipmi/src/cmds/ipmi-device-global-cmds.c, + libfreeipmi/include/api/ipmi-device-global-cmds-api.h, + libfreeipmi/src/api/ipmi-device-global-cmds-api.c: Support Set and Get + ACPI power state commands. + +2008-06-22 Albert Chu + + * man/: New dir. Move manpages from doc/ into man/. + +2008-06-21 Albert Chu + + * doc/freeipmi-faq.texi: Add various HPC notes. + + * Fix compiler warnings. + +2008-06-21 Albert Chu + + * Audit and cleanup header file usage throughout (i.e. use correct + #ifs, proper commenting for GNU style, etc.). + +2008-06-20 Albert Chu + + * common/src/portability/: New directory. + + * common/src/: Moved to portability files to + common/src/portability/. + + * common/src/toolcommon/: New directory. + + * common/src/: Moved to toolcommon files to + common/src/toolcommon/. + + * common/src/miscutil/: New directory. + + * common/src/: Moved to miscutil files to common/src/miscutil/. + + * Adjust all tools and libs appropriately for path changes and + naming changes. + + * Variety of Makefile cleanup. + +2008-06-19 Albert Chu + + * common/src/pingtool/: New directory. + + * common/src/ping-tool-common.h, common/src/ping-tool-common.c: + Moved to common/src/pingtool/. + + * common/src/configtool/: New directory. + + * common/src/: Moved to config tool files to + common/src/configtool/. + + * common/src/debugutil/: New directory. + + * common/src/debug-common.h, common/src/debug-common.c: Rename to + debug-util.h and debug-util.c respectively. Rename library to + libdebugutil. + + * Adjust all tools and libs appropriately for path changes and + naming changes. + + * Makefile.am: Remove freeipmi.spec.in and autogen.sh from + EXTRA_DIST. + + * common/doc: Move to common/man. + + * Adjust all manpages appropriately. + + * common/src/freeipmi-portability.h, + common/src/freeipmi-portability.c: Fix portability of asprintf. + +2008-06-19 Albert Chu + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (ipmimonitoring.c): Output multiple strings if multiple bitmasks + set. + + * common/src/hostrange.h, common/src/hostrange.c: Rename to + tool-hostrange-common.h and tool-hostrange-common.c. + + * common/src/ipmi-ping.h, common/src/ipmi-ping.c: Rename to + ping-tool-common.h and ping-tool-common.c. + + * common/src/Makefile.am: Merge hostrange lib into toolcommon lib. + Link libmiscutils.la into libtoolcommon.la. Link + libfreeipmiportability.la into libtoolcommon.la. rename + libipmiping.la to libpingtoolcommon.la for consistency. Link + libfreeipmiportability.la into libpingtoolcommon.la. Link + libtoolcommon into libconfigtoolcommon. Link libipmidetect and + libfreeipmi into libtoolcommon. Link libfreeipmi into + libpingtoolcommon. + + * Adjust all tool Makefiles appropriately for lib changes. + + * General Makefile cleanup. + +2008-06-18 Albert Chu + + Support hostranges on bmc-config, ipmi-sensors-config, and pef-config. + + * common/src/config-tool-argp.c, common/src/config-tool-argp.h, + common/src/config-tool-checkout.c, + common/src/config-tool-checkout.h, + common/src/config-tool-comment.c, + common/src/config-tool-comment.h, common/src/config-tool-commit.c, + common/src/config-tool-commit.h, common/src/config-tool-common.h, + common/src/config-tool-diff.c, common/src/config-tool-diff.h, + common/src/config-tool-parse.c, common/src/config-tool-parse.h, + common/src/config-tool-pef-conf-section.c, + common/src/config-tool-pef-conf-section.h: Support hostranges. + + * bmc-config/src/, ipmi-sensors-config/src/, pef-config/src/: + Support hostranges. + + * doc/freeipmi-hostrange.txt, + common/doc/manpage-common-config-tool-general-use.man, + bmc-config/bmc-config.8.pre.in, + ipmi-sensors-config/ipmi-sensors-config.8.pre.in, + pef-config/pef-config.8.pre.in: Update appropriately for hostrange + support in config tools. + + Misc fallout from above changes. + + * common/src/pstdout.h, common/src/pstdout.c (PSTDOUT_PRINTF, + PSTDOUT_FPRINTF, PSTDOUT_PERROR): new functions. + + * common/src/tool-sdr-cache-common.c: Use PSTDOUT_PRINTF, + PSTDOUT_FPRINTF, PSTDOUT_PERROR appropriately. + + * common/src/tool-fiid-wrappers.h (_FIID_OBJ_GET_DATA): Remove + __len in parameters. + + * bmc-info/, ipmi-fru/: Adjust for _FIID_OBJ_GET_DATA change. + + * common/src/config-tool-fiid.h, common/src/config-tool-fiid.c: + Removed files. + + * common/src/config-tool-pef-conf-section.c: Adjust for removed + wrapper functions. + + * common/src/config-tool-commit.h, common/src/config-tool-commit.c + (config_commit_section, config_commit): Remove fp argument. + + * common/src/pstdout.c (_pstdout_printf): Resolve return value + corner case. + + * common/src/pstdout.h: Update comments on pstdout_printf, + pstdout_fprintf, and pstdout_perror. + +2008-06-16 Albert Chu + + * ipmi-sensors-config/ipmi-sensors-config.8.pre.in: Fix manpage + output text ordering. + +2008-06-13 Albert Chu + + * common/src/tool-common.c (ipmi_open): Add/fix conditions under + which "nice" error message output occurs. + +2008-06-08 Albert Chu + + * common/src/tool-sdr-cache-common.c (_get_home_directory): Fix + getpwuid_r usage. + + * configure.ac: Fix getpwuid_r detection. + +2008-06-07 Albert Chu + + Port for Solaris. + + * README.argp: New file. + + * common/src/freeipmi-portability.h, + common/src/freeipmi-portability.c: Handle mempcpy and strchrnul + portability. + + * config/ac_lsh_gcc_attributes.m4: New file. + + * common/src/freeipmi-argp.h + common/src/freeipmi-argp-ba.c + common/src/freeipmi-argp-eexst.c + common/src/freeipmi-argp-fmtstream.c + common/src/freeipmi-argp-fmtstream.h + common/src/freeipmi-argp-help.c + common/src/freeipmi-argp-namefrob.h + common/src/freeipmi-argp-parse.c + common/src/freeipmi-argp-pv.c + common/src/freeipmi-argp-pvh.c: New files. + + * common/src/Makefile.am: Update for libfreeipmiportability for + new freeipmi-argp lib. + + * configure.ac: Update with lib argp checking and argp.h. + + * Update all tools and libraries to load argp.h or freeipmi-argp.h + respectively. + + * Update all Makefile's to include libfreeipmiportability as + needed. + + * Include alloca.h in all files as needed. + + * common/src/pstdout.c: Rename internal variables stdout and + stderr to p_stdout and p_stderr as needed. + + * configure.ac: Add sys/sockio.h check. + + * common/src/ipmi-ping.c: Include sys/sockio.h. + + * configure.ac: Check for 5 vs 4 argument getpwuid_r. + + * common/src/tool-sdr-cache-common.c (_get_home_directory): Use 5 + or 4 argument getpwuid_r appropriately. + + * Globally remove "-x c" and "-o" options from cpp lines. + + * configure.ac: Search for cpp. + + * Globally change 'cpp' call to $(CPP). + + * Remove default -Wall compilation. + + * Cleanup Makefiles for portable use. + + * configure.ac, libfreeipmi/src/driver/ipmi-openipmi-driver.c: + Check and load sys/ioccom.h as needed. + + * configure.ac: Check if -lsocket lib is needed. + + * common/src/freeipmi-portability.h: Define timeradd and timersub + if they don't exist on the system. + + * configure.ac, libfreeipmi/src/driver/ipmi-kcs-driver.c: Check + and handle iopl() as needed. + + * configure.ac, common/src/freeipmi-portability.h, + common/src/freeipmi-portability.c: Check for an port asprintf as + needed. + + * configure.ac, common/src/freeipmi-portability.h, + common/src/freeipmi-portability.c: Check for and port strsep as needed. + + * configure.ac, common/src/freeipmi-portability.h: Check for and + deal with __FUNCTION__ portability. + + * ipmi-sensors/src/ipmi-sensors-reading.c: include + freeipmi-portability.h to deal with asprintf. + + * ipmi-raw/src/ipmi-raw.c: include freeipmi-portability.h to deal + with strsep. + + * libfreeipmi/src/driver/ipmi-inband.h: Removed file. Move macros + into ipmi-kcs-driver.c. + + * ipmipower/src/wrappers.h, ipmipower/src/wrappers.c: Remove + some unused wrapper functions. + + * ipmpower/src/wrappers.c: include freeipmi-portability.h to deal + with timersub() portability. + + * configure.ac, common/src/ipmi-ping.c, + ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.c, + ipmidetect/src/ipmidetectd/ipmidetectd_loop.c, + ipmipower/src/ipmipower_connection.c: Check and use hstrerror + appropriately. + + * ipmiconsole/src/libipmiconsole/: include sys/types.h for UINT_MAX. + + * Globally make everyone load freeipmi-portability.h. + + * General cleanup for portability, do not load unnecessary .h + files, remove unneeded .h files, etc. + + * General cleanup, make Makefile's consistent to one another, etc. + +2008-06-05 Albert Chu + + * README, doc/freeipmi.7.pre.in: Remove 'Linux' from reference to + OpenIPMI (OpenIPMI is on BSD too). + +2008-06-05 Albert Chu + + * configure.ac: Tweak gethostbyname_r logic. + +2008-06-04 Albert Chu + + * config/ac_gethostbyname_r.m4: Remove file. + + * configure.ac: Add alternate gethostbyname_r checks that work on + Solaris. Remove legacy check for program_invocation_short_name. + +2008-06-04 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-display-common.c + (ipmi_sensors_get_thresholds): Special case completion code + IPMI_COMP_CODE_REQUEST_SENSOR_DATA_OR_RECORD_NOT_PRESENT as an + "ok" error. + +2008-06-03 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.c, + libfreeipmi/src/api/ipmi-api.c: Support 5 argument gethostbyname_r. + +2008-06-03 Albert Chu + + * common/src/freeipmi-portability.h, + common/src/freeipmi-portability.c (freeipmi_gethostbyname_r): + Change compile rules. Compile only if known gethostbyname_r isn't + found. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.c, + libfreeipmi/src/api/ipmi-api.c: Call freeipmi_gethostbyname_r + appropriately. + +2008-06-03 Albert Chu + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (run_cmd_args): If receive parameters error on + ipmi_monitoring_bitmask_string() call, assume bogus bitmask + returned from remote machine. + +2008-06-03 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-reading.c: Fix compiler warning. + Fix error return bug. + +2008-06-03 Albert Chu + + * libfreeipmi/src/cmds/ipmi-sensor-cmds.c: Make "sensor_state", + "sensor_state1", "sensor_state2", and "reserved2". + + * + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c: + Adjust for change. + + * ipmi-sensors/src/ipmi-sensors-reading.c: Adjust for change. + +2008-06-03 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-reading.c: Code cleanup. + + * common/src/tool-fiid-wrappers.h (_FIID_OBJ_LEN_BYTES): Remove + macro. + +2008-06-02 Albert Chu + + * common/src/tool-common.c (ipmi_open): Code cleanup. + +2008-06-02 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-reading.c: Support optional sensor + state fields as stated in IPMI spec. Support workaround for Dell + no sensor-state returned issue. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c: + Support workaround for Dell no sensor-state returned issue. + +2008-06-02 Albert Chu + + * doc/freeipmi-bugs-and-workarounds.txt: Add info on Dell sensor issue. + + * libfreeipmi/src/cmds/ipmi-sensor-cmds.c: Fix declarations. Some + required fields are actually optional. + + * common/src/tool-fiid-wrappers.h (_FIID_OBJ_LEN_BYTES): New + macro. + + * common/src/tool-fiid-wrappers.h, + libfreeipmi/src/libcommon/ipmi-fiid-wrappers.h, + libfreeipmi/src/api/ipmi-fiid-wrappers-api.h: Check for good + return value from fiid_obj_get() calls. + + * libfreeipmi/src/fiid/fiid.c (fiid_obj_copy): Fix errnum return + corner case. + +2008-06-02 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c + (_get_sensor_reading): Change internal API so that return value -1 + = error, 0 = unreadable sensor reading, 1 = sensor reading + success. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c + (_threshold_sensor_reading, _digital_sensor_reading, + _specific_sensor_reading): Re-work with new interface call to + _get_sensor_reading. + +2008-06-02 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-reading.c + (_get_sensor_specific_event_message_list, + _get_generic_event_message_list, _get_threshold_message_list), + ipmi-sensors/src/ipmi-sensors-display-common.c + (ipmi_sensors_output_event_message_list): Change internal API so + that NULL event_message_list means "Unknown" reading. Event + message list creation responsible for storing "OK" event message + when appropriate. + + * ipmi-sensors/src/ipmi-sensors-reading.c (sensor_rading): Do not + exit on an error of + IPMI_COMP_CODE_REQUEST_SENSOR_DATA_OR_RECORD_NOT_PRESENT. + + * ipmi-sensors/src/ipmi-sensors-simple-display.c + (sensors_display_simple_full_record): Fix output formatting. + +2008-05-29 Albert Chu + + * libfreeipmi/src/api/ipmi-api.c (ipmi_ctx_open_inband): Fix + driver device corner case. + + * ipmi-sensors/, ipmimonitoring/: Fix config file groups. + +2008-05-29 Albert Chu + + * bmc-watchdog/: Minor fixes. + + * Various minor doc updates. + +2008-05-28 Albert Chu + + * bmc-watchdog/: Code cleanup. + + * common/src/tool-cmdline-common.c, + common/src/tool-config-file-common.c: driver address input cannot + be 0. + + * bmc-watchdog/src/bmc-watchdog.h, + bmc-watchdog/src/bmc-watchdog-argp.h, + bmc-watchdog/src/bmc-watchdog-argp.c: New files. + + * bmc-watchdog/: Support config file. Use argp. + + * bmc-watchdog/, common/src/tool-cmdline-common.c, + common/src/tool-config-file-common.c: Support bmc-watchdog + specific options. + + * config/ac_bmc_watchdog_logfile.m4: New file. + + * bmc-watchdog/: Use BMC_WATCHDOG_LOGFILE_DEFAULT. + +2008-05-27 Albert Chu + + * ipmi-sensors/ipmi-sensors.8.pre.in: Fix typo. + + * common/src/tool-config-file-common.h, + common/src/tool-config-file-common.c, ipmi-sensors/: Add config + file support for ipmi-sensors specific options. + + * common/src/tool-config-file-common.h, + common/src/tool-config-file-common.c, ipmimonitoring/: Add config + file support for ipmimonitoring specific options. + + * doc/freeipmi.conf.5.pre.in: Update appropriately. + +2008-05-27 Albert Chu + + * ipmi-fru/src/ipmi-fru-multirecord-area.c + (output_management_access_record): Fix output corner case. + + * doc/: Tweaks. + + * ipmi-sensors/, ipmimonitoring/: Variable name consistency cleanup. + +2008-05-27 Albert Chu + + * ipmi-fru/src/ipmi-fru-util.c + (ipmi_fru_output_type_length_field): Fix output corner case. + + * ipmi-fru/: Adjust verbose vs default output. + +2008-05-26 Albert Chu + + * ipmi-fru/src/ipmi-fru.c (_output_fru): Change output to always + output device id first. + +2008-05-24 Albert Chu + + * doc/, common/doc/: Document Sun Fire X4150 and X4450 workarounds. + +2008-05-24 Albert Chu + + * common/src/tool-config-file-common.h, + common/src/tool-config-file-common.c, ipmi-fru/: Add config file + option for --skip-checks. + + * doc/freeipmi.conf.5.pre.in: Update appropriately for additions. + +2008-05-23 Albert Chu + + * common/doc/manpage-common-workaround-heading-text.man: Tweak + description. + + * bmc-config/, pef-config/, ipmi-sensors-config/: Add config file + support. + + * doc/freeipmi.conf.5.pre.in: Update appropriately for additions. + + * common/doc/manpage-common-known-issues.man: Update with config + file info. + + * contrib/: Update instructions with config file information. + +2008-05-22 Albert Chu + + * common/src/tool-config-file-common.c: Minor tweaks. + + * common/doc/: More manpage updates. + + * ipmimonitoring/, ipmi-fru/, ipmi-sel/, ipmi-sensors/, ipmi-oem/, + ipmi-chassis/, bmc-info/, bmc-device/, ipmi-raw/: Add config file + support. + + * doc/freeipmi.conf.5.pre.in: Update appropriately for additions. + + * bmc-watchdog/: Tweak error messages to be consistent to other tools. + +2008-05-21 Albert Chu + + * common/doc/manpage-common-ignore-sdr-cache.man: Fix option + description typo. + + * common/src/tool-sdr-cache-common.c (sdr_cache_flush_cache), + ipmimonitoring/, ipmi-fru/, ipmi-sel/, ipmi-sensors/, + ipmi-sensors-config/: Fix --quiet-cache to work with flush option. + + * ipmipower/src/ipmipower_config.h, + ipmipower/src/ipmipower_config.c: Rename to ipmipower_arg.h and + ipmipower_arg.c for consistency to other tools. Rename functions + appropriately. + +2008-05-21 Albert Chu + + * doc/freeipmi.conf.5.pre.in: New file. + + * freeipmi.spec.in, configure.ac, doc/Makefile.am: Adjust for new manpage. + + * doc/freeipmi.7.pre.in: Fix typo. + + * ipmiconsole/, ipmipower/: Adjust manpages appropriately. Fix + some typos along the way. + + * Globally clarify that --disable-auto-probe is for in-band only. + +2008-05-21 Albert Chu + + * common/src/tool-config-file-common.h, + common/src/tool-config-file-common.c: Final initial tweaks. Add + ipmiconsole support. + + * ipmiconsole/: Support config file via common lib. + + * common/src/conffile.c: Update lib. + + * common/src/tool-config-file-common.h, + common/src/tool-config-file-common.c: Add SDR and + Hostrange configuration. + + * common/src/tool-cmdline-common.h, + common/src/tool-cmdline-common.c: Rename 'sdr_cache_dir' to + 'sdr_cache_directory' globally for consistency. Rename + 'hostrange_output' to just 'output' for consistency. Remove + excessive use of "wanted" suffix in variables. + + * Adjust for variable name changes appropriately in all tools. + Remove excessive use of "wanted" suffix in variables. + + * common/src/tool-cmdline-common.c (verify_hostrange_cmd_args): + Check that user did not specify both buffer and consolidate + options. + + * common/src/tool-config-file-common.h, + common/src/tool-config-file-common.c: Add ipmiipmipower support. + + * ipmiipmipower/: Support config file via common lib. + +2008-05-20 Albert Chu + + * ipmi-sensors-config/ipmi-sensors-config.8.pre.in: Add forgotten + manpage sdr options. + + * ipmi-sensors/src/ipmi-sensors-util.h, + ipmi-sensors/src/ipmi-sensors-util.c: New files. + + * ipmi-sensors/src/ipmi-sensors-argp.c + (_ipmi_sensors_args_validate): New function. Check for valid + groups input. + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (run_cmd_args): Special case error message when you input bad + record id. + + * common/src/conffile.h, common/src/conffile.c: Update lib. + + * common/src/tool-config-file-common.h, + common/src/tool-config-file-common.c, + config/ac_freeipmi_config_file.m4: New files. + + * Adjust --no-probing to --disable-auto-probe. + + * common/src/tool-cmdline-common.h, + common/src/tool-cmdline-common.c (cmdline_config_file_parse): New + function. Add new --config-file option support. + + * ipmipower/, ipmiconsole/: Use new generic config-file option. + + * General cmdline parsing cleanup throughout. + + * common/doc/manpage-common-config-file.man: New file. + + * ipmipower/, ipmiconsole/: Document --config-file option. + + * config/ac_ipmipower_config_file.m4: Remove file. + + * configure.ac: Remove ipmipower config file option. + +2008-05-20 Albert Chu + + * ipmi-sensors-config/src/ipmi-sensors-config.c + (_ipmi_sensors_config): Fix flush corner case. + + * common/src/tool-cmdline-common.c: Add driver_device path check. + Cleanup argp_usage() usage. Cleanup integer conversion code. + + * More general code cleanup. + +2008-05-20 Albert Chu + + * ipmiconsole/, ipmipower/: Remove hostname config-file option. + Require users to always input atleast the hostname. + + * common/src/, ipmi-sel/, ipmi-fru/, ipmi-sensors/, + ipmimonitoring/, ipmi-sensors-config/: Remove useless + sdr_cache_dir_wanted flag. + + * common/src/tool-cmdline-common.c (verify_sdr_cmd_args, + sdr_parse_opt): Move sdr cache dir check into verify checks. + + * common/src/tool-cmdline-common.c, + common/src/tool-cmdline-common.h: Replace common_cmd_args 'flags' + with 'debug' flag. + + * common/src/tool-cmdline-common.c: Adjust for above change. + + * Adjust all tools for use of logical debug flag. + +2008-05-19 Albert Chu + + * Make all argp docs/version/naming consistent. Make description + consistent between tool and manpages. + + * common/src: Rename config lib to config-tool lib, to + differentiate from config file lib later on. + +2008-05-19 Albert Chu + + * common/src/tool-cmdline-common.h, + common/src/tool-cmdline-common.c: Fix option ordering. Fix + --timeout legacy support. Support outofband only driver type + parsing. + + * ipmipower/src/: Use common parsing code not internal parsing + code. Use common parsing args. More code cleanup. + + * bmc-config/src/bmc-config-argp.h: Remove extraneous headers. + + * common/src/config-argp.h, common/src/config-argp.c: New files. + + * bmc-config/, pef-config/, ipmi-sensors-config/: Use common + config argp parsing and verfication. + +2008-05-18 Albert Chu + + * ipmipower/: More code cleanup. + +2008-05-17 Albert Chu + + * ipmipower/: More code cleanup. + + * README, doc/freeipmi.7.pre.in: Note Linux SSIF driver. + +2008-05-16 Albert Chu + + * ipmipower/src/: Fix --eliminate option. Use common + ipmi_disable_coredump. + +2008-05-16 Albert Chu + + * ipmipower/src/: Fix wait time length bug. Remove 0 backoff + count support. Removed various extraneous min/max checks. Fix + various signed/unsigned config issues. Remove debug logging + facilities. Re-work config file parsing to parse before cmdline + parsing. Re-work various code to support later move to generic + argp. + + * libfreeipmi/src/api/ipmi-ctx.h, + common/src/tool-cmdline-common.c, + common/src/tool-cmdline-common.h: Fix signed/unsigned config + issues. + + * ipmipower/ipmipower.8.pre.in: Fix incorrect descriptions. + + * common/doc/manpage-common-outofband-retransmission-timeout.man: + Note value cannot be larger than session timeout. + + * Re-arch most tools to verify tool specific args within + tool_config_argp_parse instead of inside main. + + * common/src/tool-cmdline-common.c, + common/src/tool-cmdline-common.h: Cleanup. Remove unused macros. + Make fixes in preparation for config file support. + +2008-05-15 Albert Chu + + * common/doc/manpage-common-outofband-timeout.man: Fix text. + + * common/doc/manpage-common-outofband-timeout.man: Split into + manpage-common-outofband-session-timeout.man and + manpage-common-outofband-retransmission-timeout.man. + + * Adjust all manpages appropriately for change. + + * ipmipower/: Use common manpages as appropriate. + + * ipmiconsole/src/ipmiconsole/: Support --session-timeout and + --retransmission-timeout options. + + * common/doc/manpage-common-cipher-suite-id.man: Split into + manpage-common-cipher-suite-id-main.man and + manpage-common-cipher-suite-id-details.man. + + * Adjust all manpages appropriately for change. + + * ipmiconsole/: Use common manpages as appropriate. + + * common/src/tool-cmdline-common.c (common_parse_opt): Check that session + timeout and retransmission timeout are not zero. + + * common/src/tool-cmdline-common.c (verify_common_cmd_args): Check + that retransmission timeout is not larger than session timeout. + + * ipmipower/: Various cmdline input changes to make ipmipower more + like other tools. + +2008-05-15 Albert Chu + + * common/src/tool-cmdline-common.c (parse_workaround_flags): Fix + parsing bug. + + * libfreeipmi/src/api/ipmi-lan-session-common.c, + libfreeipmi/src/api/ipmi-api.c, + libfreeipmi/include/freeipmi/api/ipmi-api.h, + ipmipower/src/, + common/src/tool-common.c, + common/doc/manpage-common-troubleshooting.man: Add new "connection + timeout" error message. + +2008-05-15 Albert Chu + + * ipmi-fru/src/: Remove excess newline outputs. + + * ipmipower/src/ipmipower_privilege_level.h, + ipmipower/src/ipmipower_privilege_level.c, + ipmipower/src/ipmipower_workarounds.h, + ipmipower/src/ipmipower_workarounds.c, + ipmipower/src/ipmipower_cipher_suite_id.h, + ipmipower/src/ipmipower_cipher_suite_id.c: Removed files. + + * ipmipower/src/: Remove need for internal privilege_level_t, + workaround flags, and cipher_suite_id_t type and macros. + + * ipmipower/: Continue cleanup/fixes. + +2008-05-15 Albert Chu + + * common/doc/manpage-common-workaround-text.man: Add information + on types of errors users may see if their machine has an issue + that may be worked around with a workaround. + +2008-05-15 Lisa Camesano + + * common/doc/manpage-common-workaround-text.man: Update with Sun + workaround information. + +2008-05-14 Albert Chu + + * ipmipower/: Continue cleanup/fixes. + + * tagged pre_get_channel_cipher_remove + + * ipmipower/: Remove check of cipher suite id support via get + channel cipher suites command. Error case now falls through to + open session request. + + * tagged post_get_channel_cipher_remove + + * ipmipower/src/: Remove need for internal driver_type_t and + authentication_type_t type. Adjust to use libfreeipmi + macros. + + * ipmipower/src/ipmipower_driver_type.h, + ipmipower/src/ipmipower_driver_type.c, + ipmipower/src/ipmipower_authentication_type.h, + ipmipower/src/ipmipower_authentication_type.c: Removed files. + + * ipmipower/src/: Continue general cleanup. + + * common/src/tool-cmdline-common.h: Add IPMI_DEVICE strings. + +2008-05-13 Albert Chu + + * ipmi-chassis/src/: General cleanup. Make error messages + consistent. Use consistent code to other tools. Return exit code + 1 as appropriate. Re-order commands for consistency to + specification. Output "unknown" if output type is not known. + + * common/src/tool-cmdline-common.h, + common/src/tool-cmdline-common.c (init_common_cmd_args): Remove + function to create new init_common_cmd_args_user, + init_common_cmd_args_operator, and init_common_cmd_args_admin + functions. + + * bmc-device/: Make default privilege admin. + + * ipmi-sel/: Make default privilege operator. + + * Adjust tools to use new cmdline parse common functions. + + * libfreeipmi/src/cmds/ipmi-chassis-cmds.c, + libfreeipmi/include/freeipmi/cmds/ipmi-chassis-cmds.h, + ipmi-chassis/src/: Audit and rename many macros, fiid fields, + etc. for consistency to the IPMI specification. Support legacy + options as needed. + + * ipmpower/src/: Remove pinning of memory. + + * ipmipower/: Removed cipher-suite-id auto discovery. Removed + privilege-level auto discovery. General code cleanup. + +2008-05-13 Albert Chu + + * libfreeipmi/include/freeipmi/cmds/ipmi-chassis-cmds.h: Fix boot device flags. + +2008-05-13 Albert Chu + + * ipmi-fru/src/ipmi-fru.c (_output_fru, run_cmd_args): Output FRU + device names along with IDs. + +2008-05-13 Albert Chu + + * ipmi-fru/src/ipmi-fru-util.c (_get_type_length_bytes): Fix + corner case when handling binary data on type/length output. + + * + libfreeipmi/include/freeipmi/record-format/ipmi-fru-information-record-format.h: + Fix incorrect bit mask. + +2008-05-12 Albert Chu + + * common/src/tool-cmdline-common.c, + common/src/tool-cmdline-common.h: Add --privilege to legacy + privilege options available. + + * Update intel 2.0 workaround comments and documentation globally. + + * ipmipower/: Removed ipmi-version auto discovery. Removed + authentication-type auto discovery. + + * ipmipower/: Convert --ipmi-version to --driver-type. + + * ipmipower/src/ipmipower_ipmi_version.h, + ipmipower/src/ipmipower_ipmi_version.c: Renamed to + ipmipower_driver_type.h and ipmipower_driver_type.c respectively. + Adjust code appropriately for --ipmi-version to --driver-type + change. + + * ipmipower/src/ipmipower_config.c + (ipmipower_config_check_values): Fix password length corner case + check. + + * Minor code cleanup. + +2008-05-09 Albert Chu + + * ipmiconsole/src/ipmiconsole/ipmiconsole_config.c + (_cb_hostname): Fix length check. + + * ipmiconsole/src/ipmiconsole/: Re-arch to make config and + argument parsing like other tools. + +2008-05-09 Albert Chu + + * ipmimonitoring/: Add missing option. + + * ipmipower/: Remove unused code. + + * ipmi-locate/src/ipmi-locate.c: Make error output message + consistent to others. + + * Various minor cleanup. + +2008-05-09 Albert Chu + + * libfreeipmi/src/api/ipmi-api.c (ipmi_ctx_open_outofband, + ipmi_ctx_open_outofband_2_0): Add checks for hostname length. + +2008-05-08 Albert Chu + + * ipmi-sel/, ipmi-sensors/, ipmimonitoring/: Fix invalid input + corner cases. + + * common/src/hostlist.c: Remove internal lib error messages. + +2008-05-08 Albert Chu + + * libfreeipmi/: Change IPMI_ERR_OUTOFRANGE to IPMI_ERR_ERRNUMRANGE + for consistency to other libraries. + +2008-05-06 Albert Chu + + * ipmidetect/: Fix manpage dates. + + * common/doc/manpage-common-hostranged-text-shell.man, + common/doc/manpage-common-hostranged-text-options.man: New files. + + * common/doc/manpage-common-hostranged-text-main.man: Adjust with + more generic text. + + * common/doc/Makefile.am: Update for new files. + + * Adjust manpages appropriately for new common hostranged manpage + info. + +2008-05-05 Albert Chu + + * ipmi-sel/: Support --get-time and --set-time options. + +2008-05-04 Albert Chu + + * libfreeipmi/include/freeipmi/cmds/ipmi-sel-cmds.h, + libfreeipmi/src/cmds/ipmi-sel-cmds.c, + libfreeipmi/include/freeipmi/api/ipmi-sel-cmds-api.h, + libfreeipmi/src/api/ipmi-sel-cmds-api.c: Support get and set sel + time. + +2008-05-03 Albert Chu + + * libfreeipmi/include/freeipmi/cmds/ipmi-device-global-cmds.h, + libfreeipmi/src/cmds/ipmi-device-global-cmds.c, + libfreeipmi/include/freeipmi/api/ipmi-device-global-cmds-api.h, + libfreeipmi/src/api/ipmi-device-global-cmds-api.c: Support cold + and warm reset. + + * bmc-device/: New tool. + + * configure.ac, Makefile.am, freeipmi.spec.in, doc/freeipmi.7.in, + README: Update appropriately for new tool. + +2008-05-02 Albert Chu + + * libfreeipmi/include/freeipmi/cmds/ipmi-device-global-cmds.h, + libfreeipmi/src/cmds/ipmi-device-global-cmds.c, + libfreeipmi/include/freeipmi/api/ipmi-device-global-cmds-api.h, + libfreeipmi/src/api/ipmi-device-global-cmds-api.c: Support get + device guid command. + + * bmc-info/: Add support for --guid. + + * README, doc/freeipmi.7.in, bmc-info/bmc-info.8.pre.in: Update + bmc-info tool description. + + * libfreeipmi/src/cmds/ipmi-device-global-cmds.c + (tmpl_cmd_get_device_id_rs): Rename ipmi_version field names to be + consistent to rest of freeipmi. + + * bmc-info/, pef-config/, ipmi-sel/: Only output bcd encoded + fields w/ %x if the field is > 4 bits. Otherise %d is fine. + +2008-05-01 Albert Chu + + * contrib/ganglia/Makefile.am: Fix make dist. + + * contrib/nagios/Makefile.am, contrib/nagios/README, + contrib/nagios/nagios_ipmimonitoring.pl: New files. + +2008-04-30 Albert Chu + + * ipmimonitoring/ipmimonitoring.8.pre.in: Add missing options. + +2008-04-30 Albert Chu + + * contrib/ganglia/ganglia_ipmi_sensors.pl: Additional options + added. Fix code. + + * contrib/ganglia/ganglia_ipmimonitoring.pl: New file. + + * contrib/ganglia/README: Update appropriately. + +2008-04-29 Albert Chu + + * common/doc/manpage-common-hostranged-always-prefix.man: New file. + + * common/src/pstdout.c, common/src/hostrange.h, + common/src/hostrange.c, common/src/tool-cmdline-common.h, + common/src/tool-cmdline-common.c: Support --always-prefix option. + + * bmc-info/, ipmi-chassis/, ipmi-fru/, ipmi-oem/, ipmi-raw/, + ipmi-sel/, ipmi-sensors/, ipmimonitoring/, ipmipower/: Support + --always-prefix option. + + * contrib/, contrib/Makefile.am, contrib/ganglia/, + contrib/ganglia/Makefile.am, contrib/ganglia/README + contrib/ganglia/ganglia_ipmi_sensors.pl: New files and + directories. + + * Makefile.am, configure.ac: Updated appropriately. + +2008-04-27 Albert Chu + + * configure.ac: Update from 0.6.0 to 0.7.0. + +2008-04-27 Albert Chu + + * common/doc/Makefile.am: Fix make dist. + +2008-04-27 Albert Chu + + * Tagged Release-0_6_0_base. + + * Branched Release-0_6_0_branch. + +2008-04-24 Albert Chu + + * ipmipower/: Interactive command order cleanup. + + * doc/: Various minor updates. + +2008-04-23 Albert Chu + + * common/doc/manpage-common-general-options-header.man, + common/doc/manpage-common-hostranged-options-header.man: New + files. + + * common/doc/manpage-common-sdr-options.man, + common/doc/manpage-common-config-tool-options.man: Add + option-section text. + + * For better readability, sub-divide options into sections in most + manpages. + + * ipmi-locate/src/ipmi-locate.c: Check for root after parsing args. + + * Add and fix synopsis in all manpages appropriately for consistency. + + * ipmiconsole/, ipmipower/: Order options/config code more + consistently to other tools. + +2008-04-23 Albert Chu + + * common/doc/manpage-common-homepage.man: New file. + + * Add webpage to all manpages and documentation. + + * Adjust all Makefile.am's appropriately. + + * bmc-config/bmc-config.conf.5.in: Rename to + bmc-config.conf.5.pre.in. Minor doc tweaks. + + * configure.ac: Adjust bmc-config.conf.5 manpage appropriately. + + * Globally change "User Commands" to "System Commands" as needed. + +2008-04-21 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.c: Fix + error message typo. + +2008-04-18 Tiziano Muller + + * ipmimonitoring/src/ipmimonitoring/Makefile.am: Fix compile issue + when specifying LDFLAGS="-Wl,--as-needed". + +2008-04-18 Albert Chu + + * ipmipower/src/ipmipower_ipmi_version.c + (ipmipower_ipmi_version_index): Support "driver type" input like + 'lan', 'lan_2_0'. + + * ipmiping/ipmiping.8.pre.in: Clarify ipmi version option more. + + * configure.ac: Prepare for beta release. + + * Tagged Release-0_6_0_beta2. + +2008-04-17 Albert Chu + + * libfreeipmi/src/api: Make debug dump output consistent to other + tools w/ hostname prefix on lan debug output. + + * ipmipower/, ipmiconsole/: Revert change with no-prefix when + doing lan debug output to only one host. + + * libfreeipmi/include/freeipmi/sdr-cache/ipmi-sdr-cache.h, + libfreeipmi/src/sdr-cache/ipmi-sdr-cache.c + (ipmi_sdr_cache_ctx_get_debug_prefix, + ipmi_sdr_cache_ctx_set_debug_prefix): New functions. + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache-defs.h: Add + debug_prefix into ctx. + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache.c: Init and cleanup + debug_prefix appropriately. + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache-create.c, + libfreeipmi/src/sdr-cache/ipmi-sdr-cache-read.c: Use new debug + prefix in debug outputs. + + * ipmimonitoring/, ipmi-sensors/, ipmi-sel/, ipmi-fru/, + ipmi-sensors-config/: Set debug prefix appropriately. + + * common/src/ipmi-ping.h, common/src/ipmi-ping.c: Pass destination + to create and parse functions. + + * ipmiping/, rmcpping/: Prefix debug output appropriately. + + * common/src/debug-common.h, common/src/debug-common.c: New files. + + * ipmipower/, ipmiping/, rmcpping/, bmc-watchdog/, ipmiconsole/, + libfreeipmi/: Use debug common functions to generate consistent + headers for all tools. + + * ipmipower/: Convert all err_* calls to ierr_* calls. + + * ipmiping/ipmiping.8.pre.in: Clarify ipmi version option. + + * ipmiconsole/: Various cleanup. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.c, + ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.h + (ipmiconsole_ctx_connection_cleanup): Rename to + __ipmiconsole_ctx_connection_cleanup. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.c, + ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.h + (ipmiconsole_ctx_connection_cleanup_session_submitted, + ipmiconsole_ctx_connection_cleanup_session_not_submitted): New + functions. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c: Update + appropriately for function name changes. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit, ipmiconsole_engine_submit_block): Fix + assert corner case. + +2008-04-16 Albert Chu + + * bmc-watchdog/, rmcpping/src/, ipmiping/src/, ipmipower/src/, + ipmiconsole/src/libipmiconsole/: Make debug dump output consistent + to other tools by calling ipmi_cmd_str appropriately, outputing + "request" vs "response", "ipmi 1.5" vs. "ipmi 2.0", output w/ + headers, etc. + + * libfreeipmi/src/api: Store hostname to ctx. + +2008-04-15 Albert Chu + + * General documentation manpage audit/updates. + +2008-04-14 Albert Chu + + * General documentation manpage audit/updates. + + * Minor code cleanup through. + +2008-04-11 Albert Chu + + * ipmidetect/src/ipmidetectd/hash.h, + ipmidetect/src/ipmidetectd/hash.c, + ipmidetect/src/ipmidetectd/thread.h, + ipmidetect/src/ipmidetectd/thread.c: Move to common/src and into + the miscutils library. + + * ipmidetect/src/ipmidetectd/Makefile.am, common/src/Makefile.am: + Update appropriately. + + * ipmidetect/src/ipmidetect, ipmidetect/src/ipmidetectd/, + ipmiconsole/src/ipmiconsole: Move common error.h and error.c into + common/src. + + * ipmidetect/src/ipmidetectd/Makefile.am, + ipmidetect/src/ipmidetect/Makefile.am, + ipmiconsole/src/ipmiconsole/Makefile.am, common/src/Makefile.am: + Adjust appropriately. + + * ipmipower/src/error.h, ipmipower/src/error.c: Rename to ierror.h + and ierror.c to differentiate itself from the common error.h and + error.c. Adjust all function names accordingly. + +2008-04-10 Albert Chu + + * README, doc/freeipmi.7.pre.in: Add info on libraries. + + * General documentation manpage audit/updates. + +2008-04-09 Albert Chu + + * configure.ac: Prepare for beta release. + + * Tagged Release-0_6_0_beta1. + +2008-04-08 Albert Chu + + * doc/: More minor updates. + + * Various manpage cleanup and extra documentation. + + * ipmi-oem/: Change "cmd" to "command" everywhere. + + * libfreeipmi/, ipmidetect/, ipmimonitoring, ipmipower/, + ipmiconsole/, ipmiping/, rmcpping/, doc/, configure.ac: Use + .pre.in instead of just .in for manpages for consistency. + + * common/doc/manpage-common-reporting-bugs.man, + common/doc/manpage-common-gpl-library-text.man, + common/doc/manpage-common-gpl-program-text.man: New files. + + * Update manpages appropriately for report-bugs common manpage and + gpl info. + + * Add copyrights to all manpages appropriately. + + * Remove "ORIGIN" and "AUTHORS" from most manpages. + + * common/doc/manpage-common-config-tool-general-use.man, + common/doc/manpage-common-config-tool-options.man: New files. + + * bmc-config/, pef-config/, ipmi-sensors-config/: Use new common + config-tool manpage text. + + * common/doc/manpage-common-known-issues-ping.man, + common/doc/manpage-common-ping-options.man, + common/doc/manpage-common-ping-origin.man: New files. + + * ipmiping/, rmcpping/: Use new common manpage text. + +2008-04-07 Albert Chu + + * ipmimonitoring/: Support WATTS sensor unit type. + + * bmc-config/bmc-config.8.pre.in: Fix options in example. + + * bmc-config/bmc-config.conf.5.in: Anonymous -> NULL. + + * ipmimonitoring/: Support entity presence, management subsystem, + battery, and fru state sensor interpretations. General code + cleanup. + + * ipmi-sensors/ipmi-sensors.8.pre.in: Add ipmimonitoring note. + + * ipmi-sel/ipmi-sel.8.pre.in: Add some text on SEL records. + + * README: Update as generic info, not just a GPL notice. + + * doc/freeipmi.7.in: New generic overview manpage. + + * libfreeipmi/libfreeipmi.3.in: New generic library overview + manpage. + + * doc/Makefile.am, freeipmi.spec.in, configure.ac: Update for new + manpages. + + * common/doc: Fix make dist bug. + + * Add freeipmi(7) to "SEE ALSO" on all appropriate manpages. + + * Various manpage and doc fixes. + + * Fix compiler warnings. + +2008-04-05 Albert Chu + + * ipmipower/: Finish -B support. + + * ipmipower/: Add -F support. + + * doc/freeipmi-hostranged.txt: Update appropriately. + + * ipmi-sensors-config/: Put undefined threshold support in verbose + output only. + + * ipmi-sensors-config/: Fix readable sensors corner case. + +2008-04-04 Albert Chu + + * ipmipower/: Support -B option for consistency to other tools, + although -B does nothing. Change original -B option to -G. + + * common/doc/manpage-common-hostranged-text-options.man: Move + option text into manpage-common-hostranged-text-main.man. + + * common/doc/manpage-common-hostranged-text-options.man: Rename to + manpage-common-hostranged-text-localhost.man and only mention + localhost information. + + * Update manpages appropriately. + +2008-04-04 Albert Chu + + * ipmi-sensors-config/ipmi-sensors-config.8.pre.in: Add notes + about ipmi-sensors and ipmimonitoring. + + * bmc-config/: Fix some comments. + + * common/doc/manpage-common-known-issues.man: New file. + + * common/doc/Makefile.am: Update for new file. + + * Update numerous webpages with new known-issues info. + + * configure.ac: Prepare for beta release. + + * Tagged Release-0_6_0_beta0. + +2008-04-03 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-very-verbose-display.c + (_output_very_verbose_header), + ipmi-sensors/src/ipmi-sensors-verbose-display.c + (_output_verbose_header): Output sensor owner ids as needed. + +2008-04-02 Albert Chu + + * ipmiconsole/ipmiconsole.8.pre.in: Modify escape sequence + main text to mention -e option. + + * freeipmi.spec.in: Update w/ missing files. + + * bmc-watchdog/Makefile.am: Fix install bug. + + * common/src/config-common.h, common/src/config-checkout.c, + common/src/config-commit.c: Suppoert new CONFIG_UNDEFINED flag. + + * ipmi-sensors-config/src/ipmi-sensors-config-threshold-section.c: + Unreadable thresholds are now output as being undefined. + + * ipmi-sensors/, ipmimonitoring/: Support reading of sensors with + sensor_owner_id not reserved. + + * ipmimonitoring/: Support drive slot device install + interpretation. + +2008-04-01 Albert Chu + + * ipmiconsole/: Support adjustable escape char option in + ipmiconsole. + +2008-03-28 Albert Chu + + * Fix nroff syntax in many manpages. + + * More copyright changes/fixes/updates/header additions + everywhere. + + * ipmi-oem/: Minor cleanup. + +2008-03-27 Albert Chu + + * ipmi-oem/: Add ipmi-oem command. + + * Tons of copyright changes/fixes/updates/header additions + everywhere. + +2008-03-27 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c: Fix compile bugs. + + * ipmi-raw/src/ipmi-raw-argp.c: Fix error check corner case. + +2008-03-23 Albert Chu + + * common/doc/manpage-common-workaround-text.man, + common/doc/manpage-common-workaround-text.man, + doc/freeipmi-bugs-and-workarounds.txt: Add new motherboard for + asus workarounds. + +2008-03-19 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_init_ipmi): Fix probing issue. + + * bmc-watchdog/src/bmc-watchdog.c (_cmd): Fix openipmi corner case. + +2008-03-06 Albert Chu + + * common/doc: Minor updates. + + * doc/freeipmi-bugs-and-workarounds.txt: New doc. + +2008-02-23 Albert Chu + + * ipmi-fru/: Re-work to avoid excessive IPMI transactions. + +2008-02-22 Albert Chu + + * ipmi-fru/src/ipmi-fru-util.c: Fix bad return types. + +2008-02-22 Albert Chu + + * ipmi-fru/ipmi-fru.8.pre.in: Fix typos. + + * ipmi-fru/src/ipmi-fru-util.c: Fix typo. + + * ipmi-fru/src/ipmi-fru-util.c (_sixbitascii_to_ascii): Fix + conversion corner cas. + +2008-02-21 Albert Chu + + * common/doc/manpage-common-workaround-text.man: Add forgotten Sun + Fire 4100 workaround. + + * doc/freeipmi-coding.txt: Add chunk on workarounds implemenation. + + * libfreeipmi/src/api/ipmi-lan-session-common.c + (ipmi_lan_open_session): Fix sun workaround bug. + +2008-02-19 Albert Chu + + * common/src/config-commit.c (config_commit_section): Fix bug. + +2008-02-18 Albert Chu + + * freeipmi.spec.in: Add ipmi-sensors-config. + +2008-02-18 Albert Chu + + Merge contents from sensors_config_branch. + + * common/doc/manpage-common-outofband-username-operator.man, + common/doc/manpage-common-privilege-level-operator.man: New files. + + * common/src/tool-cmdline-common.h, + common/src/tool-cmdline-common.c: Support operator privilege + defaults. + + * bmc-config/src/, pef-config/src/: Adjust architecture for common + config code. + + * libfreeipmi/include/freeipmi/cmds/ipmi-sensor-cmds.h, + libfreeipmi/src/cmds/ipmi-sensor-cmds.c + (fill_cmd_set_sensor_thresholds): New function. + + * libfreeipmi/include/freeipmi/api/ipmi-sensor-cmds-api.h, + libfreeipmi/src/api/ipmi-sensor-cmds-api.c + (ipmi_cmd_set_sensor_thresholds): New function. + + * common/src/tool-sdr-cache-common.c: Remove pstate asserts. Support + NULL pstate input to all functions. + + * common/src/config-common.h: Create macro for max section name length. + + * bmc-config/, pef-config/: use new macro for max section name + length. + + * libfreeipmi/include/freeipmi/record-format/ipmi-sdr-record-format.h, + libfreeipmi/src/record-format/ipmi-sdr-record-format.c: Add two + new templates, + tmpl_sdr_full_sensor_record_non_threshold_based_sensors and + tmpl_sdr_full_sensor_record_threshold_based_sensors. + + * libfreeipmi/src/debug/ipmi-debug-sdr.c (ipmi_dump_sdr_record): + Support more detailed templates. + + * libfreeipmi/include/fiid/fiid.h, libfreeipmi/src/fiid/fiid.c + (fiid_obj_copy): New function. + + * common/src/tool-sdr-cache-common.h, + common/src/tool-sdr-cache-common.c + (sdr_cache_get_threshold_settable): New function. + + * libfreeipmi/include/freeipmi/util/ipmi-sensor-util.h, + libfreeipmi/src/util/ipmi-sensor-util.c + (ipmi_sensor_decode_raw_value): New function. + + * common/src/config-common.h, common/src/config-commit.c: Support + new CONFIG_READABLE_ONLY flag. New CONFIG_VALIDATE_OUT_OF_RANGE + validation return value. + + * common/src/config-section.h, common/src/config-section.c + (config_section_update_keyvalue_output_double): New function. + + * common/src/config-common.h: Change validate callback to take a + void *arg. + + * common/src/config-section.h, common/src/config-section.c, + bmc-config/, pef-config/: Adjust for validate callback change. + + * common/src/config-section.c, common/src/config-validate.c: + Adjust for new CONFIG_VALIDATE_OUT_OF_RANGE value. + + * bmc-config/, pef-config/: Change -f to -n option. Support -f + legacy. + + * libfreeipmi/include/freeipmi/util/ipmi-sensor-util.h, + libfreeipmi/src/util/ipmi-sensor-util.c + (ipmi_sensor_decode_raw_value): New function. + + * ipmi-sensors-config/: New tool. + + * Makefile.am, configure.ac: Adjust for new tool. + + * Various minor code cleanup/fixes. + + * Update docs appropriately for new tool. + +2008-02-15 Albert Chu + + * libfreeipmi/src/driver/ipmi-ssif-driver.c + (_ipmi_i2c_smbus_access): Support SSIF driver timeout. + + * libfreeipmi/src/driver/: Support driver timeout error codes. + + * libfreeipmi/src/driver/ipmi-openipmi-driver.c: Remove semaphore + unused code code. + + * ipmimonitoring/src/libipmimonitoring/: Classify driver timeout + as a system error. + + * libfreeipmi/: Fix corner cases when inband drivers read 0 bytes + of data. + +2008-02-15 Albert Chu + + * bmc-info/src/bmc-info.c (display_get_device_id): Fix version + output. + +2008-02-15 Albert Chu + + * libfreeipmi/src/interface/ipmi-lan-interface.c + (ipmi_lan_recvfrom): Fix bug. + +2008-01-29 Albert Chu + + * common/src/hostlist.h, common/src/hostlist.c: Update to newest + library to fix warnings. + + * Variety of code cleanup and minor bug fixes based static code + analyzer. + +2008-01-28 Albert Chu + + * Minor bug fixes throughout. + +2008-01-25 Albert Chu + + * pef-config/pef-config.8.pre.in: Add general text. + +2008-01-24 Albert Chu + + * pef-config/src/pef-config-wrapper.h, + pef-config/src/pef-config-wrapper.c: Remove useless files. + + * pef-config/src/: Adjust files appropriately. + + * pef-config/src/pef-config.c, bmc-config/src/bmc-config.c: Make + function static. + + * common/src/tool-sdr-cache-common.c: Fix compile issue. Re-work + to work with NULL pstate. + +2008-01-24 Albert Chu + + * pef-config/pef-config.8.pre.in: Add "GENERAL USE" section. Fix + some typos. + + * bmc-config/bmc-config.8.pre.in: Fix some typos. + + * pef-config/src/pef-config-argp.c: Fix doc typo. + +2008-01-24 Albert Chu + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache-create.c + (ipmi_sdr_cache_create): Fix record count corner case. + +2008-01-23 Albert Chu + + * common/doc/manpage-common-ignore-sdr-cache.man: New file. + + * common/src/tool-cmdline-common.h, + common/src/tool-cmdline-common.c: Add --ignore-sdr-cache support. + + * ipmi-fru/, ipmi-sel/: Support --ignore-sdr-cache option. + + * Adjust argp option groups in all tools. + +2008-01-22 Albert Chu + + * ipmimonitoring/src/: Various consistency to other tools fixes. + +2008-01-22 Albert Chu + + * common/src/tool-common.c (ipmi_open): Try devices more intelligently. + + * libfreeipmi/include/freeipmi/locate/ipmi-locate.h, + libfreeipmi/src/locate/ipmi-locate.c + (ipmi_locate_discover_device_info): New function. + + * libfreeipmi/src/locate/ipmi-locate.c + (_ipmi_locate_get_device_info): Add flag to try/not-try defaults. + +2008-01-22 Albert Chu + + * libfreeipmi/src/api/ipmi-api.c (ipmi_ctx_open_inband): Remove + legacy requirement for required SSIF driver path. + +2008-01-22 Albert Chu + + * common/doc/manpage-common-inband.man: Tweak english. + +2008-01-22 Albert Chu + + * libfreeipmi/src/sdr-cache/ipmi-sdr-cache.c: Fix "parmaeters" typo. + +2008-01-22 A Balamurugan + + * common/doc/manpage-common-inband.man: updated. + + * ipmi-locate/src/ipmi-locate.c: displays device-address with hex + prefix. + +2008-01-16 Albert Chu + + * libfreeipmi/src/driver/ipmi-ssif-driver.c: Add more debugging. + Remove inlineness for debugging. + +2008-01-09 Albert Chu + + * freeipmi.spec.in: Obsolete older freeipmi-ipmimonitoring + subpackage. + +2008-01-03 Albert Chu + + * libfreeipmi/src/sdr-cache/: Use macros instead of hard coded + index numbers. + + * ipmi-locate/ipmi-locate.8.pre.in, + ipmi-chassis/ipmi-chassis.8.pre.in: Update description. + + * ipmi-sensors/src/: Change "Sensor ID String" output to just "ID + String" for consistency to IPMI spec. + + * freeipmi.spec.in: Update for sdr-cache dir. + +2008-01-02 Albert Chu + + * doc/freeipmi-faq.texi: Fix some english. + + * libfreeipmi/src/api/ipmi-lan-session-common.c: Remove left over + debug statement. + + * ipmi-locate/ipmi-locate.8: Rename to ipmi-locate.8.pre.in. Use + common/doc manpages. Remove unsupported options. + + * ipmi-locate/Makefile.am, configure.ac; Support + ipmi-locate.8.pre.in appropriately. + + * bmc-info/bmc-info.8.pre.in, ipmi-chassis/ipmi-chassis.8.pre.in, + ipmi-fru/ipmi-fru.8.pre.in, ipmi-raw/ipmi-raw.8.pre.in, + bmc-config/bmc-config.8.pre.in, pef-config/pef-config.8.pre.in, + ipmi-locate/ipmi-locate.8.pre.in, ipmi-sel/ipmi-sel.8.pre.in, + ipmi-sensors/ipmi-sensors.8.pre.in: Update/tweak names and descriptions. + +2007-12-31 Albert Chu + + * common/doc/manpage-common-workaround-heading-text.man: Fix typo. + + * ipmi-raw/ipmi-raw.8.pre.in: Fix examples text. + +2007-12-30 Albert Chu + + * ipmi-sensors/src/ipmi-sensors.c (_sensors_list_specified): + Removed function. + + * ipmi-sensors/src/ipmi-sensors.c (_output_sensor): New function. + + * ipmi-sensors/src/ipmi-sensors.c (_display_sensors): Re-work for + better efficiency. + + * libfreeipmi/include/freeipmi/ipmi-sdr-cache.h, + libfreeipmi/src/sdr-cache/ipmi-sdr-cache.c + (ipmi_sdr_cache_search_sensor_number): New function. + + * ipmi-sel/src/ipmi-sel-entry.c (_find_sdr_record): Use + ipmi_sdr_cache_search_sensor_number appropriately. + + * doc/: Various minor updates. + +2007-12-29 Albert Chu + + * libfreeipmi/src/sdr-cache/, libfreeipmi/include/sdr-cache/: + Support sdr cache ctx flags. Support SDR debug dumping. + + * common/src/tool-sdr-cache-common.c, + common/src/tool-sdr-cache-common.h: Support SDR debug dumping + appropriately. + + * ipmimonitoring/: Support SDR debug dumping appropriately. + + * libfreeipmi/include/freeipmi/spec/ipmi-cmd-spec.h: Fix spelling + of macros. Add new macros appropriately. + + * Update spelling of command names globally as necessary. + + * libfreeipmi/include/freeipmi/util/ipmi-util.h, + libfreeipmi/src/util/ipmi-util.c (ipmi_cmd_str): New function. + + * libfreeipmi/include/freeipmi/debug/ipmi-debug.h, + libfreeipmi/src/debug/ipmi-debug.c (ipmi_obj_dump): Removed + function. + + * libfreeipmi/include/freeipmi/debug/ipmi-debug.h, + libfreeipmi/src/debug/ipmi-debug.c (ipmi_obj_dump_perror): Renamed + to ipmi_obj_dump. + + * libfreeipmi/include/freeipmi/debug/ipmi-debug.h, + libfreeipmi/src/debug/ipmi-debug.c (ipmi_dump_lan_packet, + ipmi_dump_rmcp_packet, ipmi_dump_rmcpplus_packet): Add trlr + output. + + * libfreeipmi/include/freeipmi/debug/ipmi-debug.h, + libfreeipmi/src/debug/ipmi-debug.c: Make char * input parameters + const char *. + + * libfreeipmi/src/api: Support headers in packet dumps describing + the packet specifically rather than through generic headers. + + * Adjust all calls to debug functions appropriately. + + * Fix various compiler warnings. + +2007-12-29 Albert Chu + + * pef-config/src/Makefile.am: Remove linking to libsdr.la. + +2007-12-29 Albert Chu + + Merge from sdr_lib_rearch_branch, SDR library rearchitecture. + + * ipmimonitoring/src/libipmimonitoring/: Remove struct + ipmi_monitoring_communication which is no longer needed. Adjust + for direct use of ipmi_ctx_t as needed. + + * ipmimonitoring/src/libipmisdrcache/: Support ipmi error code. + + * ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache.h: Add + comments on API. + + * ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache_defs.h, + ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache_common.h, + ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache_common.c, + ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache_create.c, + ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache_delete.c, + ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache_read.c: New + files. Split off code into appropriate files. + + * libfreeipmi/src/api/ipmi-sensor-cmds-api.c, + libfreeipmi/include/freeipmi/api/ipmi-sensor-cmds-api.h + (ipmi_cmd_get_sensor_reading): New function. + + * ipmimonitoring/src/libipmimonitoring/, + ipmimonitoring/src/libipmisdrcache/: Re-work APIs to move all sdr + cache creation into libipmisdrcache and out of ipmimonitoring. + + * ipmimonitoring/src/ipmimonitoring/: Make options in + ipmimonitoring more consistent to ipmi-sensors. + + * ipmimonitoring/src/libipmisdrcache/: Move into + libfreeipmi/include/freeipmi/sdr-cache/ and + libfreeipmi/src/sdr-cache/. + + * libfreeipmi/src/libcommon/: Add sdr-cache equivalent error + wrappers. + + * libfreeipmi/src/sdr-cache/: Use wrappers appropriately. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.c + ipmimonitoring/include/freeipmi/sdr-cache/ipmi_monitoring.h: New + function. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sdr_cache.c + (_ipmi_monitoring_sdr_cache_filename): Handle user specified + filename formats. + + * common/src/tool-sdr-cache-common.h, + common/src/tool-sdr-cache-common.c, + common/src/tool-sensor-common.h, + common/src/tool-sensor-common.c, + common/src/tool-fiid-wrappers.h: New files. + + * common/src/ipmi-sdr-cache-utils.h, + common/src/ipmi-sdr-cache-utils.c, + common/src/ipmi-sdr-cache-reads.h, + common/src/ipmi-sdr-cache-reads.c, + common/src/ipmi-sdr-cache-writes.h, + common/src/ipmi-sdr-cache-writes.c, + common/src/ipmi-sdr-cache.h, + common/src/ipmi-sdr-cache.c, + common/src/ipmi-sdr-cache_defs.h, + common/src/ipmi-sensor-common.h, + common/src/ipmi-sensor-common.c: Removed files. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sdr_cache.c: + Remove /tmp debug cache location. + + * ipmimonitoring/src/ipmimonitoring/: Adjust to use new sdr cache + library and match ipmi-sensors behavior more. + + * ipmi-fru/src/: Adjust to use new sdr cache library. General + code cleanup. + + * ipmi-fru/src/ipmi-fru-fiid.h: Remove file. + + * ipmi-sel/src/: Adjust to use new sdr cache library. Fix thread + safety issues. General code cleanup. + + * ipmi-sel/src/ipmi-sel-wrappers.h, + ipmi-sel/src/ipmi-sel-wrappers.c: Renamed to ipmi-sel-entry.h and + ipmi-sel-entry.c. + + * + libfreeipmi/include/freeipmi/spec/ipmi-system-software-id-spec.h, + libfreeipmi/include/freeipmi/spec/ipmi-event-reading-type-code-spec.h: + New files. + + * libfreeipmi/src/record-format/ipmi-sdr-record-format.c: Fix + field names in some sdr records. + + * ipmi-sensors/src/: Adjust to use new sdr cache library. General + code cleanup. Minor bug fixes. Minor output adjustments. + + * ipmi-sensors/src/ipmi-sensors-reading.h, + ipmi-sensors/src/ipmi-sensors-reading.c: New files. + + * Check error return on asprintf globally. + + * ipmi-chassis/src/, bmc-info/src/: Use new tool fiid wrappers. + + * Adjust Makefile.am, configure.ac, documentation and code + respectively for fall out from above changes. + +2007-12-26 Albert Chu + + * libfreeipmi/src/spec/ipmi-sensor-types-spec.c: Fix typo. + +2007-12-25 Albert Chu + + * common/doc/manpage-common-outofband-timeout.man: Fix option name + typos. + + * Variety of code cleanup. + +2007-12-24 Albert Chu + + * ipmi-sensors/: Support --groups option. + + * ipmi-sensors/: Fix corner case output w/ --list-groups. + + * common/src/string-utils.h, common/src/string-utils.c: Rename to + ipmi-sdr-cache-utils.h and ipmi-sdr-cache-utils.c since no code + other than the sdr cache common code uses the files. + +2007-12-24 Albert Chu + + * ipmi-sel/: Fix several corner case outputs. + +2007-12-24 Albert Chu + + * ipmi-sensors/src/ipmi-sensors-argp.c, + ipmi-sensors/src/ipmi-sensors.h, ipmi-sel/src/ipmi-sel-argp.c, + ipmi-sel/src/ipmi-sel.h: Cleanup arg parsing. + +2007-12-23 Albert Chu + + * ipmi-sensors/ipmi-sensors.8.pre.in, + ipmimonitoring/ipmimonitoring.8.pre.in: Minor doc fixes/updates. + + * common/src/tool-common.c (ipmi_open): Check for "127.0.0.1" as + well as "localhost". + +2007-12-21 Albert Chu + + * common/doc/manpage-common-troubleshooting.man: Remove "Please + try ..." in a few troubleshooting sections, since it makes no + sense in some. + +2007-12-21 Albert Chu + + * common/src/hostlist.c: Update to newest library to support + suffixes on hostranges. + +2007-12-19 Albert Chu + + * ipmipower/src/ipmipower_config.c (cmdline_parse): Fix cmdline + parsing bug. + +2007-12-19 Albert Chu + + * common/doc/manpage-common-troubleshooting.man: Tweak "password + verification timeout" troubleshooting. + +2007-12-18 Albert Chu + + * freeipmi.spec.in: Use %{version} instead of @VERSION@. + +2007-12-14 Albert Chu + + * freeipmi.spec.in: Fix for libfreeipmi reorg. + +2007-12-14 Albert Chu + + Major code reorganization and code cleanup from branch + libfreeipmi_rearch_branch. + + * configure.ac: Require automake 1.9, support long filenames. + + * config/: New directory. Move .m4 files in this directory. + + * autogen.sh, configure.ac: Update for new config directory. + + * common/src/ipmi-sensor-api.c (system_software_type_desc): + Removed unused array of strings. + + * common/src/ipmi-sensor-api.c: Add debugging via debug parameter. + Use internal wrapper functions rather than library wrapper + functions. + + * ipmi-sensors/: Adjust code for sensor-api change. + + * pef-config/: Remove linking to libsensor.la. + + * configure.ac, freeipmi.spec.in, common/src/err-wrappers.h, + common/src/fiid-wrappers.h, common/src/udm-err-wrappers.h, + common/src/udm-fiid-wrappers.h: Remove --enable-syslog support. + + * common/src/err-wrappers.h, common/src/fiid-wrappers.h, + common/src/udm-err-wrappers.h, common/src/udm-fiid-wrappers.h: + Update error logging routines with more details. Add additional + error logging routines. Fix several logging bugs. Remove unused + wrappers. + + * libfreeipmi/src/ipmi-kcs-aci.c, + libfreeipmi/src/ipmi-openipmi-api.c, + libfreeipmi/src/ipmi-ssif-api.c: Use error logging routines. + + * libfreeipmi/include/freeipmi/ipmi-locate.h, + libfreeipmi/src/ipmi-locate.c, + libfreeipmi/src/ipmi-locate-acpi-spmi.c, + libfreeipmi/src/ipmi-locate-defaults.c, + libfreeipmi/src/ipmi-locate-dmidecode.c, + libfreeipmi/src/ipmi-locate-pci.c, + libfreeipmi/src/ipmi-locate-smbios.c: Re-work locate API with + error code returns. Use new error logging routines appropriately. + + * bmc-watchdog/src/, ipmi-locate/src/, libfreeipmi/src/udm/: + Re-work to use new locate API. + + * libfreeipmi/src/ipmi-semaphores.h, + libfreeipmi/src/ipmi-semaphores.c: Remove unused code. Re-work + for better erorr reporting/logging. + + * libfreeipmi/include/freeipmi/ipmi-smic-api.h, + libfreeipmi/src/ipmi-smic-api.c: Removed files. + + * libfreeipmi/: Adjust remaining code for removal of smic api. + + * configure.ac: Update libfreeipmi version. + + * ipmi-sel/src/ipmi-sel-wrapper.c: Use fiid wrappers + appropriately. + + * bmc-info/src/bmc-info.c: Fix code logic to remove mem-leaks. + + * common/src/config-util.h, common/src/config-util.c: Renamed to + config-utils.h and config-utils.c for consistency. + + * ipmi-sensors/src/ipmi-sensors-util.h, + ipmi-sensors/src/ipmi-sensors-util.c: Removed files. Move code + into other respective files. + + * ipmiping/src/ipmiping.c (_fiid_obj_get), rmcpping/src/rmcpping.c + (_fiid_obj_get): Fix error message output. + + * ipmi-chassis/src/ipmi-chassis.c: Add _FIID_OBJ_DESTROY macro. + + * libfreeipmi/include/freeipmi/ipmi-ipmb-interface.h: Renamed to + ipmi-ipmb-lun-spec.h. + + * libfreeipmi/include/freeipmi/ipmi-kcs-api.h, + libfreeipmi/include/freeipmi/ipmi-ssif-api.h, + libfreeipmi/include/ipmi-openipmi-api.h, + libfreeipmi/src/ipmi-kcs-api.c, libfreeipmi/src/ipmi-ssif-api.c, + libfreeipmi/src/ipmi-openipmi-api.c, + libfreeipmi/src/udm/ipmi-kcs-api-udm.c, + libfreeipmi/src/udm/ipmi-kcs-api-udm.h, + libfreeipmi/src/udm/ipmi-ssif-api-udm.c, + libfreeipmi/src/udm/ipmi-ssif-api-udm.h, + libfreeipmi/src/udm/ipmi-openipmi-api-udm.c, + libfreeipmi/src/udm/ipmi-openipmi-api-udm.h: Renamed to + ipmi-kcs-driver.h, ipmi-ssif-driver.h, ipmi-openipmi-driver.h, + ipmi-kcs-driver.c, ipmi-ssif-driver.c, ipmi-openipmi-driver.c, + ipmi-kcs-driver-udm.c, ipmi-kcs-driver-udm.h, + ipmi-ssif-driver-udm.c, ipmi-ssif-driver-udm.h, + ipmi-openipmi-driver-udm.c, ipmi-openipmi-driver-udm.h + respectively. + + * libfreeipmi/include/freeipmi/ipmi-lan.h: Move everything into + ipmi-lan-interface.h. Remove file. + + * libfreeipmi/src/ipmi-lan.c: Move everything into + ipmi-lan-interface.c. Remove file. + + * libfreeipmi/include/freeipmi/ipmi-rmcpplus.h: Move everything + into ipmi-rmcpplus-interface.h. Remove file. + + * libfreeipmi/src/ipmi-rmcpplus.c: Move everything into + ipmi-rmcpplus-interface.c. Remove file. + + * libfreeipmi/src/ipmi-kcs.c, + libfreeipmi/include/freeipmi/ipmi-kcs.h: Rename to + ipmi-kcs-interface.c and ipmi-kcs-interface.h respectively. + + * libfreeipmi/src/ipmi-rmcpplus-debug.c: Rename to + libfreeipmi/src/ipmi-debug-rmcpplus.c. + + * libfreeipmi/src/ipmi-debug-lan.c, + libfreeipmi/src/ipmi-debug-rmcp.c, + libfreeipmi/src/ipmi-debug-common.c, + libfreeipmi/src/ipmi-debug-common.h: New files, split off from + ipmi-debug.c. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-utils.h: New + file, split off from ipmi-cipher-suite-spec.h. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-utils.c: New + file, split off from ipmi-cipher-suite-spec.c. + + * libfreeipmi/include/freeipmi/ipmi-sel-record-types.h + (IPMI_SEL_RECORD_TYPE_IS_EVENT, + IPMI_SEL_RECORD_TYPE_IS_TIMESTAMPED_OEM, + IPMI_SEL_RECORD_TYPE_IS_NON_TIMESTAMPED_OEM): Add new macros. + + * libfreeipmi/include/freeipmi/ipmi-sel-record-types.h, + libfreeipmi/src/ipmi-sel-record-types.c + (ipmi_get_sel_record_type): Removed function. + + * ipmi-sel/src/ipmi-sel-wrapper.c (_get_sel_record_type): New + function. + + * ipm-sel/src/ipmi-sel-wrapper.c (_get_sel_system_event_record): + Use _get_sel_record_type. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h, + libfreeipmi/include/freeipmi/ipmi-sel-record-types.h, + libfreeipmi/include/freeipmi/ipmi-sdr-record-types.h, + libfreeipmi/src/ipmi-cipher-suite-spec.c, + libfreeipmi/src/ipmi-sel-record-format.c, + libfreeipmi/src/ipmi-sdr-record-format.c: Rename to + ipmi-cipher-suite-record-format.h, ipmi-sel-record-format.h, + ipmi-sdr-record-format.h, ipmi-cipher-suite-record-format.c, + ipmi-sel-record-format.c, ipmi-sdr-record-format.c respectively. + + * libfreeipmi/include/freeipmi/ipmi-error.h, + libfreeipmi/src/ipmi-error.c (ipmi_strerror_r, + ipmi_strerror_cmd_r, rmcpplus_status_strerror_r): Renamed to + ipmi_completion_code_strerror_r, + ipmi_completion_code_strerror_cmd_r, and + ipmi_rmcpplus_status_strerror_r respectively. + + * libfreeipmi/include/freeipmi/rmcp-interface.h, + libfreeipmi/include/freeipmi/rmcp-cmds.h, + libfreeipmi/src/rmcp-interface.c, libfreeipmi/src/rmcp-cmds.c: New + files, split off from rmcp.h and rmcp.c. + + * libfreeipmi/include/freeipmi/rmcp.h, libfreeipmi/src/rmcp.c: + Remove files. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h, + libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband, + ipmi_open_outofband_2_0): Remove pointless driver type argument. + + * libfreeipmi/: Rework UDM interface to take ipmi_ctx_t instead of + ipmi_device_t which didn't make any sense. + + * common/src/err-wrappers.h, common/src/fiid-wrappers.h, + common/src/udm-err-wrappers.h, common/src/udm-fiid-wrappers.h: + Renamed to ipmi-err-wrappers.h, ipmi-fiid-wrappers.h, + ipmi-err-wrappers-udm.h, and ipmi-fiid-wrappers.h respectively. + Moved into libfreeipmi/ appropriately. + + * ipmi-sensors/src/: Rename files for consistency to code + organization in other tools. + + * libfreeipmi/src/driver/, libfreeipmi/src/locate/, + libfreeipmi/src/debug/: New directories. Move respective + sub-library code into those directories. + + * libfreeipmi/include/driver/, libfreeipmi/include/locate/, + libfreeipmi/include/debug/: New directories. Move respective + sub-library headers into those directories. + + * libfreeipmi/src/ipmi-common.h, libfreeipmi/src/ipmi-common.c: + Removed files. Move some functionality into ipmi-debug-common.h + and ipmi-debug-common.c. Use some library functionality in + common/src/ in other circumstances. + + * libfreeipmi/src/udm/, libfreeipmi/include/udm/: Rename to 'api' + instead of non-meaningful 'udm'. + + * libfreeipmi/include/freeipmi/api/api.h: Removed file. Moved + includes to freeipmi.h. + + * libfreeipmi/include/freeipmi/ipmi-crypt.h: Move to + libfreeipmi/src. + + * libfreeipmi/include/freeipmi/ipmi-utils.h, + libfreeipmi/src/ipmi-utils.c (ipmi_ipv4_address_string2int, + ipmi_mac_address_string2int): Move to common/src/config-util.h and + common/src/config-util.c. Rename to + config_ipv4_address_string2int and config_mac_address_string2int + respectively. + + * libfreeipmi/: Rename 'utils' files to 'util' files. + + * common/src/common-utils.h, common/src/common-utils.c: Rename to + string-utils.h and string-utils.c respectively. + + * common/src/md2.h, common/src/md2.c, common/src/md5.c, + common/src/md5.h: Move to libfreeipmi/src and rename to + ipmi-md2.h, ipmi-md2.c, ipmi-md5.h, ipmi-md5.c respectively. + + * libfreeipmi/include/freeipmi/ipmi-error.h: Rename to + libfreeipmi/include/freeipmi/ipmi-error-util.h. + + * common/src/xmalloc.h, common/src/xmalloc.c: Remove files. Most + code uses normal malloc instead of xmalloc. + + * ipmiconsole/src/libipmiconsole/cbuf.h, + ipmiconsole/src/libipmiconsole/cbuf.c: Renamed to scbuf.h and + scbuf.c since it different than cbuf. + + * common/src: Remove separate libcbuf library. Put cbuf back into + llnlcommon library. + + * common/src/cmdline-parse-common.h, + common/src/cmdline-parse-common.c: Rename to + common/src/tool-cmdline-common.h and + common/src/tool-cmdline-common.c. Merge into toolcommon utility + library. + + * common/src/ipmi-sdr-cache.c: Remove bit-ops library need. + + * common/src/config-util.c: Remove bit-ops library need. + + * common/src/bit-ops.h, common/src/bit-ops.c: Moved into + libfreeipmi/src and renamed ipmi-bit-ops.h and ipmi-bit-ops.c. + + * common/src: Rename libllnlcommon to just libcommon. + + * libfreeipmi/src/util/: New directories. Move respective + sub-library code into those directories. + + * libfreeipmi/include/util/: New directories. Move respective + sub-library headers into those directories. + + * common/src/ipmi-sensor-api.h, common/src/ipmi-sensor-api.c: + Renamed to ipmi-sensor-common.h and ipmi-sensor-common.c. + + * libfreeipmi/src/api/ipmi-lan-session-util.h, + libfreipmi/src/api/ipmi-lan-session-util.c: Renamed to + ipmi-lan-session-common.h ipmi-lan-session-common.c. + + * common/src/: Merge libpstdout into libhostrange. + + * libfreeipmi/src/libcommon/: New directory. Move respective + sub-library headers into those directories. + + * libfreeipmi/include/interface/, libfreeipmi/src/interface/: New + directories. Move respective sub-library headers into those + directories. + + * libfreeipmi/include/freeipmi/ipmi-fru-information-storage-definition.h: + Split into ipmi-fru-information-record-format.h, + ipmi-fru-chassis-types-spec.h, and ipmi-fru-language-codes-spec.h. + + * libfreeipmi/src/ipmi-fru-information-storage-definition.c: + Split into ipmi-fru-information-record-format.c, + ipmi-fru-chassis-types-spec.c, and ipmi-fru-language-codes-spec.c. + + * libfreeipmi/include/freeipmi/record-format/, + libfreeipmi/src/record-format/: New directories. Move respective + sub-library code into those directories. + + * libfreeipmi/include/freeipmi/ipmi-sensor-and-event-code-tables.h: + Renamed to + libfreeipmi/include/freeipmi/util/ipmi-sensor-and-event-code-tables-util.h. + + * libfreeipmi/src/ipmi-sensor-and-event-code-tables.c: Renamed to + libfreeipmi/src/util/ipmi-sensor-and-event-code-tables-util.c. + + * libfreeipmi/include/freeipmi/spec/, libfreeipmi/src/spec/: New + directories. Move respective sub-library code into those + directories. + + * libfreeipmi/include/freeipmi/cmds/, libfreeipmi/src/cmds/: New + directories. Move respective sub-library code into those + directories. + + * Adjust remaining code and Makefiles for file name changes, new + files, new functions, function name changes, and removals. + + * Various minor fixes and code cleanup. + +2007-12-05 Albert Chu + + * Tagged Release-0_5_0_base. + + * Branched Release-0_5_0_branch. + +2007-12-02 Albert Chu + + * INSTALL: Overwrite ancient copy with GNU generic copy. + +2007-11-30 Albert Chu + + * configure.ac: Prepare for beta release. + + * Tagged Release-0_5_0_beta3. + +2007-11-28 Albert Chu + + * libfreeipmi/src/ipmi-ssif-api.c, libfreeipmi/src/ipmi-kcs-api.c: + Fix logic bugs. + +2007-11-27 Albert Chu + + * freeipmi.spec.in: Fix changelog typo. + + * doc/freeipmi-coding.txt: Various fixes. + +2007-11-24 Albert Chu + + * common/doc/manpage-common-outofband-hostname-hostranged.man: Fix + english. + +2007-11-24 Albert Chu + + * libfreeipmi/src/ipmi-kcs-api.c (_ipmi_kcs_cmd_write), + libfreeipmi/src/ipmi-ssif-api.c (_ipmi_ssif_cmd_write): Fix error + handling mem-leak corner case. + + * configure.ac: Prepare for beta release. + + * Tagged Release-0_5_0_beta2. + +2007-11-24 Dmitry Frolov + + * ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.c: Fix FreeBSD + port compile bug. + +2007-11-22 Albert Chu + + * common/src/ipmi-sdr-cache.c, common/src/ipmi-sdr-cache-reads.c, + common/src/ipmi-sdr-cache-writes.c: Remove unneeded includes. + +2007-11-21 Albert Chu + + * libfreeipmi/src/ipmi-openipmi-api.c: Adjust INTERNAL errors to + SYSTEM errors appropriately. + + * libfreeipmi/src/ipmi-ssif-api.c, libfreeipmi/src/ipmi-kcs-api.c: + General code cleanup/fixes. + +2007-11-20 Albert Chu + + * doc/freeipmi-coding.txt: Fix ipmi-pef typo. + +2007-11-20 Albert Chu + + * configure.ac: Prepare for beta release. + + * Tagged Release-0_5_0_beta1. + +2007-11-20 Dmitry Frolov + + * libfreeipmi/src/ipmi-kcs-api.c (ipmi_kcs_ctx_io_init): Fix + FreeBSD port bug. + +2007-11-19 Albert Chu + + AUTHORS: Add Phil Knirsch. + + NEWS: Various tweaks. + +2007-11-19 Albert Chu + + * freeipmi.spec.in: Remove ipmimonitoring subpackage. Move into + core package. + + * libfreeipmi/include/freeipmi/ipmi-ssif-api.h: Add + IPMI_SSIF_CTX_ERR_SYSTEM_ERROR error code. + + * libfreeipmi/src/ipmi-kcs-api.c, libfreeipmi/src/ipmi-ssif-api.c: + Adjust INTERNAL errors to SYSTEM errors appropriately. + + * configure.ac: Prepare for beta release. + + * NEWS: Update + + * Tagged Release-0_5_0_beta0. + +2007-11-19 Phil Knirsch + + * bmc-watchdog/freeipmi-bmc-watchdog.sysconfig: Added missing -d + command option. + + * bmc-config/src/bmc-config-argp.c (bmc_config_args_validate), + pef-config/src/pef-config-argp.c (pef_config_args_validate): Fix + incorrect use of open with O_CREATE and without mode. + + * ipmidetect/freeipmi-ipmidetectd.init: Do not start by default + after installation. Added a Short Description and made the + Description more meaningful. Use correct lock file in + /var/lock/subsys/. + + * freeipmi.spec: Use a valid Fedora license. Fix the groups for + all [sub]packages. Add necessary prereqs where necessary (due + to scripts). Limit build to ix86, x86_64, ia64 and alpha (due + to iopl missing on other archs). Disable build of static libs + (Fedora guideline). Use absolute path for ldconfig. Add + /sbin/ldconfig post and postun scripts due to libs. Move all + development libs to the -devel package ( libipmimonitoring.so). + +2007-11-02 Albert Chu + + * doc/freeipmi-faq.texi: Minor updates. + +2007-11-02 Albert Chu + + * configure.ac: Prepare for alpha release. + + * NEWS: Update + + * Tagged Release-0_5_0_alpha0. + +2007-10-18 Albert Chu + + * Fix copyright on LLNL created tools/projects. + +2007-10-17 Albert Chu + + * Fix copyright dates on LLNL created tools/projects. + + * DISCLAIMER.bmc-watchdog, DISCLAIMER.ipmipower, + DISCLAIMER.ipmiping, DISCLAIMER.rmcpping, + DISCLAIMER.ipmiconsole, DISCLAIMER.ipmimonitoring, + DISCLAIMER.pstdout, DISCLAIMER.ipmidetect, + DISCLAIMER.ipmi-fru: Update with new DISCLAIMER. + + * DISCLAIMER.bmc-watchdog.UC, DISCLAIMER.ipmipower.UC, + DISCLAIMER.ipmiping.UC, DISCLAIMER.rmcpping.UC, + DISCLAIMER.ipmiconsole.UC, DISCLAIMER.ipmimonitoring.UC, + DISCLAIMER.pstdout.UC, DISCLAIMER.ipmidetect.UC, + DISCLAIMER.ipmi-fru.UC: New files of old DISCLAIMERs. + + * Makefile.am, freeipmi.spec.in: Update with new DISCLAIMER files. + + * Fix FSF address in LLNL copyrighted files. + +2007-10-15 Dmitry Frolov + + * ipmimonitoring/src/libipmimonitoring/Makefile.am, + ipmimonitoring/src/ipmimonitoring/Makefile.am, + ipmidetect/src/libipmidetect/Makefile.am, + ipmidetect/src/ipmidetectd/Makefile.am, + ipmidetect/src/ipmidetect/Makefile.am: Fix FreeBSD port issues. + +2007-10-10 Albert Chu + + * ipmi-sensors/ipmi-sensors.8.pre.in: Added verbose and very + verbose option information. + + * ipmi-sel/ipmi-sel.8.pre.in: Add info on SEL default output. + +2007-10-09 Albert Chu + + * ipmi-sensors/, ipmi-sel/, ipmi-fru/: Fix corner case. There is + no need to open an IPMI connection when the user only wants to + flush a cache. + + * libfreeipmi/src/ipmi-sdr-record-types.c, + common/src/ipmi-sdr-cache.h: Fix oem data length bug. Max length + of OEM data in a OEM record is 56 bytes (448 bits) not 55 bytes + (440 bits). + + * common/src/ipmi-sdr-cache-reads.c (_get_oem_data_count): Fix + potential corner case. + + * common/src/ipmi-sdr-cache-reads.c (_get_oem_data, + _read_sdr_oem_record): Remove improper cast which can cause + corruption. + + * common/src/ipmi-sdr-cache.c: Don't use hard coded buffer length + values, use appropriate macros. + + * common/src/ipmi-sdr-cache.c, common/src/ipmi-sdr-cache.h: Do not + specify max length as 17 for sensor names and devices names, max + length is 16 and an extra +1 is used for the string nul character. + +2007-10-08 Albert Chu + + * common/src/ipmi-sensor-api.c (_get_threshold_message_list, + _get_generic_event_message_list, _get_event_message_list): Catch + strdup/malloc errors appropriately. + + * common/src/ipmi-sensor-api.h common/src/ipmi-sensor-api.c + (sensor_reading_cleanup): New function. + + * ipmi-sensors/src/ipmi-sensors.c (display_group_sensors, + display_sensor_list, display_sensors): Appropriately free memory + after use. + + * common/src/pstdout.c (_pstdout_print): Fix potential vsnprintf + corner case. + +2007-10-04 Albert Chu + + * common/src/ipmi-sdr-cache.c (_fread_record): Fix free corruption + bug. + + * common/src/ipmi-sdr-cache.h, common/src/ipmi-sdr-cache.c: Add + SDR_CACHE_CTX_ERR_CACHE_EMPTY error code. + + * common/src/ipmi-sdr-cache.c (sdr_cache_load): Fix possible + corner case. + + * ipmi-sensors/src/ipmi-sensors.c (display_group_sensors, + display_sensor_list, display_sensors): Remove unused code. + +2007-10-02 Albert Chu + + * ipmidetect/src/ipmidetect/ipmidetect.c (_cmdline_parse): Fix bug + in command line option parsing. + +2007-10-01 Albert Chu + + * freeipmi.spec.in: Add daemon scripts for ipmidetectd. + +2007-09-28 Albert Chu + + * bmc-config/, pef-config/, common/src/, libfreeipmi/srd/udm/: + Minor bug fixes. + +2007-09-27 Albert Chu + + * common/src/config-pef-conf-section.h, + common/src/config-pef-conf-section.c: New files. + + * bmc-config/src/bmc-config-wrapper.h, + bmc-config/src/bmc-config-wrapper.c: Remove files. + + * bmc-config/, pef-config/: Continued common code re-architecture + and subsequent code cleanup. + + * libfreeipmi/: Change user_name and password parameters to char + instead of uint8_t *. + + * ipmipower/, ipmiconsole/: Adjust for pointer signedness changes. + +2007-09-26 Albert Chu + + * common/src/config-fiid.h, common/src/config-fiid.c: New files. + + * bmc-config/, pef-config/: Continued common code re-architecture + and subsequent code cleanup. + +2007-09-25 Albert Chu + + * bmc-config/, pef-config/: Continued common code re-architecture + and subsequent code cleanup. + +2007-09-24 Albert Chu + + * doc/freeipmi-coding.txt: Update. + + * common/src/config-checkout.h, common/src/config-checkout.c, + common/src/config-commit.h, common/src/config-commit.c, + common/src/config-diff.h, common/src/config-diff.c, + common/src/config-parse.h, common/src/config-parse.c, + common/src/config-section.h, common/src/config-section.c: New + files. + + * bmc-config/, pef-config/: Continued common code re-architecture + and subsequent code cleanup. Remove files obsoleted by new common + code. + +2007-09-23 Albert Chu + + * bmc-config/, pef-config/: Continued common code re-architecture + and subsequent code cleanup. + +2007-09-22 Albert Chu + + * common/src/config-common.h, common/src/config-comment.h, + common/src/config-comment.c, common/src/config-util.h, + common/src/config-util.c, common/src/config-validate.h, + common/src/config-validate.c: New files. + + * common/src/format-text.h, common/src/format-text.c: Remove + files. + + * bmc-config/, pef-config/: Use new common code. Various code + cleanup. + + * bmc-config/: Rename numerous files for code consistency to other + projects. + +2007-09-20 Albert Chu + + * bmc-config/, pef-config/: Change -k keypair option to -e due to + added IPMI 2.0 support. Add consistency to argp architecture. + +2007-09-19 Albert Chu + + * pef-config/src/pef-config-commit.c: Fix keypair support. + +2007-09-18 Albert Chu + + * pef-config/pef-config.8.pre.in: Fix incorrect --commit short + option documentation (reported by Manu Sharma). + + * bmc-config/: Make --commit short option consistent to + pef-config. + +2007-09-17 Albert Chu + + * bmc-config/, pef-config/: Re-arch section comments again. Add + serial section comments. + + * pef-config/: Support keypairs. + + * bmc-config/, pef-config/: General code cleanup to make code more + similar to between tools for later code merging. + + * bmc-config/bmc-config.8.pre.in, pef-config/pef-config.8.pre.in: + Add note that commit keypairs will overwrite file keypairs. + +2007-09-15 Albert Chu + + * NEWS: Update. + +2007-09-11 Albert Chu + + * libfreeipmi/, common/src/, ipmiconsole/: Support new ignore SOL + port workaround. + +2007-09-11 Albert Chu + + * common/src/format-text.h, common/src/format-text.c, bmc-config/: + Re-do text formatting for section comments. + + * freeipmi.spec.in: Add texinfo buildrequires. + +2007-09-07 Albert Chu + + * ipmiconsole/ipmiconsole.8.pre.in: Fix text. + + * common/src/format-text.h, common/src/format-text.c: New files. + + * bmc-config/: Begin supporting comments in the checkout. Update + bmc-config manpage. + +2007-09-06 Albert Chu + + * bmc-config/src/bmc-config-sections.h, + pef-config/src/pef-config-sections.h: Add section_name parameter + to comment callback. + + * ipmi-sensors, ipmi-sel, ipmi-fru: Fix seg-fault possibility + corner case. + + * ipmipower/: Remove debug statement. Output debug command in + prompt menus. + + * common/src/cmdline-parse-common.h (parse_authentication_type): + Fix parsing bug. + +2007-09-05 Albert Chu + + * ipmiconsole/src/libipmiconsole/: Move behavior_flags into + engine_config. + + * bmc-config/src/bmc-config-commit.c (bmc_commit_file): Output + invalid commit error message by default, not in verbose mode. + + * bmc-config/, configure.ac, freeipmi.spec.in: Remove + bmc-autoconfig. + + * Update FSF address throughout. Make address consistent + throughout for easier search/replace later. + + * Various manpage and documentation updates. + + * bmc-config/src/bmc-user-sections.c (bmc_user_section_get): + Comment out username for user id 1, since that typically isn't + modifiable. + + * bmc-config/, pef-config/: Re-architect sections for support of + section comments. + +2007-09-04 Albert Chu + + * ipmiconsole/src/libipmiconsole/: Move workaround_flags from + protocol_config to ipmi_config. Move LOCK_MEMORY from a security + flags to an engine_flag. Rename security flags to behavior flags. + + * ipmiconsole/ipmiconsole.8.pre.in: Add encryption documentation + info on the cipher suite id. + + * bmc-config/bmc-config.8.pre.in: Re-order documentation. + +2007-09-01 Albert Chu + + * ipmiconsole/src/libipmiconsole/: Adjust callback parameters for + more generic use. + + * configure.ac: Check for threads support in gcrypt. + +2007-08-31 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit_block): Fix fd leak corner case. + +2007-08-30 Albert Chu + + * libfreeipmi/, ipmiconsole/, common/doc: Change ASUS ipmi 2.0 + workaround to be a more generic "ignore sol payload size". + + * Fix consistency issue with macro names between libraries. + + * Various manpage groff/text formatting fixes. + + * + common/doc/manpage-common-workaround-outofband-2-0-only-text.man: + Rename to manpage-common-workaround-sol-only-text.man due to + usage. + + * ipmiconsole/ipmiconsole.8.pre.in: Fix for file name change. + + * ipmiconsole/src/ipmiconsole/ipmiconsole.c (main): Tear down SOL + sessions cleanly by default. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_garbage_collector.c + (ipmiconsole_garbage_collector): Fix destructor corner case. + +2007-08-29 Albert Chu + + * ipmiconsole/src/libipmiconsole/: Begin support errnum locking + and required retrieval of error code. + +2007-08-28 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.h, + ipmiconsole/src/libipmiconsole/ipmiconsole_ctx.c: New files. + + * ipmiconsole/src/libipmiconsole: Continue re-factoring + re-organization. Support ipmiconsole_engine_config structure. + Support non-blocking callbacks. + + * General code cleanup throughout. + +2007-08-24 Albert Chu + + * Document motherboard P5MT-R Asus 'authcap' workarounds. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_process_ctxs): Fix new console port corner case. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.h: For + consistency with remaining code, rename "context" to "ctx" as + needed. + + * ipmiconsole/src/libipmiconsole/, + ipmimonitoring/src/libipmimonitoring/: Adjust remaining text + appropriately for name change. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h: Change + IPMICONSOLE_CTX_STATUS_ERROR to IPMICONSOLE_CTX_STATUS_SOL_ERROR + and create new IPMICONSOLE_CTX_STATUS_ERROR to indicate status + retrieval error. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h: Change context + status from defines to an enumeration. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_ctx_status): Adjust API to return a context + enumeration instead of an integer. + + * ipmiconsole/src/libipmiconsole/: Adjust remaining code + appropriately for above changes. + + * libfreeipmi/: Support timeout mechanisms for KCS and OpenIPMI + drivers so tools don't hang. + + * common/src/udm-err-wrappers.h: Add udm errors for kcs and + openipmi system errors. + + * ipmiconsole/src/libipmiconsole/: Re-factor code for better data + management. + +2007-08-23 Albert Chu + + * ipmiconsole/src/ipmiconsole/ipmiconsole_config.c: Add back 'c' + option for backwards compatability. + + * ipmiconsole/src/ipmiconsole/ipmiconsole.c (main): Fix debug + output typo. + + * ipmiconsole/src/libipmiconsole/: General code cleanup. + + * Globally change "usercap" workaround to "authcap" to work around + all authentication capabilities checks. + + * Fix RHEL5 compiler warnings. + +2007-08-22 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_garbage_collector.h, + ipmiconsole/src/libipmiconsole/ipmiconsole_garbage_collector.c: + New files. + + * ipmiconsole/src/libipmiconsole/: Begin changing semantics of + ipmiconsole_ctx_destroy() and handling of file descriptors. Now + ipmiconsole_ctx_destroy() will kill user managed file descriptors. + Support garbage collector thread and move context destruction from + API land to engine land. Minor bug fixes and code cleanup. + + * tag post_ipmiconsole_ctx_destroy_semantic_change + + * ipmiconsole/src/libipmiconsole/ipmiconsole_util.h, + ipmiconsole/src/libipmiconsole/ipmiconsole_util.c: + New files. + + * ipmiconsole/src/libipmiconsole/: General code cleanup using new + ipmiconsole_set_closeonexec util function. + +2007-08-21 Albert Chu + + * libfreeipmi/include/freeipmi/fiid.h: Add more comments. + + * ipmiconsole/src/libipmiconsole/: Add comments. Fix various + issues including file descriptor POLLNVAL corner case and + potential SIGPIPE corner case. General code cleanup. + + * tag pre_ipmiconsole_ctx_destroy_semantic_change + +2007-08-20 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit, ipmiconsole_ctx_create): Rename + IPMICONSOLE_CONTEXT_STATUS_NONE to + IPMICONSOLE_CONTEXT_STATUS_NOT_SUBMITTED. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit): Split back into + ipmiconsole_engine_submit and ipmiconsole_engine_submit_block. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit, ipmiconsole_engine_submit_block): + Collapse IPMICONSOLE_ERR_CTX_ALREADY_SUBMITTED into + IPMICONSOLE_ERR_CTX_IS_SUBMITTED. + + * ipmiconsole/: Change + IPMICONSOLE_ERR_INTERNAL_BMC_SETTINGS_INVALID to + IPMICONSOLE_ERR_BMC_IMPLEMENTATION. Adjust some error code return + values accordingly. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c: Re-order error + codes. + + * ipmiconsole/src/libipmiconsole/: Support new engine flag + IPMICONSOLE_ENGINE_OUTPUT_ON_SOL_ESTABLISHED. + +2007-08-17 Albert Chu + + * ipmiconsole/: Fix documentation/comments. Continued library + fixes. Support IPMICONSOLE_ENGINE_CLOSE_FD flag. Support new + IPMICONSOLE_ERR_TOO_MANY_OPEN_FILES error code. Set close-on-exec + on all file descriptors. Fix race conditions and logic bugs. + +2007-08-16 Albert Chu + + * common/doc/manpage-common-troubleshooting.man: Clean up text. + + * ipmimonitoring/ipmimonitoring.8.pre.in: Add ipmimonitoring + specific troubleshooting. + + * ipmiconsole/src/libipmiconsole/: Significant code cleanup, race + condition fixes, scalability fixes, logic fixes, bug fixes. + +2007-08-15 Albert Chu + + * ipmiconsole/src/libipmiconsole/: Re-do enginecomm code to be + specific to submission blocking. Re-work logic to close file + descriptors after blocking is completed to save two file + descriptors per context. + + * Various manpage updates. + + * common/doc/manpage-common-troubleshooting.man: New file. + + * Update various manpages with troubleshooting information. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit): Add back blocking flag parameter. + + * ipmiconsole/: Adjust remaining code appropriately. + +2007-08-14 Albert Chu + + * bmc-config/: Support no checkout for sections. Do not checkout + section pef_conf by default. + + * pef-config/: Support same architecture as bmc-config for + consistency. + +2007-08-14 Albert Chu + + * bmc-config/src/bmc-config-sections.c + (bmc_config_section_set_value): Add error messages. + + * bmc-config/src/: Re-add pef commit/diff support for legacy + config files. Do not checkout pef config by default. + +2007-08-14 Anand Babu + + * bmc-autoconfig.8.in: updated and moved from bmc-autoconfig.8. + +2007-08-13 Albert Chu + + * common/doc/: Fix potential pre-processor bugs. + + * ipmiconsole/, libfreeipmi/, ipmimonitoring, common/: Add ASUS + IPMI 2.0 workarounds. + + * ipmiconsole/ipmiconsole.8.in: Add some troubleshooting notes. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.h: Fix + comments. + + * common/src/tool-common.c (parse_kg): Support odd-lengthed hex + codes. + +2007-08-11 Albert Chu + + * configure.ac: Up lib versions appropriately. + +2007-08-10 Albert Chu + + * libfreeipmi/src/udm: Re-do UDM workarounds to be generic, not + specific to lan, lan 2.0, or inband. + + * common/: Adjust for workaround flags change. + + * libfreeipmi/, ipmipower/, ipmiconsole/, ipmimonitoring/, + common/: Support ASUS P5m2 workaround. + +2007-08-10 Albert Chu + + * common/src/tool-common.h, common/src/tool-common.c + (check_kg_len): New function. + + * common/src/cmdline-parse-common.c, ipmipower/, ipmiconsole/, + ipmimonitoring/: Use check_kg_len function appropriately for k_g + len checks. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c: Remove + SOL_NOT_RESPONDING error code and error message. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c, + ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c: Rename + IPMICONSOLE_ERR_EXCESS_RETRANSMISSIONS to + IPMICONSOLE_ERR_EXCESS_RETRANSMISSIONS_SENT. Add new error code + IPMICONSOLE_ERR_EXCESS_ERRORS_RECEIVED. + + * ipmiconsole/src/ipmiconsole.c (main): Support more error codes + under clean output conditions. + +2007-08-09 Albert Chu + + * ipmiconsole/src/ipmiconsole.h: Add additional comments. + + * common/src/tool-common.c (parse_kg): Check for proper inputted + hex digits. Alter function to return k_g key length. + + * ipmipower/, bmc-config/, ipmiconsole/, common/src: Adjust tools + for use of new parse_kg function and do not assume k_g key of + length 20. + + * ipmipower/src/ipmipower_config.c (_cb_k_g): Fix configuration + logic error. + + * ipmipower/src/ipmipower_prompt.c (_cmd_config): Fix config + output display error. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit): Move blocking support from parameter + to flag in protocol_config of the context. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_teardown), + ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (ipmiconsole_engine_cleanup): Add option to not cleanup SOL + sessions on engine teardown. + + * ipmiconsole/src/ipmiconsole/ipmiconsole.c: Adjust for API + change. + + * ipmiconsole/src/libipmiconsole/: Rename BMC_SETTINGS_INVALID to + INTERNAL_BMC_SETTINGS_INVALID. + + * doc/freeipmi-libraries.txt: Update. + +2007-08-08 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (ipmiconsole_engine_cleanup): Skip majority of code if engine was + never initialized. + + * ipmiconsole/src/ipmiconsole/ipmiconsole.c (main): Cleanup use of + ipmiconsole_ctx_destroy() so use is easier to understand. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c, + ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c: Create + new IPMICONSOLE_ERR_BMC_SETTINGS_INVALID error code. Replace + several of the IPMICONSOLE_ERR_BMC_ERROR errnums with this new + code. + +2007-08-07 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit, ipmiconsole_engine_submit_block): + Collapse both functions into one function, with a flag for + blocking or non-blocking. + + * ipmiconsole/src/ipmiconsole/ipmiconsole.c (main): Adjust for API + change appropriately. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h + (ipmiconsole_ctx_fd, ipmiconsole_engine_teardown): Fix comments. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c, + ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c: Creat new + IPMICONSOLE_ERR_EXCESSIVE_RETRANSMISSIONS error code. Replace + several of the IPMICONSOLE_ERR_BMC_ERROR errnums with this new + code. + +2007-08-07 Albert Chu + + * bmc-config/src/bmc-config-value.h, + bmc-config/src/bmc-config-validate.c + (number_range_one_byte_non_zero): New function. + + * bmc-config/src/bmc-sol-conf-section.c + (bmc_sol_conf_section_get): Adjust character_accumulate_interval + field to only support non-zero input. Zero is a reserved number. + +2007-08-06 Albert Chu + + * libfreeipmi/src/udm/ipmi-udm.c (__guaranteed_memset), + common/src/secure.c (secure_memset), + common/src/cmdline-parse-common.c (__secure_memset): Fix + secure/guaranteed memset corner case. + +2007-08-06 Albert Chu + + * ac_ipmi_monitoring_sdr_cache_dir.m4, + ac_ipmi_monitoring_sensor_config_file.m4, + ac_ipmidetect_config_file.m4, ac_ipmidetectd_config_file.m4, + ac_ipmipower_config_file.m4: Replace hard-coded /etc and /var with + ${sysconfdir} and ${localstatedir} respecively. Remove option to + specify config files. Location of config files is now controlled + through setting of --localstatedir and --sysconfidr. + + * ipmimonitoring/Makefile.am: Install w/ correct ./configure + location. + + * freeipmi.spec.in: Use %{_localstatedir} instead of /var. + + * bmc-watchdog/Makefile.am: Fix distcheck. + +2007-08-06 Albert Chu + + * ipmimonitoring/src/ipmimonitoring.c (cmdline_parse): Fix + parsingcorner case. + +2007-08-06 Albert Chu + + * ipmidetect/ipmidetect.conf.5.in, ipmidetect/ipmidetectd.8.in, + ipmidetect/ipmidetectd.conf.5.in, ac_ipmidetect_config_file.m4, + ipmidetect/src/ipmidetect/ipmidetect.c: Fix inconsistency w/ + "CONF_FILE" vs. "CONFIG_FILE_DEFAULT" leading to invalid manpages. + +2007-08-02 Albert Chu + + * tagged post-udm-2-0-merge + +2007-08-02 Albert Chu + + Merge from udm_ipmi_2_0_branch. + + Re-org UDM and add IPMI 2.0 device support to UDM. + + * common/src/udm-err-wrappers.h + (__UDM_BAD_COMPLETION_CODE_TO_UDM_ERRNUM): Rename to + UDM_BAD_COMPLETION_CODE_TO_UDM_ERRNUM. + + * common/src/udm-fiid-wrappers.h (UDM_FIID_OBJ_SET, + UDM_FIID_OBJ_SET_CLEANUP, UDM_FIID_OBJ_GET_DATA_LEN, + UDM_FIID_OBJ_GET_DATA_LEN_CLEANUP): New macros. + + * libfreeipmi/include/freeipmi/udm/freeipmi/udm/ipmi-kcs-api-udm.h, + freeipmi/udm/ipmi-lan-interface-udm.h, + freeipmi/udm/ipmi-openipmi-api-udm.h, + freeipmi/udm/ipmi-ssif-api-udm.h: Moved files to + libfreeipmi/src/udm. No longer distribute as part of libfreeipmi. + + * libfreeipmi/include/Makefile.am, + libfreeipmi/src/udm/Makefile.am, libfreeipmi/include/udm/udm.h: + Update with .h file move changes. + + * libfreeipmi/include/freeipmi/udm/ipmi-messaging-support-cmds-udm.h, + libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c + (ipmi_cmd_get_channel_authentication_capabilities_v20): New + function. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h: Add new IPMI 2.0 + UDM error codes. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h, + libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband_2_0): New + function. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c: Split off lan + session code to new files. + + * libfreeipmi/src/udm/ipmi-lan-session-util.h, + libfreeipmi/src/udm/ipmi-lan-session-util.c: New files. Support + both IPMI 1.5 and IPMI 2.0 session code. Add session id and + sequence number checking which was previously ignored. + + * libfreeipmi/src/udm/ipmi-udm-device.h: Update w/ IPMI 2.0 needs + in device structure. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_udm_errmsg, + _ipmi_outofband_free, ipmi_cmd, ipmi_cmd_raw): Add IPMI 2.0 + support. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c (ipmi_lan_2_0_cmd, + ipmi_lan_2_0_cmd_raw): New functions. + + * libfreeipmi/src/udm/ipmi-udm.c (__guaranteed_memset): New function. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_device_destroy): Do + guaranteed memset on destroy. + + * common/doc/argp-common-driver.man: New file. + + * common/doc/argp-common-inband.man: Split out driver option. + + * common/doc/argp-common-outofband.man, + common/doc/argp-common-outofband-hostranged.man: Add K_g options. + + * common/doc/Makefile.am: Update appropriately for new files. + + * common/src/argp-common.c, common/src/argp-common.h: Update for + IPMI 2.0 options. + + * common/src/tool-common.c (ipmi_device_open): Add IPMI 2.0 support. + + * bmc-config/, bmc-info/, ipmi-chassis/, ipmi-fru/, ipmi-sel/, + ipmi-sensors/, pef-config/: Update manpages and command line + option code. + + * ipmimonitoring/src/libipmimonitoring: Re-architect to use UDM + and support IPMI 2.0. + + * ipmimonitoring/src/ipmimonitoring.c: Re-work as needed. + + Add Workaround Support + + * libfreeipmi/: Support workarounds for various vendor compliance issues. + + * common/src/udm-fiid-wrappers.h: Add new wrappers as needed. + + * common/doc/argp-common-workaround-flags.man, + argp-common-workaround-heading-text.man, + argp-common-workaround-inband-text.man, + argp-common-workaround-outofband-text.man, + argp-common-workaround-outofband-2-0-text.man: New files. + + * common/src/argp-common.h, common/src/argp-common.c: Support + workaround flags. + + * common/src/argp-common.h, common/src/argp-common.c + (parse_outofband_workaround_flags, + parse_outofband_2_0_workaround_flags, + parse_inband_workaround_flags): New functions. + + * bmc-config/, bmc-info/, ipmi-chassis/, ipmi-fru/, ipmi-sel/, + ipmi-sensors/, pef-config/: Update manpages and command line + option code. + + * ipmipower/, ipmiconsole/: Use common workaround parses in + argp-common. + + * ipmimonitoring/: Add workaround support. + + * doc/Makefile.am: Updated appropriately. + + Unify code. + + * Adjust command line options between tools/programs to match more + consistently. + + * Adjust error code macros and error messages between libraries to + match more consistently. + + Argp + + * Use argp instead of getopt in ipmipower, ipmiconsole, and + ipmimonitoring for consistency. + + Usage/help/documentation + + * Globally cleaned up usage output, help output, manpages, etc. + Attempt to use more "common" manpages out of common/doc. Make + descriptions more consistent across tools. + + Misc: + + * Support most debugging options by default, not in a debug-only + build. + + * Globally remove IPMI_MAX_AUTHENTICATION_CODE_LENGTH. Use + IPMI_1_5_MAX_PASSWORD_LENGTH and IPMI_2_0_MAX_PASSWORD_LENGTH as + needed. + + * common/src/argp-common.h, common/src/argp-common.c: General + cleanup to allow for more common code use. + + * bmc-watchdog/: Support OpenIPMI driver. + + * Globally try to make error messages in all libs and tools more + useful. + + * common/src/argp-common.h, common/src/argp-common.c, common/doc/: + Rename "argp" common to "cmdline-parse" common, since it is more + generic that just argp. Adjust in rest of FreeIPMI appropriately. + + * General code cleanup throughout. + +2007-08-02 Albert Chu + + * tagged pre-udm-2-0-merge + +2007-08-02 Troy Telford + + * freeipmi.spec.in: Fixed SLES packaging issue. + +2007-07-31 Albert Chu + + * freeipmi.spec.in: Put version into source path. + +2007-07-27 Albert Chu + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c (main, + _cmdline_parse): Fix potential free() bug. + + * common/src/hostrange.c (pstdout_setup): Add assert. + +2007-07-26 Albert Chu + + * common/src/ipmi-sdr-cache.c (sdr_cache_load): Fix corner case bug. + + * freeipmi.spec.in: Fix buildroot typo. + +2007-07-18 Albert Chu + + * ipmi-chassis/ipmi-chassis.8.pre.in: Fix default priv level typo. + + * ipmi-sensors/ipmi-sensors.8.pre.in: Fix formatting typo. + + * ipmi-sel/ipmi-sel.8.pre.in: Fix examples. + + * ipmimonitoring/ipmimonitoring.8.in: Fix option instructions. + + * bmc-config/bmc-config.8.pre.in: Fix examples. + +2007-07-17 Albert Chu + + * Various manpage typo fixes. + +2007-07-13 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c: Remove duplicate + error code definition. + +2007-07-12 Albert Chu + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c (main): Fix + free bug. + +2007-07-11 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_checks.c + (ipmiconsole_check_outbound_sequence_number): Remove left over + debugging. + + * ipmipower/ipmipower.conf.5.in: Update w/ forgotten options. + + * ipmiconsole/ipmiconsole.conf.5.in: Update w/ forgotten options. + +2007-07-09 Dmitry Frolov + + * acx_pthread.m4, common/src/freeipmi-portability.h, + ipmidetect/Makefile.am, + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_ipmi_communication.c: + FreeBSD port fixes. + + * ac_ipmi_monitoring_sdr_cache_dir.m4: Fix typo. + +2007-07-06 Albert Chu + + * ipmi-chassis/ipmi-chassis.8.pre.in, + ipmi-chassis/src/ipmi-chassis-argp.c: Change -I option to -i. + +2007-07-03 Albert Chu + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c (ipmi_lan_cmd, + ipmi_lan_cmd_raw): Fix return code bug. + + * libfreeipmi/src/udm/ipmi-udm.c, + libfreeipmi/include/freeipmi/udm/ipmi-udm.h, + common/src/udm-err-wrappers.h + (__UDM_BAD_COMPLETION_CODE_TO_UDM_ERRNUM): Remove + IPMI_ERR_BAD_COMPLETION_CODE_NODE_BUSY completion code. Replace + with more generic IPMI_ERR_BMC_BUSY error code. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h + (IPMI_CIPHER_SUITE_ID_SUPPORTED): Fix warning. + +2007-07-02 Albert Chu + + * doc/freeipmi-faq.texi, doc/freeipmi-hostrange.txt: Update w/ + some forgotten 0.4.0 stuff. + +2007-07-02 Albert Chu + + * Tagged Release-0_4_0_base. + + * Branched Release-0_4_0_branch. + +2007-07-02 Albert Chu + + * configure.ac: Update version for release. + +2007-06-29 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (ipmiconsole_engine_setup): Fix bad debug output corner case. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (_teardown_initiate): New function. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (_poll_setup, _ipmiconsole_engine): Re-arch teardown to be quicker + by initializing close_session prior to the processing of contexts. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c: Support + console_engine_ctxs_notifier pipes. Allows for the engine poll() + call to be "interrupted" so engine can react more quickly to + calls from user space. + +2007-06-28 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h: Add/fix comments + for clarification. + + * ipmiconsole/src/libipmiconsole: Add flag to close the user_fd + within the library if it has never been retrieved by the user. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit, ipmiconsole_engine_submit_block, + ipmiconsole_ctx_destroy): Fix locking corner cases and bugs. + +2007-06-27 Albert Chu + + * ipmi-fru/: New project. + + * COPYING.ipmi-fru, DISCLAIMER.ipmi-fru: New files. + + * libfreeipmi/include/freeipmi/udm/ipmi-fru-inventory-device-cmds-udm.h + libfreeipmi/include/freeipmi/ipmi-fru-inventory-device-cmds.h + libfreeipmi/include/freeipmi/ipmi-fru-information-storage-definition.h + libfreeipmi/src/udm/ipmi-fru-inventory-device-cmds-udm.c + libfreeipmi/src/ipmi-fru-inventory-device-cmds.c + libfreeipmi/src/ipmi-fru-information-storage-definition.c: New files. + + * configure.ac, Makefile.am, freeipmi.spec.in: Update + appropriately for new projct and new files. + + * libfreeipmi/src/ipmi-error.c (ipmi_strerror_r), + libfreeipmi/include/freeipmi/ipmi-comp-code-spec.h: Add FRU + completion codes/strings. + +2007-06-27 Albert Chu + + * libfreeipmi/src/ipmi-lan.c, + libfreeipmi/include/freeipmi/ipmi-lan.h (fill_lan_session_hdr): + Rename inbound_sequence_number to session_sequence_number for + consistency. + + * ipmidetect/ipmidetectd.8.in: Fix typos from manpage cut and + paste. + + * ipmidetect/: Fix cut and paste typo in GPL release headers. + +2007-06-26 Albert Chu + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (ipmi_lan_open_session): Call get authentication capabilities with + configured privilege, not user. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c (ipmi_lan_cmd_raw): + Add forgotten permsgauth support. Move sequence number increments + to cleanup section. + +2007-06-25 Albert Chu + + * common/src/ipmi-sdr-cache-reads.c (GET_UINT_VALUE_BY_KEY, + _get_uint_value_by_key): New macros/functions. + + * common/src/ipmi-sdr-cache-reads.c + (sdr_cache_read_repository_info_timestamp): Read 32 bit fields w/ + uint not int. + +2007-06-20 Albert Chu + + * libfreeipmi/src/udm/: Remove unused obj_lan_msg_trlr from + ipmi_device struct. Re-organize code to follow struct a bit + better. + + * libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c, + libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds-udm.h + (ipmi_cmd_close_session): New function. + + * libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c, + libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds-udm.h + (ipmi_cmd_get_channel_authentication_capabilities, + ipmi_cmd_get_session_challenge, ipmi_cmd_activate_session, + ipmi_cmd_set_session_privilege_level): Re-work APIs to be + consistent with rest of UDM library. + + * libfreeipmi/include/freeipmi/udm/ipmi-messaging-support-cmds-udm.h, + libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c + (ipmi_lan_open_session, ipmi_lan_close_session): Move to + libfreeipmi/src/udm/ipmi-lan-interface-udm.c. Re-work to use + modified new API in ipmi-messaging-support-cmds-udm.[ch]. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h (ipmi_open_inband, + ipmi_open_outofband): Add missing parameter name. + + * Fix minor code comment typos. + +2007-06-19 Albert Chu + + * freeipmi.spec.in: Follow on fixes from Phil Knirsch's. + + * various doc updates. + + * doc/freeipmi-libraries.txt: New file. + + * freeipmi.spec.in, doc/Makefile.am: Updated for new file. + +2007-06-13 Albert Chu + + Merge in Fedora build requirements from Phil Knirsch + + + * bmc-watchdog/freeipmi-bmc-watchdog.sysconfig: New file. + + * bmc-watchdog/freeipmi-bmc-watchdog.init, bmc-watchdog/: Adjust + for new sysconfig file. + + * freeipmi.spec.in: Merge in Fedora build requirements. + +2007-06-13 Albert Chu + + * freeipmi.spec.in: Remove readline-devel and guile-devel build + requirements. + + * common/src/udm-err-wrappers.h (__OPENIPMI_SYSLOG): Fix typo. + + * common/src/freeipmi-portability.h: Add back portability macro. + +2007-06-12 Albert Chu + + * libfreeipmi/src/udm/ipmi-udm.c: Adjust UDM error messages. + +2007-06-09 Albert Chu + + * pef-config/src/pef-config-map.h (sensor_type_string, + sensor_type_number): Add forgotten function prototypes. + + * ipmipower/src/ipmipower_packet.c (ipmipower_packet_errmsg): + Remove error message possibility, should not be possible. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h: Add new error codes. + + * cmmon/src/udm-err-wrappers.h, libfreeipmi/src/udm/: Support new + error codes. + +2007-06-08 Tom Zimmerman + + * pef-config/: Add sensor names for input/output for sensor_type + config. + + * libfreeipmi/include/freeipmi/ipmi-pef-and-alerting-cmds.h: Add + event sensor type definitions. + + * pef-config/pef-config.8.pre.in: Updated appropriately. + +2007-06-06 Albert Chu + + * libfreeipmi/include/freeipmi/fiid.h, libfreeipmi/src/fiid.c + (fiid_iterator_destroy): Make void return function. + + * libfreeipmi/include/freeipmi/fiid.h, libfreeipmi/src/fiid.c: + General code cleanup and commenting. + +2007-06-05 Albert Chu + + * libfreeipmi/include/freeipmi/fiid.h, libfreeipmi/src/fiid.c + (fiid_template_make, __fiid_template_make): Removed functions. + + * libfreeipmi/src/fiid.c (fiid_template_field_lookup): Fix + parameter check bugs. + + * libfreeipmi/include/freeipmi/fiid.h, libfreeipmi/src/fiid.c + (fiid_obj_destroy): Make void return function. + + * common/src/fiid-wrappers.h (FIID_OBJ_DESTROY, + UDM_FIID_OBJ_DESTROY): Adjust appropriately for change. + + * common/src/fiid-wrappers.h (FIID_OBJ_DESTROY_NO_RETURN, + UDM_FIID_OBJ_DESTROY_NO_RETURN): Remove functions, they are no + longer necessary. + + * libfreeipmi/, pef-config/, ipmi-chassis/, ipmiconsole/, + ipmimonitoring/, ipmiping/, rmcpping/: Adjust for macro and + function changes. + + * libfreeipmi/include/freeipmi/fiid.h, libfreeipmi/src/fiid.c: + General code cleanup and commenting. + +2007-06-05 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-chassis-boot-options-param-spec.h: + Renamed to + libfreeipmi/include/freeipmi/ipmi-chassis-boot-options-parameter-spec.h. + Adjusted with 2007-06-02 param -> parameter changes. + + * libfreeipmi/include/Makefile.am: Update appropriately for change. + + * libfreeipmi/include/freeipmi/freeipmi.h: Add + ipmi-chassis-boot-options-parameter-spec.h. + + * libfreeipmi/src/ipmi-chassis-cmds.c, + libfreeipmi/src/ipmi-chassis-cmds-udm.c: Change param -> parameter + globally. + + * libfreeipmi/src/ipmi-chassis-cmds-udm.c: Remove use of + ERR_EINVAL. Fix tabbing. + + * libfreeipmi/include/freeipmi/udm/ipmi-chassis-cmds-udm.h, + libfreeipmi/include/freeipmi/udm/ipmi-chassis-cmds-udm.h + (ipmi_cmd_chassis_identify): Fix API. Use + fill_cmd_chassis_identify correctly. + + * libfreeipmi/src/ipmi-chassis-cmds.c (fill_cmd_chassis_identify): + Fix parameter check. + + * libfreeipmi/src/udm/ipmi-chassis-cmds-udm.c + (ipmi_cmd_set_system_boot_options_boot_info_acknowledge, + ipmi_cmd_set_system_boot_options_boot_flags): Add parameter + checks. + + * libfreeipmi/src/ipmi-chassis-cmds.c + (fill_cmd_set_system_boot_options_boot_flags): Fix parentheses + usage. Fix parameter setting order. + + * libfreeipmi/src/ipmi-chassis-cmds.c, + libfreeipmi/src/udm/ipmi-chassis-cmds-udm.c: Fix includes. + + * ipmi-chassis/src/ipmi-chassis.h: Fix brace consistency. + + * ipmi-chassis/src/ipmi-chassis-argp.c: Fix help output. Fix + --get-boot-flags option bug. Use common arg macros. Add --debug + option. Add hostrange options. Fix some tabbing/spacing of code. + Consistently use "if (" instead of "if(". Fix compiler warnings. + + * ipmi-chassis/src/ipmi-chassis.c: Replace use of + UDM_FIID_OBJ_DESTROY_NO_RETURN with FIID_OBJ_DESTROY_NO_RETURN. + Consistently use "if (" instead of "if(". + + * ipmi-chassis/src/ipmi-chassis.c (_FIID_OBJ_GET_BLOCK): Removed macro. + + * ipmi-chassis/src/ipmi-chassis.c + (_FIID_OBJ_GET_WITH_RETURN_VALUE, _FIID_OBJ_GET): Use 'obj' intead + of 'bytes'. Use correct strerror function. Remove unnecessary + set rv = -1. + + * ipmi-chassis/src/ipmi-chassis.c (set_boot_flags): Cleanup + variable declarations. + + * ipmi-chassis/src/ipmi-chassis.c (get_chassis_status, + get_boot_flags): Fix spacing of output. + + * ipmi-chassis/src/ipmi-chassis.c: Fix incorrect display of + ipmi_device_strerror messages. Remove checks for bad comp_code. + Fix tabbling/spacing. General code cleanup. Output better error + messages for all fiid_obj_create calls. Replace fprintf to stdout + with printf. + + * ipmi-chassis/src/ipmi-chassis-argp.c (parse_opt): Fix invalid + use of strtol. + + * ipmi-chassis/src/ipmi-chassis-argp.c (boot_flag_parse_opt, + ipmi_chassis_argp_parse): Move initialization code from + boot_flag_parse_opt to ipmi_chassis_argp_parse. + + * ipmi-chassis/src/ipmi-chassis.c (get_chassis_status): Don't + output "none" if there is nothing to output. + + * ipmi-chassis/src/ipmi-chassis.c (set_boot_flags): Remove set in + progress for now since no other IPMI tools currently use it. Fix + cleanup logic. + + * ipmi-chassis/ipmi-chassis.8.pre.in: Use macros appropriately. + + * AUTHORS: Add Ragha. + + * libfreeipmi/include/freeipmi/ipmi-comp-code-spec.h, + libfreeipmi/src/ipmi-error.c (ipmi_strerror_r): Add get/set system + boot options error code/strings. + + * ipmi-chassis/src/ipmi-chassis-argp.h, + ipmi-chassis/src/ipmi-chassis-argp.c (ipmi_chassis_args_validate): + New function. + + * ipmi-chassis/src/ipmi-chassis.c (main): Call ipmi_chassis_args_validate. + + * ipmi-chassis/src/ipmi-chassis-argp.c, + ipmi-chassis/ipmi-chassis.8.pre.in: Change 'C' option to 'O' and + 'B' to 'L' to not conflict with other options. + + * ipmi-chassis/src/ipmi-chassis.h: Remove cmd_set_capabilities, + which isn't used. + + * ipmi-chassis/src/ipmi-chassis-argp.c (parse_opt), + ipmi-chassis/src/ipmi-chassis.c (chassis_identify): Fix chassis + identify usage. + + * ipmi-chassis/src/ipmi-chassis-argp.c, + ipmi-chassis/ipmi-chassis.8.pre.in: Put periods on ends of help + messages. + + * libfreeipmi/src/ipmi-chassis-cmds.c + (tmpl_cmd_get_chassis_status_rs): Revert to old strings. + + * ipmi-chassis/src/ipmi-chassis.c (get_chassis_status): Use old + strings. + + * libfreeipmi/src/ipmi-capabilities-cmds.c + (tmpl_cmd_get_chassis_capabilities_rs): Revert to old strings. + + * ipmi-capabilities/src/ipmi-capabilities.c + (get_capabilities_status): Use old strings. + + * ipmi-chassis/ipmi-chassis.8.pre.in, + ipmi-chassis/src/ipmi-chassis-argp.c: Fix help info language. Fix + help info ordering. Document missing options. Change 'list' + option to -X option to 'list-supported-policies.' Exit when > 1 + cmd is input, don't just return -1. Cleanup error messages. + +2007-06-05 Raghavendra + + * ipmi-chassis/src/ipmi-chassis.c: Implemented Chassis Commands. + + * ipmi-chassis/src/ipmi-chassis.h: Updated for Chassis support. + + * libfreeipmi/include/freeipmi/ipmi-cmd-spec.h: Added new + commands. + + * libfreeipmi/include/freeipmi/ipmi-chassis-cmds.h: Added Macros + related to ipmi-chassis. + + * libfreeipmi/src/ipmi-chassis-cmds.c: Added Ipmi command + templates related to ipmi-chassis. + + * libfreeipmi/src/udm/ipmi-chassis-cmds-udm.c: Added Library + functions related to ipmi-chassis. + + * libfreeipmi/include/freeipmi/udm/ipmi-chassis-cmds-udm.h: Macros + related to ipmi-chassis. + + * libfreeipmi/include/Makefile.am: Added an entry for + freeipmi/ipmi-chassis-boot-options-param-spec.h. + + * libfreeipmi/include/freeipmi/ipmi-chassis-boot-options-param-spec.h: + New file. + +2007-06-04 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-error.h + (IPMI_ERR_STR_MAX_LEN): Define with number rather than hex. + +2007-06-02 Albert Chu + + Massive code cleanup. + + * configure.ac: Update lib versions for 0.4.0. + + * common/src/ipmi-common.h: Move portability related things to + freeipmi-portability.h. + + * Globally re-adjust headers accordingly for above change. + + * Cleanup compile warnings. + + * common/src/freeipmi-portability.h, + common/src/freeipmi-portability.c (freeipmi_error): Remove + function, it and error() are no longer used. + + * common/src/freeipmi-portability.h: Remove libintl portability. + Remove true/false/bool portability. Remove EBADMSG portability. + Remove program_invocation_short_name portability. + + * ipmi-sel/, ipmi-raw/: Remove use of program_invocation_short_name. + + * bmc-config/: Replace use of true/false with 1/0. + + * configure.ac: Remove check for error(). + + * libfreeipmi/src/ipmi-common.h, libfreeipmi/src/ipmi-common.c: + New files. + + * common/src/ipmi-common.h, common/src/ipmi-common.c: Move lib + specific utility functions to libfreeipmi ipmi-common.[ch]. + + * common/src/ipmi-common.h, common/src/ipmi-common.c: Rename to + tool-common.h and tool-common.c. + + * Readjust Makefiles and code appropriately for new files. + + * common/src/tool-common.h, common/src/tool-common.c + (ipmi_device_open): New function. + + * bmc-config/, bmc-info/, ipmi-raw/, ipmi-sel/, ipmi-sensors/, + pef-config/: Use new common function for device opening. + + * libfreeipmi/udm/ipmi-udm.c (ipmi_open_inband): Fix logic errors. + + * common/src/eliminate.h, common/src/eliminate.c: Renamed to + hostrange.h and hostrange.c. + + * common/src/hostrange.h, common/src/hostrange.c (pstdout_setup): + New function. + + * bmc-info/, ipmi-sel/, ipmi-sensors/, ipmimonitoring/, ipmi-raw/: + Use new pstdout_setup common function for pstdout setup. + + * common/src/ipmi-sdr-cache.h, common/src/ipmi-sdr-cache.c + (sdr_cache_create_and_load): New function. + + * ipmi-sel/, ipmi-sensors/: Use new common function. + + * libfreeipmi/include/freeipmi/ipmi-lan-param-spec.h, + libfreeipmi/include/freeipmi/ipmi-pef-param-spec.h, + libfreeipmi/include/freeipmi/ipmi-serial-modem-param-spec.h, + libfreeipmi/include/freeipmi/ipmi-sol-param-spec.h: Renamed to + libfreeipmi/include/freeipmi/ipmi-lan-parameter-spec.h, + libfreeipmi/include/freeipmi/ipmi-pef-parameter-spec.h, + libfreeipmi/include/freeipmi/ipmi-serial-modem-parameter-spec.h, + libfreeipmi/include/freeipmi/ipmi-sol-parameter-spec.h + respecitvely. + + * Globally rename fields/varaibles from "param" to "parameter" for + naming consistency. + + * ipmi-chassis/: Pstdout-ized. + +2007-06-01 Albert Chu + + * common/src/fiid-wrappers.h: Remove duplicate macros. + + * REDESIGN: Move notes into TODO. Remove file. + + * Various minor doc updates. + + * common/doc/argp-common-sdr-options.man: New file. + + * ipmi-sel/ipmi-sel.8.pre.in, ipmi-sensors/ipmi-sensors.8.pre.in: + Use common sdr options. + + * common/src/arg-common.h, common/src/arg-common.c (sdr_parse_opt, + init_sdr_cmd_args, free_sdr_cmd_args): New functions. + + * ipmi-sel/, ipmi-sensors/: Use new common SDR arg parsing. + + * Fix argp ordering in remaining tools. + +2007-05-31 Albert Chu + + * tagged pre_freeipmi_udm_re_arch + + * Merge in freeipmi_udm_re_arch_final branch tag with UDM + re-architecture with more detailed error code returns to the user. + + * tagged post_freeipmi_udm_re_arch + +2007-05-29 Albert Chu + + * ipmiconsole/src/libipmiconsole/: Support new + ipmiconsole_ctx_status function. + +2007-05-29 Tom Zimmerman + + * pef-config/src/pef-config-alert-policy-table.c + (pef_config_alert_policy_table_section_get): Fix instructions + typo. + +2007-05-24 Albert Chu + + * ipmiconsole/: Finish up some sun 2.0 workarounds. + +2007-05-24 Albert Chu + + * ipmipower/: Begin work on sun20 workaround. + + * ipmiconsole/: Begin work on sun 2.0 workarounds. Support + additional error outputs. + +2007-05-23 Albert Chu + + * ipmipower/: Add 'endianbug' workaround for Sun machines. + + * common/src/ipmi-sdr-cache.c (_get_sdr_sensor_record): Fix SDR + reservation bugs. + + * common/src/ipmi-sdr-cache.c + (_get_sdr_generic_device_locator_record): Fix channel_number + reading bug. + +2007-05-22 Albert Chu + + * doc/freeipmi-hostrange.txt: Fix some typos. + +2007-05-21 Albert Chu + + * pef-config/src/pef-config-sections.c + (pef_config_sections_list_create): Re-order sections. + + * pef-config/: Various minor bug fixes. + + * libfreeipmi/src/ipmi-pef-and-alerting-cmds.c + (tmpl_cmd_set_pef_configuration_alert_policy_table_rq, + fill_cmd_set_pef_configuration_parameter_alert_policy_table): Fix + fill bugs. + +2007-05-20 Albert Chu + + * doc/freeipmi-coding.txt: Update. + + * pef-config/src/pef-config-alert-policy-table.c + (pef_config_alert_policy_table_section_get): Add lan channel + number to help for channel number. + + * pef-config/src/pef-config-alert-policy-table.c: Fix diff + callback bugs. + + * REDESIGN: Add notes for future. + + * pef-config/: Add Alert String support. + +2007-05-19 Albert Chu + + * doc/freeipmi-coding.txt: Talk about bmc-config and ipmi-pef + design considerations. + + * ipmi-pef/src/ipmi-pef-event-filter-table.c: Major code cleanup. + + * ipmi-pef/ipmi-pef.8.pre.in: Updated appropriately. + + * pef-config/: Converted from ipmi-pef. Update all build files + and docs appropriately. + + * pef-config/src/pef-config-sections.c + (pef_config_sections_list_create): Fix alert policy table bug. + +2007-05-18 Albert Chu + + * ipmi-pef/: Fix incorrect naming of "policy number" for "entry + number" globally. + + * ipmi-pef/src/ipmi-pef-alert-destination.c, + ipmi-pef/src/ipmi-pef-alert-destination.h: Renamed to + ipmi-pef/src/ipmi-pef-lan-alert-destination.c and + ipmi-pef/src/ipmi-pef-lan-alert-destination.h. + + * ipmi-pef/: Change "alert_destinations" and + "lan_alert_destination" in appropriate locations to clarification. + + * ipmi-pef/src/ipmi-pef-wrapper.h, ipmi-pef/src/ipmi-pef-wrapper.c + (get_bmc_lan_conf_community_string, + set_bmc_lan_conf_community_string, + get_bmc_lan_conf_destination_type, + set_bmc_lan_conf_destination_type, + get_bmc_lan_conf_destination_addresses, + set_bmc_lan_conf_destination_addresses, + get_bmc_pef_conf_alert_policy_table, + set_bmc_pef_conf_alert_policy_table, + get_bmc_pef_conf_event_filter_table, + set_bmc_pef_conf_event_filter_table): New functions. + + * libfreeipmi/: Reword "event_specific_alert_string_lookup" to + "event_specific_alert_string" based on spec wording. + + * ipmi-pef/: Continued work to rearchitect into bmc-config like + architecture. Add alert policy checkout sections. Add event + filter table sections. Reword "event_specific_alert_string_lookup" + to "event_specific_alert_string" everywhere. + + * ipmi-pef/src/ipmi-pef-validate.h, + ipmi-pef/src/ipmi-pef-validate.c (number_range_four_bits, + number_range_seven_bits, number_range_three_bits, + number_range_two_bytes, filter_type_validate, + event_severity_validate, policy_type_validate, + alert_gateway_validate, alert_destination_type_validate): New + functions. + + * bmc-config/src/bmc-config-validate.h, + bmc-config/src/bmc-config-validate.c (number_range_two_bytes): New function. + + * bmc-config/src/bmc-sol-conf-section.c (port_validate): Use + number_range_two_bytes function. + + * ipmi-pef/src/ipmi-pef-pef-conf-section.h, + ipmi-pef/src/ipmi-pef-pef-conf-section.c: Transfer pef conf + section from bmc-config. + + * ipmi-pef/src/ipmi-pef-wrapper.h, + ipmi-pef/src/ipmi-pef-wrapper.c: Transfer pef wrapper functions + from bmc-config. + + * bmc-config/src/bmc-config-argp.c (_create_sectionstr): Fix + variable name. + + * tagged pre_ipmi_pef_major_rearch + + * bmc-config/: Remove pef related sections. + + * ipmi-pef/: Complete bmc-config style input/output. + + * tagged post_ipmi_pef_major_rearch + +2007-05-17 Albert Chu + + * ipmi-pef/src/ipmi-pef-validate.h, + ipmi-pef/src/ipmi-pef-validate.c: New files. + + * ipmi-pef/: Add initial community string and alert destination + sectional support. + + * ipmi-pef/, bmc-config/: Various filename and function name + changes for code and filename consistency between the two tools. + +2007-05-17 Tom Zimmerman + + * common/src/bit-ops.h: Fix macro bug. + + * ipmi-pef/src/ipmi-pef-wrapper.c (get_lan_alert_destination): Fix + buffer length bug. + + * libfreeipmi/src/ipmi-lan-cmds.c + (fill_cmd_set_lan_configuration_parameters_destination_type, + tmpl_cmd_set_lan_configuration_parameters_destination_type_rq, + tmpl_cmd_get_lan_configuration_parameters_destination_type_rs): + Fix template field ordering bug. + +2007-05-17 Albert Chu + + * ipmi-pef/src/ipmi-pef-map.h, ipmi-pef/src/ipmi-pef-map.c, + ipmi-pef/src/ipmi-pef-keys.h, ipmi-pef/src/ipmi-pef-common: New + files. + + * ipmi-pef/: Code and makefiles adjusted for new headers and files. + + * ipmi-pef/src/ipmi-pef-utils.c: Add forgotten config header and + checks. + + * bmc-config/src/bmc-config.c (_bmc_config_state_data_init): + Initialize forgotten field. + + * bmc-config/src/bmc-config.c (main): Initialize progname field. + + * ipmi-pef/: Cache lan_channel_number, number_of_lan_destinations, + number_of_alert_policy_entries, number_of_event_filters in + state_data. Adjust functions appropriately for this. Initialize + state_data appropriately. Fix help message descriptions. Begin + to re-architect args to more resemble bmc-config's. Add args + validation function ipmi_pef_args_validate. Begin to re-architect + main code structure to more like bmc-config's. Remove + get_pef_info() wrapper function. General code cleanup. + + * ipmi-pef/src/ipmi-pef-info.h, ipmi-pef/src/ipmi-pef-info.c, + ipmi-pef/src/ipmi-pef-commit.h, ipmi-pef/src/ipmi-pef-commit.c, + ipmi-pef/src/ipmi-pef-checkout.h, + ipmi-pef/src/ipmi-pef-checkout.c: New files. + + * bmc-config/src/bmc-sections.c (bmc_config_sections_create), + bmc-config/src/bmc-user-sections.c (bmc_user_section_get): Alter + indexing method. + + * ipmi-pef/src/ipmi-pef-community-string.c, + ipmi-pef/src/ipmi-pef-alert-destination.c, + ipmi-pef/src/ipmi-pef-alert-policy-table.c, + ipmi-pef/src/ipmi-pef-event-filter-table.c, + ipmi-pef/src/ipmi-pef-diff.c, ipmi-pef/src/ipmi-pef-parser.c, + ipmi-pef/src/ipmi-pef-sections.c, + ipmi-pef/src/ipmi-pef-community-string.h, + ipmi-pef/src/ipmi-pef-alert-destination.h, + ipmi-pef/src/ipmi-pef-alert-policy-table.h, + ipmi-pef/src/ipmi-pef-event-filter-table.h, + ipmi-pef/src/ipmi-pef-diff.h, ipmi-pef/src/ipmi-pef-parser.h, + ipmi-pef/src/ipmi-pef-sections.h: New files. + + * ipmi-pef/: Change "lan_destinations" and + "lan_alert_destinations" to "alert_destinations" globally for + consistency. + + * bmc-config/src/bmc-sections.h, bmc-config/src/bmc-sections.c + (bmc_sections_list): Correct return type. + +2007-05-16 Albert Chu + + * ipmi-pef/: Fix string parsing bugs in alert policy table. Fix + event trigger output corner case. Fix build dependency bug. Add + -e option. Force user to specify section. Check for out of mem + errors. Fix some mapping corner cases. Fix error handling and + incorrect logic in mapping to strings functions. General code + cleanup. Begin re-architect to bmc-config style design. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_config.c + (ipmi_monitoring_sensor_config), + ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache.c + (_destroy_ctx): Fix mem-leaks. + + * doc/freeipmi.texi, doc/gpl.texi, doc/version-doc.texi, + doc/authors.texi, doc/fdl.texi, THANKS: Removed. + + * freeipmi.spec.in, doc/Makefile.am, Makefile.am: Updated + appropriately. + + * various minor doc updates + +2007-05-15 Albert Chu + + * ipmi-pef/: Do initial support of lan channels and community + string support. Fix thread safety problems. Add -v and -f + option. Re-adjust options to emulate bmc-config options. Fix + mem-leaks. Fix and add numerous error messages. Commit community + string via file too. Remove ability to set community string on + command line. Fix various bugs. Fix output alignment. + +2007-05-15 Albert Chu + + * common/doc/argp-common-privlevel-admin.man, + common/doc/argp-common-privlevel-user.man: New files. + + * common/doc/Makefile.am: Updated appropriately for new files. + + * common/doc/argp-common-privlevel.man: Removed file. + + * common/src/arg-common.h: Modify mechanism by which common args + are shared so some tools can have a default privilege of admin. + + * ipmi-sensors/, ipmi-sel/, bmc-info/, bmc-config/, ipmi-raw/, + ipmi-pef/: Update to use new common macros and includes. Default + privilege of ipmi-pef and ipmi-chassis is now admin. + + * various minor doc updates. + +2007-05-16 A Balamurugan + + * ipmi-pef/src/ipmi-pef.c (checkout_pef_lad): added comments. + +2007-05-15 A Balamurugan + + * ipmi-pef/src/ipmi-pef-utils.c (destination_type_to_string, + string_to_destination_type, alert_acknowledge_to_string, + string_to_alert_acknowledge, alert_acknowledge_timeout_to_string, + string_to_alert_acknowledge_timeout, alert_retries_to_string, + string_to_alert_retries, gateway_selector_to_string, + string_to_gateway_selector, alert_ip_address_to_string, + string_to_alert_ip_address, alert_mac_address_to_string, + string_to_alert_mac_address): new functions. + + * ipmi-pef/src/ipmi-pef-wrapper.c (_record_string_to_lad, + get_number_of_lan_destinations, get_lan_alert_destination, + get_lad_list, set_lan_alert_destination): new functions. + + * ipmi-pef/src/ipmi-pef.c (checkout_pef_lad, commit_pef_lad): new + functions. + + * ipmi-pef/src/ipmi-pef.c (run_cmd_args): added support to lan + alert destination checkout/commit. + +2007-05-15 Tom Zimmerman + + * ipmi-pef/src/ipmi-pef-utils.c: Fix #define typo. + +2007-05-15 A Balamurugan + + * ipmi-pef/src/ipmi-pef-utils.h: fixed ENABLE_FILTER_KEY_STRING + typo. + + * ipmi-pef/src/ipmi-pef-wrapper.c (_record_string_to_apt, + get_apt_list, set_alert_policy_table): new functions. + + * ipmi-pef/src/ipmi-pef.c (checkout_pef_apt, commit_pef_apt): new + functions. + + * ipmi-pef/src/ipmi-pef.c (run_cmd_args): modified according to + command line argument changes. + +2007-05-15 A Balamurugan + + * libfreeipmi/src/ipmi-pef-and-alerting-cmds.c + (fill_cmd_set_pef_configuration_parameters_alert_strings): uses + macro IPMI_PEF_ALERT_STRINGS_BLOCK_SIZE_VALID. + + * libfreeipmi/src/udm/ipmi-pef-and-alerting-cmds-udm.c + (ipmi_cmd_set_pef_configuration_parameters_alert_policy_table): + fix to check obj_cmd_rs. + + * libfreeipmi/src/udm/ipmi-pef-and-alerting-cmds-udm.c + (ipmi_cmd_set_pef_configuration_parameters_alert_policy_table): + fix to check obj_cmd_rs. + + * libfreeipmi/src/udm/ipmi-pef-and-alerting-cmds-udm.c + (ipmi_cmd_set_pef_configuration_parameters_alert_string_keys, + ipmi_cmd_set_pef_configuration_parameters_alert_strings): new + functions. + +2007-05-14 Albert Chu + + * ipmimonitoring/src/ipmimonitoring.c (main): Fix error message + typo. + +2007-05-13 Albert Chu + + * common/src/ipmi-sdr-api.h, common/src/ipmi-sdr-api.c: Renamed to + ipmi-sdr-cache.h and ipmi-sdr-cache.c. Rearchitect sdr API to + return better error codes, be thread safe, and avoid potential + mem-leaks. Fix various minor bugs found along the way. + + * ipmi-sel/, ipmi-senors/: Update appropriately. + +2007-05-13 Albert Chu + + * libfreeipmi/src/ipmi-sdr-record-types.c: Modify field for + tmpl_sdr_fru_device_locator_record to a more appropriate name. + + * common/src/ipmi-sdr-cache-writes.c + (_write_sdr_fru_device_locator_record), + common/src/ipmi-sdr-cache-reads.c + (_read_sdr_fru_device_locator_record), common/src/ipmi-sdr-api.h: + Support logical devices and fru ids in sdr cache. + +2007-05-09 Albert Chu + + * ipmi-sel/ipmi-sel.8.pre.in, ipmi-sensors/ipmi-sensors.8.pre.in: + Fix some SDR text. + + * Various manpage updates. + +2007-05-08 Albert Chu + + * Fix typos in header file comments in + libfreeipmi/include/freeipmi/udm/. + + * ipmi-sel/src/ipmi-sel-argp.c (ipmi_sel_argp_parse): Fix + forgotten initialization. + +2007-05-07 Albert Chu + + Fix bugs found by Levi Pearson + + * ipmipower/src/ipmipower_prompt.c (_cmd_k_g), + common/src/ipmi-common.c (format_kg): Fix k_g buf length bugs. + +2007-05-07 Raghavendra + + * ipmiconsole/src/ipmiconsole/Makefile.am: Fix include path + compile issue. + +2007-05-07 Tom Zimmerman + + * ipmi-pef/src/ipmi-pef-wrapper.c (get_pef_info): Fix field name + typo. + +2007-05-05 Albert Chu + + * doc/freeipmi-coding.txt, doc/freeipmi-hostrange.txt: Update + text. + + * ipmipower/: Support an additional "password verification + timeout" error code. + + * doc/freeipmi-faq.texi: Update text. + + * /: Various minor doc updates. + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (_ipmimonitoring): Tweak output format. + + * ipmimonitoring/: Minor manpage text fixes. + +2007-05-04 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_ctx_create): Change API to support k_g len. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.c + (_check_for_authentication_support): Fix state machine corner case. + + * ipmiconsole/src/ipmiconsole_config.c (_cmdline_parse): Fix -K + corner case. + + * ipmipower/src/ipmipower_config.c + (ipmipower_config_cmdline_parse): Fix -K corner case. + + * libfreeipmi/src/ipmi-utils.c (ipmi_check_cmd, + ipmi_check_completion_code): check obj-cmd w/ fiid_obj_valid(). + + * doc/freeipmi-coding.txt, doc/freeipmi-hostrange.txt: new docs. + + * doc/Makefile.am, freeipmi.spec.in: Update for new docs. + +2007-05-04 Levi Pearson + + * ipmiconsole/: Support hex keys in ipmiconsole and + libipmiconsole. + +2007-05-03 Levi Pearson + + * bmc-config/src/bmc-serial-conf-section.c + (connect_mode_checkout): Fix strdup bug. + + * bmc-config/src/bmc-lan-conf-security-keys-section.c + (k_g_checkout, k_g_commit, k_g_diff, k_g_validate): Support hex + code input/output for K-g. + + * common/src/ipmi-common.c, common/src/ipmi-common.h (parse_kg, + format_kg): Add const to appropriate parameters. + +2007-05-03 Albert Chu + + * libfreeipmi/src/ipmi-kcs-api.c, libfreeipmi/src/ipmi-ssif-api.c, + libfreeipmi/include/freeipmi/ipmi-kcs-api.h, + libfreeipmi/include/freeipmi/ipmi-ssif-api.h: Include/fix error + return conditions. Add new error codes. + +2007-05-02 Albert Chu + + * ipmimonitoring/src/ipmimonitoring.c: Change default output. + +2007-04-30 Albert Chu + + * ipmipower/: Don't bother to obscure ipmipower error messages. + +2007-04-29 Albert Chu + + * ipmipower/ipmipower.8.in: Fix text. + + * ipmiconsole/ipmiconsole.8.in: Fix some text. + + * ipmimonitoring/src/libipmimonitoring/libipmimonitoring.c + (ipmi_monitoring_bitmask_string): Fix corner case. + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (_ipmimonitoring): Fix corner case. Output strings for bitmask + readings. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.h: Fix + bitmask values. Don't know what I was doing before. + +2007-04-28 Albert Chu + + * doc/: Remove a whole bunch of unnecessary stuff. + + * freeipmi.spec.in, configure.ac: Adjust appropriately. + + * ipmi-raw/: Parse '0x' in hex codes too. Fix seg-fault corner + case. (bug #19645) + + * common/src/pstdout.c (_pstdout_output_buffer_data, + _pstdout_output_finish): Alter default output of buffered + hostrange output. + + * bmc-info/, ipmi-raw/, ipmi-sel/, ipmi-sensors/, ipmimonitoring/: + Alter default output of buffered hostrange output. + + * ipmipower/: Remove -o option. Change -C option to -X + option. Add -C option for consolidated output like other tools. + Add -E option to eliminate undetected nodes. Fix conf file + inconsistencies. + + * ipmimonitoring/src/libipmisdrcache/ipmi_sdr_cache.c + (ipmi_sdr_cache_open): Fix errno corner case. + + * ipmi-sensors/: Add -q option. + + * docs/: Various minor cleanup and wording fixes. + +2007-04-27 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_defs.h: Fix k_g + corner case. + + * libfreeipmi/src/ipmi-dmidecode-locate.c: Get rid of leftover + debugging. + + * ipmimonitoring/: Support -s and -g in ipmimonitoring. + +2007-04-27 Levi Pearson + + * common/src/ipmi-common.h, common/src/ipmi-common.c (parse_kg, + format_kg): New functions. + + * ipmipower/: Support hex keys for K_g. + +2007-04-27 Albert Chu + + * libfreeipm/, common/src, ipmi-sel/, ipmi-sensors: Rename + "logical_fru" to "fru" for consistency with the ipmi spec. + + * ipmi-sel/src/ipmi-sel-wrappers.c (_get_sel_system_event_record): + Output sensor names when they are available. + + * ipmi-sensors/ipmi-sensors.8.pre.in: Update -s option info. + + * ipmimonitoring/src/libipmimonitoring/: Bug fixes and code + cleanup. + + * ipmimonitoring/: Support -q option in ipmimonitoring. + + * common/doc/argp-common-hostranged-text.man, + ipmimonitoring/ipmimonitoring.8.in: Add extra hostrange output + info. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c (ipmi_lan_cmd): + Check checksums before other stuff. + +2007-04-26 Albert Chu + + * ipmimonitoring/ipmimonitoring.8.in, ipmidetect/ipmidetectd.8.in, + ipmiconsole/ipmiconsole.8.in: Fix manpage output bug. + + * ipmimonitoring/ipmimonitoring.8.in: Reword some text. + + * ipmipower/ipmipower8.in, ipmiconsole/ipmiconsole.8.in, + ipmimonitoring/libipmimonitoring.3.in: Update some text. + + * ac_ipmi_monitoring_sensor_config_file.m4: Fix filename typo. + + * doc/freeipmi-faq.texi: Fix some wording. + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c + (_cmdline_parse, main): Don't clear all args, just the username + and password. + + * ipmimonitoring/: Add hostrange support to ipmimonitoring. Add + -r option. Add -c option and alternate cache dir support. + + * Fix various warnings. + +2007-04-25 Albert Chu + + * configure.ac: Add pre-req header checks for linux/ipmi.h. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_config.c, + ipmipower/src/ipmipower.c: Change '_set' parameters to + '_set_on_cmdline'. + + * ipmiconsole/src/ipmiconsole/ipmiconsole_config.h, + ipmiconsole/src/ipmiconsole/ipmiconsole_config.c: Change '_set' + parameters to '_set_on_cmdline'. + +2007-04-24 Albert Chu + + * common/src/pstdout.c (_pstdout_print, _pstdout_print_wrapper, + _pstdout_output_finish): Add race protections w/ + no_more_external_output flag. + + * common/src/pstdout.c (_pstdout_print_wrapper, pstdout_printf, + pstdout_fprintf, pstdout_perror, _pstdout_output_finish): Adjust + calls appropriately. + + * common/src/pstdout.c (_pstdout_state_init): Init mutex. + + * common/src/pstdout.c (_pstdout_sigint_finish_output): Output + information on which threads were canceled early. + +2007-04-18 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-netfn-spec.h: Allow OEM + network functions. + + * ipmipower/src/ipmipower_powercmd.c + (_check_activate_session_authentication_type): Workaround + permsgauth issue. + + * ipmipower/ipmipower.8.in: Update workaround issue. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_send, ipmi_lan_cmd), + libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c + (ipmi_lan_open_session), libfreeipmi/src/udm/ipmi-udm-device.h, + libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband, + _ipmi_outofband_close): Support permsgauth in udm. + +2007-04-17 Albert Chu + + * libfreeipmi/: Support lan config get authentication type + support. + +2007-04-16 Albert Chu + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.c + (ipmi_monitoring_sensor_readings_by_record_id, + ipmi_monitoring_sensor_readings_by_sensor_group), + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sdr_cache.c + (ipmi_monitoring_sdr_cache_unload): Fix sdr cache + loading/unloading corner case. + +2007-04-07 Albert Chu + + * bmc-config/src/bmc-lan-conf-alert-section.h, + bmc-config/src/bmc-lan-conf-alert-section.c: New files. + + * bmc-config/src/bmc-lan-conf-section.c: Split off alert config + into a different section. + + * bmc-config/src/Makefile.am: Adjust appropriately. + + * bmc-config/src/bmc-checkout.c (bmc_checkout_file), + bmc-config/src/bmc-commit.c (bmc_commit_file): Add verbose + progress information. + +2007-04-06 Albert Chu + + * bmc-config/: Add alert config to bmc-config and fix various + corner cases. + +2007-04-05 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.c, + (fill_cmd_set_lan_configuration_parameters_community_string, + fill_cmd_set_lan_configuration_parameters_destination_type, + fill_cmd_set_lan_configuration_parameters_destination_addresses): + New functions. + + * libfreeipmi/include/freeipmi/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.c, : Add templates for + tmpl_cmd_set_lan_configuration_parameters_community_string_rq, + tmpl_cmd_set_lan_configuration_parameters_destination_type_rq, + tmpl_cmd_set_lan_configuration_parameters_destination_addresses_rq, + tmpl_cmd_get_lan_configuration_parameters_community_string_rs, + tmpl_cmd_get_lan_configuration_parameters_number_of_destinations_rs, + tmpl_cmd_get_lan_configuration_parameters_destination_type_rs, + tmpl_cmd_get_lan_configuration_parameters_destination_addresses_rs. + + * libfreeipmi/include/freeipmi/udm/ipmi-lan-cmds-udm.h + (ipmi_cmd_set_lan_configuration_parameters_community_string, + ipmi_cmd_set_lan_configuration_parameters_destination_type, + ipmi_cmd_set_lan_configuration_parameters_destination_addresses, + ipmi_cmd_get_lan_configuration_parameters_community_string, + ipmi_cmd_get_lan_configuration_parameters_number_of_destinations, + ipmi_cmd_get_lan_configuration_parameters_destination_type, + ipmi_cmd_get_lan_configuration_parameters_destination_addresses): + New functions. + + * libfreeipmi/include/freeipmi/ipmi-lan-cmds.h: Add new defines + for new lan cmds support. + + * libfreeipmi/include/freeipmi/ipmi-lan-param-spec.h: Fix typo. + + * bmc-config/src/bmc-config-api.h, + bmc-config/src/bmc-config-api.c, + bmc-config/src/bmc-lan-conf-section.c: Add community string config + support. + +2007-03-30 Albert Chu + + * ipmiconsole/: Add --deactivate option and SOL deactivate only support. + + * NEWS: Update w/ more 0.4.0 stuff. + +2007-03-29 Albert Chu + + * ipmipower/src/ipmipower_workarounds.h, + ipmipower/src/ipmipower_workarounds.c: New files. + + * ipmipower/: Re-architected workaround options. + + * configure.ac: Increment ipmiconsole revision to sync w/ 0.3.2 + release. + +2007-03-28 Albert Chu + + * common/src/argp-common.c (__secure_memset): New function. + + * common/src/argp-common.c (common_parse_opt): Clear password. + + * bmc-info/, bmc-config/, ipmi-chassis/, ipmi-pef/, ipmi-raw/, + ipmi-sel/, ipmi-sensors/: Don't clear out all argv data. Only + password. + + * ipmipower/, ipmiconsole/: Don't clear out all argv data, only + important stuff. + +2007-03-25 Albert Chu + + * doc/freeipmi-faq.texi: Updated. + +2007-03-24 Albert Chu + + * doc/freeipmi.texi, doc/freeipmi-faq.texi: Updated. + + * ipmiconsole/ipmiconsole.8.in: Fix option name typo. + +2007-03-23 Albert Chu + + * common/doc/argp-common-hostranged-options.man, + common/src/pstdout.h: Change default pstdout fanout to 64. + +2007-03-21 Albert Chu + + * ipmiconsole/ipmiconsole.8.in: Fix typo. + +2007-03-20 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (_ipmiconsole_cleanup_ctx_session, ipmiconsole_engine_submit_ctx), + ipmiconsole/src/libipmiconsole/ipmiconsole.c + (ipmiconsole_engine_submit): Fix possible session_submit race. + It has never been hit, but is possible. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.c, + ipmiconsole/src/libipmiconsole/ipmiconsole.h, + ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_sol_bmc_to_remote_console_packet): Add SOL stolen error code. + + * ipmiconsole/: Support blocking engine submission. Make it the + default behavior for the ipmiconsole tool. + +2007-03-16 Anand Babu + + * bmc-config/src/bmc-lan-conf-misc-section.c: Fixed incorrect + return status check. + + * bmc-watchdog/Makefile.am: replaced + "$(top_srcdir)/install-sh" with "$(INSTALL)" and "$(DESTDIR)/" + with "$(DESTDIR)". + + * ipmiconsole/src/libipmiconsole/Makefile.am: like wise. + + * freeipmi/ipmidetect/Makefile.am: like wise. + + * ipmimonitoring/src/libipmimonitoring/Makefile.am: like wise. + + * ipmimonitoring/Makefile.am: replaced install-data-local target + with automake style macros. + + * Other changes are just compiler warning fixes like unused + variable or referenced without initialization warning. + + +2007-03-15 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_processing.c + (_process_ctx): Fix output corner case. Fix comment typo. + + * ipmiconsole/src/ipmiconsole/ipmiconsole.c (_set_mode_raw): Use + TCSADRAIN instead of TCSAFLUSH to not automatically flush stdin if + data exists on it. + + * ipmiconsole/src/ipmiconsole/ipmiconsole.c (main): Remove unused + code. + +2007-03-11 Albert Chu + + * libfreeipmi/src/ipmi-locate-dmidecode.c: Replace u8, u16, u32, + u64 typedefs with others, to protect against the possibility we + collide with libc typedefs of the same name. + +2007-03-08 Albert Chu + + * ipmimonitoring/src/ipmi_monitoring.h, + ipmimonitoring/src/ipmi_monitoring.c, + ipmimonitoring/src/ipmi_monitoring_defs.h: Do not lock memory by + default. + + * ipmiconsole/: Do not lock memory by default. Adjust -L option + appropriately. + +2007-03-07 Albert Chu + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (_ipmiconsole_init_ctx_session): Return out of memory error on + cbuf_create error. + + * ipmipower/ipmipower.8.in, ipmipower/src/ipmipower_config.c + (ipmipower_config_cmdline_parse): Change -U option to -Z. + + * ipmipower/ipmipower.8.in, ipmipower/src/ipmipower_config.c + (ipmipower_config_cmdline_parse), ipmiconsole/ipmiconsole.8.in, + ipmiconsole/src/ipmiconsole/ipmiconsole_config.c (_cmdline_parse): + Add -K option. + +2007-03-06 Albert Chu + + * ipmiconsole/ipmiconsole.8.in, ipmiconsole/ipmiconsole.conf.5.in, + ipmiconsole/src/ipmiconsole/ipmiconsole_config.h, + ipmiconsole/src/ipmiconsole/ipmiconsole_config.c, + ipmiconsole/src/ipmiconsole/ipmiconsole.c: Add -N option support. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (_ipmiconsole_cleanup_ctx_session): Remove unnecessary + conditional. + + * ipmiconsole/src/libipmiconsole/ipmiconsole_engine.c + (_ipmiconsole_cleanup_ctx_session, _ipmiconsole_init_ctx_session): + Fix mem initialization bug. + + * ipmiconsole/src/libipmiconsole/cbuf.h, + ipmiconsole/src/libipmiconsole/cbuf.c: New files for ipmiconsole + secure mallocs. + + * ipmiconsole/src/libipmiconsole/Makefile.am: Add cbuf.h and + cbuf.c for new build. + + * common/src/cbuf.c: Remove secure malloc code. + + * common/src/Makefile.am: Split off cbuf into a separate lib. + + * ipmipower/src/Makefile.am, bmc-info/src/Makefile.am, + ipmi-sensor/src/Makefile.am, ipmi-sel/src/Makefile.am, + ipmi-raw/src/Makefile.am: Use new cbuf common lib. + + * ipmiconsole/src/libipmiconsole/: Support optional secure + mallocs. + + * ipmiconsole/ipmiconsole.8.in, ipmiconsole/ipmiconsole.conf.5.in, + ipmiconsole/src/ipmiconsole/: Add -L option support. + +2007-03-03 Albert Chu + + * Makefile.am: Add freeipmi.spec to dist. + +2007-03-01 Albert Chu + + * tagged pre_hostrange_support + + Support hostrange support in FreeIPMI tools + + * COPYING.pstdout, DISCLAIMER.pstdout, COPYING.ipmidetect, + DISCLAIMER.ipmidetect, common/src/pstdout.h, common/src/pstdout.c, + common/src/eliminate.h, common/src/eliminate.c, ipmidetect/: New + files. + + * common/src/argp-common.h, common/src/argp-common.c, common/doc/: + Add common manpage and command line parsing for hostranges. + + * bmc-info/, ipmi-sel/, ipmi-sensors/, ipmi-raw/: Rework for + hostrange support. + + * freeipmi.spec.in: Add new ipmidetect subpackage. + + * common/src/hostlist.h, common/src/hostlist.c: New files for + llnlcommon lib moved from ipmipower/src/hostlist.h and + ipmipower/src/hostlist.c respectively. + + * common/src/Makefile.am, ipmipower/src/Makefile.am: Adjust for + new hostlist file locations appropriately. + + * freeipmi.spec.in: Updated for ipmidetect. + + * Makefile.am: Updated for new files appropriately. + + * tagged post_hostrange_support + +2007-02-27 Albert Chu + + * ac_ipmipower_config_file.m4: New file. + + * configure.ac, ipmipower/ipmipower.conf.5.in, + ipmipower/src/ipmipower_config.c, ipmipower/src/ipmipower.h: + Support autoconfed ipmipower config file path. + +2007-02-22 A Balamurugan + + * ipmi-pef/src/ipmi-pef-utils.c (policy_type_to_string, + string_to_policy_type, policy_enabled_to_string, + string_to_policy_enabled, policy_number_to_string, + string_to_policy_number, destination_selector_to_string, + string_to_destination_selector, channel_number_to_string, + string_to_channel_number, alert_string_set_selector_to_string, + string_to_alert_string_set_selector, + event_specific_alert_string_lookup_to_string, + string_to_event_specific_alert_string_lookup): new functions. + + * ipmi-pef/src/ipmi-pef-wrapper.c + (get_number_of_alert_policy_entries, get_alert_policy_table): new + functions. + + * ipmi-pef/src/ipmi-pef.c (checkout_alert_policy_table): new + functions. + + * ipmi-pef/src/ipmi-pef.c (checkout_pef_evt): included alert + policy table data. + + * libfreeipmi/src/ipmi-pef-and-alerting-cmds.c, + libfreeipmi/src/udm/ipmi-pef-and-alerting-cmds-udm.c: renamed fiid + entries "policy_number.policy" to "policy_number.policy_type" and, + "alert_string_key.event_specific_alert_string" to + "alert_string_key.event_specific_alert_string_lookup". + +2007-02-21 A Balamurugan + + * libfreeipmi/include/freeipmi/ipmi-pef-and-alerting-cmds.h: added + table policy table macros. + + * libfreeipmi/src/ipmi-pef-and-alerting-cmds.c: added fiids + tmpl_cmd_set_pef_configuration_parameters_alert_policy_table_rq + and + tmpl_cmd_get_pef_configuration_parameters_alert_policy_table_rs, + and function + fill_cmd_set_pef_configuration_parameters_alert_policy_table(). + + * libfreeipmi/src/udm/ipmi-pef-and-alerting-cmds-udm.c + (ipmi_cmd_set_pef_configuration_parameters_alert_policy_table, + ipmi_cmd_get_pef_configuration_parameters_alert_policy_table): new + functions. + +2007-02-18 A Balamurugan + + * configure.ac: fix of automake init. + + * common/src/common-utils.c (remove_newline,strsep_noempty): new + functions. + + * ipmi-pef/src/Makefile.am: updated. + + * ipmi-pef/src/ipmi-pef-utils.[ch]: new files. + + * ipmi-pef/src/ipmi-pef-wrapper.c, ipmi-pef/src/ipmi-pef.c: + changes made for new configuration format. + +2007-02-17 Albert Chu + + * freeipmi.spec.in: Put ipmi_monitoring.h into the ipmimonitoring + subpackage. General cleanup. + + * common/src/argp-common.c (common_parse_opt): Check for NULL on + strdup. + +2007-02-16 Albert Chu + + * ipmiconsole/src/ipmiconsole/Makefile.am: Remove unnecessary + compile option. + + * freeipmi.spec.in: Split of ipmimonitoring into a subpackage. + Add ipmi-chassis. + + * configure.ac: Fix make dist issue w/ long filenames. + + * ipmimonitoring/src/libipmimonitoring/: Fix flag bitmask bugs. + Add support for unlocked memory flag. Fix build dependency bug. + + * ipmimonitoring/src/ipmimonitoring/ipmimonitoring.c: Adjust code + appropriately for library changes. + +2007-02-15 Albert Chu + + * DISCLAIMER.ZRESEARCH: Removed. + + * Makefile.am, freeipmi.spec.in: Removed DISCLAIMER.ZRESEARCH. + +2007-02-14 Albert Chu + + * ipmimonitoring/libipmimonitoring/Makefile.am, + ipmimonitoring/libipmisdrcache/Makefile.am, + ipmiconsole/libipmiconsole/Makefile.am: Compile with -D_REENTRANT. + +2007-02-09 Anand V. Avati + + * ipmi-chassis/ipmi-chassis.8.pre.in: added missing file + * ipmi-chassis/src/*: intermediary commit with bugfixes + +2007-02-09 Anand V. Avati + + ipmi-chassis - intermediate commit with --get-capabilities + support + + * ipmi-chassis/*: command line tool for IPMI chassis functionality + * configure.ac: updated + * Makefile.am: updated + * libfreeipmi/src/ipmi-chassis-cmds.c: + * libfreeipmi/src/udm/ipmi-chassis-cmds.c: added missing commands + * libfreeipmi/include/freeipmi/ipmi-chassis-cmds.h: + * libfreeipmi/include/freeipmi/udm/ipmi-chassis-cmds-udm.h: + prototyped missing commands + +2007-02-06 Albert Chu + + * ipmimonitoring/src/libipmisdrcache/Makefile.am: Don't install + libipmisdrcache. + +2007-02-05 Albert Chu + + * freeipmi.spec.in: Add ipmimonitoring sdr cache directory. + +2007-02-05 A Balamurugan + + * ipmi-pef/src/ipmi-pef.h: new file. + * ipmi-pef/src/Makefile.am: updated. + * ipmi-pef/src/ipmi-pef-argp.[ch], ipmi-pef/src/ipmi-pef.c: + removed globals. + +2007-02-05 Albert Chu + + * freeipmi.spec.in: Add ipmimonitoring docs. + +2007-02-02 Albert Chu + + * ipmi-sel/ipmi-sel.8.pre.in, ipmi-sensors/ipmi-sensors.8.pre.in: + Fix typos. + + * ipmi-sel/src/ipmi-sel-argp.c, + ipmi-sensors/src/ipmi-sensors-argp.c: Fix argp options order. + +2007-02-01 Albert Chu + + * ipmi-raw/src/ipmi-raw.c (string2bytes, ipmi_raw_stream): Pass + state_data to string2bytes from ipmi_raw_stream. Fix memory + management issue. + +2007-01-31 Albert Chu + + * common/src/ipmi-common.c, common/src/ipmi-common.h + (ipmi_disable_coredump): New function. + + * bmc-config/src/bmc-config.c, bmc-info/src/bmc-info.c, + ipmi-pef/src/ipmi-pef.c, ipmi-sel/src/ipmi-sel.c, + ipmi-sensors/src/ipmi-sensors.c (_disable_coredump, main): Use new + common function. Remove unnecessary includes. + + * ipmi-locate/src/ipmi-locate.c (main): Cleanup for consistency + with other tools. + + * Makefile.am: Add COPYING.ipmimonitoring and + DISCLAIMER.ipmimonitoring to dist. + + * ipmimonitoring/src/libipmimonitoring/ipmi_monitoring.c + (ipmi_monitoring_bitmask_string), + ipmimonitoring/src/libipmimonitoring/ipmi_monitoring_sensor_reading.c + (_get_digital_sensor_bitmask_type): Fix warnings. + + * ipmi-sel/src/ipmi-sel-wrapper.h, ipmi-sel/src/ipmi-sel-wrapper.c + (get_sel_record): Cleaned up API. + + * ipmi-sel/src/ipmi-sel-wrapper.h, ipmi-sel/src/ipmi-sel-wrapper.c + (destroy_sel_record): New function. + + * ipmi-sel/src/ipmi-sel.c (display_sel_records): Use adjusted API. + + * bmc-config/src/: Re-architect to remove globals. + +2007-01-30 Albert Chu + + * bmc-config/: Continue re-architecture w/ state data. + +2007-01-29 Albert Chu + + * COPYING.ipmimonitoring, DISCLAIMER.ipmimonitoring, configure.ac, + Makefile.am, freeipmi.spec.in, ipmimonitoring/: Add ipmimonitoring + code. + + * ipmiconsole/src/libipmiconsole/Makefile.am: Remove unneeded + compile options. + +2007-01-26 Albert Chu + + * bmc-config/: Re-architect for most of bmc-config to support + fatal and non-fatal errors, necessary for later hostrange support. + Fixed various bugs along the way. + + * bmc-config/src/bmc-validate.h, bmc-config/src/bmc-validate.c: + New files. + + * bmc-config/src/: Use new common validate functions throughout + code. Various continued code cleanup. + +2007-01-24 Albert Chu + + * bmc-config/: Continue cleanup and re-architecture. + + * bmc-config/src/bmc-argp.h: Renamed to bmc-config-argp.h for + consistency. + + * bmc-config/src/bmc-argp.c: Renamed to bmc-config-argp.c for + consistency. + +2007-01-23 Albert Chu + + * bmc-config/src/bmc-types.h: Move to bmc-config.h. File is now + removed. + + * bmc-config/src/bmc-lan-channel-section.h, + bmc-config/src/bmc-lan-conf-auth-section.h, + bmc-config/src/bmc-lan-conf-misc-section.h, + bmc-config/src/bmc-lan-conf-section.h, + bmc-config/src/bmc-lan-conf-security-keys-section.h, + bmc-config/src/bmc-user-sections.h, + bmc-config/src/bmc-rmcpplus-conf-privilege-section.h, + bmc-config/src/bmc-serial-channel-section.h, + bmc-config/src/bmc-serial-conf-section.h, + bmc-config/src/bmc-pef-conf-section.h, + bmc-config/src/bmc-sol-conf-section.h, + bmc-config/src/bmc-misc-section.h: New files. + + * bmc-config/src/bmc-argp.h: Renamed to bmc-config-argp.h for + consistency. + + * bmc-config/src/bmc-argpc.: Renamed to bmc-config-argp.c for + consistency. + + * libfreeipmi/include/freeipmi/ipmi-error.h: Add forgotten + include. + + * bmc-config/: Continue cleanup and re-architecture. + +2007-01-22 Albert Chu + + * ipmi-raw/: Cleanup/re-architect for later hostrange support. + + * bmc-info/src/bmc-info.h, ipmi-sensors/src/ipmi-sensors.h, + ipmi-sel/src/ipmi-sel.h: New files. + + * bmc-info/src/Makefile.am, ipmi-sensors/src/Makefile.am, + ipmi-sel/src/Makefile.am: Update for new files respectively. + + * bmc-info/, ipmi-sensors/, ipmi-raw/ ipmi-sel/: Continue + cleanup/re-architecture. + + * common/src/argp-common.h: Add missing header file. + + * bmc-config/src/bmc-argp.h, bmc-config/src/bmc-checkout.h, + bmc-config/src/bmc-commit.h, bmc-config/src/bmc-parser.h: New + files. + + * bmc-config/: Cleanup for consistency w/ other tools. + +2007-01-21 Albert Chu + + * bmc-info/src/bmc-info.c: Rename 'flags' to 'debug_flags'. + + * ipmi-sel/, ipmi-sensors/: Cleanup/re-architect for later + hostrange support. + +2007-01-20 Albert Chu + + * libfreeipmi/src/udm/ipmi-udm.c, + libfreeipmi/include/freeipmi/udm/ipmi-udm.h (ipmi_open_outofband): + Make char parameters const. + + * bmc-info/src/bmc-info.c (main): Fix corner case. + +2007-01-20 Dmitry Frolov + + * libfreeipmi/src/ipmi-openipmi-api.c: Fix typo. + +2007-01-12 Albert Chu + + * bmc-info/src/bmc-info.c: Cleanup/re-architect for later + hostrange support. + + * bmc-config/src/bmc-config.c, bmc-info/src/bmc-info.c, + ipmi-pef/src/ipmi-pef.c, ipmi-raw/src/ipmi-raw.c, + ipmi-sel/src/ipmi-sel.c, ipmi-sensors/src/ipmi-sensors.c + (_disable_coredump): Make function static. + +2007-01-09 Albert Chu + + * bmc-info/src/bmc-info.c (display_channel_info): Fix protocol + type output bug. + +2007-01-08 Albert Chu + + * libfreeipmi/src/udm/ipmi-udm.c (IPMI_SESSION_TIMEOUT): Change + default to 20 seconds. + +2006-12-29 Albert Chu + + * ipmi-pef/src/ipmi-pef.c, ipmi-sel/src/ipmi-sel.c, + ipmi-sensors/src/ipmi-sensors.c: Remove unused exit_status global. + +2006-12-28 Albert Chu + + * ipmipower/ipmipower.8.in: Add some extra powerman info. + +2006-12-15 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h, + libfreeipmi/include/freeipmi/ipmi-device-global-cmds.h, + libfreeipmi/include/freeipmi/udm/ipmi-udm.h: Include stdint.h. + + * ipmiconsole/src/libipmiconsole/ipmiconsole.h: Add g++ + compatibility definitions. + + * Globally remove HAVE_STDINT_H. + + * libfreeipmi/include/: Various header file cleanup. + + * Applied FreeBSD OpenIPMI support patch from Dmitry Frolov + . + + * configure.ac: Search for linux/ipmi.h and sys/ipmi.h. + + * libfreeipmi/src/ipmi-openipmi-api.c: Load and use appropriate + headers when available. + + * ipmi-sensors/src/ipmi-sensors.c (init_sdr_cache, run_cmd_args), + ipmi-sensors/src/ipmi-sensors-argp.h, + ipmi-sensors/src/ipmi-sensors-argp.c (parse_opt, + ipmi_sensors_argp_parse): Support -Q option. + + * ipmi-sel/src/ipmi-sel.c (init_sdr_cache, run_cmd_args), + ipmi-sel/src/ipmi-sel-argp.h, ipmi-sel/src/ipmi-sel-argp.c + (parse_opt, ipmi_sel_argp_parse): Support -Q option. + + * ipmi-sensors/ipmi-sensors.8.pre.in, ipmi-sel/ipmi-sel.8.pre.in: + Updated with -Q option. + +2006-12-15 Anand Babu + + * libfreeipmi/include/: g++ compatibility definitions. + +2006-12-12 Albert Chu + + * Applied FreeBSD support patch from Dmitry Frolov . + + * freeipmi.spec.in: Added zresearch copying and disclaimer files. + +2006-12-08 Anand Babu + + * common/src/ipmi-sdr-api.c: fixes the "SDR cache creation under + /tmp" bug reported by Tejram Meena . + + * ipmi-sensors/src/ipmi-sensors.c: give proper error message when + cache creation fails. + + * DISCLAIMER.ZRESEARCH and COPYING.ZRESEARCH: newly added. + + * libfreeipmi/src/ipmi-rmcpplus-debug.c + (ipmi_dump_rmcpplus_packet): initialized certain variables to zero + to avoid GCC warning. + +2006-12-07 Albert Chu + + * common/src/argp-common.h, common/src/argp-common.c, + common/doc/argp-common-outofband.man: Support -P option. Remove + optional argument of -p due to parsing issues. + + * ipmipower/ipmipower.8.in, ipmipower/src/ipmipower_config.c + (ipmipower_config_cmdline_parse, _usage): Replace -P option with + -W option. Support new -P password prompt option. + + * ipmiconsole/ipmiconsole.8.in, + ipmiconsole/src/ipmiconsole_config.c (_cmdline_parse, _usage): + Support -P option. + + * ipmiconsole/libipmiconsole.3.in: New file. + + * configure.ac, ipmiconsole/Makefile.am, freeipmi.spec.in: Support + new manpage. + +2006-12-06 Albert Chu + + * ipmipower/src/error.c (dbg): Do not compile if debugging is not + compiled in. + + * ipmipower/src/ipmipower_powercmd.c (ipmipower_powercmd_queue), + ipmipower/src/ipmipower_util.c (get_rand): Errors from + ipmi_get_random should be error outputs, not debug outputs. + + * ipmiconsole/ipmiconsole.8.in: Fix typo in bmc-config manpage + section. + +2006-11-16 Albert Chu + + * common/src/list.c (list_alloc_aux, list_free_aux): Fix potential + mem-leak issue. + +2006-11-14 Albert Chu + + * common/src/ipmi-sensor-api.c (get_sensor_reading): Narrow corner + case fixes from 2006-11-13. + +2006-11-13 Albert Chu + + * common/src/ipmi-sdr-api.h, common/src/ipmi-sdr-api.c, + ipmi-sel/src/ipmi-sel.c, ipmi-sensors/src/ipmi-sensors.c: Add SDR + debugging. + +2006-11-13 Albert Chu + + * configure.ac: We are now at 0.4.beta0. + + * ipmi-sensors/src/Makefile.am: Add libsdr and libsensor dependency check. + + * common/src/ipmi-sdr-api.c (_get_sdr_full_record): Fix corner case. + + * common/src/ipmi-sensor-api.c (get_sensor_reading): Fix corner cases. + + * include/freeipmi/ipmi-sdr-record-types.h: Add additional analog + format define. + +2006-11-09 Anand Babu + + * doc/freeipmi.texi, doc/freeipmi-faq.texi: updated copying + section as per latest GNU Evaluation Team's recommendation. + + * doc/permissions.texi: removed. + +2006-11-06 Albert Chu + + * doc/freeipmi.texi, doc/freeipmi-faq.texi: Various updates. + +2006-11-06 Albert Chu + + * NEWS: Split news for users and developers. + + * commons/rc/Makefile.am: Dist missing .h files. + +2006-11-06 Anand V. Avati + + * bmc-config/src/bmc-config-api.c: + free fiid_obj after using to get max_channel_users_id + + * bmc-config/src/bmc-config.c: + free argugments.filename if exists after using it + + * common/src/ipmi-sdr-api.c: + use getpwuid_r in _get_home_directory() instead of getpwuid + to avoid mem leak + + * ipmi-sel/src/ipmi-sel.c: + free sdr_record_list in run_cmd_args after its use + +2006-11-06 Albert Chu + + * Tagged Release-0_3_0_base. + + * Branched Release-0_3_0_branch. + +2006-11-05 Albert Chu + + * ipmipower/src: Move common files to common/src. + + * common/src/Makefile.am, ipmipower/src/Makefile.am: Update for + new common files library. + + * ipmiconsole/: New library and code. + + * doc/freeipmi.texi, Makefile.am, configure.ac, freeipmi.spec.in: + Updated appropriately for new ipmiconsole code. + +2006-11-03 Albert Chu + + * ipmipower/src/Makefile.am, ipmiping/src/Makefile.am, + rmcpping/src/Makefile.am, bmc-watchdog/src/Makefile.am, + bmc-info/src/Makefile.am, doc/examples/Makefile.am, + ipmi-locate/src/Makefile.am, ipmi-pef/src/Makefile.am, + ipmi-raw/src/Makefile.am, ipmi-sel/src/Makefile.am, + ipmi-sensors/src/Makefile.am: Cleanup. + +2006-11-02 Albert Chu + + * ipmipower/ipmipower.8.in, ipmipower/ipmipower.conf.5.in: Fix + manpage typos. + + * doc/freeipmi.texi: Update with new ipmipower options. + + * NEWS: Updated with 0.3.0 additions. + + * AUTHORS: Added Anand Avati. + + * doc/freeipmi-faq.texi: Added LLNL as co-maintainer. + +2006-11-02 A Balamurugan + + * doc/freeipmi.texi, ipmi-sel/ipmi-sel.8.pre.in, + ipmi-sensors/ipmi-sensors.8.pre.in: updated for + --sdr-cache-directory argument addition. + +2006-11-02 A Balamurugan + + * common/src/ipmi-sdr-api.c (get_sdr_cache_filename, + flush_sdr_cache_file): added user defined sdr cache directory. + + * ipmi-sel/src/ipmi-sel.c (init_sdr_cache, run_cmd_args): updated + according to above function call changes. + + * ipmi-sel/src/ipmi-sensors.c (init_sdr_cache, run_cmd_args): like + wise. + + * ipmi-sel/src/ipmi-sel-argp.c, + ipmi-sensors/src/ipmi-sensors-argp.c: added --sdr-cache-directory + argument. Fixed bug #18034. + +2006-11-02 Anand Babu + + * doc/freeipmi.texi: added cross reference for bmc-config command + line options under bmc-autoconfig section. + +2006-11-01 A Balamurugan + + * ipmi-pef/src/Makefile.am: updated. + + * ipmi-pef/src/ipmi-pef-argp.[ch]: added --checkout and --commit + options. + + * ipmi-pef/src/ipmi-pef-wrapper.[ch] (get_event_filter_table, + set_event_filter_table, get_number_of_event_filters, + get_evt_list): new functions. + + * ipmi-pef/src/ipmi-pef.c (checkout_pef_evt, commit_pef_evt): new + functions. + + * ipmi-pef/src/ipmi-pef.c (run_cmd_args): updated. + + * libfreeipmi/src/udm/ipmi-pef-and-alerting-cmds-udm.c + (ipmi_cmd_set_pef_configuration_parameters_event_filter_table): + ipmi_cmd_set_event_filter_table() renamed. + + * libfreeipmi/src/udm/ipmi-pef-and-alerting-cmds-udm.c + (ipmi_cmd_set_pef_configuration_parameters_event_filter_table_data1_): + ipmi_cmd_set_filter_table_data1_() renamed. + +2006-10-22 Anand V. Avati + + * common/src/argp-common.c: -p takes optional password argument. + If not given, does getpass() + +2006-10-20 Albert Chu + + * ipmipower/: Added support for --wait-until-on option. + + * ipmipower/src/ipmipower_prompt.c (_cmd_power): Support range of hosts + that can be passed to power operations. + +2006-10-16 Albert Chu + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband): Fix + segfault corner case. + +2006-10-14 Albert Chu + + * freeipmi.spec.in: Add ipmi-pef. + +2006-10-06 A Balamurugan + + * ipmi-pef/Makefile.am, ipmi-pef/ipmi-pef.8.pre.in, + ipmi-pef/src/Makefile.am, ipmi-pef/src/ipmi-pef-argp.[ch], + ipmi-pef/src/ipmi-pef-wrapper.[ch], ipmi-pef/src/ipmi-pef.c: new + files. + + * Makefile.am, configure.ac: updated. + +2006-10-02 Albert Chu + + * bmc-config/src/: Fix non-return value calls to strdup. + +2006-09-26 Anand V. Avati + + * bmc-config/bmc-autoconfig: command line arguments are now + handled (passwd on to bmc-config) + +2006-09-19 Albert Chu + + * ipmi-sel/: Fix trigger reading output. Add SDR flush cache option. + + * ipmi-sel/ipmi-sel.8.pre.in, doc/freeipmi.texi: Update with new + option appropriately. + +2006-09-14 Albert Chu + + * ipmipower/src/ipmipower_config.c + (ipmipower_config_cmdline_parse): Add missing -q parse option. + + * configure.ac: Define HAVE_GETOPT_LONG if found. + + * libfreeipmi/src/ipmi-sensor-types-spec.c: Rename "Board" to + "Module/Board" to match spec. + +2006-09-10 Dmitry Frolov + + * FreeIPMI 0.3.X FreeBSD support added. + +2006-09-13 Albert Chu + + * bmc-config/src: Remove "No_Access" support for lan channel and + serial channel configuration. It is not a valid privilege for + setting/getting. + +2006-09-09 Albert Chu + + * ipmipower/: Added support for --retry-wait-timeout option. + +2006-09-08 Albert Chu + + * bmc-config/src/bmc-config-api.c: Fix rmcpplus cipher suite + privilege interpretation issue. + + * bmc-config/src/bmc-user-sections.c (get_user_section): Remove + checkout of "Lan_Session_Limit" and "Serial_Session_Limit" keys + until a solution can be determined for how to retrieve the current + session limit. + + * doc/freeipmi.texi: Adjust bmc config output appropriately. + + * ipmipower/: Add support for --wait-until-off option. + +2006-09-06 Albert Chu + + * bmc-config/src/bmc-user-sections (enable_user_diff): Implement + appropriately for errata 3 changes. + + * bmc-config/src/bmc-pef-conf-section.c (pef_control_commit): Fix + bug. + +2006-09-05 Albert Chu + + * bmc-config/src/bmc-user-sections.c (enable_user_checkout): + Slightly alter logic. + +2006-09-05 Ingo van Lil (inguin@gmx.de) + + * bmc-config/src/bmc-misc-section.c (bmc_misc_section_get): Set + flag to BMC_CHECKOUT_KEY_COMMENTED_OUT_IF_VALUE_EMPTY. + + * bmc-config/src/bmc-sol-conf-section.c + (character_accumulate_interval_commit, + character_send_threshold_commit, sol_retry_count_commit, + sol_retry_interval_commit): Fix commit bug. + + * libfreeipmi/src/ipmi-pef-and-alerting-cmds.c: Fix misnamed + fields in + tmpl_cmd_set_pef_configuration_parameters_pef_startup_delay_rq. + +2006-09-04 Albert Chu + + Various compile warning fixes. + +2006-09-04 Ingo van Lil (inguin@gmx.de) + + * libfreeipmi/src/udm/ipmi-pef-and-alerting-cmds-udm.c: Fix + incorrect NetFNs. + + * libfreeipmi/src/ipmi-pef-and-alerting-cmds.c: Fix parameter + revision inconsistency with other templates. + +2006-08-31 Albert Chu + + * ipmipower/src/ipmipower_powercmd.c (_check_open_session_error): + Fix corner cases. + + * libfreeipmi/include/freeipmi/ipmi-comp-code-spec.h, + libfreeipmi/src/ipmi-error.c (ipmi_strerror_r): Update w/ new + completion codes based on IPMI 2.0 Errata 3. + + * libfreeipmi/src/ipmi-sensor-and-event-code-tables.c + (ipmi_sensor_type_code_13_desc): Updated with new strings. + + * libfreeipmi/include/ipmi-messaging-support-cmds.h, + libfreeipmi/src/ipmi-messaging-support-cmds.c: Support user id + enabled/disabled detection in get user access command. + + * bmc-config/src/: Support enable user id checkout due to errata + change to get user access command. + +2006-08-30 Albert Chu + + * ipmipower/src/ipmipower_check.c + (ipmipower_check_open_session_response_privilege): Fix privilege + check corner case. + +2006-08-27 A Balamurugan + + * common/src/common-utils.[ch], + common/src/ipmi-sdr-cache-reads.[ch], + common/src/ipmi-sdr-cache-writes.[ch]: new files. + + * common/src/ipmi-sdr-api.c: reworked according to new sdr cache + format. + + * common/src/Makefile.am: updated. + + * libfreeipmi/src/ipmi-ssif-api.c: fixed + IPMI_SSIF_MULTI_PART_WRITE_END_SMBUS_CMD value to 0x08. + + * ipmi-sensors/src/sensors-very-verbose-display.c + (sensors_display_very_verbose_oem_record): displays oem_data of + oem_data_length. + + * ipmi-sensors/src/ipmi-sensors-utils.c (str2long, str2ulong, + str2int, str2uint): moved to common/src/common-utils.[ch] + +2006-08-13 Albert Chu + + * ipmipower/src/ipmipower_powercmd.c + (ipmipower_powercmd_process_pending): Fix corner case. Do not + modify timeout if no pending commands exist. + + * ipmipower/src/ipmipower_prompt.c + (ipmipower_prompt_process_cmdline): Fix tabbing. + + * doc/freeipmi.texi: Update with new bmc-config options and + ipmi-sensors info. + +2006-08-12 Albert Chu + + * bmc-config/: Support multiple invocations for --section option. + + * bmc-config/: Support --listsections option. + +2006-08-11 Albert Chu + + * ipmipower/src/ipmipower_config.c (ipmipower_config_setup): Call + secure_malloc only if in non-debug mode. + + * bmc-config/: Support --section option. + +2006-08-10 Albert Chu + + * ipmipower/src/ipmi-wrappers.h, ipmipower/src/ipmi-wrappers.c + (Fiid_obj_clear): Return void instead of int8_t. + + * ipmipower/src/ipmi-wrappers.h, ipmipower/src/ipmi-wrappers.c + (Fiid_obj_set_data): New function. + + * ipmipower/src/ipmi-wrappers.h, ipmipower/src/ipmi-wrappers.c + (Fiid_obj_clear_field): Return void instead of int8_t. + + * ipmipower/src/ipmipower_check.c + (ipmipower_check_rakp_2_key_exchange_authentication_code): Add + supermicro IPMI 2.0 workarounds. + +2006-08-09 Albert Chu + + * bmc-config/src/: Change section names with "LAN" to "Lan" for + backwards consistency. + + * bmc-config/src/bmc-commit.c (bmc_commit_file): Add section to + error output. + + * libfreeipmi/src/ipmi-messaging-support-cmds.c + (fill_cmd_set_channel_access), + libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c + (ipmi_cmd_set_channel_access): Fix parameter check bug. + + * Makefile.am: Fix distcheck. + + * ipmi-sensors/src/Makefile.am: Fix install bug. + + * freeipmi.spec.in: Fix packaging bug. + + bmc-config various fixes + + * bmc-config/src/: Support multiple -k values on the command line; + + * bmc-config/src/: Globally check value of malloc, calloc, and strdup. + + Re-support -k and -f options on the command line at the same time. + + * bmc-config/src/bmc-commit.c (bmc_keypair_feed): New function. + + * bmc-config/src/bmc-commit.c (bmc_commit_file): Support keypairs + and filenames both on the commandline. + + * bmc-config/src/bmc-argp.c (args_validate): Fix check of only + one of -k and -f for when you --commit. + +2006-08-08 Albert Chu + + ipmi-sensors and ipmi-sel convenience code cleanup and re-org in + preparation for code fixes in ipmi-sel. + + * ipmi-sensors/src/ipmi-sdr-api.h, + ipmi-sensors/src/ipmi-sdr-api.c: Move to common/src/ as common + lib: + + * ipmi-sensors/src/Makefile.am, common/src/Makefile.am: Adjust + appropriately for use. + + * common/src/ipmi-sensor-api.c, common/src/ipmi-sensor-api.h, + common/src/ipmi-sdr-api.h, common/src/ipmi-sdr-api.c: Move SDR + related defines and functions from ipmi-sensor-api.[ch] to + ipmi-sdr-api.[ch]. General code cleanup throughout. + + * common/src/ipmi-sdr-api.c: Globally add more debugging info. + + * common/src/ipmi-sdr-api.c (get_sdr_cache_filename): Fix sdr + cache filename corner case which can exist in environments with + NFS mounted home directories. + + * libfreeipmi/src/ipmi-locate-acpi-spmi.c + (ipmi_physical_address_valid): New function. + + * libfreeipmi/src/ipmi-locate-acpi-spmi.c (ipmi_ioremap): Use + ipmi_physical_address_valid appropriately. + + * ipmipower/: Begin support of --supermicro-2-0-session option. + +2006-08-07 Albert Chu + + * ipmi-sensors/ipmi-sensors.8.pre.in: Add debug flag option. + + * ipmi-sensors/src/ipmi-sensors.c (main): Add OPENIPMI driver + support. + + * ipmi-sensors/src/sensors-simple-display.c + (sensors_display_simple_event_only_record): Removed unused function. + + * ipmi-sensors/src/ipmi-sensors-argp.c, + ipmi-sensors/src/ipmi-sensors-argp.h, + ipmi-sensors/src/ipmi-sensors-utils.c, + ipmi-sensors/src/ipmi-sensors-utils.h, + ipmi-sensors/src/ipmi-sensors.c: Fix unsigned int use bug that + broke --sensors option. Use unsigned ints for sensors list and + sensors list length. + + * ipmi-sensors/src/ipmi-sensors.c (display_sensor_list, + display_group_sensors): Don't get sensor reading unless it's + required by output choice. + + * configure.ac, Makefile.am, freeipmi.spec.in, fish/: Remove fish + and all fish related code. + + * bmc-config/src/bmc-user-sections.c: Replace "LAN" with "Lan" for + consistency and backwards compatability. + +2006-08-08 A Balamurugan + + * ipmi-sensors/src/sensors-simple-display.c + (sensors_display_simple_full_record): displays 2 decimals for + double values. + + * ipmi-sensors/src/sensors-verbose-display.c + (sensors_display_verbose_compact_record): fixed invalid value + display bug. + + * ipmi-sensors/src/sensors-very-verbose-display.c + (sensors_display_very_verbose_compact_record): like wise. + +2006-08-08 A Balamurugan + + * ipmi-sensors/src/ipmi-sensors-utils.c (round_double2): fixed a + bug. + + * ipmi-sensors/src/sensors-simple-display.c: included + ipmi-sensors-utils.h. + +2006-08-08 A Balamurugan + + * ipmi-sensors/src/ipmi-sdr-api.c (load_sdr_cache): fixed improper + count calculation. + + * ipmi-sensors/src/ipmi-sensors-utils.[ch] (round_double2): new + function. + + * ipmi-sensors/src/sensors-simple-display.c + (sensors_display_simple_full_record, + sensors_display_simple_compact_record): numbers are rounded to 2 + decimal places. + +2006-08-07 A Balamurugan + + * ipmi-sensors/Makefile.am, ipmi-sensors/ipmi-sensors.8.pre.in, + ipmi-sensors/src/Makefile.am, ipmi-sensors/src/ipmi-sdr-api.[ch], + ipmi-sensors/src/ipmi-sensors-argp.[ch], + ipmi-sensors/src/ipmi-sensors-utils.[ch], + ipmi-sensors/src/ipmi-sensors.c, + ipmi-sensors/src/sensors-simple-display.[ch], + ipmi-sensors/src/sensors-verbose-display.[ch], + ipmi-sensors/src/sensors-very-verbose-display.[ch]: new files. + + * Makefile.am, configure.ac: updated for initial C version of + ipmi-sensors. + +2006-08-04 Albert Chu + + * common/src/ipmi-sensor-api.c (ipmi_get_threshold_message_list): + Redo due to interpretation of get sensor reading command. + + * bmc-config/src/bmc-commit.c (bmc_commit_file): Continue + committing fields in the same section even if a previous one + fails. + +2006-08-03 Albert Chu + + Revert section failure flag implementation from 2006-08-02 in + favor of a different solution. + + * bmc-config/src/bmc-sections.h: Remove flags + BMC_SECTION_FAILURE_FLAG and + BMC_NO_CHECKOUT_ON_EARLIER_SECTION_FAILURE. + + * bmc-config/src/bmc-user-sections.c (username_checkout): Remove + userpassword test for section checkoutability. + + * bmc-config/src/bmc-user-sections.c (get_user_section): Remove + BMC_SECTION_FAILURE_FLAG and + BMC_NO_CHECKOUT_ON_EARLIER_SECTION_FAILURE support. + + * bmc-config/src/bmc-checkout.c (bmc_checkout_file): Remove + BMC_SECTION_FAILURE_FLAG and + BMC_NO_CHECKOUT_ON_EARLIER_SECTION_FAILURE flag support. + + Alter bmc-config commit behavior + + * bmc-config/src/bmc-commit.c (bmc_commit_file): Continue + committing fields even if a previous one fails. + + Misc + + * freeipmi.spec.in: Update for librrary version and autoconfig. + + * bmc-config/src/bmc-sections.h: Clean up junk. + +2006-08-02 Albert Chu + + Don't checkout user id sections if a particular user id isn't + supported. + + * bmc-config/src/bmc-config-api.c (get_bmc_username): Copy "NULL" + after the IPMI call to ensure the username is readable. + + * bmc-config/src/bmc-sections.h: New flags + BMC_SECTION_FAILURE_FLAG and + BMC_NO_CHECKOUT_ON_EARLIER_SECTION_FAILURE. + + * bmc-config/src/bmc-user-sections.c (username_checkout): Add + userpassword test for section checkoutability. + + * bmc-config/src/bmc-user-sections.c (password20_checkout): Use + userid in check password call. + + * bmc-config/src/bmc-user-sections.c (get_user_section): Support + BMC_SECTION_FAILURE_FLAG and + BMC_NO_CHECKOUT_ON_EARLIER_SECTION_FAILURE. + + * bmc-config/src/bmc-checkout.c (bmc_checkout_file): Support + BMC_SECTION_FAILURE_FLAG and + BMC_NO_CHECKOUT_ON_EARLIER_SECTION_FAILURE flag. + + Misc + + * freeipmi.spec.in: Fix for new library version and bmc-autoconfig. + + * bmc-config/src/bmc-sections.h: Remove junk code. + +2006-08-02 Albert Chu + + * bmc-config/src/bmc-commit.c (bmc_commit_file): Output message on error. + + * bmc-config/src/bmc-lan-conf-section.c + (bmc_lan_conf_section_get): Fix Vlan ID string. + + * libfreeipmi/src/ipmi-openipmi-api.c: Minor code cleanup. + +2006-08-01 Albert Chu + + * fish/src/fish-argp.c (fi_argp_parse), fish/src/ipmi-wrapper.c + (fi_ipmi_close, fi_ipmi_close, fi_get_ipmi_device), + fish/src/scm-procedures.c (ex_ipmi_open): Minor temporary fixes to + make ipmi-sensors work again. + +2006-07-30 Albert Chu + + * freeipmi.spec.in: Re-architect packages. + +2006-07-29 Albert Chu + + * libfreeipmi/src/ipmi-ssif-api.c (_ipmi_ssif_cmd_write, + _ipmi_ssif_cmd_read, ipmi_ssif_cmd): New functions. + + * bmc-watchdog/src/: Support ssif driver, --driver-type option, + --driver-address option, and --driver-device option. + + * bmc-watchdog/bmc-watchdog.8.in, doc/freeipmi.texi: Updated with + new options. + + * libfreeipmi/, bmc-watchdog/: Change locate structure + bmc_i2c_dev_name to driver_device and base_address to + driver_address globally for consistency. Adjust kcs, ssif, + openipmi apis for consistency. + +2006-07-28 Albert Chu + + Various cleanup + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c (_ipmi_lan_dump, + _ipmi_lan_dump_rq): Rework request dump output, since calculations + won't have a trailer. + + * libfreeipmi/src/ipmi-kcs-api.c: Add forgotten headers. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_inband): Fix + ssif memcopying bug. + + * libfreeipmi/srd/udm/ipmi-udm-device.h: Remove locate_info. Not + necessary to store in device. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_inband): Adjust for + device structure change. + + Add OpenIPMI as a possibly driver to use with FreeIPMI + + * libfreeipmi/src/ipmi-openipmi-api.c, + libfreeipmi/include/freeipmi/ipmi-openipmi-api.h, + libfreeipmi/srd/udm/ipmi-openipmi-api-udm.c, + libfreeipmi/include/freeipmi/udm/ipmi-openipmi-api-udm.h: New + files. + + * libfreeipmi/src/Makefile.am, libfreeipmi/src/udm/Makefile.am, + libfreeipmi/include/Makefile.am: Adjust for new files + appropriately. + + * libfreeipmi/src/udm/ipmi-udm-device.h, + libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_inband, + ipmi_close_device, _ipmi_inband_close, _ipmi_inband_free, + ipmi_cmd_raw, ipmi_cmd): Add openipmi driver support. + + * libfreeipmi/src/ipmi-locate-acpi-spmi.c: Up interface count. + + * common/doc/argp-common-inband.man, common/src/argp-common.h, + common/src/argp-common.c: Support openipmi driver type. + + * bmc-config/, bmc-info/, fish/, ipmi-raw/, ipmi-sel/: Support + openipmi driver. + + Add more debugging + + * common/src/err-wrappers.h (ERR_LOG): New debugging macro. + + * libfreeipmi/src/ipmi-kcs-api.c, libfreeipmi/src/ipmi-ssif-api.c, + libfreeipmi/src/ipmi-openipmi-api.c: Employ new debugging macro. + +2006-07-27 Albert Chu + + Convert mode parameters to flag parameters + + * libfreeipmi/src/udm/ipmi-udm-device.h, + libfreeipmi/include/freeipmi/udm/ipmi-udm.h: Convert parameter + mode into flags parameter. Adjust definitions appropriately. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband, + ipmi_open_inband): Adjust for use of flags parameter. + + * bmc-config/, bmc-info/, doc/udm-test/, fish/src/, ipmi-raw/, + ipmi-sel/: Adjust for new flag use appropriately. + + * libfreeipmi/include/freeipmi/ipmi-kcs-api.h, + libfreeipmi/include/freeipmi/ipmi-ssif-api.h: Convert parameter + mode into flags parameter. Adjust definitions appropriately. + + * libfreeipmi/src/ipmi-kcs-api.c, libfreeipmi/src/ipmi-ssif-api.c: + Adjust for flags changes appropriately. + + * bmc-watchdog/: Adjust for flags changes appropriately. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_inband): Adjust for + use of kcs and ssif flags. + + Add support for debug dump. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h + (IPMI_FLAGS_DEBUG_DUMP): New define. + + * libfreeipmi/src/ipmi-lan-interface-udm.c (_ipmi_lan_dump, + _ipmi_lan_dump_rq, _ipmi_lan_dump_rs): New functions. + + * libfreeipmi/src/ipmi-udm.c (ipmi_cmd), + libfreeipmi/src/ipmi-lan-interface-udm.c (_ipmi_lan_cmd_send, + _ipmi_lan_cmd_recv): Add debug dump support. + + * common/src/argp-common.h, common/src/argp-common.c: Support + debug option. + + * bmc-config/: Remove internal debug flag option. Convert to use + argp-common debug option. + + * bmc-config/, bmc-info/, fish/, ipmi-raw/, ipmi-sel/: When + debugging is turned on, turn on dump output. + + * common/doc/argp-common-debug.man: New file. + + * common/doc/Makefile.am: Update for new file. + + * bmc-config/, bmc-info/, ipmi-sel/, ipmi-raw/, fish/: Update + manpages with debug option. + +2006-07-27 A Balamurugan + + * fish/src/ipmi-wrapper.c (fi_ipmi_open): fixed improper argument + passing to ipmi_open_inband(). + +2006-07-27 A Balamurugan + + * libfreeipmi/include/freeipmi/ipmi-locate.h: removed + locate_driver in struct ipmi_locate_info. + + * ipmi-locate/src/ipmi-locate.c (display_ipmi_locate_info), + libfreeipmi/src/ipmi-locate-dmidecode.c (dmi_table), + libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_inband): Adjusted struct + ipmi_locate_info change accordingly. + +2006-07-27 A Balamurugan + + * ipmi-locate/src/ipmi-locate.c (display_ipmi_locate_info): + displays 'DMIDECODE' locate_driver_type. + +2006-07-27 A Balamurugan + + * bmc-config/bmc-config.8.pre.in: removed unclosed double quote. + + * ipmi-locate/src/ipmi-locate.c: Fixed bug in return value check + of ipmi_locate_*_get_dev_info calls. + + * libfreeipmi/src/ipmi-locate.c (ipmi_locate): clears linfo before + calling probing functions. + +2006-07-27 Albert Chu + + * fish/scripts/bmc-autoconfig/: Removed all files. + + * bmc-config/bmc-autoconfig/Makefile.am: Use $(localstatedir) + + * libfreeipmi/src/udm/Makefile.am: Dist ipmi-udm-device.h. + + * libfreeipmi/Makefile.am: Fix ipckey installation. + + * bmc-watchdog/Makefile.am: Fix distcheck. + +2006-07-27 Anand V. Avati + + * bmc-config/bmc-autoconfig: moved from fish/scripts/bmc-autoconfig + + * bmc-config/bmc-autoconfig/bmc-autoconfig.8: man page for + bmc-autoconfig + +2006-07-26 Albert Chu + + * common/src/argp-common.c (init_common_cmd_args): Make default + authentication type MD5 + + * common/doc/argp-common-authtype.man: Make default authentication + type MD5. + + * common/doc/argp-common-inband.man: Add register spacing option. + + Various cleanup. + + * libfreeipmi/include/freeipmi/ipmi-locate.h + (IPMI_INTERFACE_MAX, IPMI_INTERFACE_LAST): Removed macro. + + * libfreeipmi/src/ipmi-locate-acpi-spmi.c + (ipmi_acpi_get_spmi_table): Adjust appropriately. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h + (IPMI_POLL_INTERVAL_USECS): Removed macros. + + * libfreeipmi/src/udm/ipmi-udm.c: Move necessary macros here. + + * libfreeipmi/include/freeipmi/ipmi-smic-interface.h: Remove file. + + * libfreeipmi/src/ipmi-smic-interface.c: Bring in appropriate macros. + + * libfreeipmi/include/freeipmi/ipmi-smic-api.h: New file. + + * libfreeipmi/src/ipmi-smic-interface.c: Rename to ipmi-smic-api.c. + + * libfreeipmi/: Adjust appropriate Makefiles files. + + * doc/authors.texi, doc/freeipmi.texi, ipmiping/ipmiping.8.in, + rmcpping/rmcpping.8.in: Fixes and updates. + + Add backwards compatability fixes in bmc-config. + + * bmc-config/src/bmc-sections.h (BMC_DO_NOT_CHECKOUT): New flag. + + * bmc-config/src/bmc-user-sections.c (get_user_section): Support + new LAN_Enable_Restrict_to_Callback key and + Serial_Enable_Restrict_to_Callback key for backwards + compatability. Both cannot be checked out. + + * bmc-config/src/bmc-checkout.c (bmc_checkout_file): Support + BMC_DO_NOT_CHECKOUT flag. + + * bmc-config/src/bmc-serial-conf-section.c + (bmc_serial_conf_section_get): Support new Call_Retry_Time key for + backwards compatability. It cannot be checked out. + +2006-07-25 Albert Chu + + * common/src/err-wrappers.h (__IPMI_TRACE_ERRMSG_CLEANUP): New + macro. + + * common/src/err-wrappers.h (ERR_IPMI_CMD_CLEANUP): Add errmsg support. + + * doc/freeipmi-faq.texi: Minor tweaks and updates. + + * configure.ac: Update lib version. + + * common/src/argp-common.h, common/src/argp-common.c + (common_parse_opt): Make default authentication type MD5. Remove + OEM authentication type. + + * bmc-config/src/bmc-sol-conf-section.c + (bmc_sol_conf_section_get): Have SOL port commented out on + checkout by default. + +2006-07-24 Albert Chu + + * bmc-config/src/bmc-user-section.c (get_user_section, + enable_user_checkout): Comment out the "Enable User" option as + default behavior. + + * bmc-config/src/bmc-user-section.c (get_user_section): Remove + "Clear_Password" key. + + * bmc-config/src/bmc-user-section.c (clear_password_checkout, + clear_password_commit, clear_password_diff, + clear_password_validate): Remove functions. + + * libfreeipmi/src/ipmi-locate.c (ipmi_locate): Add back + ipmi_locate_defaults_get_dev_info() to things to try list. + + * bmc-config/src/bmc-config-api.c (set_bmc_enable_user): Add + workaround for return of 0xC7 issue. + +2006-07-24 A Balamurugan + + * ipmi-locate/src/ipmi-locate.c (dmidecode_probe_display): + modified according to api change. + +2006-07-23 A Balamurugan + + * ipmi-locate/src/ipmi-locate.c (dmidecode_probe_display): new + function. + + * ipmi-locate/src/ipmi-locate.c (main): uses dmidecode probing. + + * libfreeipmi/include/freeipmi/ipmi-slave-address-spec.h: uses + 0x42 as IPMI_SSIF_SMBUS_SLAVE_ADDRESS. + + * libfreeipmi/src/ipmi-locate.c (ipmi_locate): removed + ipmi_locate_defaults_get_dev_info() in things_to_try list. + +2006-07-23 Albert Chu + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h, + libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_inband, + ipmi_open_outofband): Re-work API style to be consistent. Pass + hostname to outofband function rahter than sockaddr. + + * libfreeipmi/src/udm/ipmi-lan-interface.c: Adjust code + appropriately. + + * doc/examples/, bmc-config/, bmc-info/, ipmi-raw/, ipmi-sel/: + Adjust appropriately for API changes. + + * ac_gethostbyname_r.m4: New file. + + * configure.ac: Add gethostbyname check. + + * ipmi-sel/src/ipmi-sel-wrapper.c (_parse_sel_record), + libfreeipmi/src/ipmi-locate-defaults.c + (ipmi_locate_defaults_get_dev_info): Fix compiler warnings. + +2006-07-22 Albert Chu + + Hide struct ipmi_device from users in the libfreeipmi API. + + * libfreeipmi/src/udm/ipmi-udm-device.h: New file. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h: Remove struct + ipmi_device. Typedef new ipmi_device_t. Modify udm functions to + return ipmi_device_t. + + * libfreeipmi/: Globally readjust code to take new ipmi_device_t, + check magic numbers, use struct appropriately. + + * fish/, bmc-info/, bmc-config/, ipmi-sel/, ipmi-raw/: Readjust + code appropriately. + + Remove ipmi_locate_info_t typedef. Replace with struct pointer + globally. Re-adjust struct and API to return structure as + parameter, rather than pointer. + + * libfreeipmi/include/freeipmi/ipmi-locate.h, + libfreeipmi/src/ipmi-locate.c (ipmi_locate_destroy): Remove + function. + + * libfreeipmi/include/freeipmi/ipmi-locate.h: Adjust function + prototypes. + + * libfreeipmi/src/ipmi-locate.c, + libfreeipmi/src/ipmi-locate-acpi-spmi.c, + libfreeipmi/src/ipmi-locate-defaults.c, + libfreeipmi/src/ipmi-locate-dmidecode.c, + libfreeipmi/src/ipmi-locate-pci.c, + libfreeipmi/src/ipmi-locate-smbios.c: Adjust code appropriately. + + * libfreeipmi/src/udm/: Adjust code appropriately. + + * bmc-watchdog/, ipmi-locate/: Adjust code appropriately. + +2006-07-21 Albert Chu + + * bmc-config/src/bmc-config.c (main): Close ipmi. + + * bmc-config/src/: Globally alter calls to "fi_" functions, since + fish is no longer used. + + * bmc-config/src/bmc-ipmi-wrapper.h, + bmc-config/src/bmc-ipmi-wrapper.c (fi_get_ipmi_device, + fi_ipmi_open, fi_ipmi_close, get_channel_info_list, + get_sdr_cache_filename, get_lan_channel_number_known, + get_serial_channel_number_known, display_get_device_id, + ipmi_ping): Remove functions and related structs. + + * bmc-config/src/bmc-ipmi-wrapper.h, + bmc-config/src/bmc-ipmi-wrapper.c (get_lan_channel_number, + get_serial_channel_number, get_sol_channel_number): Take + ipmi_device_t as an argument. + + * bmc-config/src: Adjust remaining code appropriately. + + * bmc-config/src/bmc-rmcpplus-conf-privilege-section.c + (bmc_rmcpplus_conf_privilege_section_get): Remove duplicate entry. + + * bmc-config/bmc-config.conf.5.in: Updated with ipmi 2.0 stuff. + + Cleanup fish by removing dead code. + + * fish/src/ipmi-wrapper.h, fish/src/ipmi-wrapper.c + (get_lan_channel_number_known, get_serial_channel_number_known, + display_get_device_id, display_channel_info, + get_channel_info_list): Remove functions. + + * fish/extensions/bmc-info.scm, fish/extensions/bmc-config.scm, + fish/extensions/bc-user-section.scm, + fish/extensions/bc-common.scm, + fish/extensions/bc-lan-conf-auth-section.scm, + fish/extensions/bc-lan-conf-misc-section.scm, + fish/extensions/bc-lan-conf-section.scm, + fish/extensions/bc-lan-conf-security-keys-section.scm, + fish/extensions/bc-lan-serial-channel-section.scm, + fish/extensions/bc-misc-section.scm, + fish/extensions/bc-pef-conf-section.scm, + fish/extensions/bc-rmcpplus-conf-privilege-section.scm, + fish/extensions/bc-section.scm, + fish/extensions/bc-serial-conf-section.scm, + fish/extensions/bc-sol-conf-section.scm, + fish/extensions/sel.scm: Removed files. + + * fish/extensions/Makefile.am: Adjust appropriately. + + * fish/src/scm-procedures.h, fish/src/scm-procedures.c + (ex_cmd_get_device_id_display): Remove functions. + + * fish/src/extension.c (install_new_procedures): Remove + appropriate scheme hooks. + + * fish/bmc-config.conf.5.in: Remove file. + + Other cleanup + + * common/src/ipmi-common.h, common/src/ipmi-common.c + (ipmi_open_free_udp_port, ipmi_error): Removed functions. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband): Adjust + appropriately. + + * fish/src/common.h, fish/src/ipmi-wrapper.c (ipmi_ping): Adjust + appropriately. + + * fish/src/scm-procedures.h, fish/src/scm-procedures.c + (ex_get_bmc_info): Remove function. + + * bmc-info/src/bmc-info.c (display_get_device_id), + fish/src/scm-procedures.c (ex_get_sdr_repository_info, + ex_get_pef_info): Adjust appropriately for ipmi_error() removal . + + * libfreeipmi/src/ipmi-sol-cmds.c: Fix + tmpl_cmd_get_sol_configuration_parameters_sol_payload_port_number_rs + template bug. + + * common/src/argp-common.h, bmc-config/src/bmc-argp.c, + ipmi-raw/src/ipmi-raw-argp.c: Fix help output ordering. + + * libfreeipmi/src/udm/ipmi-rmcpplus-support-and-payload-cmds-udm.c + (ipmi_cmd_set_user_payload_access, + ipmi_cmd_get_user_payload_access): Add dev checks. + + BMC-Config fixes galore + + * Globally use libfreeipmi/include definitions, not hardcoded values. + + * Globally fix indenting/code style to match rest of FreeIPMI. + + * bmc-config/src/bmc-sol-conf-section.c + (character_accumulate_interval_validate): Fix range check. + + * Globally support keyvalue flags. + + * bmc-config/src/bmc-checkout.c (bmc_checkout_file): Use flags to + automatically comment out certain keys. + + * bmc-config/src/bmc-user-sections.c (password20_checkout): Ensure + Password20 is a reasonable checkoutable value. + + * bmc-config/src/bmc-types.h, bmc-config/src/bmc-argp.c: Support + debug option. + + * bmc-config/src/bmc-parser.c (bmc_parser): Output debugging on + debugging only. + + * bmc-config/src/bmc-util.c: Remove file. + + * bmc-config/src/bmc-map.h, bmc-config/src/bmc-map.c: New files. + + * bmc-config/src/Makefile.am: Adjust appropriately. + + * bmc-config/src: Use new common map functions. + + * bmc-config/src/bmc-common.h: Fix autoconf and header use. + + * bmc-config/src/: Use headers consistently across files. + + * bmc-config/src/bmc-misc-section.c, + bmc-config/src/bmc-lan-channel-section.c, + bmc-config/src/bmc-serial-channel-section.c, + bmc-config/src/bmc-map.c: Fix strings for backwards compatability. + +2006-07-20 Albert Chu + + * fish/extensions/sensors-simple-display.scm + (sensors-display-simple): Don't output event sensors. + + * common/src/ipmi-sensor-api.c (get_sensor_reading): Output debug + info when a record isn't supported for sensor readings. + +2006-07-21 A Balamurugan + + * libfreeipmi/src/udm/ipmi-ssif-api-udm.c (ipmi_ssif_cmd_udm): + fixed bug of calling ipmi_ssif_read(). + +2006-07-20 Albert Chu + + * common/src/ipmi-sensor-api.c, common/src/ipmi-sel-api.c, + ipmi-sel/src/ipmi-sel-wrapper.c: Fix compile bugs. + + * libfreeipmi/src/ipmi-sensor-cmds.c (ipmi_get_threshold_message): + Fix backwards logic bug. + + * fish/extensions/sensors-simple-display.scm + (sensors-display-simple-full-record), + fish/extensions/sensors-verbose-display.scm + (sensors-display-verbose-full-record), + fish/extensions/sensors-very-verbose-display.scm + (sensors-display-very-verbose-full-record): Fix output bug. + + * fish/src/scm-procedures.h: Remove lingering sel code. + + Remove ipmi-sel API common lib . + + * common/src/ipmi-sel-api.h, common/src/ipmi-sel-api.c: Remove files. + + * ipmi-sel/src/ipmi-sel-wrappers.h, + ipmi-sel/src/ipmi-sel-wrappers.c: Merge in code for ipmi-sel API + appropriately. + + * common/src/Makefile.am, ipmi-sel/src/Makefile.am: Adjust appropriately. + + * fish/src/Makefile.am, fish/src/common.h, + fish/src/ipmi-wrappers.h, fish/src/ipmi-wrappers.c, + bmc-config/src/bmc-common.h, bmc-config/src/bmc-ipmi-wrapper.h: + Adjust appropriately. + +2006-07-19 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-sensor-event-messages.h: + Renamed ipmi-sensor-and-event-code-tables.h and code adjusted + appropriately. + + * libfreeipmi/src/ipmi-sensor-event-messages.c: + Renamed ipmi-sensor-and-event-code-tables.c. + + * libfreeipmi/include/freeipmi/freeipmi.h, + libfreeipmi/include/Makefile.am, libfreeipmi/src/Makefile.am: + Adjusted appropriately. + + Fix threshold event message output bug. + + * libfreeipmi/include/freeipmi/ipmi-sensor-cmds.h, + libfreeipmi/src/ipmi-sensor-cmds.c (ipmi_get_threshold_message): + New function. + + * common/src/ipmi-sensor-api.c (ipmi_get_threshold_message_list): + New function. + + * common/src/ipmi-sensor-api.c (get_sensor_reading): Use new + function to output appropriate threshold strings. + +2006-07-19 A Balamurugan + + * libfreeipmi/src/ipmi-locate.c (ipmi_locate): fixed bug of NULL + pointer operation. + +2006-07-19 A Balamurugan + + * libfreeipmi/src/ipmi-locate-dmidecode.c + (ipmi_locate_dmidecode_get_dev_info): fixed bug of invalid handle + of return value. + +2006-07-19 Albert Chu + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_inband): Remove + "driver_device" input requirement for KCS w/o probing. + + * ipmi-sel/src/ipmi-sel-argp.c: Change conflicting command line + option key. + +2006-07-18 Albert Chu + + * bmc-config/src/bmc-config.c (_disable_coredump), + bmc-info/src/bmc-info.c + (_disable_coredump), ipmi-raw/src/ipmi-raw.c (_disable_coredump), + ipmi-sel/src/ipmi-sel.c + (_disable_coredump): New function. + + * bmc-config/src/bmc-config.c (main), bmc-info/src/bmc-info.c + (main), ipmi-raw/src/ipmi-raw.c (main), ipmi-sel/src/ipmi-sel.c + (main): Fix bug #17104, do not core dump by default. + + * bmc-config/src/bmc-config.c (main), bmc-info/src/bmc-info.c + (main), ipmi-sel/src/ipmi-sel.c + (main): Fix non-debug compile bugs. + + * bmc-config/src/bmc-config.c (ipmi_core_init): Exit on inband + errors, don't return -1. + + * bmc-config/src/bmc-config.c (ipmi_core_init, main), + bmc-info/src/bmc-info.c + (main), ipmi-raw/src/ipmi-raw.c (main), ipmi-sel/src/ipmi-sel.c + (main): Fix bug #17143, bad output for inband permission denied. + + * libfreeipmi/src/ipmi-locate.c, + libfreeipmi/src/ipmi-locate-smbios.c, + libfreeipmi/src/ipmi-rmcpplus-interface.c, + libfreeipmi/src/ipmi-rmcpplus-utils.c, + ipmipower/src/ipmipower_packet.c, + ipmipower/src/ipmipower_powercmd.c, fish/src/bmc-conf2.c, + bmc-config/src/bmc-config-api.c: Fix compile warnings. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_recv): Fix retransmission timing bug (#17103). + + * fish/bmc-config.8.pre.in, fish/ipmi-sel.8.pre.in, + fish/src/bmc-conf2.h, fish/src/bmc-conf2.c: Removed files. + + * fish/src/scm-procedures.c, fish/src/extension.c, + fish/src/common.h, fish/Makefile.am: Adjust appropriately. + + * fish/src/scm-procedures.c, fish/src/extensions.c: Remove + remaining ipmi-sel related code. + + * libfreeipmi/src/ipmi-semaphores.h: Remove out of band keys. + + * libfreeipmi/src/ipmi-semaphores.h, + libfreeipmi/src/ipmi-semaphores.c (ipmi_mutex_init): Calculate key + internally, not through passed in key. + + * libfreeipmi/src/ipmi-kcs-api.c (ipmi_kcs_ctx_create), + libfreeipmi/src/ipmi-ssif-api.c (ipmi_ssif_ctx_create): Adjust for + ipmi_mutex_init change. + + * libfreeipmi/src/Makefile.am, libfreeipmi/src/ipmi-semaphores.c + (ipmi_mutex_init): Workaround lack of ipckey file when doing debug + work out of the build directory. + + Remove packet_retry from UDM lan. Replace with session timeout (bug #17102). + + * common/src/argp-common.h, common/src/argp-common.c + (common_parse_opt, init_common_cmd_args): Remove support for + packet retry, support session timeout. + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h, + libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband): Adjust for + use with session timeout. Adjust udm device_t structure for use. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_session_timed_out, _calculate_timeout): New functions. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_send, _ipmi_lan_cmd_recv, ipmi_lan_cmd, + ipmi_lan_cmd_raw): Add support for session timeout. + + * bmc-config/src/bmc-config.c (ipmi_core_init), + bmc-info/src/bmc-info.c (main), fish/src/ipmi-wrapper.c + (fi_ipmi_open), fish/src/scm-procedures.c (ex_ipmi_open), + ipmi-raw/src/ipmi-raw.c (main), ipmi-sel/src/ipmi-sel.c (main): + Adjust for change in ipmi_open_outofband. + +2006-07-18 A Balamurugan + + * libfreeipmi/src/ipmi-locate-dmidecode.c (dmi_table): initialize + reg_space and bmc_i2c_dev_name to default value when device is + SSIF. + +2006-07-17 Albert Chu + + * bmc-config/src/bmc-user-sections.c, + bmc-lan-conf-security-keys-section.c: Fix various gcc 4.0 + warnings. + +2006-07-14 Albert Chu + + * bmc-config/src/bmc-lan-channel-section.c, + bmc-config/src/bmc-serial-channel-section.c: Globally replace + "available always" with "always available" to match IPMI spec. + + * bmc-config/src/bmc-lan-conf-auth-section.c: Globally replace + "Auth_Straight" with "Auth_Type_Straight" and "Auth_OEM" with + "Auth_Type_OEM" for consistency. + + * bmc-config/src/bmc-misc-section.c (bmc_misc_section_get): Rename + section "Misc" for consistency and backwards compatability. + + * bmc-config/src/bmc-user-section.c (username_validate, + username_diff): Accept username "Anonymous" for userid 1 for + backwards compatability. + + * bmc-config/src/bmc-user-sections.c (password_diff, + password20_diff): Fix diff reporting bug. + + * bmc-config/src/bmc-serial-conf-section.c (serial_conf_commit): + Fix seg-fault. + + * bmc-watchdog/src/bmc-watchdog.c (_cmdline_parse): Use base '0' + on strtol. + + * bmc-config/src/bmc-sol-conf-section.c + (sol_privilege_level_validate): Fix comparison bug. + + * bmc-config/src/bmc-checkout.c (bmc_checkout_file): Only output + description if checkout is successful. Do not output FATAL + message unless verbose turned on. + + * bmc-config/src/bmc-config-api.c (get_k_r, get_k_g): Fix memcpy + bugs. + +2006-07-14 A Balamurugan + + * common/src/argp-common.c: initialize errno before calling + strtol(). + + * ipmi-sel/src/ipmi-sel-argp.c: like wise. + + * fish/src/scm-procedures.c (ex_string2number): new function. + + * fish/src/extension.c: added fi-string->number primitive + procedure. + + * fish/extensions/bc-common.scm, fish/extensions/bmc-info.scm, + fish/extensions/pef.scm, fish/extensions/sensors-common.scm: uses + fi-string->number. + + * fish/extensions/sel.scm: uses fi-string->number and fixes of + error messages. + + * libfreeipmi/src/ipmi-locate-dmidecode.c: new file. + + * libfreeipmi/src/ipmi-locate.c: uses dmidecode probing. + + * libfreeipmi/include/freeipmi/ipmi-locate.h: like wise. + + * libfreeipmi/src/Makefile.am: updated. + +2006-07-13 Albert Chu + + * configure.ac, libfreeipmi/src/Makefile.am: Move IPMI_IPCKEY out + of autoconf and into libfreeipmi CFLAG definition. + + * bmc-config/bmc-config.8.pre.in: Add note about required ADMIN + privleges. + + * common/src/argp-common.c (common_parse_opt): Fix error output + messages. (bug #17091) + + * common/src/argp-common.c (init_common_cmd_args): Set packet + retry and timeout to 0 as default. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband): If packet + retry and timeout are 0, set to default of 10 retries and 1000 + milliseconds. + + Re-architect to allow ADMIN to be the default privilege for + bmc-config (bug #17098). + + * common/doc/argp-common.man: Removed file. + + * common/doc/argp-common-inband.man, + common/doc/argp-common-outofband.man, + common/doc/argp-common-authtype.man, + common/doc/argp-common-privlevel.man, + common/doc/argp-common-misc.man: New files. + + * common/doc/Makefile.am: Update for new files. + + * bmc-config/bmc-config.8.pre.in, bmc-info/bmc-info.8.pre.in, + ipmi-raw/ipmi-raw.8.pre.in, ipmi-sel/ipmi-sel.8.pre.in, + fish/fish.8.pre.in, fish/bmc-config.8.pre.in, + fish/ipmi-sel.8.pre.in, fish/ipmi-sensors.8.pre.in: Adjust for + change to new argp common manpage files. Use non-default manpage + for priv level on bmc-config.8. + + * argp-common.h (ARGP_COMMON_OPTIONS): Split into 4 new defines + ARGP_COMMON_OPTIONS_INBAND, ARGP_COMMON_OPTIONS_OUTOFBAND, + ARGP_COMMON_OPTIONS_AUTHTYPE, and ARGP_COMMON_OPTIONS_PRIVLEVEL. + + * bmc-config/src/bmc-argp.c: Use new defines. Make priv-level default ADMIN. + + * bmc-config/src/bmc-config.c (main): Set appropriate default values. + + Clear out command line options (bug #16856) + + * bmc-config/src/bmc-config.c (main), bmc-info/src/bmc-info.c + (main), ipmi-raw/src/ipmi-raw.c (main), ipmi-sel/src/ipmi-sel.c + (main): Clear out command line options after they are parsed. + + Support register spacing commandline arguments (bug #16294) + + * common/src/argp-common.h: Add option and support for value. + + * common/src/argp-common.c (common_parse_opt): Support parsing. + + * common/src/argp-common.c (init_common_cmd_args): Support default value. + + * ipmi-sel/src/ipmi-sel.c (main), ipmi-raw/src/ipmi-raw.c (main), + bmc-info/src/bmc-info.c (main), bmc-config/src/bmc-config.c + (ipmi_core_init): Support register spacing argument. + + Fix compile warnings + + * bmc-config/src/bmc-diff.h: New file + + * bmc-config/src/Makefile.am: Add bmc-diff.h. + + * bmc-config/src/bmc-config-api.c: Include bmc-ipmi-wrapper.h. + + * bmc-config/src/bmc-user-sections.c, + bmc-config/src/bmc-lan-channel-section.c, + bmc-config/src/bmc-serial-channel-section.c, + bmc-config/src/bmc-lan-conf-section.c, + bmc-config/src/bmc-lan-conf-auth-section.c, + bmc-config/src/bmc-lan-conf-security-keys-section.c, + bmc-config/src/bmc-rmcpplus-conf-privilege-section.c, + bmc-config/src/bmc-serial-conf-section.c, + bmc-config/src/bmc-serial-channel-section.c, + bmc-config/src/bmc-sol-conf-section.c, + bmc-config/src/bmc-misc-section.c: Include bmc-diff.h + + * bmc-config/src/bmc-user-sections.c (username_diff): Fix segfault + bug. + + * bmc-config/src/bmc-user-sections.c (get_user_section): Include + SOL Payload Access config. + + * bmc-config/src/bmc-lan-conf-section.c (vlan_id_validate): Fix + range issue on compre. + +2006-07-12 Albert Chu + + Rework udm raw functions to take lun and netfn parameters and + have API similar to rest of FreeIPMI (bug #16283). + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h, + libfreeipmi/src/udm/ipmi-udm.c (ipmi_cmd_raw): Add lun and netfn + parameters. Adjust parameter checks appropriately. Adjust + function call style. + + * libfreeipmi/src/udm/ipmi-kcs-api-udm.c (ipmi_kcs_cmd_raw_udm), + libfreeipmi/src/udm/ipmi-ssif-api-udm.c (ipmi_ssif_cmd_raw_udm), + libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (ipmi_lan_cmd_raw_udm): Adjust appropriately for changes. Adjust + function call style. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_raw_send_parse, _ipmi_lan_raw_create_cmd, + _ipmi_lan_raw_recv_parse): Remove functions. + + * ipmi-raw/ipmi-raw.8.pre.in: Update for lun and netfn input. + + * ipmi-raw/src/ipmi-raw.c (main): Check for hex byte lengths. + Adjust to read and pass in lun and netfn. Adjust for function + call change. Cleanup error output calls. + +2006-07-12 Albert Chu + + Fix lan retransmission issues. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_send_orig, _ipmi_lan_cmd_recv_orig, + ipmi_lan_cmd_orig): Removed functions. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c (ipmi_lan_cmd): Fix + sequence numbering bug. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_raw_create_cmd, ipmi_lan_cmd_raw): Support packet + retransmissions. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_raw_send, _ipmi_lan_cmd_raw_recv): Removed + functions. + + * common/src/argp-common.h: Adjust output of command line help. + + * common/src/argp-common.c (init_common_cmd_args): Give legit + default values for lan timeout and retransmission. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_recv, ipmi_lan_cmd): Fix lan retransmission bugs. + +2006-07-12 A Balamurugan + + * common/src/argp-common.c: --driver-address, + --packet-retry-timeout and --packet-retry-max options accept arg + value in decimal, octal and hex. fixed bug #16291. + + * common/src/Makefile.am: updated. + +2006-07-06 A Balamurugan + + * fish/scripts/bmc-config/Makefile.am, + fish/scripts/bmc-config/bmc-config.in: removed. + + * Makefile.am, configure.ac, fish/Makefile.am, + fish/scripts/Makefile.am: updated. + + * bmc-config/Makefile.am, bmc-config/bmc-config.8.pre.in, + bmc-config/bmc-config.conf.5.in, bmc-config/src/Makefile.am, + bmc-config/src/bmc-argp.c, bmc-config/src/bmc-checkout.c, + bmc-config/src/bmc-commit.c, bmc-config/src/bmc-common.h, + bmc-config/src/bmc-config-api.[ch], + bmc-config/src/bmc-config.[ch], bmc-config/src/bmc-diff.c, + bmc-config/src/bmc-ipmi-wrapper.[ch], + bmc-config/src/bmc-lan-channel-section.c, + bmc-config/src/bmc-lan-conf-auth-section.c, + bmc-config/src/bmc-lan-conf-misc-section.c, + bmc-config/src/bmc-lan-conf-section.c, + bmc-config/src/bmc-lan-conf-security-keys-section.c, + bmc-config/src/bmc-misc-section.c, bmc-config/src/bmc-parser.c, + bmc-config/src/bmc-pef-conf-section.c, + bmc-config/src/bmc-rmcpplus-conf-privilege-section.c, + bmc-config/src/bmc-sections.[ch], + bmc-config/src/bmc-serial-channel-section.c, + bmc-config/src/bmc-serial-conf-section.c, + bmc-config/src/bmc-sol-conf-section.c, bmc-config/src/bmc-types.h, + bmc-config/src/bmc-user-sections.c, bmc-config/src/bmc-util.c: new + files. now bmc-config is in C. + +2006-07-05 A Balamurugan + + * fish/scripts/sel/Makefile.am, fish/scripts/sel/ipmi-sel.in: + removed + + * configure.ac, fish/Makefile.am, fish/scripts/Makefile.am, + ipmi-sel/ipmi-sel.8.pre.in, ipmi-sel/src/Makefile.am: updated for + ipmi-sel C version. + +2006-07-05 A Balamurugan + + * ipmi-sel/src/ipmi-sel-argp.[ch]: added --delete-range option. + + * ipmi-sel/src/ipmi-sel.c: like wise. + +2006-06-30 A Balamurugan + + * ipmi-sel/src/Makefile.am: updated + + * ipmi-sel/src/ipmi-sel-argp.c (stripwhite, get_token, + validate_delete_list_string, get_delete_record_count, + get_delete_record_list): new static functions + + * ipmi-sel/src/ipmi-sel-argp.c, ipmi-sel/src/ipmi-sel-wrapper.c, + ipmi-sel/src/ipmi-sel.c: added --delete and --delete-all option + support + +2006-06-27 Albert Chu + + * ipmi-sel/ipmi-sel.8.pre.in: Fix output typo. + +2006-06-27 A Balamurugan + + * Makefile.am, configure.ac: added support for C version of + ipmi-sel tool. + + * ipmi-sel/Makefile.am, ipmi-sel/ipmi-sel.8.pre.in, + ipmi-sel/src/Makefile.am, ipmi-sel/src/ipmi-sel-argp.c, + ipmi-sel/src/ipmi-sel-argp.h, ipmi-sel/src/ipmi-sel-wrapper.c, + ipmi-sel/src/ipmi-sel-wrapper.h, ipmi-sel/src/ipmi-sel.c: new + files. + +2006-06-27 Albert Chu + + * libfreeipmi/src/ipmi-lan-interface.c, + libfreeipmi/src/ipmi-lan-interface.h (ipmi_lan_sendto, + ipmi_lan_recvfrom): Fix parameters to match sendto and recvfrom + syscalls. + + * libfreeipmi/include/freeipmi/ipmi-ssif-api.h, + libfreeipmi/src/ipmi-ssif-api.c: Move definitions from .h file to + .c file. + +2006-06-26 Albert Chu + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_recv): Fix compile bug. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_send_orig, _ipmi_lan_cmd_recv_orig): Comment out. + + * ipmipower/src/fd.c, ipmipower/src/ipmipower_util.c, + ipmipower/src/secure.c: Fix compile warnings. + + * configure.ac: Fix IPMI_IPCKEY definition bug. + + * fish/src/Makefile.am: Fix duplicate IPMI_IPCKEY definition. + + * freeipmi.spec.in: Fix chkconfig bug. + +2006-06-26 A Balamurugan + + * libfreeipmi/include/freeipmi/ipmi-ssif-api.h: cleanup. + + * libfreeipmi/src/ipmi-ssif-api.c (ipmi_i2c_smbus_access): + cleanup. + + * libfreeipmi/src/ipmi-ssif-api.c (ipmi_ssif_single_part_write, + ipmi_ssif_multi_part_write, _ipmi_ssif_read): new static + functions. + + * libfreeipmi/src/ipmi-ssif-api.c (ipmi_ssif_ctx_io_init, + ipmi_ssif_write, ipmi_ssif_read): uses new static functions. + +2006-06-26 A Balamurugan + + * libfreeipmi/include/freeipmi/udm/ipmi-udm.h, + libfreeipmi/src/udm/ipmi-udm.c: added support to packet_retry_max + and retry_timeout. + + * common/src/argp-common.[ch]: like wise. + + * bmc-info/src/bmc-info.c: like wise. + + * fish/extensions/bc-common.scm: like wise. + + * fish/extensions/bmc-info.scm: like wise. + + * fish/extensions/pef.scm: like wise. + + * fish/extensions/sel.scm: like wise. + + * fish/extensions/sensors-common.scm: like wise. + + * fish/extensions/sensors.scm: like wise. + + * fish/src/ipmi-wrapper.c (fi_ipmi_open): like wise. + + * fish/src/scm-procedures.c (ex_ipmi_open): like wise. + + * ipmi-raw/src/ipmi-raw-argp.c: like wise. + + * ipmi-raw/src/ipmi-raw.c: like wise. + + * common/doc/argp-common.man: updated. + + * doc/examples/udm-test.c: updated. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c + (_ipmi_lan_cmd_send, _ipmi_lan_cmd_recv, ipmi_lan_cmd): added + packet retransmission support. + +2006-06-26 Anand Babu + + * garpd: forked as a separate project. Not relevant here. + * configure.ac: ipckey definition move here. removed garpd + references. + libfreeipmi/src/Makefile.am: removed CPP defn of IPCKEY. + * Makefile.am: removed garpd references. + * src/Makefile.am: uses configure.ac defns of IPCKEY. + * doc/freeipmi.tex: likewise. + * freeipmi.spec.in: likewise. + * fish/extensions/sensors-common.scm: + fi-sensors-get-default-cache-filename no longer used. Removed. + * fish/src/extension.c: likewise. + * fish/src/scm-procedures.c,h: likewise. + * fish/src/fish.h: FI_DEFAULT_SDR_REPOSITORY_CACHE_FILENAME + definition removed. + +2006-06-19 Albert Chu + + * ipmipower/src/secure.h, ipmipower/src/secure.c, + ipmipower/src/timeval.h, ipmipower/src/timeval.c: New files. + + * ipmipower/src/hostlist.h, ipmipower/src/hostlist.c, + ipmipower/src/conffile.h, ipmipower/src/conffile.c, + ipmipower/src/cbuf.h, ipmipower/src/cbuf.c: Update to latest + library version. + + * ipmipower/src/ipmipower_util.h, ipmipower/src/ipmipower_util.c + (Secure_memset, Secure_malloc, Secure_free, millisec_add, + millisec_diff, millisec_gt): Removed functions. + + * ipmipower/src/ipmipower_powercmd.c, + ipmipower/src/ipmipower_ping.c, ipmipower/src/ipmipower_config.c, + ipmipower/src/ipmipower.c: Adjust to use new functions in + secure.[ch] and timeval.[ch]. + + * ipmipower/src/Makefile.am: Add new files. + + * ipmipower/src: General code cleanup. + +2006-06-16 Albert Chu + + * ipmipower/src/ipmipower_config.c + (ipmipower_config_cmdline_parse): Add comments about arg clearing. + +2006-06-06 Albert Chu + + * Document workaround notes to in-band tools about IBM e325. + +2006-06-05 Albert Chu + + * libfreeipmi/src/ipmi-rmcpplus-interface.c + (_construct_session_trlr_authentication_code): Fix MD5 hashing bug. + +2006-05-26 Albert Chu + + * freeipmi.spec.in: Make bmc-watchdog init.d non-replaceable if + modified. + +2006-05-25 Albert Chu + + * libfreeipmi/: Security modifications added. + +2006-05-24 Albert Chu + + * ipmipower/, libfreeipmi/: Several security modifications added. + + * libfreeipmi/src/ipmi-locate-acpi-spmi.c + (ipmi_acpi_get_firmware_table): Fix double free bug. + + * Fix gcc warnings. + +2006-05-22 Albert Chu + + * libfreeipmi/src/ipmi-locate-acpi-spmi.c + (ipmi_acpi_get_spmi_table): Fix logic bug. + + * libfreeipmi/src/fiid.c (fiid_obj_clear, fiid_obj_clear_field): + Implement with guaranteed memset. + + * libfreeipmi/src/freeipmi.map: New file. + + * libfreeipmi/src/Makefile.am, configure.ac: Hide non-API symbols. + + * common/src/Makefile.am: Fix build as necessary. + +2006-05-19 Albert Chu + + * bmc-watchdog/src/Makefile.am, bmc-watchdog/src/bmc-watchdog.c: + Adjust for changes from 05-18-06. + + * libfreeipmi/src/ipmi-locate-smbios.c (ipmi_smbios_reg_space): + EINVAL return rather than exit. + +2006-05-18 A Balamurugan + + * bmc-watchdog/Makefile.am, fish/src/Makefile.am, + libfreeipmi/Makefile.am, libfreeipmi/src/Makefile.am, + libfreeipmi/src/ipmi-semaphores.h: Fix of hardcoded paths of some + files. Thanks for the patch to Claudio Fontana + . + +2006-05-16 Albert Chu + + * freeipmi.spec.in: Add version to changelog. + +2006-05-15 Albert Chu + + * freeipmi.spec.in: Updated with changes from Ben Woodard (woodard + at redhat dot com) for Fedora inclusion. + + * freeipmi.spec.in: Cleaned up some english and updated with + changes since 0.2.0. + + * bmc-watchdog/: Various follow on adjustments. + +2006-05-12 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-sensor-types-spec.h: Correct #defines. + + * libfreeipmi/include/freeipmi/ipmi-sdr-record-types.h: Fix + redefine bug. + +2006-05-11 Albert Chu + + * libfreeipmi/src/ipmi-sdr-record-types.c, + common/src/ipmi-sensor-api.c: Change "sensor_owner_id.id" to + "sensor_owner_id". + +2006-05-10 Albert Chu + + * libfreeipmi/src/ipmi-sensor-utils.c, + libfreeipmi/include/freeipmi/ipmi-sensor-utils.h + (ipmi_sensor_decode_value): Adjust parameter types for consistency + across the library. Add linearization function decoding. + + * libfreeipmi/src/ipmi-sensor-units-spec.c, + libfreeipmi/include/freeipmi/ipmi-sensor-units-spec.h: Added rate + units. + + * libfreeipmi/include/freeipmi/ipmi-sdr-record-types.h: Add analog + data format, lineraization, and modifier unit defines. + + * common/src/ipmi-sensors-api.c + (ipmi_sensor_get_decode_parameters): Fix linearization bug. + +2006-05-09 Albert Chu + + * libfreeipmi/src/ipmi-sdr-record-types.c, + libfreeipni/include/freeipmi/ipmi-sdr-record-types.h: Updated + #defines for consistency with rest ot the library, added missing + record types. + + * common/src/: Updated with name changes appropriately. + +2006-05-08 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-sdr-repository-cmds.h: Add + first and last record id defines. + +2006-05-05 Albert Chu + + * libfreeipmi/: Change all templates and use of "ls_byte" and + "ms_byte" to a single template variable. + + * fish/, bmc-watchdog/: Adjust appropriately. + +2006-05-03 Albert Chu + + * libfreeipmi/src/ipmi-sensor-event-messages.c: Fix message string + typo. + +2006-05-01 Albert Chu + + * ipmipower/src/ipmipower_check.c + (ipmipower_check_rakp_2_key_exchange_authentication_code): Fix + code consistency issue. + +2006-04-26 Albert Chu + + * ipmipower/src/ipmipower_check.c + (ipmipower_check_authentication_code, + ipmipower_check_payload_pad): Fix check bugs. + +2006-04-25 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h: Fix + password length macros. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h: Add + macros to check for cipher support in libfreeipmi. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.c + (ipmi_cipher_suite_id_to_algorithms): Adjust with macro change. + + * libfreeipmi/src/ipmi-messaging-support-cmds.c + (fill_cmd_set_user_password, fill_cmd_set_user_password_v20), + libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c + (ipmi_cmd_set_user_password): Fix up use of password length + macros. + +2006-04-20 Albert Chu + + * ipmipower/: Remove support of --no-get-channel-cipher-suites. + + * ipmipower/: Send Get Channel Cipher command with IPMI 2.0 + headers rather than IPMI 1.5 headers. + + * libfreeipmi/, ipmipower/: Fix cipher suite record parsing. + +2006-04-19 Albert Chu + + * libfreeipmi/src/ipmi-rmcpplus-utils.c + (ipmi_rmcpplus_calculate_payload_type), + libfreeipmi/src/ipmi-utils.c (ipmi_is_ipmi_1_5_packet, + ipmi_is_ipmi_2_0_packet): Fix parse bugs. + + * libfreeipmi/include/freeipmi/ipmi-rmcpplus.h, + libfreeipmi/src/ipmi-rmcpplus.c (ipmi_rmcpplus_init): New + function. + + * libfreeipmi/: Rename ipmi-rmcpplus-crypt.c to ipmi-crypt.c and + ipmi-rmcpplus-crypt.h to ipmi-crypt.h. + + * libfreeipmi/, ipmipower/: Adjust for modifications. + + * libfreeipmi/src/ipmi-rmcpplus-support-and-payload-cmds.c: Fix + activate payload response bit shit bug. + + * libfreeipmi/src/ipmi-rmcpplus-debug.c: Fix various mem-leak possibilities. + + * libfreeipmi/src/ipmi-rmcpplus-interface.c + (_construct_session_trlr_pad): Fix padding corner case. + +2006-04-18 Albert Chu + + * libfreeipmi/src/ipmi-sol-cmds.c: Fix critical BMC to Remote + Console SOL parsing bug. + +2006-04-14 Albert Chu + + * ipmiping/src/ipmiping.c (parsepacket): Fix warning. + + * fish/: Attempt to configure based on SOL Payload Channel. + +2006-04-13 Albert Chu + + * fish/src/extension.c (install_new_procedures): Fix function name + typo. + + * libfreeipmi/src/ipmi-utils.c (ipmi_check_completion_code): Fix + compile bug. + + * freeipmi.spec.in: Fix package requirement gcrypt -> libgcrypt. + + * libfreeipmi/src/ipmi-rmcpplus-support-and-payload-cmds.c: Add + forgotten reserved fields to tmpl_get_channel_payload_support_rs. + + * ipmipower/src/ipmipower_packet.c (ipmipower_packet_dump): Fix + compiler warning. + + * ipmipower/: Re-architect to include set session privilege + command in ipmi 2.0 stream. Cleanup code in general. + + * Globally cleanup template variable names to maintain consistency + with "tmpl_cmd" vs "tmpl" prefixed variable names. + +2006-04-12 Albert Chu + + * ipmipower/: Add work to support both interpretations of the + "cipher suite id privilege level". + + * ipmipower/: Add one more intel IPMI 2.0 workaround. + + * ipmipower/: Add --no-get-channel-cipher-suites workaround. + + * libfreeipmi/src/ipmi-message-support-cmds.c + (fill_cmd_set_channel_security_keys), fish/: Fixes added to + support K-R and K-G checkout and configuration. + + * ipmipower/: Check k_g status during authentication capabilities + stage. + + * ipmiping/: Support k_g output on verbose. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet): Return error + on rakp2 or rakp4 hash errors. + + * fish/src/scm-procedures.c (ex_set_bmc_user_sol_payload_access): + Fix enable/disable bug. + +2006-04-11 Albert Chu + + * libfreeipmi/src/ipmi-rmcpplus.c (fill_rmcpplus_rakp_message_1): + Fix compliance bug. + + * libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h, + libfreeipmi/src/ipmi-messaging-support-cmds.c + (fill_cmd_set_user_password_v20), + libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c: Support + password size parameter. + + * fish/: Support 'Password20' bmc-config option. + + * ipmipower/: Remove --cipher-suite-records-all-oem option. + Migrate workaround into --intel-2-0-session option. Implement + additional username padding workarounds for Intel. + + * libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c + (ipmi_cmd_get_session_challenge, ipmi_cmd_activate_session, + ipmi_cmd_set_session_privilege_level): Fix errno codes. + + * ipmipower/: Version auto picks ipmi 1.5 over ipmi 2.0. + + * common/src/Makefile.am, + common/src/ipmi-sdr-repository-cache-api.h, + common/src/ipmi-sdr-repository-cache-api.c: Remove sdr repository + cache api. + + * fish/src/bmc-conf2.c (get_k_g, get_k_r): Fix return code bug. + +2006-04-09 Albert Chu + + * libfreeipmi/, fish/, common/: Split record_count of sdr info + into ls byte and ms byte like IPMI spec. + +2006-04-07 Albert Chu + + * libfreeipmi/src/ipmi-sdr-repository-cmds.c: Adjust get sdr max + record data length. + + * libfreeipmi/src/ipmi-sdr-record-types.c, + libfreeipmi/include/freeipmi/ipmi-sdr-record-types.h, + common/src/ipmi-sensor-api.c, + common/src/ipmi-sdr-repository-cache-api.c: Fix up template names. + +2006-04-06 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_init_ipmi): Check kcs context + errnum rather than errno. + + * libfreeipmi/src/ipmi-udm.c, + libfreeipmi/include/freeipmi/ipmi-udm.h: Remove template pointers. + + * libfreeipmi/src/ipmi-sol-cmds.c, + libfreeipmi/include/freeipmi/ipmi-sol-cmds.h: Various code + cleanup. + + * bmc-info/doc/Makefile.am, bmc-info/doc/bmc-info.8.pre.in, + ipmi-raw/doc/Makefile.am, ipmi-raw/doc/ipmi-raw.8.pre.in: Removed + files. Moved Makefile.am info and manpages one directory up to be + consistent to rest of library. + +2006-04-05 Albert Chu + + * libfreeipmi/src/udm/ipmi-sensor-cmds-udm.c + (ipmi_cmd_get_sensor_thresholds): Fix function call cut and paste + typo. + + * common/src/ipmi-sel-api.c (_get_event_message): Fix output bug. + +2006-04-04 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-sol-cmds.h: Add SOL sequence + number max definition. + +2006-04-04 Albert Chu + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_inband): Fix + no-probing bug. + +2006-04-03 Anand Babu + * libfreeipmi/src/ipmi-locate-smbios.c: check if record length >= + 16. It was > 16 before. Found while running on IBM e325. + +2006-04-04 Albert Chu + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_powercmd.c: + Remove all use of "error_occurred" flag. The flag is no longer + necessary. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet): Fix check + ordering bug. + +2006-04-03 Anand Babu + + * doc/freeipmi-faq.texi: Updated x86-64 platform related + questions. + * doc/freeipmi.texi: Updated. + * fish/bmc-config.8.pre.in: Updated. + * freeipmi/fish/extensions/bc-common.scm: verbose flag. Closing + bug #16113. + * fish/extensions/bmc-config.scm: like wise. + * fish/extensions/bc-section.scm: "Not supported" message + printed only when verbose. + +2006-04-03 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-utils.h, + libfreeipmi/src/ipmi-utils.c (ipmi_is_ipmi_1_5_packet, + ipmi_is_ipmi_2_0_packet): New functions. + + * libfreeipmi/include/freeipmi/ipmi-rmcpplus-utils.h, + libfreeipmi/src/ipmi-rmcpplus-utils.c + (ipmi_rmcpplus_calculate_payload_type): New function. + +2006-03-31 Albert Chu + + * libfreeipmi/: New ipmi_kcs_cmd() for kcs api. Adjust UDM + functions appropriately. + + * bmc-watchdog/: Implement with KCS api. + + * libfreeipmi/src/ipmi-semaphores.c (ipmi_mutex_init): Fix errno + setting corner case. + +2006-03-30 Albert Chu + + * ipmipower/src/ipmipower_powercmd.c (_send_packet): Remove + 'is_retry' parameter which wasn't used. Adjusted calls to + _send_packet appropriately. + +2006-03-29 Albert Chu + + * ipmipower/src/ipmipower_powercmd.c + (ipmipower_powercmd_process_pending): Poll based on the minimum + timeout remaining, not the maximum. + +2006-03-28 Albert Chu + + * ipmiping/ipmiping.8.in, rmcpping/rmcpping.8.in: Add note about + local ping. + +2006-03-27 Albert Chu + + * ipmipower/src/ipmipower_wrappers.c (Ipmi_dump_lan_packet, + Ipmi_dump_rmcp_packet, Ipmi_dump_rmcpplus_packet): Output + debugging on error, do not exit. + + * ipmipower/src/ipmipower_check.c + (ipmipower_check_outbound_sequence_number): Fix ipmi 2.0 corner + cases on wrap around. + +2006-03-24 Albert Chu + + * libfreeipmi/: Added appropriate fixes for ipmi 2.0 to handle + null passwords. + + * freeipmi.spec.in: Fix directory name bug. + + * ipmipower/src: Add privilege check on open session response + packet. + +2006-03-24 Anand Babu + + * fish/extensions/sensors-common.scm: fixed bug #16093 - + ipmi-sensors help outputs with wrong program name. + +2006-03-24 Albert Chu + + * libfreeipmi/src/ipmi-sensor-utils.c (ipmi_sensor_decode_value), + libfreeipmi/include/freeipmi/ipmi-sensor-utils.h: Add and use new + analog data format definition validator. + + * ipmipower/: Alter --intel-2-0-session-activation to + --intel-2-0-session. Support additional workarounds with + HMAC-MD5-128 authentication on Intel machines. + +2006-03-23 Albert Chu + + * libfreeipmi/src/ipmi-messaging-support-cmds.c, + libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h: + Support 20 byte passwords in ipmi 2.0 version of Set User + Password. + + * libfreeipmi/include/freeipmi/udm/, libfreeipmi/src/udm/, fish/, + ipmipower/: Support 20 byte ipmi 2.0 passwords. + + * fish/src/bmc-conf2.c (check_bmc_user_password): Fix logic bug. + + * fish/src/bmc-conf2.c (check_bmc_user_password), + libfreeipmi/include/freeipmi/ipmi-comp-code-spec.h, + libfreeipmi/src/ipmi-error.c (ipmi_strerror_r): Support set user + password completion codes. + + * ipmipower/ipmipower.8.in: Add workaround note about long + passwords on Intel machines. + + * libfreeipmi/: Re-work privilege level validation macros. Re-do + parameters of fill_lan_session_hdr() and + fill_rmcpplus_session_hdr(). + +2006-03-22 Albert Chu + + * libfreeipmi/src/ipmi-rmcpplus-utils.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-utils.h + (ipmi_calculate_rmcpplus_session_keys): Support both k_g and user + password. + + * ipmipower/: Change -k option -m option. Add new -k option to + support global BMC key k_g. + + * fish/: Various bug fixes for SOL and RMCPPLUS Privilege level + configurations. + + * libfreeipmi/, fish/: Support max length of 20 bytes for K_R and + K_G desribed in IPMI 2.0 errata. + +2006-03-21 Albert Chu + + * libfreeipmi/src/ipmi-cipher-suite-spec.c + (ipmi_cipher_suite_id_to_algorithms): Fix bug. + + * libfreeipmi/src/ipmi-rmcpplus-utils.c (ipmi_calculate_sik, + ipmi_calculate_rmcpplus_session_keys): Handle name only lookup + flag in sik calculations. Fix several corner cases and cleaned up + code. + + * libfreeipmi/src/ipmi-rmcpplus-utils.c (_calculate_k_rakp_hmac): + Fix K calculation bug. + + * libfreeipmi/src/ipmi-rmcpplus-interface.c, + libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h: Fix + spelling typo in IPMI_MAX_PASSWORD_LENGTH definition. Define and + use new IPMI_2_0_MAX_PASSWORD_LENGTH definition. + + * libfreeipmi/src/ipmi-rmcpplus-interface.c + (_construct_session_trlr_authentication_code), + libfreeipmi/src/ipmi-rmcpplus-utils.c + (ipmi_rmcpplus_check_packet_session_authentication_code): Fix + MD5_128 authentication code calculation bug. + + * ipmipower/: Support additional cipher algorithms. Fix several + bugs. + + * fish/: Fix various bmc-config bugs. + +2006-03-20 Albert Chu + + * libfreeipmi/src/ipmi-rmcpplus-debug.c + (ipmi_dump_rmcpplus_packet): Output packet raw data if it cannot + be unassembled. + + * ipmipower/, libfreeipmi/: Change open_session_rq to + open_session_request and open_session_rs to open_session_response + to match IPMI spec. + + * libfreeipmi/include/Makefile.am: Add forgotten header file. + + * libfreeipmi/src/ipmi-cipher-suite-spec.c, + libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h, + ipmipower/src/ipmipower_powercmd.c: Fix various "CIHPER" typos. + + * ipmipower/src/ipmipower_powercmd.c + (_calculate_cipher_suite_ids): Fix parse bugs. + + * libfreeipmi/src/ipmi-rmcpplus.c, + libfreeipmi/src/ipmi-cipher-suite-spec.c: Fix oem_iana length + error. + + * fish/extensions/bc-common.scm: Add Rmcpplus Conf Privilege for + Callback. + + * ipmipower/: Add cipher suite id support. Add + --cipher-suite-records-all-oem workaround for incorrectly + formmatted cipher suite records. Add + --intel-2-0-session-activation workaround. Thanks to the ipmitool + folks for figuring out how to deal with the RAKP4 issue. + + * fish/, ipmipower/, libfreeipmi/: Fix various compiler warnings + and bugs. + +2006-03-17 Albert Chu + + * libfreeipmi/src/ipmi-debug.c, + libfreeipmi/include/freeipmi/ipmi-debug.h: Remove ipmi_debug. + + * libfreeipmi/src/ipmi-rmcpplus-interface.c, + libfreeipmi/src/ipmi-rmcpplus-debug.c: Add SOL payload type + support. + + * libfreeipmi/src/ipmi-rmcpplus-interface.c, + libfreeipmi/src/ipmi-rmcpplus-debug.c: General cleanup. + + * libfreeipmi/src/ipmi-sol-cmds.c, + libfreeipmi/include/freeipmi/ipmi-sol-cmds.h + (fill_sol_payload_data): New function. + + * fish/: Add temporary workaround for configuration of K_G and K_R. + +2006-03-16 Albert Chu + + * libfreeipmi/, fish/: Support SOL_Payload_Access configuration + for each user in bmc-config. + + * fish/extensions/bmc-config.scm, fish/extensions/bc-section.scm, + fish/extensions/bc-user-section.scm: Support a 5th user in + bmc-config. + +2006-03-15 Albert Chu + + * libfreeipmi/: Minor rmcpplus code cleanup. + + * ipmipower/: Add architectural support for other IPMI 2.0 cipher + suites. Cipher suites other than 0 must still be tested. + + * fish/: Add initial K_R and K_G bmc-config support to bmc-config. + + * libfreeipmi/include/freeipmi/ipmi-rmcpplus-crypt.h + (ipmi_crypt_init): Add prototype. + + * libfreeipmi/src/ipmi-rmcpplus-crypt.c (_ipmi_init_crypt): Rename + to ipmi_crypt_init. Un-static function. Force user to call + before using rmcpplus. + + * libfreeipmi/src/ipmi-rmcpplus-crypt.c, + ipmipower/src/ipmipower.c: Adjust for API change. + +2006-03-14 Albert Chu + + * ipmipower/src/ipmipower_cipher_suite.h, + ipmipower/src/ipmipower_cipher_suite.c: New files. + + * ipmipower/src/ipmipower.h: New cipher suite id definitions. + + * ipmipower/: Support command line, config file, and prompt + configuration of the cipher suite id. + + * ipmipower/: Support auto detection of IPMI cipher suites. + +2006-03-13 Albert Chu + + * libfreeipmi/src/ipmi-rmcpplus-utils.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-utils.h + (ipmi_calculate_keys): Renamed to + ipmi_calculate_rmcpplus_session_keys. + + * libfreeipmi/src/ipmi-rmcpplus-utils.c + (ipmi_calculate_rmcpplus_session_keys): Modified for session keys + only, not pre-session/rakp keys. + + * libfreeipmi/src/ipmi-error.c (ipmi_strerror_r), + libfreeipmi/include/freeipmi/ipmi-comp-code-spec.h: Additional + commands supported. Cleanup. + + * libfreeipmi/src/ipmi-utils.c (ipmi_check_completion_code): Add + syslog and trace debugging. + + * libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h, + libfreeipmi/src/ipmi-messaging-support-cmds.c + (fill_cmd_set_channel_security_keys), + libfreeipmi/src/ipmi-messaging-support-cmds.c + (ipmi_cmd_set_channel_security_keys): Set Channel Security Keys + command support. + + * libfreeipmi/src/ipmi-cipher-suite-spec.c, + libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h: Support + cipher suite record format templates. + + * ipmipower/src/ipmipower_wrappers.h, + ipmipower/src/ipmipower_wrappers.c (Fiid_obj_set_all): New + function. + + * ipmipower/src/ipmipower_wrappers.c (Fiid_obj_get_data, + Fiid_obj_get): Use fiid strerror to output more detailed error + message. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h: Support + record format defines. + + * ipmipower/: Support Get Channel Cipher Suites command interating + multiple times and parsing out all supported cipher suite ids from + the remote machine. + + * libfreeipmi/, fish/: Rename vlan_id_ls and vlan_id_ms to + vlan_id_ls_byte and vlan_id_ms_byte for consistency with other + portions of FreeIPMI. + +2006-03-12 Albert Chu + + * fish/extension/bc-rmcpplus-conf-privilege-section.scm: New file. + + * fish/: Add rmcpplus cipher id configuration. + + * ipmipower/: Globally change "chassis_status" -> + "get_chassis_status" to match ipmi spec. General code cleanup. + + * ipmipower/src/ipmipower_packet.c (ipmipower_packet_errmsg): + Support RAKP error messages. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet): Support RAKP + error messages. + +2006-03-11 Albert Chu + + * ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets): Add + additional checks for authentication_type returned from activate + session response. + + * ipmipower/src/ipmipower_packet.h, + ipmipower/src/ipmipower_packet.c (ipmipower_packet_response_data): + Removed function. + + * ipmipower/src/ipmipower_packet.c (ipmipower_packet_errmsg): + Adjust for function removal. + + * ipmipower/src/ipmipower_wrappers.h, + ipmipower/src/ipmipower_wrappers.c (Fiid_obj_get_data): New + function. + + * libfreeipmi/src/ipmi-rmcpplus-utils.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-utils.h + (ipmi_rmcpplus_check_session_trlr): Renamed to + ipmi_rmcpplus_check_packet_session_authentication_code for + consistency. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet), + ipmipower/src/ipmipower_check.h, ipmipower/src/ipmipower_check.c: + Completely redo packet checking for IPMI 1.5. Add full checks for + IPMI 2.0. + + +2006-03-10 Albert Chu + + * libfreeipmi/src/ipmi-lan-utils.c, + libfreeipmi/include/freeipmi/ipmi-lan-utils.h + (ipmi_lan_check_checksum): Renamed to + ipmi_lan_check_packet_checksum. + + * ipmiping/src/ipmiping.c (parsepacket), + ipmipower/src/ipmipower_powercmd.c (_recv_packet): Adjust for + ipmi_lan_check_checksum function name change. + + * libfreeipmi/src/ipmi-lan-utils.c, + libfreeipmi/include/freeipmi/ipmi-lan-utils.h + (ipmi_lan_check_checksum): New function. + + * libfreeipmi/src/ipmi-rmcpplus-utils.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-utils.h + (ipmi_rmcpplus_check_session_id): New function. + + * ipmipower/src/ipmipower_powercmd.c (_bad_packet): Removed + function. Put code into _recv_packet(). + + * ipmipower/src/ipmipower_packet.c (_recv_packet): Re-worked for + IPMI 2.0 checks. + + * ipmipower/src/error.c: Increase ERROR_BUFLEN. Remove include of + hprintf.h. + + * ipmipower/src/error.c (cbuf_printf): Remove use of hvsprintf. + + * ipmipower/src/hprintf.h, ipmipower/src/hprintf.c: Removed files. + + * ipmipower/src/ipmipower_powercmd (_recv_packet): Began work to + check IPMI 2.0 response packets for correctness. + + * Various gcc compiler warning fixes. + + * libfreeipmi/src/ipmi-lan-utils.c, + libfreeipmi/include/freeipmi/ipmi-lan-utils.h + (ipmi_lan_check_session_authentication_code): Renamed to + ipmi_lan_check_packet_session_authentication_code. + + * libfreeipmi/src/udm/ipmi-lan-interface-udm.c (_ipmi_lan_cmd_recv), + ipmipower/src/ipmipower_powercmd.c (_recv_packet): Adjust for + ipmi_lan_check_checksum function name change. + + * libfreeipmi/src/ipmi-lan-utils.c, + libfreeipmi/include/freeipmi/ipmi-lan-utils.h + (ipmi_lan_check_session_authentication_code): New function. + + * libfreeipmi/src/fiid.c (fiid_obj_packet_valid): Fix corner case. + +2006-03-10 Anand Babu + + * configure.ac: Applied Anand Avati's + patch to check installed Guile's version. Replaced gh_enter with + scm_boot_guile. gh_* are depricated in Guile 1.8. + +2006-03-10 Albert Chu + + * libfreeipmi/src/ipmi-cipher-suite-spec.c: New file. + +2006-03-09 Albert Chu + + * ipmipower/: Remove randomized initial outbound sequence number. + Add support of IPMI 2.0 for chassis status and chassis control. + Add sequence number support for IPMI 2.0 session packets. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h: Add + cipher suite combination validity checks. + + * libfreeipmi/src/ipmi-rmcpplus-utils.c (_calculate_k_rakp_none): + Removed function. + + * libfreeipmi/src/ipmi-rmcpplus-utils.c (ipmi_calculate_sik, + _ipmi_calculate_k): Fix parameter checks to return errors for + invalid cipher combinations. + + * libfreeipmi/src/ipmi-rmcpplus-utils.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-utils.c + (ipmi_rmcpplus_check_rakp_message_2_key_exchange_authentication_code, + ipmi_calculate_rakp_3_key_exchange_authentication_code): Rename + variables to match ipmi spec. + + * libfreeipmi/src/ipmi-messaging-support-cmds.c, + libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h + (tmpl_cmd_get_channel_cipher_suites_rs): New template supported. + + * ipmipower/src/ipmipower_packet.c (_ipmi_1_5_packet_create, + _ipmi_2_0_packet_create): New functions. + + * ipmipower/src/ipmipower_packet.c (ipmipower_packet_create): Use + new functions and cleanup code a lot. + + * libfreeipmi/include/freeipmi/ipmi-lan-param-spec.h, + libfreeipmi/include/freeipmi/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.c + (fill_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels): + Support rmcpplus lan configuration commands. + + * libfreeipmi/include/freeipmi/udm/ipmi-lan-cmds-udm.h, + libfreeipmi/src/ipmi-lan-cmds-udm.c + (ipmi_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels, + ipmi_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entry_support, + ipmi_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_entries, + ipmi_cmd_set_lan_configuration_parameters_rmcpplus_messaging_cipher_suite_privilege_levels): + New functions. + + * ipmipower/src/ipmipower_packet.h, + ipmipower/src/ipmipower_packet.c (ipmipower_packet_store): Return + -1 if packet is unparsable. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet): Return 0 if + packet is unparsable and should be ignored. + +2006-03-08 Albert Chu + + * libfreeipmi/src/ipmi-messaging-support-cmds.c, + libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h + (fill_cmd_get_channel_cipher_suites): Support Get Channel Cipher + Suites command. + + * libfreeipmi/include/freeipmi/ipmi-cipher-suite-spec.h: New file. + + * libfreeipmi/include/Makefile.am, + libfreeipmi/include/freeipmi/freeipmi.h: Support new .h file. + + * ipmipower/: Begin crude intial support of IPMI 2.0 by adding + IPMI 2.0 Get Authentication Capabilities, Get Channel Cipher + Suites, Open Session, and RAKP protocol into protocol state + machine. Change -R option to -M option. Add new -R option + support protocol selection by user. + + * libfreeipmi/src/ipmi-rmcpplus-interface.c + (assemble_ipmi_rmcpplus_pkt, unassemble_ipmi_rmcpplus_pkt): Fix + session trailer assembly bug. + +2006-03-07 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-comp-code-spec.h, + libfreeipmi/src/ipmi-error.c (ipmi_strerror_r): Support for more + commands under the rmcpplus support and payload commands section. + General code cleanup. + + * libfreeipmi/include/freeipmi/ipmi-rmcpplus-support-and-payload-cmds.h, + libfreeipmi/src/ipmi-rmcpplus-support-and-payload-cmds.c: New + templates and functions to support commands under this chapter of + the IPMI spec. + + * common/src/Makefile.am, libfreeipmi/include/Makefile.am: Fix + distcheck bugs. + + * Globally fix gcc 4.0 warnings. + + * libfreeipmi/include/freeipmi/ipmi-sol-cmds.h, + fish/extensions/bc-common.scm (sol-bit-rates), + fish/extensions/bc-sol-conf-section.scm: Support bit-rate '0' + which means "Use Serial Bit rate". + + * libfreeipmi/src/ipmi-messaging-support-cmds.c: Fix out of order + bug with template fields in + tmpl_cmd_get_channel_authentication_capabilities_v20_rs. + + * ipmiping/src/ipmiping.c (parsepacket): Fix output to match + earlier output. + +2006-03-06 Albert Chu + + Collective fixes from branch al_ipmi_2_0_branch at tag + al_ipmi_2_0_branch_final. See ChangeLog in branch for detailed + day by day changes. + + LIBFREEIPMI + + * libfreeipmi/include/freeipmi/ipmi-rmcpplus.h, + libfreeipmi/src/ipmi-rmcpplus.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-crypt.h, + libfreeipmi/src/ipmi-rmcpplus-crypt.c, + libfreeipmi/src/ipmi-rmcpplus-debug.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-interface.h, + libfreeipmi/src/ipmi-rmcpplus-interface.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-utils.h + libfreeipmi/src/ipmi-rmcpplus-support-and-payload-cmds.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-support-and-payload-cmds.h, + libfreeipmi/src/ipmi-rmcpplus-utils.c, + libfreeipmi/include/freeipmi/ipmi-rmcpplus-status-spec.h: New + files. + + * libfreeipmi/include/freeipmi/ipmi-debug.h + (ipmi_dump_rmcpplus_packet): New function. + + * libfreeipmi/src/ipmi-error.h, libfreeipmi/src/ipmi-error.c + (rmcpplus_status_strerror_r): New function. + + * libfreeipmi/include/freeipmi/ipmi-authentication-type-spec.h: + Added IPMI_AUTHENTICATION_TYPE_RMCPPLUS, + IPMI_1_5_AUTHENTICATION_TYPE_VALID, and + IPMI_2_0_AUTHENTICATION_TYPE_VALID. Adjusted + IPMI_AUTHENTICATION_TYPE_VALID appropriately for ipmi 2.0. + + * libfreeipmi/include/freeipmi/ipmi-privilege-level-spec.h: Added + IPMI_1_5_PRIVILEGE_LEVEL_VALID and IPMI_2_0_PRIVILEGE_LEVEL. + Adjusted IPMI_PRIVILEGE_LEVEL_VALID appropriately for ipmi 2.0. + + * libfreeipmi/src/ipmi-lan.c + (_ipmi_lan_pkt_rq_min_size,unassemble_ipmi_lan_pkt), + libfreeipmi/src/udm/ipmi-udm.c + (ipmi_open_outofband): Use new + IPMI_1_5_SESSION_AUTHENTICATION_TYPE_VALID macro. + + * libfreeipmi/src/udm/ipmi-udm.c (ipmi_open_outofband): + libfreeipmi/src/ipmi-messagging-support-cmds.c + (fill_cmd_get_channel_authentication_capabilities, + fill_cmd_activate_session, fill_cmd_set_channel_access, + fill_cmd_set_session_privilege_level), Use new + IPMI_1_5_PRIVILEGE_LEVEL_VALID. + + * libfreeipmi/include/freeipmi/freeipmi.h: Added ipmi-rmcpplus.h, + ipmi-rmcpplus-crypt.h, ipmi-rmcpplus-interface.h, + ipmi-rmcpplus-support-and-payload-cmds.h, ipmi-rmcpplus-utils.h, + ipmi-rmcpplus-status-spec.h. + + * libfreeipmi/src/ipmi-utils.c (ipmi_get_random_seed): Utilize + #define checks for /dev/urandom and /dev/random. + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_get_random): New function. + + * libfreeipmi/src/ipmi-sol-cmds.c, + libfreeipmi/include/freeipmi/ipmi-sol-cmds.h: Support SOL + payloads. Support missing SOL configuration parameters. + + * libfreeipmi/src/udm/ipmi-sol-cmds-udm.c, + libfreeipmi/include/freeipmi/ipmi-sol-cmds-udm.h: Support missing + SOL configuration parameters. + + * libfreeipmi/src/ipmi-error.c, + libfreeipmi/include/freeipmi/ipmi-comp-code-spec.h: Support new + completion codes and error strings. + + RMCPPING and IPMIPING + + * libfreeipmi/src/ipmi-messaging-support-cmds.h, + libfreeipmi/src/ipmi-messaging-support-cmds.c + (IPMI_GET_IPMI_V20_EXTENDED_DATA, IPMI_GET_IPMI_V15_DATA, + IPMI_GET_IPMI_DATA_VALID, tmpl_cmd_get_channel_auth_caps_v20_rq, + tmpl_cmd_get_channel_auth_caps_v20_rs, + fill_cmd_get_channel_auth_caps_v20): New templates and functions. + + * ipmiping/src/ipmiping.c, rmcpping/src/rmcpping.c, + libfreeipmi/src/ipmi-ping.h, libfreeipmi/src/ipmi-ping.c, + rmcpping/rmcpping.8.in, ipmiping/ipmiping.8.in: Added support for + ipmi 2.0 ping. + + * libfreeipmi/src/ipmi-ping.c (_get_rand): Removed function. + + * libfreeipmi/src/ipmi-ping.c (_main_loop): Use ipmi_get_random + rather than _get_rand. + + IPMIPOWER + + * ipmipower/src/ipmipower_utils.c (get_rand): Utilize + ipmi_get_random. + + FISH + + * fish/extensions/bmc-config.scm: Support SOL configuration. + + * fish/extensions/bc-sol-conf-section.scm: New file. + + AUTOCONF/AUTOMAKE + + * configure.ac: Add libgcrypt check. + + * libfreeipmi/src/Makefile.am, libfreeipmi/include/Makefile.am: + Added appropriate new files and libraries. + + MISC + + * freeipmi.spec.in: Add gcrypt dependencies. + +2006-03-05 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-comp-code-spec.h, + libfreeipmi/src/ipmi-error.c (ipmi_strerror_r): Update completion + code error codes and strings based on updated IPMI 2.0 spec. + + * libfreeipmi/include/freeipmi/ipmi-ssif-interface.h, + libfreeipmi/src/ipmi-ssif-interface.c: Renamed to ipmi-ssif-api.h + and ipmi-ssif-api.c respectively. + + * libfreeipmi/include/freeipmi/ipmi-kcs-interface.h, + libfreeipmi/src/ipmi-kcs-interface.c: Renamed to ipmi-kcs-api.h + and ipmi-kcs-api.c respectively. + + * libfreeipmi/include/freeipmi/udm/ipmi-ssif-interface-udm.h, + libfreeipmi/src/udm/ipmi-ssif-interface-udm.c: Renamed to + ipmi-ssif-api-udm.h and ipmi-ssif-api-udm.c respectively. + + * libfreeipmi/include/freeipmi/udm/ipmi-kcs-interface-udm.h, + libfreeipmi/src/udm/ipmi-kcs-interface-udm.c: Renamed to + ipmi-kcs-api-udm.h and ipmi-kcs-api-udm.c respectively. + + * common/src/err-wrappers.h (ERR_NULL_RETURN): Fix bug. + + * libfreeipmi/include/freeipmi/freeipmi.h: Move all udm stuff to + libfreeipmi/include/freeipmi/udm/udm.h. + + * libfreeipmi/include/freeipmi/ipmi-slave-address-spec.h: New file. + + * libfreeipmi/include/freeipmi/ipmi-ssif-api.h, + libfreeipmi/include/freeipmi/ipmi-lan.h: Remove defines duplicated + by ipmi-slave-address-spec.h. + + * libfreeipmi/include/freeipmi/ipmi-lan.h (IPMI_LAN_RQ_SEQ_INC): + Removed macro. + + * libfreeipmi/: Adjust makefiles and code appropriately for new + includes and defines. + + * Attempted to convert "addr" abbreviation to "address" globally. + + * ipmipower/src/ipmipower_auth.h, ipmipower/src/ipmipower_auth.c: + Renamed to ipmipower_authentication.h and + ipmipower_authentication.c respectively. + + * ipmipower/: Various code cleanup. Various minor re-architecture + of code to eventually support ipmi 2.0. + +2006-03-04 Albert Chu + + * common/src/err-wrappers.h; New macros for errno returns. + + * common/, libfreeipmi/: Use new macros. Some general code + cleanup and bug fixing. + +2006-03-03 Albert Chu + + * libfreeipmi/src/fiid.c, libfreeipmi/include/freeipmi/fiid.h + (fidd_template_compare): New function. + + * libfreeipmi/include/freeipmi/ipmi-debug.h: Export unexecpted + data template. + + * libfreeipmi/include/Makefile.am: Add freeipmi.h. + + * libfreeipmi/include/freeipmi/ipmi-debug.h: Move defines into + ipmi-debug.c. + + * common/src/md2.h, common/src/md2.c, common/src/md5.h, + common/src/md5.c: 'LEN' -> 'LENGTH'. + + * libfreeipmi/: Adjust code for #define changes. + + * freeipmi.spec.in: Add %dir directives for /usr/include/freeipmi + and /usr/include/freeipmi/udm. + + * libfreeipmi/: Various variable name changes for consistency. + Several function parameter ordering changes for consistency. + + * configure.ac: Autoconfed getopt.h. + + * bmc-watchdog/src/bmc-watchdog.c, common/src/ipmi-ping.c, + garpd/src/garpd.c, ipmipower/src/ipmipower_config.c: Check for + HAVE_GETOPT_H. + +2006-03-02 Anand Babu + + * doc/freeipmi.texi: fixed syntax errors that prevented PDF + creation. + + * doc/authors.texi: fixed email address to evade spammers. + +2006-03-02 Albert Chu + + * Globally rename ipmi_lan_check_session_authcode to + ipmi_lan_check_session_authentication_code. + + * libfreeipmi/src/fiid.c (_fiid_obj_block_len): Removed function. + + * libfreeipmi/src/fiid.c, libfreeipmi/include/freeipmi/fiid.h + (fiid_obj_block_len, fiid_obj_block_len_bytes): New functions. + + * common/src/fiid-wrappers.h (FIID_OBJ_BLOCK_LEN, + FIID_OBJ_BLOCK_LEN_BYTES, FIID_OBJ_BLOCK_LEN_BYTES_CLEANUP, + FIID_OBJ_DUP, FIID_OBJ_DUP_CLEANUP, + FIID_OBJ_TEMPLATE_COMPARE_CLEANUP): New wrappers. + +2006-03-01 Albert Chu + + * libfreeipmi/: Clear objects before setting in all fill functions. + +2006-02-28 Albert Chu + + * libfreeipmi/include/freeipmi/ipmi-lan-interface.h, + libfreeipmi/src/ipmi-lan-interface.c: Split off some code into + ipmi-lan.h, ipmi-lan.c, ipmi-lan-utils.h, and ipmi-lan-utils.c. + + * libfreeipmi/include/freeipmi/ipmi-kcs-interface.h, + libfreeipmi/src/ipmi-kcs-interface.c: Split off some code into + ipmi-kcs.h and ipmi-kcs.c. + + * libfreeipmi/src/rmcp.c, libfreeipmi/include/freeipmi/rmcp.h + (ipmi_rmcp_check_message_tag): Reverse parameters for consistency + to other functions. + + * libfreeipmi/src/rmcp.h, libfreeipmi/src/rmcp.c: Split + off some code into rmcp-utils.h and rmcp-utils.c. + + * libfreeipmi/src/ipmi-messaging-support-cmds.h + (IPMI_MAX_AUTHENTICATION_CODE_LENGTH): Move define to ipmi-lan.h. + + * Globally re-adjust code for new files, includes, and define locations. + + * libfreeipmi/src/ipmi-error.c, libfreeipmi/include/freeipmi/ipmi-error.h + (ipmi_kcs_strstatus_r): Moved to ipmi-kcs-interface.c. + + * libfreeipmi/include/freeipmi/ipmi-kcs-interface.h, + libfreeipmi/include/freeipmi/ipmi-ssif-interface.h: Cleaned up by + moving #defines into ipmi-kcs-interface.c and + ipmi-ssif-interface.c. + +2006-02-28 Albert Chu + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_completion_code_check): Rename to + ipmi_check_completion_code_success for consistency with other + functions. + + * libfreeipmi/src/ipmi-messaging-support-cmds.c, + libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h + (ipmi_check_comp_code): Renamed to ipmi_check_completion_code. + + * libfreeipmi/src/ipmi-messaging-support-cmds.c, + libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h + (ipmi_check_completion_code, ipmi_check_cmd): Moved to + ipmi-utils.c and ipmi-utils.h respectively. + + * common/src/err-wrappers.h: Adjust for function name changes. + + * libfreeipmi/src/ipmi-sensor-utils.c, + libfreeipmi/include/freeipmi/ipmi-sensor-utils.h + (ipmi_sensor_decode_value, ipmi_sensor_get_decode_params): Modify + to return error values. + + * libfreeipmi/src/ipmi-sensor-utils.c, + libfreeipmi/include/freeipmi/ipmi-sensor-utils.h + (ipmi_sensor_get_decode_params): Rename to + ipmi_sensor_get_decode_parameters. + + * common/src/ipmi-sensor-api.c, ipmiping/src/ipmiping.c, + fish/src/bmc-conf2.c: Adjust for function name and parameter + changes. + + * libfreeipmi/src/ipmi-sensor-utils.c, + libfreeipmi/include/freeipmi/ipmi-sensor-utils.h + (ipmi_sensor_get_decode_parameters): Move to ipmi-sensors-api.c + and ipmi-sensors-api.h respectively. + +2006-02-27 Albert Chu + + * libfreeipmi/src/ipmi-error.h, libfreeipmi/src/ipmi-error.c + (ipmi_strerror_r, ipmi_strerror_cmd_r): common/src/ipmi-common.h, + common/src/ipmi-common.c (ipmi_error): Support netfn input + parameter for command error codes/strings. + + * common/src/, bmc-info/, bmc-watchdog/: Adjust code appropriately + to use new functions. + + * libfreeipmi/include/freeipmi/ipmi-messaging-support-cmds.h: + Split off channel, privilege level, and authentication type + defines into ipmi-channel-spec.h, ipmi-privilege-level-spec.h, and + ipmi-authentication-type-spec.h respectively. Fix defines and + validity checks for channels. + + * libfreeipmi/: Adjust for new include files. + + * bmc-info/src/bmc-info.c (display_channel_info, + get_channel_info_list), fish/src/ipmi-wrapper.h, + fish/src/ipmi-wrapper.c (get_channel_info_list, : Use new defines + and checkers appropriately. + +2006-02-26 Albert Chu + + * libfreeipmi/include/freeipmi/udm, libfreeipmi/src/udm: Partition + off .c and .h files for udm into subdirectories. + + * Globally adjust makefiles and includes to work off new include + locations. + + * Remove '2' suffix from all UDM functions. + + * libfreeipmi/src/ipmi-sdr-repository-cache-api.c, + libfreeipmi/src/ipmi-sel-api.c, libfreeipmi/src/ipmi-sensor-api.c, + libfreeipmi/include/freeipmi/ipmi-sdr-repository-cache-api.h, + libfreeipmi/include/freeipmi/ipmi-sel-api.h, + libfreeipmi/include/freeipmi/ipmi-sensor-api.h, + libfreeipmi/src/fiid-wrappers.h, libfreeipmi/src/err-wrappers.h, + libfreeipmi/src/freeipmi-portability.h, + libfreeipmi/src/freeipmi-portability.c: Move to common/src/ as + convenience libraries and headers. + + * fish/, libfreeipmi/: Adjust makefiles and code appropriately for + new location of includes and convenience libraries. + + * common/src/ipmi-sel-api.c, bmc-info/src/bmc-info.c, + fish/src/common.h, ipmi-locate/src/ipmi-locate.c, + ipmi-raw/src/ipmi-raw.c, + libfreeipmi/src/udm/ipmi-messaging-support-cmds-udm.c::Fix include + typo with sys/time.h and time.h. + +2006-02-25 Albert Chu + + * libfreeipmi/include/, libfreeipmi/include/freeipmi: Move + distributed files into libfreeipmi/include/freeipmi. + + * Globally re-work includes to work off "freeipmi/X" .h files. + + * libfreeipmi/src/freeipmi-build.h: Removed file. + +2006-02-24 Albert Chu + + * Continue include reorganization to prepare for libfreeipmi + rearchitecture. + + * common/src/argp-common.c, common/src/ipmi-ping.c, + bmc-info/src/bmc-info.c, bmc-info/src/bmc-info-argp.c, + bmc-watchdog/src/bmc-watchdog.c, doc/examples/udm-test.c, + ipmi-locate/src/ipmi-locate.c, ipmiping/src/ipmiping.c, + ipmipower/src/ipmipower_wrappers.h, ipmipower/src/ipmipower.h, + rmcpping/src/rmcpping.c, ipmi-raw/src/ipmi-raw.c, + ipmi-raw/src/ipmi-raw-argp.c, fish/src/common.h: Remove need for + freeipmi-build.h. + + * common/src/argp-common.h, common/src/md2.h, common/src/md5.h: + Fix up includes. + + * libfreeipmi/src/libfreeipmi.c: Renamed to freeipmi-portability.c. + + * libfreeipmi/src/Makefile.am: Adjust for file name change. + +2006-02-24 Albert Chu + + * libfreeipmi/src/ipmi-locate-acpi-spmi.h, + libfreeipmi/src/ipmi-locate-smbios.h: Remove files. Move #defines + into ipmi-locate-acpi-spmi.c and ipmi-locate-smbios.c + respectively. + + * libfreeipmi/src/fiid.c, libfreeipmi/src/ipmi-debug.c, + libfreeipmi/src/ipmi-error.c, libfreeipmi/src/ipmi-semaphores.c, + libfreeipmi/src/ipmi-locate-defaults.c, + libfreeipmi/src/ipmi-locate-smbios.c, + libfreeipmi/src/ipmi-locate-acpi-spmi.c, + libfreeipmi/src/ipmi-locate-pci.c, + libfreeipmi/src/ipmi-sensor-types-spec.c, + libfreeipmi/src/ipmi-sensor-event-messages.c, + libfreeipmi/src/ipmi-sensor-units-spec.c, + libfreeipmi/src/ipmi-sensor-utils.c, + libfreeipmi/src/ipmi-bmc-watchdog-timer-cmds.c, + libfreeipmi/src/ipmi-chassis-cmds.c, + libfreeipmi/src/ipmi-device-global-cmds.c, + libfreeipmi/src/ipmi-lan-cmds.c, + libfreeipmi/src/ipmi-messaging-support-cmds.c, + libfreeipmi/src/ipmi-pef-and-alerting-cmds.c, + libfreeipmi/src/ipmi-sdr-repository-cmds.c, + libfreeipmi/src/ipmi-sel-cmds.c, + libfreeipmi/src/ipmi-sensor-cmds.c, + libfreeipmi/src/ipmi-serial-modem-cmds.c, + libfreeipmi/src/ipmi-sol-cmds.c, + libfreeipmi/src/ipmi-bmc-watchdog-timer-cmds-udm.c, + libfreeipmi/src/ipmi-chassis-cmds-udm.c, + libfreeipmi/src/ipmi-device-global-cmds-udm.c, + libfreeipmi/src/ipmi-lan-cmds-udm.c, + libfreeipmi/src/ipmi-messaging-support-cmds-udm.c, + libfreeipmi/src/ipmi-pef-and-alerting-cmds-udm.c, + libfreeipmi/src/ipmi-sdr-repository-cmds-udm.c, + libfreeipmi/src/ipmi-sel-cmds-udm.c, + libfreeipmi/src/ipmi-sensor-cmds-udm.c, + libfreeipmi/src/ipmi-serial-modem-cmds-udm.c, + libfreeipmi/src/ipmi-sol-cmds-udm.c, + libfreeipmi/src/ipmi-sdr-record-types.c, + libfreeipmi/src/ipmi-sdr-repository-cache-api.c, + libfreeipmi/src/ipmi-sensor-api.c, + libfreeipmi/src/ipmi-sel-api.c, + libfreeipmi/src/ipmi-kcs-interface.c, + libfreeipmi/src/ipmi-kcs-interface-udm.c, + libfreeipmi/src/ipmi-lan-interface.c, + libfreeipmi/src/ipmi-lan-interface-udm.c, + libfreeipmi/src/ipmi-smic-interface.c, + libfreeipmi/src/ipmi-ssif-interface.c, + libfreeipmi/src/ipmi-ssif-interface-udm.c: Remove need for + freeipmi-build.h. + + * libfreeipmi/src/fiid.h, libfreeipmi/src/ipmi-debug.h, + libfreeipmi/src/ipmi-error.h, libfreeipmi/src/ipmi-semaphores.h, + libfreeipmi/src/ipmi-locate-defaults.h, + libfreeipmi/src/ipmi-locate-smbios.h, + libfreeipmi/src/ipmi-locate-acpi-spmi.h, + libfreeipmi/src/ipmi-locate-pci.h, + libfreeipmi/src/ipmi-sensor-types-spec.h, + libfreeipmi/src/ipmi-sensor-event-messages.h, + libfreeipmi/src/ipmi-sensor-units-spec.h, + libfreeipmi/src/ipmi-sensor-utils.h, + libfreeipmi/src/ipmi-bmc-watchdog-timer-cmds.h, + libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-device-global-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-messaging-support-cmds.h, + libfreeipmi/src/ipmi-pef-and-alerting-cmds.h, + libfreeipmi/src/ipmi-sdr-repository-cmds.h, + libfreeipmi/src/ipmi-sel-cmds.h, + libfreeipmi/src/ipmi-sensor-cmds.h, + libfreeipmi/src/ipmi-serial-modem-cmds.h, + libfreeipmi/src/ipmi-sol-cmds.h, + libfreeipmi/src/ipmi-bmc-watchdog-timer-cmds-udm.h, + libfreeipmi/src/ipmi-chassis-cmds-udm.h, + libfreeipmi/src/ipmi-device-global-cmds-udm.h, + libfreeipmi/src/ipmi-lan-cmds-udm.h, + libfreeipmi/src/ipmi-messaging-support-cmds-udm.h, + libfreeipmi/src/ipmi-pef-and-alerting-cmds-udm.h, + libfreeipmi/src/ipmi-sdr-repository-cmds-udm.h, + libfreeipmi/src/ipmi-sel-cmds-udm.h, + libfreeipmi/src/ipmi-sensor-cmds-udm.h, + libfreeipmi/src/ipmi-serial-modem-cmds-udm.h, + libfreeipmi/src/ipmi-sol-cmds-udm.h, + libfreeipmi/src/ipmi-sdr-record-types.h, + libfreeipmi/src/ipmi-sdr-repository-cache-api.h, + libfreeipmi/src/ipmi-sensor-api.h, + libfreeipmi/src/ipmi-sel-api.h + libfreeipmi/src/ipmi-ipmb-interface.h, + libfreeipmi/src/ipmi-kcs-interface.h, + libfreeipmi/src/ipmi-kcs-interface-udm.h, + libfreeipmi/src/ipmi-lan-interface.h, + libfreeipmi/src/ipmi-lan-interface-udm.h, + libfreeipmi/src/ipmi-smic-interface.h, + libfreeipmi/src/ipmi-ssif-interface.h, + libfreeipmi/src/ipmi-ssif-interface-udm.h: Fix includes. + + * libfreeipmi/src/Makefile.am: Cleanup. + + * libfreeipmi/src/freeipmi-portability.h: New file. + +2006-02-23 Albert Chu + + * libfreeipmi/src/ipmi-udm.c (ipmi_open_inband): Fix seg-fault + corner case and mem-leak corner case. + + * ipmi-locate/src/ipmi-locate.c: Fix various mem-leaks. + + * libfreeipmi/src/ipmi-locate-acpi-spmi.c, + libfreeipmi/src/ipmi-locate-acpi-spmi.h, + libfreeipmi/src/ipmi-locate-pci.c, + libfreeipmi/src/ipmi-locate-pci.h, + libfreeipmi/src/ipmi-locate-smbios.c, + libfreeipmi/src/ipmi-locate-smbios.h, + libfreeipmi/src/ipmi-locate-defaults.c, and + libfreeipmi/src/ipmi-locate-defaults.h: Redo locate function interfaces. + + * libfreeipmi/src/ipmi-locate-pci.h, + libfreeipmi/src/ipmi-locate-defaults.h: Remove files. + + * libfreeipmi/, ipmi-locate/: Adjust for function style changes + appropriately. + +2006-02-23 Albert Chu + + * libfreeipmi/src/ipmi-md2.h, libfreeipmi/src/ipmi-md2.c, + libfreeipmi/src/ipmi-md5.h, libfreeipmi/src/ipmi-md5.c: Moved into + common/src into md2.h, md2.c, md5.h, and md5.c respectively. + + * libfreeipmi/src/rmcp.h, libfreeipmi/src/rmcp.c + (ipmi_rmcp_message_tag_chk): Rename to + ipmi_rmcp_check_message_tag. + + * libfreeipmi/src/rmcp.h: RMCP_PRI_RMCP_PORT renamed to + RMCP_PRIMARY_RMCP_PORT and RMCP_SEC_RMCP_PORT renamed to + RMCP_SECONDARY_RMCP_PORT. + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_chksum): Renamed to ipmi_checksum. + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_comp_test): Renamed to ipmi_completion_code_check. + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_check_chksum): + Renamed to ipmi_lan_check_checksum. + + * libfreeipmi/src/ipmi-lan-interface.c: Globally use "checksum" + instead of "chksum" in templates and code. + + * libfreeipmi/src/ipmi-debug.c (_dprintf, _write): Move into + common/src/ipmi-common.h and ipmi-common.c. + + * libfreeipmi/src/ipmi-debug.c (ipmi_smic_print_flags, + ipmi_kcs_print_flags): Move to ipmi-smic-interface.c and + ipmi-kcs-interface.c appropriately. + + * libfreeipmi/src/ipmi-sensor-types.h, + libfreeipmi/src/ipmi-sensor-types.c: Split into + ipmi-sensor-types-spec.h, ipmi-sensor-types-spec.c, + ipmi-sensor-units-spec.h, ipmi-sensor-units-spec.c. + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_open_free_udp_port): Move to ipmi-common.h and ipmi-common.c. + + * libfreeipmi/src/ipmi-utils.c, libfreeipmi/src/rmcp.c: Begin + putting specific includes into .c files so freeipmi-build.h need + is limited. + + * libfreeipmi/src/acpi-spmi-locate.c, + libfreeipmi/src/acpi-spmi-locate.h, libfreeipmi/src/pci-locate.c, + libfreeipmi/src/pci-locate.h, libfreeipmi/src/smbios-locate.c, + libfreeipmi/src/smbios-locate.h, + libfreeipmi/src/defaults-locate.h, + libfreeipmi/src/defaults-locate.c: Renamed to + ipmi-locate-acpi-spmi.c, ipmi-locate-acpi-spmi.h, + ipmi-locate-pci.c, ipmi-locate-pci.h, ipmi-locate-smbios.c, + ipmi-locate-smbios.h, ipmi-locate-defaults.c, and + ipmi-locate-defaults.h. Adjusted function naming appropriately. + Added parameter checks and various minor code cleanup. + + * common/, ipmiping/, fish/, ipmipower/, libfreeipmi/: Adjust + makefiles and code for various location changes, include changes, + define, or function name changes. + +2006-02-23 Albert Chu + + * libfreeipmi/src/ipmi-sensor-event-messages.h, + libfreeipmi/src/ipmi-sensor-event-messages.c: Re-organized for + generic use. + + * libfreeipmi/src/ipmi-sensor-event-messages.h, + libfreeipmi/src/ipmi-sensor-event-messages.c + (ipmi_get_generic_event_message_list, + ipmi_get_event_message_list): Move to ipmi-sensors-api.h and + ipmi-sensors-api.c. These are convenience functions specifically + for the sensors api, not generic functions. + + * libfreeipmi/src/bit-ops.h, libfreeipmi/src/bit-ops.c: Moved + files into convenience libraries in common/src. + + * libfreeipmi/src/freeipmi.h, libfreeipmi/src/Makefile.am, + common/src/Makefile.am, fish/src/Makefile.am: Adjusted + appropriately for bit-ops.h and bit-ops.c reorganization. + + * libfreeipmi/src/xmalloc.h, libfreeipmi/src/xmalloc.c: Remove + "ipmi_" prefix on functions. + + * libfreeipmi/: Adjust code appropriately for function name changes. + + * libfreeipmi/src/xmalloc.h, libfreeipmi/src/xmalloc.c: Moved + files into convenience libraries in common/src. + + * libfreeipmi/src/freeipmi.h, libfreeipmi/src/Makefile.am, + common/src/Makefile.am: Adjusted appropriately for xmalloc.h and + xmalloc.c reorganization. + + * libfreeipmi/src/ipmi-inband.h: New file. + + * libfreeipmi/src/freeipmi-build.h: New file. + + * libfreeipmi/src/freeipmi.h: Remove code moved to new files. + + * libfreeipmi/src/freeipmi-build.h: Split off build specific stuff + from freeipmi.h. + + * Globally remove -DFREEIPMI_BUILD and -DFREEIPMI_LIBRARY from + Makefiles. + + * Globally replace "freeipmi.h" with "freeipmi-build.h" until .h + file reorganization is done later on. + + * libfreeipmi/src/Makefile.am, libfreeipmi/src/freeipmi-build.h: + Split off ipmi-semaphores.h to non-disted. + + * libfreeipmi/, fish/: Adjusted includes appropriately. + + * libfreeipmi/src/acpi-spmi-locate.c (ipmi_acpi_get_rsdp, + ipmi_acpi_get_firmware_table): Remove strdupa calls, which are + meaningless. + + * libfreeipmi/src/freeipmi-build.h (strdupa, strndupa): Removed + macros. + + * libfreeipmi/src/freeipmi-build.h: Moved all bool, true, false + macros/definitions to ipmi-common.h. Move WORDSIZE code to + ipmi-common.h. + + * libfreeipmi/: Several typo/logic bug fixes. + +2006-02-21 Albert Chu + + * libfreeipmi/src/ipmi-sensor-types.h, + libfreeipmi/src/ipmi-sensor-types.c: Fix string arrays and + definitions to match IPMI spec and make similar to the rest of + libfreeipmi. Make abbreviations match standards. + + * libfreeipmi/src/ipmi-sensor-types.h, + libfreeipmi/src/ipmi-sensor-types.c + (ipmi_is_oem_reserved_sensor_type): Removed function. + + * libfreeipmi/src/ipmi-sensor-types.h, + libfreeipmi/src/ipmi-sensor-types.c + (ipmi_sensor_classify, ipmi_get_sensor_group): Move to + ipmi-sensor-api.h and ipmi-sensor-api.c. These functions do not + match against a part of the IPMI spec and are convenience + functions. + + * libfreeipmi/src/ipmi-sensor-types.h, + libfreeipmi/src/ipmi-sensor-types.c: Renamed + ipmi_sensor_units_short to ipmi_sensor_units_abbreviated. + +2006-02-20 Albert Chu + + * libfreeipmi/src/ipmi-sdr-repository-cmds-udm.h, + libfreeipmi/src/ipmi-sdr-repository-cmds-udm.c + (ipmi_cmd_get_sdr_chunk2): Renamed ipmi_cmd_get_sdr2. Adjusted to + fit UDM model. + + * libfreeipmi/src/ipmi-sdr-repository-cmds-udm.c + (ipmi_cmd_get_sensor_record_header2): Removed function. + + * libfreeipmi/src/ipmi-sdr-repository-cmds-udm.c + (ipmi_cmd_get_sdr2): Renamed to get_sdr_sensor_record and put + into ipmi-sensor-api.h and ipmi-sensor-api.c. Adjusted based on + above changes. + + * libfreeipmi/: Various minor code cleanup. + +2006-02-19 Albert Chu + + * libfreeipmi/: Continued code cleanup. + +2006-02-18 Albert Chu + + * libfreeipmi/src/fiid-wrappers.h: New file. + + * libfreeipmi/src/err-wrappers.h: New file. + + * libfreeipmi/src/fiid.h: Remove old macros. + + * libfreeipmi/src/ipmi-error.h: Remove old macros. + + * libfreeipmi/: Cleanup using new FIID macros, ERR macros, and + general cleanup. + +2006-02-17 Albert Chu + + * libfreeipmi/src/ipmi-lan-interface.c + (ipmi_lan_check_session_authcode): Fix parameter check. + + * Globally change "passwd" to "password". + + * libfreeipmi/src/ipmi-msg-interface-desc.h, + libfreeipmi/src/ipmi-msg-interface-desc.c: Removed files. + + * libfreeipmi/src/ipmi-sensor-api.c (get_system_software_type): + New function. + + * libfreeipmi/src/ipmi-sensor-api.c (get_sensor_reading): Use + get_system_software_type. + + * libfreeipmi/src/fiid.h: Begin work to localize FIID macros + internal only to hte library. + + * bmc-info/src/bmc-info.c (_FIID_OBJ_GET): New macro. Used + throughout bmc-info.c. + +2006-02-17 Albert Chu + + * libfreeipmi/src/ipmi-watchdog.h, + libfreeipmi/src/ipmi-watchdog.c: Renamed to + ipmi-bmc-watchdog-timer-cmds.h and ipmi-bmc-watchdog-timer-cmds.c + respectively. Cleanup definitions. + + * libfreeipmi/src/ipmi-serial-cmds, + libfreeipmi/src/ipmi-serial-cmds.c, + libfreeipmi/src/ipmi-serial-cmds-udm.h, + libfreeipmi/src/ipmi-serial-cmds-udm.c: Renamed to + ipmi-serial-modem-cmds.h, ipmi-serial-modem-cmds.c, + ipmi-serial-modem-cmds-udm.h, and ipmi-serial-modem-cmds-udm.c + respectively. + + * libfreeipmi/src/ipmi-serial-modem-param-spec.h: Cleanup definitions. + + * libfreeipmi/src/ipmi-dev-global-cmds, + libfreeipmi/src/ipmi-dev-global-cmds.c, + libfreeipmi/src/ipmi-dev-global-cmds-udm.h, + libfreeipmi/src/ipmi-dev-global-cmds-udm.c: Renamed to + ipmi-device-global-cmds.h, ipmi-device-global-cmds.c, + ipmi-device-global-cmds-udm.h, and ipmi-device-global-cmds-udm.c + respectively. + + * libfreeipmi/src/ipmi-msg-support-cmds, + libfreeipmi/src/ipmi-msg-support-cmds.c, + libfreeipmi/src/ipmi-msg-support-cmds-udm.h, + libfreeipmi/src/ipmi-msg-support-cmds-udm.c: Renamed to + ipmi-messaging-support-cmds.h, ipmi-messaging-support-cmds.c, + ipmi-messaging-support-cmds-udm.h, and ipmi-messaging-support-cmds-udm.c + respectively. + + * libfreeipmi/src/ipmi-sdr-repo-cmds, + libfreeipmi/src/ipmi-sdr-repo-cmds.c, + libfreeipmi/src/ipmi-sdr-repo-cmds-udm.h, + libfreeipmi/src/ipmi-sdr-repo-cmds-udm.c: Renamed to + ipmi-sdr-repository-cmds.h, ipmi-sdr-repository-cmds.c, + ipmi-sdr-repository-cmds-udm.h, and ipmi-sdr-repository-cmds-udm.c + respectively. + + * libfreeipmi/src/ipmi-sdr-repo-cache, + libfreeipmi/src/ipmi-sdr-repo-cache.c: Renamed to + ipmi-sdr-repository-cache-api.h and ipmi-sdr-repository-cache-api.c + respectively. + + * libfreeipmi/, fish/, bmc-watchdog/: Adjust code appropriately. + + * libfreeipmi/src/ipmi-sdr-repository-cache-api.h, + libfreeipmi/src/ipmi-sdr-repository-cache-api.c + (ipmi_is_sensor_reading_available, + ipmi_sdr_repository_cache_sensor_classify, + ipmi_sdr_repository_cache_get_sensor_group, + ipmi_sdr_repository_cache_get_sensor_name): Remove legacy utility functions. + +2006-02-17 Albert Chu + + * libfreeipmi/src/ipmi-sensor-cmds.h, + libfreeipmi/src/ipmi-sensor-cmds.c: Code cleanup. + + * libfreeipmi/, fish/: Adjust code appropriately. + + * tagged freeipmi_0_3_0_libfreeipmi_template_function_cleanup + + * merged in freeipmi_0_3_0_libfreeipmi_template_function_cleanup + from freeipmi_0_3_0_devel_branch. + +2006-02-16 Albert Chu + + * libfreeipmi/src/ipmi-pef-cmds.h, + libfreeipmi/src/ipmi-pef-cmds.c: Code cleanup. + + * libfreeipmi/src/ipmi-pef-param-spec.h: Add new entries. + + * libfreeipmi/, fish/: Adjust code appropriately. + + * libfreeipmi/src/ipmi-pef-cmds.h, + libfreeipmi/src/ipmi-pef-cmds.c, libfreeipmi/src/ipmi-sol-cmds.h, + libfreeipmi/src/ipmi-sol-cmds.c, libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.c, + libfreeipmi/src/ipmi-serial-cmds.c, + libfreeipmi/src/ipmi-serial-cmds.h: Alter naming convention. + + * libfreeipmi/src/ipmi-sdr-repo-cmds.h, + libfreeipmi/src/ipmi-sdr-repo-cmds.c: Code cleanup. + + * libfreeipmi/, fish/: Adjust code appropriately. + + * libfreeipmi/src/ipmi-sel-cmds.h, + libfreeipmi/src/ipmi-sel-cmds.c: Code cleanup. + + * libfreeipmi/, fish/: Adjust code appropriately. + + * libfreeipmi/src/ipmi-sdr-record-types.c: Cleanup templates. + + * libfreeipmi/, fish/: Adjust code appropriately. + + * libfreeipmi/src/ipmi-sel-record-types.c: Cleanup templates. + + * libfreeipmi/src/ipmi-sel-record-types.h, + libfreeipmi/src/ipmi-sel-record-types.c, + libfreeipmi/src/ipmi-sel-api.h, libfreeipmi/src/ipmi-sel-api.c: + Reorganize code. + + * libfreeipmi/, fish/: Adjust code appropriately. + +2006-02-15 Albert Chu + + * libfreeipmi/, ipmipower/, fish/: Continued lan-cmds and + msg-support-cmds cleanup. + + * libfreeipmi/src/ipmi-lan-interface.c (unassemble_ipmi_lan_pkt), + libfreeipmi/src/ipmi-debug.c (ipmi_dump_lan_packet): Fix + unassembly bug. + + * libfreeipmi/src/ipmi-dev-global-cmds.h, + libfreeipmi/src/ipmi-dev-global-cmds.c: Cleanup. + + * fish/, bmc-info/, libfreeipmi/: Adjust code appropriately. + + * libfreeipmi/src/ipmi-comp-code-spec.h, + libfreeipmi/src/ipmi-error.c: Add new reset watchdog timer error + codes and error strings. + + * libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-chassis-cmds.c: Code cleanup. + + * libfreeipmi/, ipmipower/: Adjusted code appropriately. + + * libfreeipmi/src/ipmi-serial-cmds.h, + libfreeipmi/src/ipmi-serial-cmds.c: Support variable length + configuration templates. Code cleanup. + + * libfreeipmi/, fish/: Adjusted code appropriately. + + * libfreeipmi/src/ipmi-comp-code-spec.h: Add completion codes for + lan, serial-modem, pef, and sol configuration commands. + + * libfreeipmi/src/ipmi-error.c: Add error messages for lan, + serial-modem, pef, and sol configuration commands. + + * libfreeipmi/src/ipmi-cmd-spec.h: Add SOL commands. + + * libfreeipmi/src/ipmi-sol-param-spec.h: New file. + + * libfreeipmi/src/ipmi-sol-cmds.h, + libfreeipmi/src/ipmi-sol-cmds.c: Code cleanup. + + * libfreeipmi/ : Adjust code appropriately. + +2006-02-14 Albert Chu + + * libfreeipmi/src/rmcp.c (tmpl_cmd_asf_presence_pong): Add + security extensions bit field. + + * libfreeipmi/src/rmcp.h, libfreeipmi/src/rmcp.c: Code cleanup. + + * rmcpping/, ipmipower/, fish/: Adjust code appropriately. + + * libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.c: Support variable length + configuration templates. Code cleanup. + + * fish/, libfreeipmi/, bmc-watchdog/: Adjust code appropriately. + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_ipv4_address_string2int, ipmi_mac_address_string2int): New + functions. + + * fish/src/bmc-conf2.c (set_bmc_lan_conf_ip_address, + set_bmc_lan_conf_mac_address): Use new function. + + * libfreeipmi/src/ipmi-watchdog.h, + libfreeipmi/src/ipmi-watchdog.c: Code cleanup. + + * libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-msg-support-cmds.c: Code cleanup. + + * libfreeipmi/src/ipmi-msg-support-cmds.h: Consolidate the + multiple user name, password, challenge string, and auth-code + defines. Cleanup auth-type defines. + + * libfreeipmi/, ipmiping/, ipmipower/, fish/: Adjust code appropriately. + +2006-02-13 Albert Chu + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_chksum_test): Removed function. + + * libfreeipmi/src/rmcp.h, libfreeipmi/src/rmcp.c: Rename + tmpl_hdr_rmcp to tmpl_rmcp_hdr. + + * Push naming consistency across code: + - fill_hdr_session -> fill_lan_session_hdr + - obj_msg_hdr -> obj_lan_msg_hdr + - obj_msg_trlr -> obj_lan_msg_trlr + - tmpl_msg_hdr -> tmpl_lan_msg_hdr + - tmpl_msg_trlr -> tmpl_lan_msg_trlr + - tmpl_hdr_rmcp -> tmpl_rmcp_hdr + - obj_hdr_rmcp -> obj_rmcp_hdr + - "hdr_rmcp" -> "rmcp_hdr" + + * libfreeipmi/src/ipmi-sessions.h, libfreeipmi/src/ipmi-sessions.c + (check_hdr_session_session_seq_num, check_hdr_session_session_id): + Rename to ipmi_lan_check_session_seq_num, + ipmi_lan_check_session_id. + + * libfreeipmi/src/ipmi-sessions.h, + libfreeipmi/src/ipmi-sessions.c, + libfreeipmi/src/ipmi-lan-interface-udm.c, + ipmipower/src/ipmipower_powercmd.c (check_hdr_session_authcode): + Rename to ipmi_lan_check_session_authcode. + + * libfreeipmi/src/ipmi-sessions.h, + libfreeipmi/src/ipmi-sessions.c: Removed files. Moved all code + into ipmi-lan-interface.h and ipmi-lan-interface.c. + + * libfreeipmi/src/freeipmi.h: Remove ipmi-sessions.h. + + * libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.c, + libfreeipmi/src/ipmi-lan-cmds-udm.h, + libfreeipmi/src/ipmi-lan-cmds-udm.c: Code cleanup. Make code more + consistent with IPMI spec. + + * fish/src/bmc-conf2.c, fish/src/scm-procedures.c, + fish/src/extensions.c, fish/extensions/bc-lan-conf-section.scm, + fish/extensions/bc-lan-conf-misc-section.scm: Adjust for code + changes. + + * libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-msg-support-cmds.c: Code cleanup. Make + function name consistent with rest of library. + + * libfreeipmi/src/ipmi-msg-support-cmds-udm.c: Adjust for code + changes. + + * libfreeipmi/src/ipmi-watchdog.h, + libfreeipmi/src/ipmi-watchdog.c: Code cleanup. + + * libfreeipmi/src/bmc-watchdog.c: Adjust for code changes. + + * libfreeipmi/src/rmcp.c: Code cleanup. + +2006-02-13 Albert Chu + + Collective fixes from branch al_fiid_rearchitect_branch at tag + al_fiid_rearchitect_branch_final. See ChangeLog in branch for + detailed day by day changes. + + * libfreeipmi/src/fiid.h, libfreeipmi/src/fiid.c: Re-implemented + with new, more abstract interface. + + * libfreeipmi/src/bit-ops.c (bits_extract, bits_merge): Add parameter checks. + + * libfreeipmi/src/bit-ops.c (bits_merge): Fix bit shifting bug. + + * libfreeipmi/src/ipmi-chassis-cmds.c: Support optional fields + with get chassis status response and chassis identify request. + + * libfreeipmi/src/ipmi-sessions.h, + libfreeipmi/src/ipmi-sessions.c, + libfreeipmi/src/ipmi-lan-interface.c: Support optional auth_code + in LAN sessio header through one template. + + * libfreeipmi/src/ipmi-lan-interface-udm.c: Use interface + assemble/unassembly functions rather than UDM functions. + + * Support new fiid interface globally. + +2006-02-13 Albert Chu + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_read): Fix logic bug. + + * tagged al_libfreeipmi_cleanup_branch_final_merge_complete. + + * libfreeipmi/src/ipmi-udm.c (ipmi_inband_close, ipmi_cmd): SSIF + interface bug fixes. + + * libfreeipmi/src/ipmi-udm.h: Remove unecessary struct members. + + * tagged al_libfreeipmi_cleanup_branch_final_merge_complete_2. + +2006-02-13 Albert Chu + + * Bring in cleanup changes from al_libfreeipmi_cleanup_branch at + tag al_libfreeipmi_cleanup_branch_final. + + * libfreeipmi/src/ipmi-sensor-types.h, + libfreeipmi/src/ipmi-sensor-types.c: Remove old unused arrays. + + * libfreeipmi/src/ipmi-sensor-types.c + (ipmi_sensor_threshold_health_check, + ipmi_sensor_discrete_health_check): Removed functions. + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c, + libfreeipmi/src/ipmi-lan-interface.c: Replace ipmi_chksum_t + definition with int8_t. + + * libfreeipmi/src/rmcp.c (ipmi_rmcp_ping), fish/src/ipmi-wrapper.c + (ipmi_rmcp_ping): Moved function from libfreeipmi into fish + because it is really a convenience function. + + * libfreeipmi/src/ipmi-interface.h, + libfreeipmi/src/ipmi-msg-support-cmds.h: Move #defines from + ipmi-interface.h to ipmi-msg-support-cmds.h. + + * libfreeipmi/src/ipmi-chassis-cmds-udm.c, + libfreeipmi/src/ipmi-chassis-cmds-udm.h, + libfreeipmi/src/ipmi-dev-global-cmds-udm.c, + libfreeipmi/src/ipmi-dev-global-cmds-udm.h, + libfreeipmi/src/ipmi-lan-cmds-udm.c, + libfreeipmi/src/ipmi-lan-cmds-udm.h, + libfreeipmi/src/ipmi-msg-support-cmds-udm.c, + libfreeipmi/src/ipmi-msg-support-cmds-udm.h, + libfreeipmi/src/ipmi-pef-cmds-udm.c, + libfreeipmi/src/ipmi-pef-cmds-udm.h, + libfreeipmi/src/ipmi-sdr-repo-cmds-udm.c, + libfreeipmi/src/ipmi-sdr-repo-cmds-udm.h, + libfreeipmi/src/ipmi-sel-cmds-udm.c, + libfreeipmi/src/ipmi-sel-cmds-udm.h, + libfreeipmi/src/ipmi-sensor-cmds-udm.c, + libfreeipmi/src/ipmi-sensor-cmds-udm.h, + libfreeipmi/src/ipmi-serial-cmds-udm.c, + libfreeipmi/src/ipmi-serial-cmds-udm.h, + libfreeipmi/src/ipmi-sol-cmds-udm.c, + libfreeipmi/src/ipmi-sol-cmds-udm.h, + libfreeipmi/src/ipmi-lan-interface-udm.c, + libfreeipmi/src/ipmi-lan-interface-udm.h, + libfreeipmi/src/ipmi-ssif-interface-udm.c, + libfreeipmi/src/ipmi-ssif-interface-udm.h, + libfreeipmi/src/ipmi-kcs-interface-udm.c, + libfreeipmi/src/ipmi-kcs-interface-udm.h: New files. + + * libfreeipmi/src/ipmi-chassis-cmds.c, + libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-dev-global-cmds.c, + libfreeipmi/src/ipmi-dev-global-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.c, libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-msg-support-cmds.c, + libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-pef-cmds.c, libfreeipmi/src/ipmi-pef-cmds.h, + libfreeipmi/src/ipmi-sdr-repo-cmds.c, + libfreeipmi/src/ipmi-sdr-repo-cmds.h, + libfreeipmi/src/ipmi-sel-cmds.c, libfreeipmi/src/ipmi-sel-cmds.h, + libfreeipmi/src/ipmi-sensor-cmds.c, + libfreeipmi/src/ipmi-sensor-cmds.h, + libfreeipmi/src/ipmi-serial-cmds.c, + libfreeipmi/src/ipmi-serial-cmds.h, + libfreeipmi/src/ipmi-sol-cmds.c, libfreeipmi/src/ipmi-sol-cmds.h: + libfreeipmi/src/ipmi-lan-interface.c, + libfreeipmi/src/ipmi-lan-interface.h, + libfreeipmi/src/ipmi-ssif-interface.c, + libfreeipmi/src/ipmi-ssif-interface.h, + libfreeipmi/src/ipmi-kcs-interface.c, + libfreeipmi/src/ipmi-kcs-interface.h: Split off UDM code into + specific UDM files. + + * libfreeipmi/src/ipmi-udm.h, libfreeipmi/src/ipmi-udm.c: Rename + ipmi-interface.h and ipmi-interface.c appropriately. + + * libfreeipmi/src/ipmi-serial-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.h: Add forgotten templates. + + * libfreeipmi/src/ipmi-msg-support-cmds.h: Add forgotten function + prototypes. + + * libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-msg-support-cmds.c, + libfreeipmi/src/ipmi-lan-interface.h, + libfreeipmi/src/ipmi-lan-interface.c: Remove old functions. + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c, + libfreeipmi/src/acpi-spmi-locate.c (ipmi_ioremap, ipmi_iounmap, + ipmi_get_physical_mem_data): Move from ipmi-utils.h and + ipmi-utils.c into acpi-spmi-locate.c. + + * libfreeipmi/src/ipmi-debug.h, libfreeipmi/src/ipmi-debug.c + (fiid_obj_dump_setup, fiid_obj_dump_perror, fiid_obj_dump, + fiid_obj_dump_lan, fiid_obj_dump_rmcp): Rename functions to + ipmi_dump_setup, ipmi_obj_dump_perror, ipmi_obj_dump, + ipmi_dump_lan_packet, and ipmi_dump_rmcp_packet respectively. + + * Support function re-naming throughout code. + + * libfreeipmi/src/ipmi-kcs-interface.h, + libfreeipmi/src/ipmi-kcs-interface.c: Modify KCS interface. + + * libfreeipmi/src/ipmi-udm.c, + libfreeipmi/src/ipmi-kcs-interface-udm.c: Support new KCS + interface. + + * libfreeipmi/src/ipmi-ssif-interface.h, + libfreeipmi/src/ipmi-ssif-interface.c: Modify SSIF interface. + + * libfreeipmi/src/ipmi-udm.c, + libfreeipmi/src/ipmi-ssif-interface-udm.c: Support new SSIF + interface. + +2006-02-13 Albert Chu + + * rmcpping/, ipmiping/, ipmipower/, bmc-watchdog/, common/, + doc/examples: Fix remaining copyright notices. + + * tagged freeipmi_0_3_0_devel_branch and freeipmi_0_3_0_devel_branch_base. + +2006-02-12 Anand Babu + + * Copyright notices: Updated new FSF's address. + +2006-02-10 Anand Babu + + * Tagged Release-0_2_0. + +2006-02-10 A Balamurugan + + * doc/freeipmi.texi: updated. + + * fish/bmc-config.8.pre.in: updated. + +2006-02-10 A Balamurugan + + * ipmi-raw/src/ipmi-raw.c: bug fix of command hex bytes execution. + +2006-02-09 A Balamurugan + + * doc/examples/Makefile.am: fix for bug #15689, to build non-inst + examples. + + * doc/examples/udm-test.c: updated. + +2006-02-09 A Balamurugan + + * freeipmi.spec.in: updated. + + * doc/examples/Makefile.am: updated. + +2006-02-09 A Balamurugan + + * doc/examples/ipmi-lan-test.c: removed. + + * doc/examples/Makefile.example: updated. + + * doc/examples/udm-test.c: updated. + +2006-02-09 Albert Chu + + * configure.ac: Increment libfreeipmi version with release coming + up. + +2006-02-09 A Balamurugan + + * libfreeipmi/src/ipmi-lan-cmds.c, + libfreeipmi/src/ipmi-pef-cmds.c, libfreeipmi/src/ipmi-sel-api.c, + libfreeipmi/src/ipmi-sensor-api.c: fixed compiler warnings. + +2006-02-09 Albert Chu + + * libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-pef-cmds.h, + libfreeipmi/src/ipmi-sdr-repo-cmds.h, + libfreeipmi/src/ipmi-sel-cmds.h, + libfreeipmi/src/ipmi-sensor-cmds.h, + libfreeipmi/src/ipmi-serial-cmds.h, + libfreeipmi/src/ipmi-sol-cmds.h: Add mising fill functions. + +2006-02-09 A Balamurugan + + * ipmi-raw/doc/ipmi-raw.8.pre.in: updated. + + * ipmi-raw/src/ipmi-raw-argp.[ch]: added --file argument and + command hex bytes as argument. fixed bug #15599 and bug #15600. + + * ipmi-raw/src/ipmi-raw.c: updated. + +2006-02-09 Albert Chu + + * libfreeipmi/src/ipmi-lan-cmds.c (fill_lan_set_arp, + fill_lan_set_gratuitous_arp_interval, + fill_lan_set_auth_type_enables, fill_lan_set_ip_addr_source, + fill_lan_set_ip_addr, fill_lan_set_vlan_id, + fill_lan_set_vlan_priority, fill_lan_set_subnet_mask, + fill_lan_set_mac_addr, fill_get_lan_conf_param, + fill_suspend_bmc_arps), libfreeipmi/src/ipmi-pef-cmds.c + (fill_kcs_alert_immediate, fill_kcs_get_pef_conf_param, + fill_kcs_set_pef_control, fill_kcs_set_global_action_control, + fill_kcs_set_startup_delay, fill_kcs_set_alert_startup_delay, + fill_kcs_set_num_event_filters, fill_kcs_set_filter_table_entry, + fill_kcs_set_filter_table_data1, fill_kcs_set_num_alert_policies, + fill_kcs_set_alert_string_keys, fill_kcs_arm_pef_postpone_timer, + fill_kcs_set_last_processed_event, fill_kcs_pet_ack), + libfreeipmi/src/ipmi-sel-cmds.c (fill_kcs_get_sel_entry, + fill_kcs_delete_sel_entry, fill_kcs_clear_sel), + libfreeipmi/src/ipmi-sensor-cmds.c + (fill_kcs_get_threshold_reading, fill_kcs_get_discrete_reading, + fill_kcs_get_sensor_thresholds), + libfreeipmi/src/ipmi-serial-cmds.c (fill_set_serial_connmode, + fill_set_serial_page_blackout_interval, + fill_set_serial_retry_time, fill_set_serial_comm_bits, + fill_get_serial_conf_param), libfreeipmi/src/ipmi-sol-cmds.c + (fill_sol_conf_sol_enable_disable, fill_get_sol_conf_param): Fix + function prototype consistency issue. + + * libfreeipmi/src/ipmi-lan-cmds.c, + libfreeipmi/src/ipmi-pef-cmds.c, libfreeipmi/src/ipmi-sel-cmds.c, + libfreeipmi/src/ipmi-sensor-cmds.c, + libfreeipmi/src/ipmi-serial-cmds.c, + libfreeipmi/src/ipmi-sol-cmds.c: Adjust function calls for new + prototypes appropriately. + +2006-02-08 Albert Chu + + * libfreeipmi/src/ipmi-sensor-event-messages.c: Move strings into + arrays as much as possible. + + * libfreeipmi/src/ipmi-sensor-types.c: Add forgotten string. + + * libfreeipmi/src/libfreeipmi/src/ipmi-sensor-event-messages.c: + Add new/modified event message strings from errata. + + * libfreeipmi/src/ipmi-sensor-event-messages.c + (get_0D_event_message, get_1B_event_message, + get_1D_event_data2_message, get_1D_event_data3_message, + get_28_event_data3_message, get_28_event_data2_message): New + functions. + + * libfreeipmi/src/ipmi-sensor-event-messages.c + (get_0C_event_message, get_1D_event_message, + get_20_event_message, get_28_event_message): Adjust offsets. + + * libfreeipmi/src/ipmi-sensor-event-messages.c + (ipmi_get_event_data3_message, ipmi_get_event_data2_message, + ipmi_get_event_message): Add new functions. + + * libfreeipmi/src/ipmi-chassis-cmds.c: Support new options in + tmpl_cmd_get_chassis_status_rs from ipmi 2.0 errata. + +2006-02-07 Albert Chu + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_is_root): Removed function. + + * libfreeipmi/src/ipmi-error.h, libfreeipmi/src/ipmi-error.c + (ipmi_error): Removed function. + + * common/src/ipmi-common.h, common/src/ipmi-common.c: New files. + + * common/src/Makefile.am, bmc-info/src/Makefile.am, + ipmi-raw/src/Makefile.am, ipmi-locate/src/Makefile.am, + bmc-info/src/bmc-info.c, ipmi-raw/src/ipmi-raw.c, + ipmi-locate/src/ipmi-locate.c, fish/src/Makefile.am, + fish/src/common.h: Support and make use of new common lib. + + * libfreeipmi/src/ipmi-sha1.h, libfreeipmi/src/ipmi-sha1.c, + libfreeipmi/src/ipmi-hmac.h, libfreeipmi/src/ipmi-hmac.c: Removed + files. + + * libfreeipmi/src/Makefile.am, libfreeipmi/src/freeipmi.h: Remove + appropriate files. + + * libfreeipmi/src/ipmi-cmd-spec.h, + libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-serial-cmds.h, + libfreeipmi/src/ipmi-pef-cmds.h: Move non-cmd-spec #defines out of + ipmi-cmd-spec.h. + + * fish/src/bmc-conf2.c, fish/src/scm-procedures.c: Adjust code + appropriately. + + * libfreeipmi/src/ipmi-error.h, + libfreeipmi/src/ipmi-kcs-interface.h: Move kcs error codes from + ipmi-error.h to ipmi-kcs-interface.h. + + * libfreeipmi/src/ipmi-error.c (ipmi_kcs_strstatus_r): Use new + definition strings. + + * libfreeipmi/src/ipmi-sensor-types.h: Remove commented out code. + + * libfreeipmi/src/ipmi-sensor-types.c: Fix typos. + + * libfreeipmi/src/ipmi-utils.h, libfreeipmi/src/ipmi-utils.c + (ipmi_input_timeout, ipmi_get_random_seed): Removed functions. + + * libfreeipmi/src/ipmi-sensor-utils.h, + libfreeipmi/src/ipmi-sensor-utils.c (ipmi_sensor_decode_value_old, + ipmi_sensor_get_decode_params_old): Removed functions. + + * libfreeipmi/src/ipmi-sensor-utils.h: Fix "is_signed" typoed parameter. + +2006-02-06 Anand Babu + + * configure.ac: Closes bug #15550 "configure guile warning + misleading". guile.m4 installed by guile development library was + used to check guile installation recursively. Thanks to Keith + Owens from SGI for reporting this bug. + +2006-02-06 Albert Chu + + * libfreeipmi/src/ipmi-ssif-interface.c (ipmi_ssif_cmd2): Fix ssif + read bug. + + * libfreeipmi/src/ipmi-netfn-spec.c: Removed file. + + * libfreeipmi/src/ipmi-netfn-spec.h: Removed pre 0.1.0 remnant code. + + * doc/examples/Makefile.am: Fix distcheck. + + * common/src/Makefile.am: Make libargpcommon.la library. + + * bmc-info/src/Makefile.am, ipmi-raw/src/Makefile.am: Use new util library. + + * common/src/arg-common.c: Use config.h for #includes. + + * common/src/Makefile.am, ipmiping/src/Makefile.am, + rmcpping/src/Makefile.am: Linking cleanup. + +2006-02-05 Albert Chu + + * libfreeipmi/src/ipmi-msg-interface-desc.h: Remove duplicate code. + + Comp Code cleanup. + + * libfreeipmi/src/ipmi-comp-code-spec.h: New file. + +2006-02-04 Albert Chu + + * libfreeipmi/src/acpi-spmi-locate.c (ipmi_acpi_get_spmi_table): + Fix parameter overwriting bug. + +2006-02-03 Albert Chu + + * fish/src/ipmi-wrapper.c (ipmi_ping): Remove incorrect warning message. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_channel_info2, ipmi_cmd_get_channel_access2, + ipmi_cmd_get_user_access2, ipmi_cmd_set_user_access2, + ipmi_cmd_set_user_password2, ipmi_cmd_get_user_name2, + ipmi_cmd_set_user_name2, ipmi_cmd_set_channel_access2): Fix + parameter checks. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_cmd2): Fix kcs + read bug. + +2006-02-02 Albert Chu + + * libfreeipmi/src/ipmi-sensor-utils.c + (ipmi_sensor_get_decode_params_old, + ipmi_sensor_get_decode_params), libfreeipmi/src/ipmi-sol-cmds.c + (ipmi_cmd_sol_conf_get_sol_enable2, + ipmi_cmd_sol_conf_sol_enable_disable2, fill_get_sol_conf_param, + fill_sol_conf_sol_enable_disable), libfreeipmi/src/ipmi-pef-cmds.c + (fill_kcs_alert_immediate, fill_kcs_get_pef_conf_param, + fill_kcs_set_pef_control, fill_kcs_set_global_action_control, + fill_kcs_set_startup_delay, fill_kcs_set_alert_startup_delay, + fill_kcs_set_filter_table_entry, fill_kcs_set_num_event_filters, + fill_kcs_set_filter_table_data1, fill_kcs_set_num_alert_policies, + fill_kcs_get_pef_caps, fill_kcs_arm_pef_postpone_timer, + fill_kcs_set_last_processed_event, + fill_kcs_get_last_proessed_event, ipmi_cmd_set_pef_control2, + ipmi_cmd_set_global_action_control2, ipmi_cmd_set_startup_delay2, + ipmi_cmd_set_num_event_filters2, + ipmi_cmd_set_alert_startup_delay2, + ipmi_cmd_set_filter_table_entry2, + ipmi_cmd_set_filter_table_data1_2, + ipmi_cmd_set_num_alert_policies2, ipmi_cmd_alert_immediate2, + ipmi_cmd_get_pef_alert_string2, + ipmi_cmd_get_pef_alert_string_keys2, + ipmi_cmd_get_pef_num_alert_policies2, + ipmi_cmd_get_pef_num_alert_strings2, + ipmi_cmd_get_pef_filter_data1_2, ipmi_cmd_get_pef_control2, + ipmi_cmd_get_pef_global_action_control2, + ipmi_cmd_get_pef_startup_delay2, + ipmi_cmd_get_pef_alert_startup_delay2, + ipmi_cmd_get_pef_num_event_filters2, + ipmi_cmd_get_pef_filter_table_entry2, ipmi_cmd_get_pef_caps2, + ipmi_cmd_arm_pef_postpone_timer2, + ipmi_cmd_set_last_processed_event2, + ipmi_cmd_get_last_processed_event2, ipmi_cmd_pet_ack2), + libfreeipmi/src/ipmi-sensor-types.c + (ipmi_sensor_threshold_health_check, + ipmi_sensor_discrete_health_check), + libfreeipmi/src/ipmi-sensor-cmds.c + (fill_kcs_get_threshold_reading, fill_kcs_get_discrete_reading, + ipmi_cmd_get_threshold_reading2, ipmi_cmd_get_discrete_reading2, + ipmi_cmd_get_sensor_thresholds2), + libfreeipmi/src/ipmi-sel-record-types.c + (get_sel_system_event_record, get_sel_record, + get_sel_non_timestamped_oem_record, + get_sel_timestamped_oem_record), + libfreeipmi/src/ipmi-sel-record-types.c + (get_sel_timestamped_oem_record, + get_sel_non_timestamped_oem_record), + libfreeipmi/src/ipmi-sel-cmds.c (fill_kcs_reserve_sel, + fill_kcs_get_sel_entry, fill_kcs_delete_sel_entry, + fill_kcs_clear_sel, ipmi_cmd_get_sel_info2, + ipmi_cmd_get_sel_alloc_info2, ipmi_cmd_reserve_sel2, + ipmi_cmd_get_sel_entry2, ipmi_cmd_delete_sel_entry2, + ipmi_cmd_clear_sel2), libfreeipmi/src/ipmi-serial-cmds.c + (ipmi_cmd_set_serial_connmode2 + ipmi_cmd_set_serial_page_blackout_interval + ipmi_cmd_set_serial_retry_time2 ipmi_cmd_set_serial_comm_bits2 + ipmi_cmd_get_serial_connmode2 ipmi_cmd_get_serial_page_blackout2 + ipmi_cmd_get_serial_retry_time2 ipmi_cmd_get_serial_comm_bits2), + libfreeipmi/src/ipmi-sel-api.c (ipmi_sel_get_first_entry, + ipmi_sel_get_next_entry, get_sel_info), + libfreeipmi/src/ipmi-sensor-api.c (get_sensor_reading, + get_sdr_record, get_sdr_oem_record, + get_sdr_management_controller_device_locator_record, + get_sdr_logical_fru_device_locator_record, + get_sdr_generic_device_locator_record, + get_sdr_entity_association_record, get_sdr_event_only_record, + get_sdr_compact_record, get_sdr_full_record): Fix parameter + checks. + + * libfreeipmi/src/ipmi-pef-cmds.c + (fill_kcs_alert_immediate, fill_kcs_get_pef_conf_param, + fill_kcs_set_pef_control, fill_kcs_set_global_action_control, + fill_kcs_set_startup_delay, fill_kcs_set_alert_startup_delay, + fill_kcs_set_filter_table_entry, fill_kcs_set_num_event_filters, + fill_kcs_set_filter_table_data1, fill_kcs_set_num_alert_policies, + fill_kcs_get_pef_caps, fill_kcs_arm_pef_postpone_timer, + fill_kcs_set_last_processed_event, + fill_kcs_get_last_proessed_event): Make non-static. + + * libfreeipmi/src/ipmi-pef-cmds.c: Fix templates with duplicate + field names. + + * libfreeipmi/src/ipmi-sensor-event-messages.c + (get_2A_event_data2_message): Fix typo. + + * libfreeipmi/src/ipmi-sensor-api.h, + libfreeipmi/src/ipmi-sensor-api.c (get_sdr_record, + get_sensor_reading): Make return type int8_t. + + * libfreeipmi/src/ipmi-sensor-api.c (get_sdr_event_only_record): + Fix incorrect template usage typo. + +2006-02-01 Albert Chu + + * libfreeipmi/src/ipmi-sdr-repo-cache.c + (ipmi_sdr_repo_info_write, ipmi_sdr_records_write, + ipmi_sdr_cache_create): Fix parameter checks. + + * libfreeipmi/src/ipmi-sdr-repo-cmds.c (fill_kcs_get_repo_info, + fill_kcs_reserve_repo, fill_kcs_get_repo_alloc_info, + fill_kcs_get_sdr_chunk, ipmi_cmd_get_sdr_repo_info2, + ipmi_cmd_get_sdr_repo_alloc_info2, ipmi_cmd_reserve_sdr_repo2, + ipmi_cmd_get_sensor_record_header2, ipmi_cmd_get_sdr_chunk2, + ipmi_cmd_get_sdr2): Fix parameter checks. + + * libfreeipmi/src/ipmi-sdr-repo-cmds.c + (ipmi_cmd_get_sensor_record_header2, ipmi_cmd_get_sdr_chunk2): Use + fiid_template_free. + +2006-02-01 Albert Chu + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (fill_cmd_activate_session, ipmi_lan_open_session, + fill_kcs_get_user_name): Fix parameter checks. + + * libfreeipmi/src/ipmi-chassis-cmds.h + (IPMI_CHASSIS_FORCE_IDENTIFY_VALID): New macro. + + * libfreeipmi/src/ipmi-chassis-cmds.c (fill_cmd_chassis_identify): + Fix parameter checks. + + * libfreeipmi/src/fiid.c (__fiid_template_make): Fix string copy + corner case. + + * libfreeipmi/src/ipmi-lan-cmds.h, libfreeipmi/src/ipmi-lan-cmds.c + (ipmi_cmd_lan_set_auth_type_enables2, + fill_lan_set_auth_type_enables): Make functions pristine to IPMI + spec. + + * fish/src/bmc-conf2.c (_fill_lan_set_auth_type_enables): New + function. + + * fish/src/bmc-conf2.c (set_bmc_lan_conf_auth_type_enables): Use + convenience template. + + * libfreeipmi/src/ipmi-lan-cmds.c (fill_lan_set_ip_addr_source, + fill_lan_set_ip_addr, fill_lan_set_vlan_id, fill_suspend_bmc_arps, + ipmi_cmd_lan_set_arp2, ipmi_lan_set_gratuitous_arp_interval2, + ipmi_cmd_lan_set_auth_type_enables2, + ipmi_cmd_lan_set_ip_addr_source2, ipmi_cmd_lan_set_ip_addr2, + ipmi_cmd_lan_set_default_gw_ip_addr2, + ipmi_cmd_lan_set_backup_gw_ip_addr2, + ipmi_cmd_lan_set_backup_gw_ip_addr2, + ipmi_cmd_lan_set_vlan_priority2, ipmi_cmd_lan_set_subnet_mask2, + ipmi_cmd_lan_set_mac_addr2, ipmi_cmd_lan_set_default_gw_mac_addr2, + ipmi_cmd_lan_set_backup_gw_mac_addr2, ipmi_cmd_lan_get_arp2, + ipmi_cmd_lan_get_gratuitous_arp_interval2, + ipmi_cmd_lan_get_auth_type_enables2, + ipmi_cmd_lan_get_ip_addr_source2, ipmi_cmd_lan_get_ip_addr2, + ipmi_cmd_lan_get_default_gw_ip_addr2, + ipmi_cmd_lan_get_backup_gw_ip_addr2, + ipmi_cmd_lan_get_subnet_mask2, ipmi_cmd_lan_get_mac_addr2, + ipmi_cmd_lan_get_default_gw_mac_addr2, + ipmi_cmd_lan_get_backup_gw_mac_addr2, ipmi_cmd_lan_get_vlan_id2, + ipmi_cmd_lan_get_vlan_priority2, ipmi_cmd_suspend_bmc_arps2) ): + Fix parameter checks. + + * libfreeipmi/src/ipmi-lan-cmds.h + (IPMI_ENABLE_BMC_GENERATED_GRATUITOUS_ARPS_VALID, + IPMI_ENABLE_BMC_GENERATED_ARP_RESPONSES_VALID, + IPMI_IP_ADDR_SOURCE_VALID, + IPMI_BMC_GENERATED_GRATUITOUS_ARP_VALID, + IPMI_BMC_GENERATED_ARP_RESPONSE_VALID): New macros. + + * libfreeipmi/src/ipmi-lan-cmds.c + (tmpl_set_lan_conf_param_vlan_id_rq, + tmpl_set_lan_conf_param_vlan_priority_rq): Fix field naming bugs. + +2006-01-31 Albert Chu + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd2): Remove + debugging statements. + + * libfreeipmi/src/ipmi-lan-interface.c (get_rq_checksum1, + get_rq_checksum1, get_rq_checksum2, get_rs_checksum2, + fill_lan_msg_hdr2, fill_lan_msg_trlr2, fill_hdr_session2, + _ipmi_lan_pkt_rq_size2, _ipmi_lan_pkt_rs_size2, + unassemble_ipmi_lan_pkt2, ipmi_lan_validate_checksum, + ipmi_lan_cmd_raw_send): Fix parameter checks. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (fill_kcs_set_channel_access, fill_kcs_set_user_name, + fill_kcs_get_user_name, fill_kcs_set_user_password, + fill_kcs_set_user_access, fill_kcs_get_user_access, + fill_kcs_get_channel_access, fill_kcs_get_channel_info, + ipmi_cmd_set_channel_access2, ipmi_cmd_set_user_name2, + ipmi_cmd_get_user_name2, ipmi_cmd_set_user_password2, + ipmi_cmd_set_user_access2, ipmi_cmd_get_user_access2, + ipmi_cmd_get_channel_access2, ipmi_cmd_get_channel_info2): Fix + consistency issue with fill function parameters. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_lan_open_session2): Fix parameter checks. + + * libfreeipmi/src/ipmi-lan-interface.c (get_rq_checksum2, + get_rs_checksum2, ipmi_lan_cmd_raw2): Use fiid_template_free(). + + * libfreeipmi/src/ipmi-lan-interface.c (fill_hdr_session2): Fix + endian bugs. + + * libfreeipmi/src/ipmi-semaphores.h (IPMI_MUTEX_LOCK, + IPMI_MUTEX_UNLOCK): Revert fixes from 2005-08-30. + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd_raw2): Code + cleanup. + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd_raw2): Fix + buffer overflow bug. + + * ipmi-raw/src/ipmi-raw.c (main): Fix output bug. + +2006-01-30 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_init_ipmi): Re-add error + output message. + + * bmc-watchdog/src/bmc-watchdog.c (_FIID_OBJ_GET): Cleaned up code. + + * bmc-watchdog/src/bmc-watchdog.c: Remove all #if 0'd code. + + * libfreeipmi/src/ipmi-interface.c (ipmi_cmd): Add parameter + checks. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_get_channel_number2): Add parameter check. + + * libfreeipmi/src/ipmi-dev-global-cmds.c (fill_cmd_get_dev_id): + Add parameter check. + + * libfreeipmi/src/acpi-spmi-locate.c (ipmi_acpi_get_spmi_table): + Add parameter checks. + + * bmc-watchdog/src/bmc-watchdog.c (_cmd): Fix debug output + messages. + + * bmc-watchdog/src/bmc-watchdog.c (_daemon_cmd): Fix corner case. + + * bmc-watchdog/src/bmc-watchdog.c (_daemon_setup): Fix infinite + loop bug. + +2006-01-29 Albert Chu + + * libfreeipmi/src/ipmi-sessions.c (check_hdr_session_seq_num, + check_hdr_session_session_id): Fix typecast typos. + + * libfreeipmi/src/ipmi-sessions.c (check_hdr_session_authcode): + Fix parameter check. Fix corner case bugs. + + * ipmipower/src/ipmipower_checkc.c (_check_network_function): Fix + debug output message. + + * libfreeipmi/src/ipmi-lan-interface.c (_ipmi_lan_pkt_size, + _ipmi_lan_pkt_rq_size): Make functions static. + + * libfreeipmi/src/ipmi-lan-interface.c (_ipmi_lan_pkt_size): Add + parameter check. + + * libfreeipmi/src/ipmi-kcs-interface.h, + libfreeipmi/src/ipmi-kcs-interface (assemble_ipmi_kcs_pkt, + unassemble_ipmi_kcs_pkt), libfreeipmi/src/rmcp.h, + libfreeipmi/src/rmcp.c (assemble_rmcp_pkt, unassemble_rmcp_pkt: + Change return type to int32_t for consistency. + + * libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-chassis-cmds.c + (fill_cmd_set_power_restore_policy): Fix prototype for + consistency. Add parameter check. Add prototype to .h file. + + * libfreeipmi/src/ipmi-ping.h, libfreeipmi/src/ipmi-ping.c: + Removed files. + + * libfreeipmi/src/Makefile.am: Remove ipmi-ping.h and ipmi-ping.c. + + * common/src/ipmi-ping.h, common/src/ipmi-ping.c: New files. + + * common/src/Makefile.am, rmcpping/src/Makefile.am, + ipmiping/src/Makefile.am: Support new ping common lib. + +2006-01-28 Albert Chu + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_check_net_fn), + libfreeipmi/src/ipmi-msg-support-cmds.c (ipmi_check_cmd, + ipmi_check_comp_code, ipmi_lan_check_rq_seq): Fix typecast typos. + + * libfreeipmi/src/ipmi-interface.c (ipmi_outofband_free, + ipmi_inband_free, ipmi_open_outofband): Fix corner cases. + + * ipmiping/src/ipmiping.c (parsepacket): Remove unnecessary code. + + * rmcpping/src/rmcpping.c, ipmiping/src/ipmiping.c: Code cleanup. + + * libfreeipmi/src/ipmi-ipmb-interface.h (IPMI_BMC_LUN_VALID): New + macro. + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_check_net_fn): Use + new IPMI_BMC_LUN_VALID macro. + + * ipmiping/src/ipmiping.c (parsepacket): Add additional debugging. + + * ipmipower/src/ipmipower_wrappers.h, + ipmipower/src/ipmipower_wrappers.c (Fiid_obj_dump_rmcp): New + function. + + * ipmipower/src/ipmipower_ping.c (ipmipower_ping_process_pings): + Use fiid wrapper macros. + + * libfreeipmi/src/ipmi-chassis-cmds.h + (fill_cmd_get_chassis_status, fill_cmd_chassis_ctrl): Add function + prototypes. + + * ipmipower/src/ipmipower_packet.c: Remove unnecessary function + prototypes. + + * libfreeipmi/src/ipmi-chassis-cmds.h (IPMI_CHASSIS_CTRL_VALID): + New macro. + + * libfreeipmi/src/ipmi-chassis-cmds.c (fill_cmd_chassis_ctrl): Use + IPMI_CHASSIS_CTRL_VALID. + + Fix ipmipower issues discovered by Keith Owens @ SGI. + + * ipmipower/ipmipower.8.in: Document additional machine compliance + bug found with. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet): Fix segfault + corner case. + + * ipmipower/src/: Fix gcc 4.0 warnings. + +2006-01-26 A Balamurugan + + * libfreeipmi/src/ipmi-interface.c (ipmi_cmd_raw): fixed improper + behavior bug. + +2006-01-24 A Balamurugan + + * fish/scripts/bmc-autoconfig/bmc-autoconfig: improved. + +2006-01-24 A Balamurugan + + * fish/scripts/bmc-autoconfig/bmc-config-template: new file. + + * fish/scripts/bmc-autoconfig/Makefile.am: updated. + + * fish/scripts/bmc-autoconfig/bmc-autoconfig: improved. + +2006-01-24 A Balamurugan + + * fish/scripts/bmc-autoconfig/bmc-autoconfig: checks of template + file existence. + +2006-01-24 Albert Chu + + * libfreeipmi/src/ipmi-sessions.c (fill_hdr_session): Cleanup code + logic. + + * libfreeipmi/src/ipmi-netfn-spec.h: Add IPMI_NET_FN_VALID macro. + + * libfreeipmi/src/ipmi-lan-interface.c (fill_lan_msg_hdr, + ipmi_lan_check_net_fn): Use new macro. + +2006-01-23 A Balamurugan + + * fish/src/scm-procedures.c (ex_sel_get_first_entry_raw, + ex_sel_get_next_entry_raw, ex_sel_get_first_entry_hex, + ex_sel_get_next_entry_hex, ex_sel_get_info_binary, + ex_sel_get_first_entry, ex_sel_get_next_entry, + ex_sel_delete_entry, ex_sel_clear, ex_sel_get_clear_status): + display appropriate error/warning messages. + +2006-01-23 Albert Chu + + * rmcpping/src/rmcpping.c (createpacket, parsepacket): Fix typos. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_check.c + (_check_session_id), ipmipower/src/ipmipower_config.c + (ipmipower_config_setup, ipmipower_config_cmdline_parse, + ipmipower_config_conffile_parse), ipmipower/src/ipmipower_prompt.c + (_cmd_advanced, _cmd_config, ipmipower_prompt_process_cmdline): + Support new --accept-session-id-zero option. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_powercmd.c + (_recv_packet), ipmipower/src/ipmipower_config.c + (ipmipower_config_setup, ipmipower_config_cmdline_parse, + ipmipower_config_conffile_parse), ipmipower/src/ipmipower_prompt.c + (_cmd_advanced, _cmd_config, ipmipower_prompt_process_cmdline): + Support new --check-unexpected-authcode option. + + * ipmipower/ipmipower.8.in, ipmipower/ipmipower.conf.5.in: + Document new options. + +2006-01-22 A Balamurugan + + * fish/src/scm-procedures.c (ex_sel_get_first_entry_raw, + ex_sel_get_next_entry_raw, ex_sel_get_first_entry_hex, + ex_sel_get_next_entry_hex, ex_sel_get_info_binary, + ex_sel_get_first_entry, ex_sel_get_next_entry, + ex_sel_delete_entry, ex_sel_clear, ex_sel_get_clear_status): + display appropriate error/warning messages. + + * libfreeipmi/src/ipmi-sel-api.c (ipmi_sel_get_first_entry, + ipmi_sel_get_next_entry, get_sel_info): set error.warning + messages. + + * libfreeipmi/src/ipmi-sensor-api.c (get_sdr_record, + get_sensor_reading): like wise. + +2006-01-20 Anand Babu + + * Applied Anand Avati's patch for compiler + warining fixes (gcc-4.0 is aggressive about issuing warinings for + bad code) and 64/32-bit porting fixes. Avati also identified a + bug in ipmi-raw.c. Following files are affected: + bmc-info/src/bmc-info.c + bmc-watchdog/src/bmc-watchdog.c + fish/src/bmc-conf2.c + fish/src/ipmi-wrapper.c + fish/src/scm-procedures.c + ipmi-locate/src/ipmi-locate.c + ipmiping/src/ipmiping.c + ipmipower/src/ipmipower_check.c + ipmipower/src/ipmipower_connection.c + ipmipower/src/ipmipower_packet.c + ipmipower/src/ipmipower_ping.c + ipmipower/src/ipmipower_powercmd.c + ipmipower/src/ipmipower_prompt.c + ipmipower/src/wrappers.c + libfreeipmi/src/acpi-spmi-locate.c + libfreeipmi/src/fiid.c + libfreeipmi/src/freeipmi.h + libfreeipmi/src/ipmi-chassis-cmds.c + libfreeipmi/src/ipmi-debug.c + libfreeipmi/src/ipmi-dev-global-cmds.c + libfreeipmi/src/ipmi-kcs-interface.c + libfreeipmi/src/ipmi-lan-cmds.c + libfreeipmi/src/ipmi-lan-interface.c + libfreeipmi/src/ipmi-lan-interface.h + libfreeipmi/src/ipmi-md2.c + libfreeipmi/src/ipmi-md5.c + libfreeipmi/src/ipmi-msg-support-cmds.c + libfreeipmi/src/ipmi-pef-cmds.c + libfreeipmi/src/ipmi-sdr-repo-cache.c + libfreeipmi/src/ipmi-sdr-repo-cmds.c + libfreeipmi/src/ipmi-sel-api.c + libfreeipmi/src/ipmi-sel-cmds.c + libfreeipmi/src/ipmi-sel-record-types.c + libfreeipmi/src/ipmi-sensor-api.c + libfreeipmi/src/ipmi-sensor-cmds.c + libfreeipmi/src/ipmi-sensor-event-messages.c + libfreeipmi/src/ipmi-sensor-types.c + libfreeipmi/src/ipmi-sensor-utils.c + libfreeipmi/src/ipmi-serial-cmds.c + libfreeipmi/src/ipmi-sessions.c + libfreeipmi/src/ipmi-sol-cmds.c + libfreeipmi/src/ipmi-ssif-interface.c + libfreeipmi/src/ipmi-watchdog.c + libfreeipmi/src/rmcp.c + rmcpping/src/rmcpping.c + +2006-01-20 Albert Chu + + * libfreeipmi/src/ipmi-error.c, libfreeipmi/src/ipmi-error.h, + libfreeipmi/src/ipmi-sel-cmds.h: Fix consistency issue with + declaration of error codes. Fix error message to be consistent + with IPMI specification. + +2006-01-19 A Balamurugan + + * doc/freeipmi.texi: updated. + +2006-01-19 A Balamurugan + + * doc/freeipmi.texi: updated. + + * ipmi-raw/src/ipmi-raw.c (string2bytes): fixed logical/invalid + pointer operation bug. + +2006-01-09 Anand Babu + + * libfreeipmi/src/ipmi-kcs-interface.[c,h]: ipmi_kcs_get_mutex_semid, + ipmi_kcs_io_init, ipmi_kcs_open, ipmi_kcs_write_interruptible, + ipmi_kcs_cmd, ipmi_kcs_cmd_interruptible - obsolete API + removed. Use UDM API instead. + +2006-01-11 A Balamurugan + + * libfreeipmi/src/ipmi-chassis-cmds.[c,h]: removed kcs command + functions. + + * libfreeipmi/src/ipmi-lan-cmds.[c,h]: like wise. + + * libfreeipmi/src/ipmi-serial-cmds.[c,h]: like wise. + + * libfreeipmi/src/ipmi-sol-cmds.[c,h]: like wise. + +2006-01-06 A Balamurugan + + * libfreeipmi/src/ipmi-dev-global-cmds.c: removed kcs command + functions. + + * libfreeipmi/src/ipmi-msg-support-cmds.c: like wise. + + * libfreeipmi/src/ipmi-pef-cmds.c: like wise. + + * libfreeipmi/src/ipmi-sdr-repo-cmds.c: like wise. + + * libfreeipmi/src/ipmi-sel-cmds.c: like wise. + + * libfreeipmi/src/ipmi-sensor-cmds.c: like wise. + + * libfreeipmi/src/ipmi-sdr-repo-cache.c (ipmi_sdr_repo_info_write, + ipmi_sdr_records_write, ipmi_sdr_cache_create): uses udm + functions. + + * bmc-watchdog/src/bmc-watchdog.c: updated. + +2006-01-05 A Balamurugan + + * bmc-info/src/bmc-info.c: generates core when seg-faults. + + * fish/src/fish.c: like wise. + + * ipmi-raw/src/ipmi-raw.c: like wise. + + * ipmi-locate/src/ipmi-locate.c: shows default values for ipmi + devices. + + * libfreeipmi/src/defaults-locate.c (defaults_get_dev_info): + improved. + +2006-01-04 Anand Babu + + * bmc-watchdog/src/bmc-watchdog.c: Now uses UDM interface. + + * libfreeipmi/src/ipmi-error.h: ERR_UNLOCK new macro. Similar to + ERR, but additionally unlocks the semaphore. + + * libfreeipmi/src/ipmi-interface.c: ipmi_open_inband function + returns EBUSY if already opened. Also now accepts reg_space + argument. Introduced a generic locking layer for all + drivers. Added interruptible support through IPMI_MODE_NONBLOCK + argument to open function. + + * libfreeipmi/src/ipmi-kcs-interface.c,.h: big cleanup. Locking + now handled by generic UDM layer. How ever locking for old APIs + retained. Still lot more can be cleaned up if Albert gives OK. + + * libfreeipmi/src/ipmi-locate.c: ipmi_locate initializes + interface_type and device name before probing. + + * libfreeipmi/src/ipmi-semaphores.c,.h: One locking interface for + all inband drivers. Previously it was per-driver. + + * libfreeipmi/src/ipmi-ssif-interface.c: ipmi_ssif_io_exit + fixed as ipmi_ssif_exit. + + * libfreeipmi/src/defaults-locate.c: handle case for enum + IPMI_INTERFACE_LAN too. + + * bmc-info/src/bmc-info.c: reg_space argument added. + + * fish/src/ipmi-wrapper.c: like wise. + + * ipmi-raw/src/ipmi-raw.c: like wise. Removed calls all references + to obsolete ipmi_enable_old_kcs_init function. + + +2006-01-03 Anand Babu + + * configure.ac: changed versioning nomenclature. Up version to + 0.2.beta1. Automake pre-req minimum is now 1.8. + + * doc/Makefile.am: build fixes for freeipmi-faq.texi. + + * doc/freeipmi.texi: now includes version-doc.texi. + + * doc/freeipmi-faq.texi: now includes version-faq.texi. + +2006-01-03 A Balamurugan + + * fish/src/ipmi-wrapper.c (get_lan_channel_number, + get_serial_channel_number): uses udm enabled function. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_get_channel_number2): new function. + +2006-01-03 A Balamurugan + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd_raw_send, + ipmi_lan_cmd_raw2): fixed bugs. + +2006-01-03 Albert Chu + + * freeipmi.spec.in: Updated with appropriate new files. + + * doc/freeipmi-faq.texi: Fixed some typos, added a little more + info. + +2006-01-02 Anand Babu + + * doc/freeipmi-faq.texi: FAQ by Albert Chu . + +2005-12-30 Anand Babu + + * common: Added proper makefiles for this tree. + + * ipmi-raw/doc/ipmi-raw.8.pre.in: removed comment line that + conflicted with some versions of cpp. + + * Tagged Release-0_2_0-beta0 + +2005-12-30 A Balamurugan + + * fish/bmc-config.8.pre.in: fish/bmc-config.8.in is renamed and + updated. + + * fish/fish.8.pre.in: fish/fish.8.in is renamed and updated. + + * fish/ipmi-sel.8.pre.in: fish/ipmi-sel.8.in is renamed and + updated. + + * fish/ipmi-sensors.8.pre.in: fish/ipmi-sensors.8.in is renamed + and updated. + + * ipmi-raw/doc/ipmi-raw.8.pre.in: ipmi-raw/ipmi-raw.8 is renamed + and moved and updated. + + * configure.ac, bmc-info/doc/Makefile.am, + bmc-info/doc/bmc-info.8.pre.in, fish/Makefile.am, + ipmi-raw/Makefile.am: updated. + +2005-12-29 Anand Babu + + * bmc-info/doc/Makefile.am: Man pages are now pre-processed to + include common arguments file using cpp. + (man.N.pre.in --autoconf--> man.N.pre --cpp--> man.N). + + * bmc-info/doc/bmc-info.8.in: Replaced by bmc-info.8.pre.in + + * configure.ac: produces bmc-info.8.pre. + +2005-12-28 A Balamurugan + + * common/doc/argp-common.man: added new file. + + * bmc-info/doc/Makefile.am: updated. + +2005-12-28 A Balamurugan + + * fish/bmc-info.8.in, fish/scripts/bmc-info/Makefile.am, + fish/scripts/bmc-info/bmc-info.in: removed. + + * bmc-info/Makefile.am, bmc-info/doc/Makefile.am, + bmc-info/doc/bmc-info.8.in, bmc-info/src/Makefile.am, + bmc-info/src/bmc-info-argp.c, bmc-info/src/bmc-info-argp.h, + bmc-info/src/bmc-info.c: now bmc-info is in C. + + * Makefile.am, configure.ac, fish/Makefile.am, + fish/scripts/Makefile.am: updated. + +2005-12-28 A Balamurugan + + * fish/extensions/bc-common.scm, fish/extensions/pef.scm, + fish/extensions/sel.scm, fish/extensions/sensors-common.scm: fixed + argument parsing bug. + + * libfreeipmi/src/ipmi-interface.c (ipmi_cmd): accepts lun, net_fn + as arguments. + + * libfreeipmi/src/ipmi-chassis-cmds.c, + libfreeipmi/src/ipmi-dev-global-cmds.c, + libfreeipmi/src/ipmi-lan-cmds.c, + libfreeipmi/src/ipmi-msg-support-cmds.c, + libfreeipmi/src/ipmi-pef-cmds.c, + libfreeipmi/src/ipmi-sdr-repo-cmds.c, + libfreeipmi/src/ipmi-sel-cmds.c, + libfreeipmi/src/ipmi-sensor-cmds.c, + libfreeipmi/src/ipmi-serial-cmds.c, + libfreeipmi/src/ipmi-sol-cmds.c: adopts changes in ipmi_cmd(). + +2005-12-27 A Balamurugan + + * fish/src/ipmi-wrapper.c (fi_ipmi_open): initialize dev before + calling udm open functions. + + * ipmi-raw/src/ipmi-raw.c: like wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_io_init): like + wise. + + * libfreeipmi/src/ipmi-interface.c + (ipmi_open_outofband,ipmi_open_inband): no memset of dev + arguments. + +2005-12-27 Albert Chu + + * libfreeipmi/src/freeipmi.h (ERR, ERR_OUT, ERR_EXIT): Revert + changes from 2005-12-20. Remembered why they were removed in the + first place. + + * libfreeipmi/src/ipmi-debug.c (_set_prefix_str, _output_str, + _output_byte_array): Make functions static. Modified setup and + output logic. + + * libfreeipmi/src/ipmi-debug.h, libfreeipmi/src/ipmi-debug.c + (fiid_obj_dump_setup): New function. + + * libfreeipmi/src/ipmi-debug.c (fiid_obj_dump_rmcp, + fiid_obj_dump_lan, fiid_obj_dump_perror): Fix up for setup + changes. + +2005-12-26 A Balamurugan + + * fish/src/ipmi-wrapper.c (fi_ipmi_open): autoprobe inband devices + when no driver from command line. + + * ipmi-raw/src/ipmi-raw.c: like wise. + +2005-12-26 A Balamurugan + + * fish/src/ipmi-wrapper.c (fi_ipmi_open): updated to new command + line arguments. + + * ipmi-raw/src/ipmi-raw.c: like wise. + + * libfreeipmi/src/ipmi-interface.c (ipmi_open_inband): like wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (): like wise. + +2005-12-25 A Balamurugan + + * common/src/argp-common.[ch]: New files. + + * ipmi-locate/src/common.h: Removed. + + * doc/examples/udm-test.c: uses argp-common.[ch]. + + * fish/extensions/bc-common.scm: Added more command line options. + + * fish/extensions/bmc-config.scm: like wise. + + * fish/extensions/bmc-info.scm: like wise. + + * fish/extensions/pef.scm: like wise. + + * fish/extensions/sel.scm: like wise. + + * fish/extensions/sensors-common.scm: like wise. + + * fish/extensions/sensors.scm: like wise. + + * fish/src/Makefile.am: Updated. + + * fish/src/extension.c: Removed ex_set_sms_io_base and + ex_set_driver_poll_interval. + + * fish/src/fish-argp.c: uses argp-common.[ch]. Removed + fi_set_sms_io_base() and set_driver_poll_interval(). + + * fish/src/scm-procedures.c: Removed ex_set_sms_io_base() and + ex_set_driver_poll_interval(). Improved ex_ipmi_open(). + + * ipmi-locate/src/Makefile.am: Updated. + + * ipmi-locate/src/ipmi-locate-argp.c: Improved. + + * ipmi-locate/src/ipmi-locate.c: like wise. + + * ipmi-raw/src/Makefile.am: Updated. + + * ipmi-raw/src/ipmi-raw-argp.c: uses argp-common.[ch]. + + * ipmi-raw/src/ipmi-raw.c: like wise. + +2005-12-20 Albert Chu + + * libfreeipmi/src/freeipmi.h (ERR, ERR_OUT, ERR_EXIT): Define even + if FREEIPMI_LIBRARY is not defined. + +2005-12-18 A Balamurugan + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_cmd_raw2): + Rewritten. + + * libfreeipmi/src/ipmi-ssif-interface.c (ipmi_ssif_cmd_raw2): like + wise. + +2005-12-17 A Balamurugan + + * ipmi-locate/src/ipmi-locate.c: Fixed a bug which uses + unallocated memory. + +2005-12-17 A Balamurugan + + * ipmi-locate/ipmi-locate.8: Added man page. + +2005-12-17 A Balamurugan + + * ipmi-locate: New tool to probe and display ipmi devices. + + * configure.ac: Updated. + + * Makefile.am: Updated. + +2005-12-17 A Balamurugan + + * libfreeipmi/src/ipmi-interface.c + (ipmi_open_inband,ipmi_cmd,ipmi_cmd_raw,ipmi_inband_close): Added + SSIF inband support in UDM. + + * libfreeipmi/src/ipmi-ssif-interface.c + (ipmi_ssif_cmd2,ipmi_ssif_cmd_raw2): Added functions. + +2005-12-16 A Balamurugan + + * fish/src/fish-argp.c (fi_set_arguments): new function. + + * fish/src/ipmi-wrapper.c (get_ipmi_host_ip_address): Improved. + + * fish/src/scm-procedures.c (ex_ipmi_open): Improved. + +2005-12-16 A Balamurugan + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd2): added + debugging code when invalid packet data is received. + +2005-12-16 Anand Babu + + * lot of .c,.h files: Applying Anand Avati's + patch for ISO C99: 7.18 Integer types compliance. This + also closes Bastian Blank 's bug #11210 + overview: Uses nonstandard datatypes. + +2005-12-14 A Balamurugan + + * fish/extensions/bc-common.scm: Fixed command line argument + parsing bug. + + * fish/extensions/bmc-info.scm: like wise. + + * fish/extensions/pef.scm: like wise. + + * fish/extensions/sel.scm: like wise. + + * fish/extensions/sensors-common.scm: like wise. + + * libfreeipmi/src/ipmi-sensor-event-messages.c + (get_01_generic_event_message, get_02_generic_event_message, + get_03_generic_event_message, get_04_generic_event_message, + get_05_generic_event_message, get_06_generic_event_message, + get_07_generic_event_message, get_08_generic_event_message, + get_09_generic_event_message, get_0A_generic_event_message, + get_0B_generic_event_message, get_0C_generic_event_message, + get_01_event_message, get_02_event_message, get_03_event_message, + get_04_event_message, get_05_event_message, get_06_event_message, + get_07_event_message, get_08_event_message, get_09_event_message, + get_0C_event_message, get_0F_event_message, get_10_event_message, + get_11_event_message, get_12_event_message, get_13_event_message, + get_14_event_message, get_19_event_message, get_1D_event_message, + get_1E_event_message, get_1F_event_message, get_20_event_message, + get_21_event_message, get_22_event_message, get_23_event_message, + get_24_event_message, get_25_event_message, get_27_event_message, + get_28_event_message, get_29_event_message, get_2A_event_message, + get_2B_event_message, get_2C_event_message, + get_05_event_data2_message, get_0F_event_data2_message, + get_10_event_data2_message, get_12_event_data2_message, + get_19_event_data2_message, get_21_event_data2_message, + get_23_event_data2_message, get_2A_event_data2_message, + get_2B_event_data2_message, get_2C_event_data2_message, + get_08_event_data3_message, get_0C_event_data3_message, + get_10_event_data3_message, get_19_event_data3_message, + get_21_event_data3_message, get_2A_event_data3_message): Become + static functions. + +2005-12-13 Anand Babu + + * libfreeipmi/src/fiid.c: fiid_obj_alloc -> + fiid_obj_calloc. Updated across the codebase. fiid_obj_alloc and + fiid_obj_malloc is now a macro to fiid_obj_calloc. + + *fish/src/extension.c: once again replaced the depricated gh_ + functions to make hook using scm functions. But this time, I use + scm_permanent_object to prevent the GC from freeing the hook + variable. This should fix the bug. + + fish/src/scm-procedures.c: merged the changes from old commit that + replaced gh_ with scm_ functions. + +2005-12-12 Albert Chu + + * configure.ac: Revert 2005-12-11 changes. + + * libfreeipmi/src/fiid.h (FIID_OBJ_GET_DATA): New macro. + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd_raw2): Fix + compile warning. + +2005-12-11 Anand Babu + + * libfreeipmi/src/defaults-locate.c,h: new files. Re-implemented + defaults as a fake driver. + * libfreeipmi/src/ipmi-locate.c: Changed the driver probing + order to smbios, acpi, pci and defaults. Added locate_driver_type + field to locate_info to identify which driver probed the data for + us. + +2005-12-08 Albert Chu + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_session_challenge2), + libfreeipmi/src/ipmi-lan-interface.c (fill_hdr_session2): Revert + buffer length changes from earlier. Ends up not being necessary. + +2005-12-08 Albert Chu + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_session_challenge2): Fix buffer length copying bug. + + * libfreeipmi/src/ipmi-lan-interface.c (fill_hdr_session2): Fix + buffer length copying bugs. Fixed incorrect MD2/MD5 calculation + bugs. + +2005-12-08 A Balamurugan + + * ipmi-raw/Makefile.am: New file. + + * ipmi-raw/ipmi-raw.8: New file. + + * ipmi-raw/src/Makefile.am: New file. + + * ipmi-raw/src/ipmi-raw-argp.[ch]: New files. + + * ipmi-raw/src/ipmi-raw.c: New file. + + * Makefile.am: Updated. + + * configure.ac: Updated. + + * libfreeipmi/src/ipmi-interface.c (ipmi_cmd_raw): Updated. + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd_raw2): Added + new function. + +2005-12-08 Albert Chu + + * libfreeipmi/src/ipmi-debug.c (ipmi_debug): Fix several compile + bugs when compiling with syslogging or tracing. + +2005-12-08 Anand Babu + + * libfreeipmi/src/ipmi-locate.c (ipmi_locate): Now returns default + settings as a last resort. + + * libfreeipmi/src/ipmi-ssif-interface.h: + Added IPMI_SSIF_SMBUS_SLAVE_ADDR definition. + +2005-12-05 Anand Babu + + * fish/extensions/sel.scm: Anand Avati's + patch for bug [#14926 fish assumes user has a home directory]. + + * libfreeipmi/src/freeipmi.h: More tests for sys/io.h header + inclusing. Closing bug [#11209 overview: Uses ys/io.h]. + +2005-12-05 Albert Chu + + * libfreeipmi/src/fiid.h, libfreeipmi/src/fiid.c + (fiid_obj_get_data): Add len parameter for data buffer. + + * fish/src, libfreeipmi/src: Various changes to support change in + fiid_obj_get_data, in particular passing lengths of buffers to + various functions. + +2005-12-02 Albert Chu + + * libfreeipmi/src/ipmi-lan-interface.c (unassemble_ipmi_lan_pkt), + libfreeipmi/src/ipmi-debug.c (fiid_obj_dump_lan): Fill in lan + trailer even when packet is shorter than expected. + +2005-12-01 Albert Chu + + * fish/bmc-config.conf.5.in: Fixed typos. + +2005-11-21 Albert Chu + + * libfreeipmi/src/ipmi-lan-interface.h + (IPMI_LAN_PKT_RQ_CHKSUM2_BLOCK_LEN, + IPMI_LAN_PKT_RS_CHKSUM2_BLOCK_LEN): Fixed bug in macros that + incorrectly calculated chksum data lengths. Bugs never occurred + in libfreeipmi b/c buffers were memset and the chksums were adding + pointless 0's. + +2005-11-17 Albert Chu + + Merge in rmcpping/ipmiping changes from branch al_ipmi_2_0_branch + that aren't IPMI 2.0 related. + + * ipmiping/src/ipmiping.c, rmcpping/src/rmcpping.c, + libfreeipmi/src/ipmi-ping.h, libfreeipmi/src/ipmi-ping.c: Various + changes to support new -s option and randomized starting sequence + numbers. + + * configure.ac: Add checks of /dev/urandom and /dev/random. + + * ipmiping/ipmiping.8.in, rmcpping/rmcpping.8.in: Document new + options and info. + +2005-11-17 Albert Chu + + * ipmipower/src/ipmipower.c (main): Fix compiler warning. + +2005-11-17 Anand Babu + + * fish/extensions/sel.scm: Anand Avati's + patch for --delete-event-id option. Closing + + * freeipmi/doc/freeipmi.texi: doc for --delete-event-id option. + + * fish/ipmi-sel.8.in: like wise. + +2005-11-16 Albert Chu + + * libfreeipmi/src/rmcp.c (unassemble_rmcp_pkt), + libfreeipmi/src/ipmi-lan-interface.c (assemble_ipmi_lan_pkt, + assemble_ipmi_lan_pkt2, unassemble_ipmi_lan_pkt): Clean up code to + minimize looping through templates. + +2005-11-15 Albert Chu + + * libfreeipmi/src/ipmi-debug.h, libfreeipmi/src/ipmi-debug.c + (ipmi_debug): New function. + +2005-11-14 Albert Chu + + * libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-msg-support-cmds.c (ipmi_lan_open_session): + Revert some 2005-08-27 changes. Replace password with + auth_code_data and auth_code_data_len parameters for consistency + with other function calls. Fix segfaulting corner case. + +2005-11-14 Anand Babu + + * fish/extensions/sel.scm: Anand Avati's + patch for --delete-range option. + + * freeipmi/doc/freeipmi.texi: doc for --delete-range option. + + * fish/ipmi-sel.8.in: like wise. + +2005-11-11 Albert Chu + + * fish/src/extensions.c, fish/src/scm-procedures.c: Revert changes + made on 11/06/05. Changes cause many things to break under + RHEL3/RHEL4. + + * libfreeipmi/src/ipmi-lan-interface.c (fill_hdr_session2): Fix + compiler warnings. + + * freeipmi.spec.in: Add guile dependency. + +2005-11-10 Albert Chu + + * ipmipower/src/ipmi-privilege.h, ipmipower/src/ipmi-privilege.c: + New files. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower.c (main), + ipmipower/src/ipmipower_config.c (ipmipower_config_setup, + ipmipower_config_cmdline_parse, _cb_privilege, _cb_outputtype), + ipmipower/src/ipmipower_output.c (ipmipower_outputs), + ipmipower/src/ipmipower_powercmd.c (ipmipower_powercmd_queue, + _process_ipmi_packets), ipmipower/src/ipmipower_prompt.c + (_cmd_advanced, _cmd_power, _cmd_privilege, _cmd_config): Support + new --privilege option and equivalent interactive mode and config + file options. + + * ipmipower/ipmipower.8.in, ipmipower/ipmipower.conf.5.in: + Document support for privilege option. + + * ipmipower/src/ipmipower_auth.c (ipmipower_ipmi_auth_type): Fix + error output typo. + + * ipmipower/src/Makefile.am: Add ipmipower-privilege.h and + ipmipower-privilege.c. + + * ipmipower/src/ipmipower.h: Fix potential macro bugs. + + * libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-hmac.h, libfreeipmi/src/ipmi-interface.h, + libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-watchdog.h: Fix potential macro bugs. + + * freeipmi.spec.in: Update with new files. + +2005-11-09 Albert Chu + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_config.c + (ipmipower_config_setup, ipmipower_config_cmdline_parse, + ipmipower_config_conffile_parse), + ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets), + ipmipower/src/ipmipower_prompt.c (_cmd_advanced, _cmd_config): + Support new --force-permsg-auth option and equivalent interactive + mode and config file options. + + * ipmipower/ipmipower.8.in, ipmipower/ipmipower.conf.5.in: + Document support for force-permsg-auth. + + * ipmipower/ipmipower.8.in: Add forgotten documentation of + on-if-off option in interactive mode. + +2005-11-09 Albert Chu + + Merge in various changes from branch al_ipmi_2_0_branch that + aren't IPMI 2.0 related. + + * libfreeipmi/src/fiid.h: New FIID_OBJ_MEMSET and + FIID_OBJ_SET_DATA macros. + + * libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-chassis-cmds.c: Support IPMI Chassis Identify + command. + + * libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-chassis-cmds.c (fill_cmd_chassis_identify): + New function. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower.c (_setup), + ipmipower/src/ipmipower_check.c (_check_outbound_seq_num_), + ipmipower/src/ipmipower_packet.c (ipmipower_packet_create), + ipmipower/src/ipmipower_powercmd.c (ipmipower_powercmd_queue, + _recv_packet): Support a randomized initial outbound sequence + number. + + * ipmipower/src/ipmipower_powercmd.c (_send_packet): Always + increment ipmi_send_count and session_inbound_count. + + * ipmipower/src/ipmipower_powercmd.c (_retry_packets): Fix up + comments due to fixes above. + + * ipmipower/src/ipmipower_util.h, ipmipower/src/ipmipower_util.c + (get_rand): New function. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_check.c + (_check_requester_seq_num), ipmipower/src/ipmipower_connection.c + (_connection_setup), ipmipower/src/ipmipower_packet.c + (ipmipower_packet_create), ipmipower/src/ipmipower_powercmd.c + (_send_packet): Support randomized initial requester sequence + numbers. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_connection.c + (_connection_setup), ipmipower/src/ipmipower_ping.c + (ipmipower_ping_process_pings): Support randomized initial + rmcpping sequence numbers. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_check.c + (_check_outbound_seq_num), : Rework to use IPMI spec sequence + check algorithm. + + * ipmipower/src/ipmipower_check.h, ipmipower/src/ipmipower_check.c + (ipmipower_check_packet): Re-work API to pass flags back to caller + with test results. + + * ipmipower/src/ipmipower_powercmd.c (ipmipower_powercmd_queue, + _send_packet, _recv_packet, _bad_packet): Fixed various code due + to above changes to ipmipower_check_packet. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_powercmd.c + (ipmipower_powercmd_queue, _process_ipmi_packets, _retry_packets): + Don't retransmit on a close-session timeout. There's no need to + and it may not work. + + * ipmipower/ipmipower.8.in, ipmipower/src/ipmipower_check.c, + ipmipower/src/ipmipower_powercmd.c: Add additional comments, + notes, and details on IPMI compliance workarounds. + + * ipmipower/: Various minor code cleanup. + +2005-11-08 Albert Chu + + * libfreeipmi/src/ipmi-msg-support-cmds.h: Add + IPMI_CHANNEL_CURRENT_CHANNEL. + + * libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-msg-support-cmds.c + (fill_cmd_get_channel_auth_caps): Require user to pass in BMC + channel number. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_lan_get_channel_auth_caps, ipmi_lan_get_channel_auth_caps2), + ipmiping/src/ipmiping.c (createpacket), + ipmipower/src/ipmipower_packet.c (ipmipower_packet_create): + Support change in API. + +2005-11-07 Albert Chu + + * libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-lan-interface.h, + libfreeipmi/src/msg-support-cmds.h, + libfreeipmi/src/ipmi-sessions.h, libfreeipmi/src/rmcp.h: Remove + all #if 0'd out code that was still lingering from late 2003 + development. + + * fish/scripts/bmc-autoconfig/Makefile.am: Dist out bmc-autoconfig. + +2005-11-06 Anand Babu + + * fish/src/extension.c: Depricated Guile APIs are with newer ones. + scm_create_hook with (scm_c_define + (scm_make_hook)), gh_new_procedure with scm_c_define_gsubr, + gh_str02scm with scm_makfrom0str, gh_list with scm_listify, + gh_list_p by SCM_NFALSEP, gh_append2 with (scm_append + (scm_listify)), gh_cons with scm_cons, gh_ulong2scm with + scm_ulong2num, gh_long2scm with scm_long2num, gh_scm2bool with + SCM_NFALSEP, gh_bool2scm with SCM_BOOL, gh_double2scm with + scm_make_real, gh_char2scm with SCM_MAKE_CHAR. + + * doc/version.texi: Autogenerated by Automake's mdate-sh. You may + need a fresh checkout if you see version.texi missing error during + compilation. + + +2005-10-29 A Balamurugan + + * fish/extensions/bc-common.scm: Allows anyone of checkout, + commit, diff options. + + * fish/scripts/bmc-autoconfig/bmc-autoconfig: Improved. + +2005-10-28 Albert chu + + * ipmipower/ipmipower.8.in: Fixed some wording for -a option. + +2005-10-26 A Balamurugan + + * fish/extensions/pef.scm: Code cleanup. + + * fish/scripts/bmc-autoconfig/Makefile.am: Fixed a bug which + deletes source file. + + * fish/src/bmc-conf2.c (set_bmc_username, set_bmc_enable_user, + set_bmc_user_password, set_bmc_user_lan_channel_access, + set_bmc_user_serial_channel_access, + set_bmc_lan_channel_volatile_access, + set_bmc_lan_channel_non_volatile_access, + set_bmc_lan_conf_ip_addr_source, set_bmc_lan_conf_ip_addr, + set_bmc_lan_conf_mac_addr, set_bmc_lan_conf_subnet_mask, + set_bmc_lan_conf_default_gw_ip_addr, + set_bmc_lan_conf_default_gw_mac_addr, + set_bmc_lan_conf_backup_gw_ip_addr, + set_bmc_lan_conf_backup_gw_mac_addr, set_bmc_lan_conf_vlan_id, + set_bmc_lan_conf_vlan_priority, + set_bmc_lan_conf_auth_type_enables, set_bmc_lan_conf_arp_control, + set_bmc_lan_conf_gratuitous_arp, + set_bmc_serial_channel_volatile_access, + set_bmc_serial_channel_non_volatile_access, + set_bmc_serial_conf_conn_mode, + set_bmc_serial_conf_page_blackout_interval, + set_bmc_serial_conf_call_retry_time, + set_bmc_serial_conf_ipmi_msg_comm_settings, + set_bmc_power_restore_policy, get_bmc_username, + get_bmc_user_lan_channel_access, + get_bmc_user_serial_channel_access, + get_bmc_lan_channel_volatile_access, + get_bmc_lan_channel_non_volatile_access, + get_bmc_lan_conf_ip_addr_source, get_bmc_lan_conf_ip_addr, + get_bmc_lan_conf_mac_addr, get_bmc_lan_conf_subnet_mask, + get_bmc_lan_conf_default_gw_ip_addr, + get_bmc_lan_conf_default_gw_mac_addr, + get_bmc_lan_conf_backup_gw_ip_addr, + get_bmc_lan_conf_backup_gw_mac_addr, + get_bmc_lan_conf_auth_type_enables, get_bmc_lan_conf_arp_control, + get_bmc_lan_conf_gratuitous_arp, + get_bmc_serial_channel_volatile_access, + get_bmc_serial_channel_non_volatile_access, + get_bmc_serial_conf_conn_mode, + get_bmc_serial_conf_page_blackout_interval, + get_bmc_serial_conf_call_retry_time, + get_bmc_serial_conf_ipmi_msg_comm_settings, + get_bmc_power_restore_policy, get_bmc_lan_conf_vlan_id, + get_bmc_lan_conf_vlan_priority, check_bmc_user_password): UDM + enabled. + + * libfreeipmi/src/ipmi-lan-cmds.c + (ipmi_cmd_lan_set_backup_gw_mac_addr2): Fixed function name typo + error. + +2005-10-16 A Balamurugan + + * fish/extensions/bmc-config.scm: Fixed bug in pef_conf_s. + +2005-10-16 A Balamurugan + + * libfreeipmi/src/ipmi-sensor-api.c (get_sdr_record): Better error + handling. + + * fish/src/bmc-conf2.c (set_pef_control, + set_pef_global_action_control, set_pef_startup_delay, + set_pef_alert_startup_delay, get_pef_control, + get_pef_global_action_control, get_pef_startup_delay, + get_pef_alert_startup_delay): New functions. + + * fish/src/extension.c (install_new_procedures): New exports + fi-set-bmc-pef-conf-pef-control, + fi-set-bmc-pef-conf-pef-global-action-control, + fi-set-bmc-pef-conf-pef-startup-delay, + fi-set-bmc-pef-conf-pef-alert-startup-delay, + fi-get-bmc-pef-conf-pef-control, + fi-get-bmc-pef-conf-pef-global-action-control, + fi-get-bmc-pef-conf-pef-startup-delay and + fi-get-bmc-pef-conf-pef-alert-startup-delay. + + * fish/src/scm-procedures.c (ex_set_bmc_pef_conf_pef_control, + ex_set_bmc_pef_conf_pef_global_action_control, + ex_set_bmc_pef_conf_pef_startup_delay, + ex_set_bmc_pef_conf_pef_alert_startup_delay, + ex_get_bmc_pef_conf_pef_control, + ex_get_bmc_pef_conf_pef_global_action_control, + ex_get_bmc_pef_conf_pef_startup_delay, + ex_get_bmc_pef_conf_pef_alert_startup_delay): New functions. + + * fish/extensions/bc-section.scm: Added pef_conf section. + + * fish/extensions/bmc-config.scm: Added pef_conf support. + + * fish/extensions/Makefile.am: Updated. + +2005-10-13 Anand Babu + + * fish/scripts/bmc-autoconfig/bmc-autoconfig: texi documentation + and bug fixes to bmc auto configuration wizzard. Thanks to Anand + Avati + +2005-10-12 Anand Babu + + * fish/scripts/bmc-autoconfig/bmc-autoconfig: new bmc + configuration wizzard. Thanks to Anand Avati + +2005-10-12 A Balamurugan + + * libfreeipmi/src/ipmi-sensor-api.c (get_sdr_record): Now ignores + ipmi_cmd_get_sensor_thresholds2() command error. + +2005-10-09 A Balamurugan + + * freeipmi/libfreeipmi/src/ipmi-pef-cmds.c + (ipmi_cmd_get_pef_num_alert_strings2): New function. + + * freeipmi/fish/src/extension.c (fi-get-pef-info): New export. + + * freeipmi/fish/src/scm-procedures.c (ex_get_pef_info): New + function. + + * freeipmi/fish/extensions/sensors-common.scm (sensors-argp): Bug + fix in verbose option parsing. + + * freeipmi/fish/extensions/sensors.scm (sensors-display-sensors): + Bug fix in parsed command line args handling. + + * freeipmi/fish/extensions/pef.scm: New file. + + * freeipmi/fish/extensions/init.scm: Updated. + + * freeipmi/fish/extensions/Makefile.am: like wise. + + * freeipmi/fish/scripts/Makefile.am: like wise. + + * freeipmi/fish/scripts/pef/ipmi-pef.in: New file. + + * freeipmi/fish/scripts/pef/Makefile.am: like wise. + + * freeipmi/configure.ac: Updated. + +2005-10-08 A Balamurugan + + * freeipmi/libfreeipmi/src/freeipmi.h: Enables static function + definitions only if config.h file exists. + + * freeipmi/libfreeipmi/src/ipmi-error.c (ipmi_strerror_r, + ipmi_strerror_cmd_r, ipmi_kcs_strstatus_r): Improved. + + * freeipmi/libfreeipmi/src/ipmi-error.c (ipmi_error): New + function. + + * freeipmi/libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_channel_auth_caps2, + ipmi_cmd_get_session_challenge2): Fixed serious bug which makes + function failure. + + * freeipmi/libfreeipmi/src/ipmi-sdr-repo-cmds.c + (ipmi_cmd_get_sdr_repo_info2, ipmi_cmd_get_sdr_repo_alloc_info2, + ipmi_cmd_reserve_sdr_repo2): Renamed. + + * freeipmi/libfreeipmi/src/ipmi-sel-api.c + (ipmi_sel_get_first_entry, ipmi_sel_get_next_entry, get_sel_info): + UDM enabled. + + * freeipmi/libfreeipmi/src/ipmi-sel-api.c + (get_sel_system_event_record, get_sel_timestamped_oem_record, + get_sel_non_timestamped_oem_record, get_sel_record): Moved to + ipmi-sel-record-types.c. + + * freeipmi/libfreeipmi/src/ipmi-sel-record-types.c + (ipmi_sel_get_first_entry, ipmi_sel_get_next_entry): Moved to + ipmi-sel-api.c. + + * freeipmi/libfreeipmi/src/ipmi-sensor-api.c (get_sdr_record, + get_sensor_reading): UDM enabled. + + * freeipmi/libfreeipmi/src/ipmi-utils.c (ipmi_comp_test): Sets + errno when failure. + + * freeipmi/fish/src/extension.c (install_new_procedures): Removed + fi-sdr-get-repo-info and fi-sel-get-info procedure exports. + + * freeipmi/fish/src/interpreter.c (dynamic_command_handler): + Simplified. + + * freeipmi/fish/src/ipmi-wrapper.c (fi_get_seld): New function. + + * freeipmi/fish/src/ipmi-wrapper.c (fi_ipmi_open): Uses + ipmi_error(). + + * freeipmi/fish/src/scm-procedures.c (ex_sdr_get_repo_info, + ex_sel_get_info): Removed. + + * freeipmi/fish/src/scm-procedures.c (ex_sel_get_first_entry_raw, + ex_sel_get_next_entry_raw, ex_sel_get_first_entry_hex, + ex_sel_get_next_entry_hex, ex_sel_get_info_binary, + ex_sel_get_first_entry, ex_sel_get_next_entry, + ex_sel_delete_entry, ex_sel_clear, ex_sel_get_clear_status, + ex_get_sdr_record, ex_get_sensor_reading, ex_get_sdr_repo_info): + Uses UDM enabled functions. + + * freeipmi/fish/src/scm-procedures.c (ex_get_bmc_info): Uses + ipmi_error(). + + * freeipmi/fish/extensions/bc-common.scm: Better command line + argument parsing.. + + * freeipmi/fish/extensions/bmc-config.scm: Initial work of UDM + support. + + * freeipmi/fish/extensions/bmc-info.scm: Fixed fish register + command bug. + + * freeipmi/fish/extensions/sel.scm: UDM enabled. + + * freeipmi/fish/extensions/sensors-common.scm: Better command line + argument parsing. + + * freeipmi/fish/extensions/sensors.scm: UDM enabled. + + * freeipmi/fish/extensions/utils.scm: Simplified list->sentence + and list->strlist procedures. + + * freeipmi/fish/scripts/bmc-config/bmc-config.in: Simplified. + + * freeipmi/fish/scripts/sel/ipmi-sel.in: Simplified. + + * freeipmi/fish/scripts/sensors/ipmi-sensors.in: Simplified. + +2005-10-06 A Balamurugan + + * libfreeipmi/src/ipmi-chassis-cmds.c + (ipmi_cmd_set_power_restore_policy2, + ipmi_cmd_get_chassis_status2): Functions does not allocate + obj_cmd_rs. + + * libfreeipmi/src/ipmi-dev-global-cmds.c (ipmi_cmd_get_dev_id): + like wise. + + * ibfreeipmi/src/ipmi-lan-cmds.c (ipmi_cmd_lan_set_arp2, + ipmi_lan_set_gratuitous_arp_interval2, + ipmi_cmd_lan_set_auth_type_enables2, + ipmi_cmd_lan_set_ip_addr_source2, ipmi_cmd_lan_set_ip_addr2, + ipmi_cmd_lan_set_default_gw_ip_addr2, + ipmi_cmd_lan_set_backup_gw_ip_addr2, ipmi_cmd_lan_set_vlan_id2, + ipmi_cmd_lan_set_vlan_priority2, ipmi_cmd_lan_set_subnet_mask2, + ipmi_cmd_lan_set_mac_addr2, ipmi_cmd_lan_set_default_gw_mac_addr2, + ipmi_cmd_lan_set_hackup_gw_mac_addr2, ipmi_cmd_lan_get_arp2, + ipmi_cmd_lan_get_gratuitous_arp_interval2, + ipmi_cmd_lan_get_auth_type_enables2, + ipmi_cmd_lan_get_ip_addr_source2, ipmi_cmd_lan_get_ip_addr2, + ipmi_cmd_lan_get_default_gw_ip_addr2, + ipmi_cmd_lan_get_backup_gw_ip_addr2, + ipmi_cmd_lan_get_subnet_mask2, ipmi_cmd_lan_get_mac_addr2, + ipmi_cmd_lan_get_default_gw_mac_addr2, + ipmi_cmd_lan_get_backup_gw_mac_addr2, ipmi_cmd_suspend_bmc_arps2, + ipmi_cmd_lan_get_vlan_id2, ipmi_cmd_lan_get_vlan_priority2): like + wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_channel_auth_caps2, ipmi_cmd_get_session_challenge2, + ipmi_cmd_activate_session2, ipmi_cmd_set_session_priv_level2, + ipmi_lan_open_session2, ipmi_lan_close_session2, + ipmi_cmd_set_channel_access2, ipmi_cmd_set_user_name2, + ipmi_cmd_get_user_name2, ipmi_cmd_set_user_password2, + ipmi_cmd_set_user_access2, ipmi_cmd_get_user_access2, + ipmi_cmd_get_channel_access2, ipmi_cmd_get_channel_info2): like + wise. + + * libfreeipmi/src/ipmi-sdr-repo-cmds.c (ipmi_cmd_get_repo_info2, + ipmi_cmd_get_repo_alloc_info2, ipmi_cmd_reserve_repo2, + ipmi_cmd_get_sdr2): like wise. + + * libfreeipmi/src/ipmi-sel-cmds.c (ipmi_cmd_get_sel_info2, + ipmi_cmd_get_sel_alloc_info2, ipmi_cmd_reserve_sel2, + ipmi_cmd_get_sel_entry2, ipmi_cmd_delete_sel_entry2, + ipmi_cmd_clear_sel2): like wise. + + * libfreeipmi/src/ipmi-sensor-cmds.c + (ipmi_cmd_get_threshold_reading2, ipmi_cmd_get_discrete_reading2, + ipmi_cmd_get_sensor_thresholds2): like wise. + + * libfreeipmi/src/ipmi-serial-cmds.c + (ipmi_cmd_set_serial_connmode2, + ipmi_cmd_set_serial_page_blackout_interval2, + ipmi_cmd_set_serial_retry_time2, ipmi_cmd_set_serial_comm_bits2, + ipmi_cmd_get_serial_connmode2, ipmi_cmd_get_serial_page_blackout2, + ipmi_cmd_get_serial_retry_time2, ipmi_cmd_get_serial_comm_bits2): + like wise. + + * libfreeipmi/src/ipmi-sol-cmds.c + (ipmi_cmd_sol_conf_sol_enable_disable2, + ipmi_cmd_sol_conf_sol_enable2, ipmi_cmd_sol_conf_sol_disable2, + ipmi_cmd_sol_conf_get_sol_enable2): like wise. + + * freeipmi/libfreeipmi/src/ipmi-pef-cmds.c + (ipmi_cmd_set_pef_control2, ipmi_cmd_set_global_action_control2, + ipmi_cmd_set_startup_delay2, ipmi_cmd_set_alert_startup_delay2, + ipmi_cmd_set_num_event_filters2, ipmi_cmd_set_filter_table_entry2, + ipmi_cmd_set_filter_table_data1_2, + ipmi_cmd_set_num_alert_policies2, ipmi_cmd_alert_immediate2, + ipmi_cmd_get_pef_alert_string2, + ipmi_cmd_get_pef_alert_string_keys2, + ipmi_cmd_get_pef_num_alert_policies2, + ipmi_cmd_get_pef_filter_data1_2, ipmi_cmd_get_pef_control2, + ipmi_cmd_get_pef_global_action_control2, + ipmi_cmd_get_pef_startup_delay2, + ipmi_cmd_get_pef_alert_startup_delay2, + ipmi_cmd_get_pef_num_event_filters2, + ipmi_cmd_get_pef_filter_table_entry2, ipmi_cmd_get_pef_caps2, + ipmi_cmd_arm_pef_postpone_timer2, + ipmi_cmd_set_last_processed_event2, + ipmi_cmd_get_last_processed_event2, ipmi_cmd_pet_ack2): new + functions. + + * freeipmi/libfreeipmi/src/fiid.h (fiid_obj_alloca): New macro. + + * freeipmi/libfreeipmi/src/ipmi-interface.c (ipmi_outofband_free, + ipmi_inband_free): New functions. + + * freeipmi/libfreeipmi/src/ipmi-interface.c (ipmi_open_outofband, + ipmi_open_inband, ipmi_outofband_close, ipmi_inband_close): + Improved. + + * freeipmi/libfreeipmi/src/ipmi-kcs-interface.c + (ipmi_enable_old_kcs_init): New function. + + * freeipmi/libfreeipmi/src/freeipmi.h: Updated. + + * freeipmi/libfreeipmi/src/bit-ops.[ch]: #include cleanup. + + * freeipmi/libfreeipmi/src/fiid.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-debug.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-error.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-hmac.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-lan-interface.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-locate.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-md2.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-md5.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-msg-interface-desc.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-netfn-spec.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-ping.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-sdr-record-types.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-sdr-repo-cache.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-sel-record-types.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-semaphores.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-sensor-api.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-sensor-event-messages.c: like + wise. + + * freeipmi/libfreeipmi/src/ipmi-sensor-types.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-sensor-utils.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-sessions.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-sha1.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-smic-interface.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-ssif-interface.c: like wise. + + * freeipmi/libfreeipmi/src/ipmi-utils.[ch]: like wise. + + * freeipmi/libfreeipmi/src/ipmi-watchdog.c: like wise. + + * freeipmi/libfreeipmi/src/libfreeipmi.c: like wise. + + * freeipmi/libfreeipmi/src/pci-locate.c: like wise. + + * freeipmi/libfreeipmi/src/rmcp.[ch]: like wise. + + * freeipmi/libfreeipmi/src/smbios-locate.c: like wise. + + * freeipmi/libfreeipmi/src/xmalloc.[ch]: like wise. + + * freeipmi/doc/examples/udm-test.c: Updated. + + * freeipmi/fish/src/common.h: New file. + + * freeipmi/fish/src/fish-argp.[ch]: New files. + + * freeipmi/fish/src/extension.c (install_new_procedures): Added + fi-ipmi-open, fi-ipmi-close, fi-cmd-get-dev-id-display procedures. + Removed fi-set-sock-timeout!, fi-get-sock-timeout and + fi-kcs-get-dev-id-display procedures. + + * freeipmi/fish/src/fish.[ch]: Major code cleanup. + + * freeipmi/fish/src/interpreter.c: Code cleanup. + + * freeipmi/fish/src/ipmi-wrapper.[ch]: Major code cleanup. + + * freeipmi/fish/src/ipmi-wrapper.c (fi_get_ipmi_device, + fi_ipmi_open, fi_ipmi_close): New functions. + + * freeipmi/fish/src/Makefile.am: Updated. + + * freeipmi/fish/src/scm-procedures.c (ex_get_sock_timeout, + ex_set_sock_timeout, ex_kcs_get_dev_id_display): Removed. + + * freeipmi/fish/src/scm-procedures.c (ex_cmd_get_dev_id_display, + ex_get_bmc_info, ex_ipmi_open, ex_ipmi_close): New functions. + + * freeipmi/fish/src/bmc-conf2.c: #include cleanup. + + * freeipmi/fish/src/fi-commands.c: like wise. + + * freeipmi/fish/src/fi-utils.c: like wise. + + * freeipmi/fish/src/fi-utils.h: like wise. + + * freeipmi/fish/src/guile-wrapper.c: like wise. + + * freeipmi/fish/src/xmalloc.[ch]: like wise. + + * freeipmi/fish/Makefile.am: Updated. + + * freeipmi/fish/extensions/bmc-info.scm: Rewritten. + + * freeipmi/fish/extensions/discovery.scm: Updated. + + * freeipmi/fish/extensions/Makefile.am: Updated. + + * freeipmi/fish/scripts/bmc-info/bmc-info.in: Rewritten. + +2005-10-04 Albert Chu + + * freeipmi.spec.in: Update with new files. + +2005-10-01 A Balamurugan + + * libfreeipmi/src/ipmi-chassis-cmds.c + (ipmi_cmd_set_power_restore_policy2, + ipmi_cmd_get_chassis_status2): New functions. + + * libfreeipmi/src/ipmi-dev-global-cmds.c (ipmi_cmd_get_dev_id): + Improved. + + * ibfreeipmi/src/ipmi-lan-cmds.c (ipmi_cmd_lan_set_arp2, + ipmi_lan_set_gratuitous_arp_interval2, + ipmi_cmd_lan_set_auth_type_enables2, + ipmi_cmd_lan_set_ip_addr_source2, ipmi_cmd_lan_set_ip_addr2, + ipmi_cmd_lan_set_default_gw_ip_addr2, + ipmi_cmd_lan_set_backup_gw_ip_addr2, ipmi_cmd_lan_set_vlan_id2, + ipmi_cmd_lan_set_vlan_priority2, ipmi_cmd_lan_set_subnet_mask2, + ipmi_cmd_lan_set_mac_addr2, ipmi_cmd_lan_set_default_gw_mac_addr2, + ipmi_cmd_lan_set_hackup_gw_mac_addr2, ipmi_cmd_lan_get_arp2, + ipmi_cmd_lan_get_gratuitous_arp_interval2, + ipmi_cmd_lan_get_auth_type_enables2, + ipmi_cmd_lan_get_ip_addr_source2, ipmi_cmd_lan_get_ip_addr2, + ipmi_cmd_lan_get_default_gw_ip_addr2, + ipmi_cmd_lan_get_backup_gw_ip_addr2, + ipmi_cmd_lan_get_subnet_mask2, ipmi_cmd_lan_get_mac_addr2, + ipmi_cmd_lan_get_default_gw_mac_addr2, + ipmi_cmd_lan_get_backup_gw_mac_addr2, ipmi_cmd_suspend_bmc_arps2, + ipmi_cmd_lan_get_vlan_id2, ipmi_cmd_lan_get_vlan_priority2): New + functions. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_set_channel_access2, ipmi_cmd_set_user_name2, + ipmi_cmd_get_user_name2, ipmi_cmd_set_user_password2, + ipmi_cmd_set_user_access2, ipmi_cmd_get_user_access2, + ipmi_cmd_get_channel_access2, ipmi_cmd_get_channel_info2): New + functions. + + * libfreeipmi/src/ipmi-sdr-repo-cmds.c (ipmi_cmd_get_repo_info2, + ipmi_cmd_get_repo_alloc_info2, ipmi_cmd_reserve_repo2, + ipmi_cmd_get_sdr2): New functions. + + * libfreeipmi/src/ipmi-sel-cmds.c (ipmi_cmd_get_sel_info2, + ipmi_cmd_get_sel_alloc_info2, ipmi_cmd_reserve_sel2, + ipmi_cmd_get_sel_entry2, ipmi_cmd_delete_sel_entry2, + ipmi_cmd_clear_sel2): New functions. + + * libfreeipmi/src/ipmi-sensor-cmds.c + (ipmi_cmd_get_threshold_reading2, ipmi_cmd_get_discrete_reading2, + ipmi_cmd_get_sensor_thresholds2): New functions. + + * libfreeipmi/src/ipmi-serial-cmds.c + (ipmi_cmd_set_serial_connmode2, + ipmi_cmd_set_serial_page_blackout_interval2, + ipmi_cmd_set_serial_retry_time2, ipmi_cmd_set_serial_comm_bits2, + ipmi_cmd_get_serial_connmode2, ipmi_cmd_get_serial_page_blackout2, + ipmi_cmd_get_serial_retry_time2, ipmi_cmd_get_serial_comm_bits2): + New functions. + + * libfreeipmi/src/ipmi-sol-cmds.c + (ipmi_cmd_sol_conf_sol_enable_disable2, + ipmi_cmd_sol_conf_sol_enable2, ipmi_cmd_sol_conf_sol_disable2, + ipmi_cmd_sol_conf_get_sol_enable2): New functions. + +2005-10-01 A Balamurugan + + * libfreeipmi/src/ipmi-interface.c (ipmi_open_outofband): + Improved. + + * libfreeipmi/src/ipmi-interface.h: Removed + initial_outbound_seq_num and added challenge_string, + tmpl_msg_trlr_ptr and obj_msg_trlr in ipmi_device_t. + + * libfreeipmi/src/ipmi-lan-interface.c (get_rq_checksum1, + get_rs_checksum1, get_rq_checksum2, get_rs_checksum2, + fill_lan_msg_hdr2, fill_lan_msg_trlr2, fill_hdr_session2, + _ipmi_lan_pkt_rq_size2, _ipmi_lan_pkt_rs_size2, + assemble_ipmi_lan_pkt2, unassemble_ipmi_lan_pkt2, + ipmi_lan_validate_checksum): New functions. + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd2): Improved. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_channel_auth_caps2, ipmi_cmd_get_session_challenge2, + ipmi_cmd_activate_session2, ipmi_cmd_set_session_priv_level2, + ipmi_lan_open_session2, ipmi_lan_close_session2): Improved. + +2005-09-27 Anand Babu + + * libfreeipmi/src/ipmi-msg-support-cmds.c: all ipmi_comp_test + failures now sets errno properly. Thanks to James Laros + for reporting this bug. + +2005-09-26 Albert Chu + + * ipmipower/ipmipower.8.in: Added note about ipmipower's cluster + focus because it keeps on coming up in conversations. + +2005-09-11 A Balamurugan + + * doc/version.texi: Updated. + + * libfreeipmi/src/fiid.c (fiid_obj_dup): Fixed a bug in error + condition. + + * libfreeipmi/src/ipmi-interface.h: Modifed ipmi_device_t + structure. + + * libfreeipmi/src/ipmi-interface.c (ipmi_open): Removed. + + * libfreeipmi/src/ipmi-dev-global-cmds.c (ipmi_cmd_get_dev_id): + Modified for change in ipmi_device_t structure. + + * libfreeipmi/src/ipmi-interface.c (ipmi_open_outofband): like + wise. + + * libfreeipmi/src/ipmi-interface.c (ipmi_open_inband): like wise. + + * libfreeipmi/src/ipmi-interface.c (ipmi_inband_close): like wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_get_status): like + wise. + + * libfreeipmi/src/ipmi-kcs-interface.c + (ipmi_kcs_wait_for_ibf_clear): like wise. + + * libfreeipmi/src/ipmi-kcs-interface.c + (ipmi_kcs_wait_for_obf_set): like wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_read_byte): like + wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_read_next): like + wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_start_write): + like wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_write_byte): like + wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_end_write): like + wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_get_abort): like + wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_cmd2): like wise. + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_channel_auth_caps2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_session_challenge2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_activate_session2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_set_session_priv_level2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_lan_open_session2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_lan_close_session2): like wise. + +2005-09-08 A Balamurugan + + * doc/examples/udm-test.c (parse_opt): Fixed a bug in argument + parsing. + +2005-09-07 A Balamurugan + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_channel_auth_caps2): Fixed a bug which not set LUN + and FN. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_get_session_challenge2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_activate_session2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_cmd_set_session_priv_level2): like wise. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_lan_close_session2): like wise. + +2005-09-06 A Balamurugan + + * doc/examples/udm-test.c: Renamed ipmi-lan-test-udm.c file. + + * doc/examples/Makefile.am: Updated. + + * doc/examples/Makefile.example: Updated. + + * libfreeipmi/src/xmalloc.[c,h] (ipmi_xfree): Its a macro now. + + * libfreeipmi/src/ipmi-interface.c (ipmi_open_inband): net_fn and + lun are set by ipmi_cmd_COMMAND functions. + + * libfreeipmi/src/ipmi-interface.c (ipmi_open_outofband): like + wise. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_io_init): + Updated. + + * libfreeipmi/src/ipmi-dev-global-cmds.c (ipmi_cmd_get_dev_id): + Rewritten. + + * libfreeipmi/src/fiid.c (fiid_obj_len_bytes): Fixed bug calling + BITS_ROUND_BYTES macro. + + * libfreeipmi/src/fiid.c (fiid_obj_field_end_bytes): like wise. + + * libfreeipmi/src/fiid.c (fiid_obj_field_len_bytes): like wise. + + * libfreeipmi/src/fiid.c (fiid_obj_block_len_bytes): like wise. + + * libfreeipmi/src/fiid.c (fiid_obj_block_len): Now returns + absolute value. + + * libfreeipmi/src/fiid.c (fiid_obj_alloc): Now returns fiid_obj_t + type pointer. + + * libfreeipmi/src/fiid.c (fiid_obj_memset): like wise. + + * libfreeipmi/src/fiid.c (fiid_obj_dup): New function. + + * libfreeipmi/src/fiid.h (FIID_OBJ_ALLOCA): Checks error + condition. + +2005-08-31 A Balamurugan + + * libfreeipmi/src/xmalloc.c (ipmi_xmalloc): Returns zero + initialized allocated buffer. + + * libfreeipmi/src/xmalloc.c (fixup_null_alloc): like wise. + +2005-08-30 A Balamurugan + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_cmd2): Fixed bug + in error condition check. + +2005-08-30 A Balamurugan + + * libfreeipmi/src/ipmi-semaphores.h (IPMI_MUTEX_LOCK): Continues + only for non-zero semid. + + * libfreeipmi/src/ipmi-semaphores.h (IPMI_MUTEX_UNLOCK): like + wise. + +2005-08-30 A Balamurugan + + * libfreeipmi/src/ipmi-interface.c (ipmi_open_outofband): It + doesn't call ipmi_open(). + + * libfreeipmi/src/ipmi-interface.c (ipmi_open_inband): Improved. + + * libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_cmd2): Rewritten. + +2005-08-29 A Balamurugan + + * libfreeipmi/src/ipmi-interface.c (ipmi_inband_close): Fixed + portability bug. + +2005-08-27 A Balamurugan + + * doc/version.texi: New file. + + * doc/examples/ipmi-lan-test-udm.c: New file. + + * libfreeipmi/src/ipmi-interface.[c,h]: New files. Implements + unified driver model. + + * bmc-watchdog/src/bmc-watchdog.c (_get_port_and_reg_space): Uses + ipmi_driver_type_t enum. + + * doc/freeipmi.texi: Removed profiling support for sensors node. + + * doc/examples/Makefile.am: Updated. + + * doc/examples/ipmi-lan-test.c: Updated. + + * fish/src/extension.c: Removed fi-kcs-get-poll-count procedure. + + * fish/src/ipmi-wrapper.c: Removed auth_code_len in + ipmi_lan_open_session(). + + * fish/src/scm-procedures.[c,h]: Removed function + ex_kcs_get_poll_count(). + + * libfreeipmi/src/Makefile.am: Updated. + + * libfreeipmi/src/acpi-spmi-locate.[c,h]: Uses + ipmi_interface_type_t enum. + + * libfreeipmi/src/fiid.c (fiid_obj_free): Uses ipmi_xfree(). + + * libfreeipmi/src/fiid.h (FIID_OBJ_ALLOC): Updated - + fiid_obj_alloc accepts tmpl directly now. + + * libfreeipmi/src/freeipmi.h: Updated. + + * libfreeipmi/src/ipmi-dev-global-cmds.[c,h]: Added new function + ipmi_cmd_get_dev_id(). + + * libfreeipmi/src/ipmi-kcs-interface.[c,h]: Now + ipmi_kcs_get_status(), ipmi_kcs_wait_for_ibf_clear(), + ipmi_kcs_wait_for_obf_set(), ipmi_kcs_read_byte(), + ipmi_kcs_read_next(), ipmi_kcs_start_write(), + ipmi_kcs_write_byte(), ipmi_kcs_end_write(), ipmi_kcs_get_abort(), + ipmi_kcs_test_if_state(), ipmi_kcs_clear_obf(), ipmi_kcs_read(), + ipmi_kcs_write() and ipmi_kcs_write_interruptible() use + ipmi_device_t. Updated ipmi_kcs_open(). Added ipmi_kcs_cmd2() + and ipmi_kcs_cmd2(). Removed ipmi_kcs_get_poll_count(). + + * libfreeipmi/src/ipmi-lan-interface.[c,h]: Added New function + ipmi_lan_cmd2(). + + * libfreeipmi/src/ipmi-locate.[c,h]: Uses ipmi_interface_type_t + enum. + + * libfreeipmi/src/ipmi-msg-support-cmds.[c,h]: Added New functions + ipmi_cmd_get_channel_auth_caps2(), + ipmi_cmd_get_session_challenge2(), ipmi_cmd_activate_session2(), + ipmi_cmd_set_session_priv_level2(), ipmi_lan_open_session2() and + ipmi_lan_close_session2(). + + * libfreeipmi/src/pci-locate.[c,h]: Uses ipmi_interface_type_t + enum. + + * libfreeipmi/src/smbios-locate.[c,h]: Added fiid template for + smbios ipmi-device-info record. Uses ipmi_interface_type_t enum. + +2005-06-17 Anand Babu + + * garpd/src/garpd.c: support for interval-delay and + batch-delay. --send-once support. fixed broadcast order. delay + variable is now global only. Thanks to Anand Avati again. + + * doc/freeipmi.texi: updated documentation. + + * garpd/garpd.8: like wise. + +2005-06-09 Albert Chu + + * freeipmi.spec.in: Updated for garpd. + +2005-06-08 Anand Babu + + * garpd: Integrated Anand Avati's Gratuitous + ARP Daemon (garpd) project. Thanks Anand. + + * doc/freeipmi.texi: Added texinfo documentation for garpd. + + * libfreeipmi/src/ipmi-utils.c: added ipmi_get_random_seed + function. + + * fish/ipmi-sel.8.in, fish/ipmi-sel.8.in, fish/fish.8.in, + fish/bmc-info.8.in, fish/bmc-config.8.in: Man section update. + +2005-05-09 Albert Chu + + * freeipmi.spec.in: Updated for recent changes to install. + +2005-04-23 A Balamurugan + + * doc/examples/hello-sensors.c: file is removed. + + * doc/examples/Makefile.am: updated. + + * doc/examples/Makefile.example: updated. + +2005-04-22 A Balamurugan + + * libfreeipmi/src/acpi-spmi-locate.c + (ipmi_acpi_get_firmware_table): fixed unaligned access warnings. + +2005-04-13 A Balamurugan + + * bmc-watchdog/src/bmc-watchdog.c (_get_port_and_reg_space): + removed status variable + + * fish/src/fish.c (inner_main): like wise + + * libfreeipmi/src/acpi-spmi-locate.[ch] (acpi_spmi_get_dev_info): + like wise + + * libfreeipmi/src/ipmi-locate.[ch] (ipmi_locate): like wise + + * libfreeipmi/src/pci-locate.[ch] (pci_get_dev_info): like wise + + * libfreeipmi/src/smbios-locate.[ch] (smbios_get_dev_info): like + wise + +2005-03-20 Anand Babu + + * fish/src/fish.c (inner_main): Check return value of + ipmi_open_free_udp_port. + +2005-03-18 Albert Chu + + Added support for vlan configuration in bmc-config. + + * libfreeipmi/src/ipmi-lan-param-spec.h: Add vlan lan conf + definitions. + + * libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-lan-cmds.c: Define new templates + tmpl_set_lan_conf_param_vlan_id_rq, + tmpl_set_lan_conf_param_vlan_priority_rq, + tmpl_get_lan_conf_param_vlan_id_rs, and + tmpl_get_lan_conf_param_vlan_priority_rs. + + * libfreeipmi/src/ipmi-lan-cmds.h, libfreeipmi/src/ipmi-lan-cmds.c + (fill_lan_set_vlan_id, ipmi_lan_set_vlan_id, + fill_lan_set_vlan_priority, ipmi_lan_set_vlan_priority, + ipmi_lan_get_vlan_id, ipmi_lan_get_vlan_priority): New functions. + + * fish/extensions/bc-lan-conf-section.scm + (checkout-vlan-id-enable, commit-vlan-id-enable, checkout-vlan-id, + commit-vlan-id, checkout-vlan-priority, commit-vlan-priority): New + functions. Added additional entries to lan-conf-keys-validator. + + * fish/extensions/bmc-config.scm: Added new vlan entries to + lan_conf_s. + + * fish/src/bmc-conf2.h, fish/src/bmc-conf2.c + (set_bmc_lan_conf_vlan_id, set_bmc_lan_conf_vlan_priority, + get_bmc_lan_conf_vlan_id, get_bmc_lan_conf_vlan_priority): New + functions. + + * fish/src/extension.c (fi-set-bmc-lan-conf-vlan-id, + fi-set-bmc-lan-conf-vlan-priority, fi-get-bmc-lan-conf-vlan-id, + fi-get-bmc-lan-conf-vlan-priority): Define new procedures. + + * fish/src/scm-procedures.h, fish/src/scm-procedures.c + (ex_set_bmc_lan_conf_vlan_id, ex_set_bmc_lan_conf_vlan_priority, + ex_get_bmc_lan_conf_vlan_id, ex_get_bmc_lan_conf_vlan_priority): + New functions. + + Misc + + * freeipmi.spec.in: Updated to reflect renaming of sel and sensors + tools. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet): Add + workaround for per-msg authentication issues found on some Dell + motherboards. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet): Add + workaround for sequence numbering bugs found in some mBMC modules. + + * ipmipower/src/ipmipower_checks.c (_check_outbound_seq_num): Add + additional debug info. + + * ipmipower/src/ipmipower_powercmd.c (_retry_packets): Fix corner + case in permission checks. + + * ipmipower/ipmipower.8.in: Add some more trouble-shooting tips. + +2005-03-16 A Balamurugan + + * fish/extensions/sensors.scm: added ipmi-sensors-conf.scm + + * libfreeipmi/src/ipmi-sensor-api.c: added templates + l_tmpl_get_sensor_threshold_reading_rs and + l_tmpl_get_sensor_discrete_reading_rs in get_sensor_reading(). + + * libfreeipmi/src/ipmi-sensor-cmds.c: changed to bit level state + in templates tmpl_get_sensor_threshold_reading_rs and + tmpl_get_sensor_discrete_reading_rs. + +2005-03-12 Anand Babu + + * fish/bmc-config.8.in: Now generated by + automake. PACKAGE_VERSION, PACKAGE_BUGADDR and ISODATE are + updated. Moved to man section 8 from 1. + + * fish/bmc-config.conf.5.in: Like wise. + + * fish/bmc-info.8.in: Like wise + + * fish/fish.8.in: Like wise. + + * fish/ipmi-sel.8.in: Like wise. Added ipmi prefix. + + * fish/ipmi-sensors.8.in. Like wise. Added ipmi prefix. + + * fish/extensions/ipmi-sensors-conf.scm. Added ipmi prefix. + + * doc/freeipmi.texi: Updated name change. + +2005-03-11 Anand Babu + + * fish/extensions/bc-section.scm (checkout-section-values, + diff-section-values): Closed [bugs #12279] error on + checkout. bmc-config now throws more appropriate error message. + +2005-03-01 Anand Babu + + * configure.ac: Added check for guile version. Minimum tested + required version is 1.6.4. + + * bmc-watchdog/Makefile.am: Replaced "mkinstalldir" with + "install-sh -d". "mkinstalldir" script is obsolete and + non-portable. + + * fish/scripts/sel/ipmi-sel.in: Renamed "sel.in" to "ipmi-sel.in". + + * fish/scripts/sensors/ipmi-sensors.in: Renamed "sensors.in" to + "ipmi-sensors.in". + + * Makefile.am: Updated for sel and sensors name change. + + * fish/scripts/sel/Makefile.am: Like wise. + + * fish/scripts/sensors/Makefile.am: Like wise. + +2005-02-23 Anand Babu + + * CVS: New branch Release-0_1_3-branch with root tag Release-0_1_3. + +2005-02-23 A Balamurugan + + * fish/extensions/sdr.scm: improved record fetching message + + * fish/extensions/sensors-simple-display.scm, + fish/extensions/sensors-verbose-display.scm, + fish/extensions/sensors-very-verbose-display.scm: now displays + multiple event messages + + * fish/src/scm-procedures.c: removed short_event_message, status + and event_message becomes event_message_list in + ex_get_sensor_reading() + + * libfreeipmi/src/ipmi-sensor-api.c: now get_sensor_reading() + returns multiple event messages. + + * libfreeipmi/src/ipmi-sensor-cmds.c: modified template + tmpl_get_sensor_threshold_reading_rs. + + * libfreeipmi/src/ipmi-sensor-event-messages.[ch]: added new + functions ipmi_get_generic_event_message_list() and + ipmi_get_event_message_list(). + + * ipmi-sensor-utils.[ch]: removed function + convert_sensor_state_to_offset(). + + +2005-02-23 Anand Babu + + Thanks tp Julian Elischer for reporting + static compilation problem. + + * fish/src/fish.c: Replaced open_free_udp_port with libfreeipmi's + ipmi_open_free_udp_port API. + + * src/guile-wrapper.c: Renamed gh_standard_handler to + fish_exception_handler. (this caused static compilation problem) + + * fish/src/fi-utils.c: fi_load now uses fish exception handler. + Removed open_free_udp_port function. (this caused static + compilation problem). + + * fish/src/fi-commands.c : command_eval_scheme_str now uses fish + exception handler. command_load_scheme_file now uses fi_load API. + + * doc/examples/ipmi-lan-test.c: Updated API change. + +2005-02-18 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_get_port): Renamed to + _get_port_and_reg_space. + + * bmc-watchdog/src/bmc-watchdog.c (_get_port_and_reg_space): Fixed + logic errors due to changes in libfreeipmi. + + * bmc-watchdog/bmc-watchdog.8.in: Updated appropriately. + +2005-02-13 Anand Babu + + * ipmi-ssif-interface.c (ipmi_ssif_exit): New function. + +2005-02-13 Albert Chu + + * libfreeipmi/src/ipmi-sha1.c (_f, _K): Added error checking and + modified else condition to remove potential compiler warnings. + +2005-02-13 Anand Babu + + * ipmi-ssif-interface.[c,h]: Newly added. SSIF driver. + + * ROADMAP: dropped Tyan IPMI-1.5 proprietary SOL plan. IPMI-2.0 + will soon become a standard as most vendors including Tyan are + getting ready with IPMI-2.0 release. + + * /libfreeipmi/src/ipmi-locate.h: ipmi_locate_info structrue now + includes i2c device name pointer. + + * /libfreeipmi/src/ipmi-hmac.c: Initialized h_info to NULL to + avoid compiler warning. + + * THANKS: Added Amitoj Singh and Don Holmgren + for their help with SSIF driver. + +2005-02-07 A Balamurugan + + * ROADMAP: updated + + * TODO: updated + + * fish/extensions/bmc-config.scm: fixed a bug; calling + non-existing primitive procedure + + * fish/src/bmc-conf2.c: renamed "Anonymous" to "NULL" for user1. + + * libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-pef-cmds.c: fixed compiler warnings + + * libfreeipmi/src/ipmi-sensor-utils.[ch]: added new function + convert_sensor_state_to_offset() + + * fish/extensions/sensors-very-verbose-display.scm, + fish/src/scm-procedures.c, libfreeipmi/src/ipmi-sensor-api.[ch]: + renamed is_signed to analog_data_format globally. fixed logical + errors in sensor event message decoding. Thanks to Albert Chu for + reporting these bugs. + +2005-02-04 Albert Chu + + * freeipmi.spec.in: Add syslogging and tracing to debug rpm. + + * libfreeipmi/src/ipmi-sha1.h, libfreeipmi/src/ipmi-sha1.c, + libfreeipmi/src/ipmi-hmac.h, libfreeipmi/src/ipmi-hmac.c: New + files. + + * libfreeipmi/src/freeipmi.h, libfreeipmi/src/Makefile.am: Add new + sha1 and hmac files appropriately. + +2005-01-31 Albert Chu + + * ipmipower/ipmipower.8.in: Added information about auth + authentication, which didn't seem to get checked in on 2004-11-15. + +2005-01-26 Albert Chu + + Various code cleanup and minor fixes to ipmipower. + + * ipmipower/src/ipmipower.c (_poll_loop): Don't re-malloc on each + iteration. + + * ipmipower/src/ipmipower.c (_secure_setup): Renamed to + _security_initialization. + + * ipmipower/src/ipmipower.c (_cleanup): Add logging on cleaning. + + * ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets): + Remove check for non-null password when checking if remote machine + supports null usernames. + + * ipmipower/src/ipmipower.h: Added new sockets_to_close list in + struct ipmipower_powercmd. + + * ipmipower/src/ipmipower_powercmd.c (ipmipower_powercmd_setup, + ipmipower_powercmd_queue, ipmipower_powercmd_process_queue, + _retry_packets, _send_packet, _destroy_ipmipower_powercmd): Move + sockets_to_close from global list to per ipmipower_powercmd struct + list. This change allows sockets to be closed earlier, so more + file descriptors and ports are available more quickly to + ipmipower. + + * ipmipower/src/ipmipower_check.c (_check_session_id): Fix corner + case with output of debugging message. + +2005-01-25 Albert Chu + + * ipmipower/ipmipower.8.in: Add note that a null username means + the anonymous username. + + * ipmiping/src/ipmiping.c (parsepacket): Output anonymous, null, + null-username info on verbose mode. + + * freeipmi.spec.in: Add support for building debug rpms. + +2005-01-24 Anand Babu + + * libfreeipmi/src/ipmi-utils.c (ipmi_ioremap): open with O_SYNC. + + * libfreeipmi/src/smbios-locate.c: like wise in + map_physmem. smbios_get_dev_info function now properly assigns + SSIF smbus slave addr and address space id. + +2005-01-24 Albert Chu + + * ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets): + Change priority ordering of auto authentication type selection. + +2005-01-21 Albert Chu + + * ipmipower/src/ipmipower_check.c (_check_session_id): Added + workaround for BMCs that return bad session ids. + + * ipmipower/src/ipmipower_config.c + (ipmipower_config_check_values), ipmipower/src/ipmipower_prompt.c + (_cmd_username, _cmd_authtype): Remove non-null username check + with auth-type none. + + * ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets): + Remove NULL username requirement for auth-type none. + + * freeipmi.spec: Add bmc-config.5 manpage. + +2005-01-18 A Balamurugan + + * fish/src/extension.c: removed bmc-conf-utils.h include. + +2005-01-18 A Balamurugan + + * ROADMAP: updated + + * TODO: updated + + * doc/examples/hello-sensors.c: modified + + * fish/extensions/Makefile.am: updated + + * fish/extensions/bc-lan-conf-auth-section.scm: updated + + * fish/extensions/bc-lan-conf-misc-section.scm: updated + + * fish/extensions/bc-lan-conf-section.scm: updated + + * fish/extensions/bc-lan-serial-channel-section.scm: updated + + * fish/extensions/bc-misc-section.scm: updated + + * fish/extensions/bc-serial-conf-section.scm: updated + + * fish/extensions/bc-user-section.scm: updated + + * fish/extensions/bmc-config.scm: moved bc2.scm to bmc-config.scm + + * fish/extensions/sdr.scm: new file + + * fish/extensions/sensors-alias.scm: new file + + * fish/extensions/sensors-common.scm: new files + + * fish/extensions/sensors-conf.scm: rewritten + + * fish/extensions/sensors-simple-display.scm: new file + + * fish/extensions/sensors-utils.scm: file is removed + + * fish/extensions/sensors-verbose-display.scm: new file + + * fish/extensions/sensors-very-verbose-display.scm: new file + + * fish/extensions/sensors.scm: rewritten + + * fish/scripts/sensors/sensors.in: rewritten + + * fish/src/Makefile.am: updated + + * fish/src/bmc-conf-checkout.[ch]: files are removed + + * fish/src/bmc-conf-commit.[ch]: files are removed + + * fish/src/bmc-conf-key-utils.[ch]: files are removed + + * fish/src/bmc-conf-utils.[ch]: files are removed + + * fish/src/extension.c: removed old bmc-config and sensors + procedures, and added new sensors procedures. + + * fish/src/fi-utils.[ch]: rewritten + get_global_extensions_directory(), + get_local_extensions_directory() and fi_load(). + + * fish/src/fish.c: rewritten running_for_first_time() + + * fish/src/fish.h: added FI_SDR_CACHE_DIR and + FI_SDR_CACHE_FILENAME_PREFIX. + + * fish/src/ipmi-wrapper-sel.[ch]: files are removed + + * fish/src/ipmi-wrapper-sensor.[ch]: files are removed + + * fish/src/ipmi-wrapper.[ch]: added functions + get_ipmi_host_ip_address() and get_sdr_cache_filename(). + + * fish/src/scm-procedures.[ch]: removed old bmc-config and sensors + functions, and added new sensors functions. + + * libfreeipmi/src/Makefile.am: updated + + * libfreeipmi/src/freeipmi.h: updated + + * libfreeipmi/src/ipmi-sdr-record-types.[ch]: renamed + tmpl_sdr_oem_sensor_record to tmpl_sdr_oem_record. added new + template tmpl_sdr_sensor_record_header. + + * libfreeipmi/src/ipmi-sdr-repo-cache.[ch]: member + cache_curr_rec_id of sdr_repo_cache_t renamed to + cache_curr_rec_no. + + * libfreeipmi/src/ipmi-sdr-repo-cmds.[ch]: removed fiid template + tmpl_sdr_sensor_record_header. + + * libfreeipmi/src/ipmi-sel-api.[ch]: new files + + * libfreeipmi/src/ipmi-sensor-api.[ch]: new files + + * libfreeipmi/src/ipmi-sensor-cmds.c: renamed fiid member + status_reading_availablity to + status_reading_availability. template + tmpl_get_sensor_discrete_reading_rs is rewritten. + + * libfreeipmi/src/ipmi-sensor-event-messages.[ch]: added new + functions get_01_generic_event_message(), + get_02_generic_event_message(), get_03_generic_event_message(), + get_04_generic_event_message(), get_05_generic_event_message(), + get_06_generic_event_message(), get_07_generic_event_message(), + get_08_generic_event_message(), get_09_generic_event_message(), + get_0A_generic_event_message(), get_0B_generic_event_message(), + get_0C_generic_event_message(), ipmi_get_generic_event_message() + +2005-01-14 Anand Babu + + * libfreeipmi/src/acpi-spmi-locate.[c,h]: Newly added. ACPI-Tables + user space device driver to locate IPMI SPMI table. Jointly + developed by Bala and me. + + * libfreeipmi/src/smbios-locate.[c,h]: Moved from smbios.c,h. + + * libfreeipmi/src/pci-locate.[c,h]: Moved from pcilocate.c,h. + + * libfreeipmi/src/ipmi-locate.[c,h]: Moved from + ipmi-probe.c,h. New interface type definitions. + + * libfreeipmi/src/ipmi-utils.c: New functions - ipmi_ioremap, + ipmi_iounmap and ipmi_get_physical_mem_data. + + * bmc-watchdog/src/bmc-watchdog.c: Now uses ipmi_locate_t + interface and the new model accepts reg-space in bytes + directly. _REG_SPACE_VALID macro removed. + + * freeipmi/fish/src/fish.c: like wise. + + * libfreeipmi/src/ipmi-kcs-interface.c: Removed ipmi_kcs_reg_space + function. ipmi_kcs_io_init now accepts reg_space in bytes instead + of reg_space_boundary in bits. + + * libfreeipmi/src/ipmi-kcs-interface.h: Removed reg-space related + definitions. Its now a job of ipmi-locate sub-system. + + +2005-01-09 Anand Babu + + * fish/src/fi-commands.c: replaced error(..) with + perror,exit. error() is not really portable. + + * fish/src/fi-utils.c: likewise. + + * fish/src/fish.c: likewise. + + * fish/src/xmalloc.c: like wise. + + * fish/src/xmalloc.h: likewise. + +2004-12-20 Albert Chu + + * libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-msg-support-cmds.c (ipmi_get_channel_number): + New function. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (_search_for_medium_channel_number): New function. + + * fish/src/ipmi-wrapper.h, fish/src/ipmi-wrapper.c + (get_lan_channel_number, get_serial_channel_number): Use new + ipmi_get_channel_number function. + + * bmc-watchdog/src/bmc-watchdog.c (_get_lan_channel_number): + Removed function. + + * bmc-wathcdog/src/bmc-watchdog.c (_suspend_bmc_arps_cmd): Use + new ipmi_get_channel_number function. + + * libfreeipmi/src/ipmi-dev-global-cmds.h, + libfreeipmi/src/ipmi-dev-global-cmds.c (ipmi_kcs_get_dev_id): + Remove pointless obj_hdr_rs parameter. + + * libfreeipmi/src/ipmi-dev-global-cmds.h, + libfreeipmi/src/ipmi-dev-global-cmds.c (fill_cmd_get_dev_id, + ipmi_kcs_get_dev_id): Clean up parameter types and parameter names + to be consistent with much of the rest of libfreeipmi. + + * fish/src/scm-procedures.c (ex_kcs_get_dev_id_display): Fix for + interface change. + + * libfreeipmi/src/ipmi-msg-support-cmds.h: Added + IPMI_CHANNEL_NUMBER_VALID macro. + + * libfreeipmi/src/ipmi-msg-support-cmds.c, + libfreeipmi/src/ipmi-lan-cmds.c, + libfreeipmi/src/ipmi-serial-cmds.c: Added appropriate channel + number checks in fill functions with channel_number parameters. + Check for errors in many functions that call fill functions. + +2004-12-17 Albert Chu + + Added additional autodetection due to privilege level errors. + + * ipmipower/src/ipmipower.h: Add privilege field to + ipmipower_powercmd struct. + + * ipmipower/src/ipmipower_powercmd.c (ipmipower_powercmd_queue): + Initialize new privilege field. + + * ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets): Add + appropriate code logic for this new autodetection feature. + + * ipmipower/src/ipmipower.h (ipmipower_packet_create): Where + appropriate, use privilege field of ipmipower_powercmd_t. + + Fix err_exit() corner case, where ending debug output is not output. + + * ipmipower/src/error.h, ipmipower/src/error.c + (err_cbuf_dump_file_stream, err_cbuf_dump_file_descriptor): New + functions. + + * ipmipower/src/error.c (err_exit): Dump cbuf contents + appropriately if about to exit. + + * ipmipower/src/ipmipower.c (_setup), + ipmipower/src/ipmipower_prompt.c (_cmd_log, _cmd_logfile, + ipmipower_prompt_process_cmdline): Add appropriate calls to + err_cbuf_dump_file_stream and err_cbuf_dump_file_descriptor. + +2004-12-16 Albert Chu + + * libfreeipmi/src/ipmi-md2.c (ipmi_md2_finish), + libfreeipmi/src/ipmi-md5.c (ipmi_md5_finish): Clear magic number, + which will force caller to re-initialize context. + + * libfreeipmi/src/ipmi-md2.h, libfreeipmi/src/ipmi-md2.c, + libfreeipmi/src/ipmi-md5.h, libfreeipmi/src/ipmi-md5.c: Fixed + headers. These were originally a part of ipmipower first. Its a + legal thing. + +2004-12-15 Albert Chu + + * ipmipower/src/ipmipower.h (AUTH_TYPE_VALID_OR_AUTO): New macro. + + * ipmipower/src/ipmipower_auth.c (ipmipower_auth_string): Fix + corner case. + +2004-12-13 Albert Chu + + * libfreeipmi/src/fiid.h, libfreeipmi/src/fiid.c + (fiid_obj_memset_field): New function. + + * libfreeipmi/src/fiid.c, libfreeipmi/src/fiid.c + (fiid_obj_set_data): Add data_length parameter. + + * libfreeipmi/src/ipmi-msg-support-cmds.c (fill_kcs_set_user_name, + fill_kcs_set_user_password ): Fixed additional corner cases + affecting functionality of bmc-config on different systems. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (fill_cmd_get_session_challenge): Fixed potential bugs due to + style similarities to above fixes. + + * libfreeipmi/src/ipmi-sessions.c (fill_hdr_session): + Fixed potential bugs due to + style similarities to above fixes. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (fill_cmd_activate_session): Fix for interface change. + + * libfreeipmi/src/ipmi-msg-support-cmds.c (ipmi_kcs_set_user_name, + ipmi_kcs_set_user_password): Fix for interface changes. + + * libfreeipmi/src/ipmi-msg-support-cmds.h + (ipmi_kcs_set_user_password): Fix interface for naming + consistency. + + * libfreeipmi/src/fiid.c (fiid_obj_field_start_bytes): Fix error + check bug. + + * libfreeipmi/src/ipmi-sensor-utils.c (ipmi_sensor_decode_value): + Remove useless line that could break builds on debug conditions. + +2004-12-11 Anand Babu + * libfreeipmi/src/ipmi-msg-support-cmds.c: rqSeq'ing starts even + before session establishment. So ipmi_lan_get_channel_auth_caps, + ipmi_lan_get_session_challenge, ipmi_lan_activate_session and + ipmi_lan_open_session all takes rq_seq argument. + + * libfreeipmi/src/ipmi-lan-interface.h: new IPMI_LAN_RQ_SEQ_INC macro. + + * fish/src/ipmi-wrapper.c: rq_seq argument. + + * doc/examples/ipmi-lan-test.c: new lan bmc-info command example. + + * doc/examples/Makefile.example: facelift. + + * libfreeipmi/src/ipmi-utils.c: new utility procedure + open_free_udp_port (). + +2004-12-09 Albert Chu + + * fish/extensions/bc-lan-conf-misc-section.scm: List 500 ms + interval length for gratuitous arp interval. + + * fish/bmc-config.conf.5: New file. + + * fish/Makefile.am: added new manpage. + + * fish/src/ipmi-wrapper-sensor.c + (display_verbose_current-generic_discrete_sensor_full_record, + display_verbose_current_discrete_sensor_full_record): Filled in + code for functions. + +2004-12-08 Albert Chu + + * fish/src/ipmi-wrapper-sensor.c + (display_current_discrete_sensor_full_record): Don't output + thresholds for this non-threshold sensor. + +2004-12-07 Albert Chu + + * libfreeipmi/src/ipmi-kcs-interface.h, + libfreeipmi/src/ipmi-kcs-interface.c: Globally rename + IPMI_KCS_REG_SPACE_32BIT_BOUND to IPMI_KCS_REG_SPACE_4BYTE_BOUND + for consistency. + + * libfreeipmi/src/ipmi-msg-support-cmds.h: Add forgotten + tmpl_get_channel_access_rq definition. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (fill_kcs_set_user_name): Don't segfault on NULL username. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (fill_kcs_set_user_password): Don't segfault on NULL password. + + * libfreeipmi/src/ipmi-sensor-utils.c (ipmi_sensor_decode_value): + Change is_signed parameter to analog_data_format and calculate + sensor reading based on analog data format rather than binary + signed or unsigned parameter. + + * libfreeipmi/src/ipmi-sensor-utils.c + (ipmi_sensor_get_decode_params): Change is_signed parameter to + analog_data_format and read analog_data_format by fiid_obj_get. + + * fish/src/ipmi-wrapper-sensor.c: Globally rename "is_signed" to + "analog_data_format". + + * bmc-watchdog/src/bmc-watchdog.c (_get_port, _usage, + _cmdline_parse): Support --reg-space option. + + * bmc-watchdog/bmc-watchdog.8.in: Update with new register spacing + option. + +2004-12-06 Albert Chu + + * fish/extensions/bc2.scm: Turn on "Enable_User" option. + + * fish/extensions/bc-user-section.scm (checkout-enable-user): + Return empty string instead of false. + + * fish/extensions/bc-user-section.scm (diff-enable-user): New + function. + +2004-12-04 Anand Babu + * CVS: tagged before commit checkpoint-pre-kcs-api-change. + + * configure.ac: Next version number would be 0.2.0. But lot more + work to be done before that. + + * libfreeipmi/src/ipmi-kcs-interface.c: kcs init function accepts + reg_space argument. All functions uses the sms_io_base KCS port + address set through kcs init function. This has resulted in API + changes across the freeipmi source. List of modified files are + bmc-watchdog/src/bmc-watchdog.c fish/src/bmc-conf-checkout.c + fish/src/bmc-conf-commit.c fish/src/bmc-conf-utils.c + fish/src/bmc-conf2.c fish/src/fish.c fish/src/ipmi-wrapper-sel.c + fish/src/ipmi-wrapper-sensor.c fish/src/ipmi-wrapper.c + fish/src/scm-procedures.c libfreeipmi/src/ipmi-chassis-cmds.c + libfreeipmi/src/ipmi-chassis-cmds.h + libfreeipmi/src/ipmi-dev-global-cmds.c + libfreeipmi/src/ipmi-dev-global-cmds.h + libfreeipmi/src/ipmi-lan-cmds.c libfreeipmi/src/ipmi-lan-cmds.h + libfreeipmi/src/ipmi-pef-cmds.c + libfreeipmi/src/ipmi-sdr-repo-cache.c + libfreeipmi/src/ipmi-sdr-repo-cache.h + libfreeipmi/src/ipmi-sdr-repo-cmds.c + libfreeipmi/src/ipmi-sdr-repo-cmds.h + libfreeipmi/src/ipmi-sel-cmds.c libfreeipmi/src/ipmi-sel-cmds.h + libfreeipmi/src/ipmi-sel-record-types.c + libfreeipmi/src/ipmi-sel-record-types.h + libfreeipmi/src/ipmi-sensor-cmds.c + libfreeipmi/src/ipmi-sensor-cmds.h + libfreeipmi/src/ipmi-serial-cmds.c + libfreeipmi/src/ipmi-serial-cmds.h + libfreeipmi/src/ipmi-sol-cmds.c. + + * libfreeipmi/src/ipmi-msg-support-cmds.c: Now uses + fiid_obj_get/set and some code cleanup. + + * bmc-watchdog/src/bmc-watchdog.c: Supports reg_spacing. + + * fish/src/fish.c: Supports reg_spacing. + + * libfreeipmi/src/ipmi-probe.h: Added reg_space to probe info + structre. + + * libfreeipmi/src/smbios.c: enabled reg_space extraction. + +2004-12-02 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_cmdline_parse): Fix error + message for invalid timer use, stop timer, or log values. + + * bmc-watchdog/src/bmc-watchdog.c (_timer_user_str): Return + 'Reserved' instead of error message when value does not match a + known value. + + * fish/src/ipmi-wrapper-sensor.c + (display_current_threshold_sensor_full_record): Don't output + lower/upper critical threshold by default, output depending on its + readability. + + * freeipmi.spec.in: Fixed info file corner case discovered by John + Goebel . + +2004-12-01 A Balamurugan + + * libfreeipmi/src/ipmi-sensor-event-messages.[ch]: new files. + + * fish/extensions/sel.scm: updated. + + * fish/src/extension.c: removed fi-sel-display-first-entry and + fi-sel-display-next-entry. + + * fish/src/ipmi-wrapper-sel.[ch]: rewritten. + + * fish/src/scm-procedures.c: updated ex_sel_get_first_entry() and + ex_sel_get_next_entry(). + + * libfreeipmi/src/Makefile.am: updated. + + * libfreeipmi/src/freeipmi.h: updated. + + * libfreeipmi/src/ipmi-sel-record-types.c: rewritten all fiid + templates. + +2004-11-28 A Balamurugan + + * fish/src/ipmi-wrapper.c (get_lan_channel_number): now using + probed channel. + + * fish/src/ipmi-wrapper.c (get_serial_channel_number): now using + probed channel. + + * fish/src/ipmi-wrapper.c (display_channel_info): new function. + + * fish/src/ipmi-wrapper.c (display_get_dev_id): now prints channel + info. + + * fish/src/scm-procedures.c (ex_kcs_get_dev_id_display): fixed + memory leak. + + * libfreeipmi/src/ipmi-sdr-record-types.c: added new template + tmpl_sdr_event_only_sensor_record. + +2004-11-28 Anand Babu + + * fish/src/ipmi-wrapper.c (display_get_dev_id): bmc-info should + now decode auxillary-firmware-revision for all Intel products. + + * ROADMAP: added new file. + +2004-11-24 Albert Chu + + * ipmipower/ipmipower.8.in: Add information about gethostbyname() + bottleneck. + +2004-11-22 Albert Chu + + * libfreeipmi/src/ipmi-kcs-interface.h, + libfreeipmi/src/ipmi-kcs-interface.c (ipmi_kcs_cmd_raw, + ipmi_kcs_cmd_raw_interruptible): New functions. + + * ipmipower/src/ipmipower_connection.c (_connection_setup): Remove + incorrect comment statement. + + * bmc-watchdog/src/bmc-watchdog.c (_set_cmd, _daemon_setup): Don't + compare value of pre_timeout_interrupt value against initial + countdown if pre-timeout interrupt is none. + + * ipmipower/ipmipower.8.in: Fix a minor wording mistake. + +2004-11-16 Albert Chu + + * ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets): Fix + logic error in "auto" authentication calculation. + +2004-11-15 Albert Chu + + Added auto authentication type to ipmipower to automatically + choose the most secure authentication among those available from + the remote machine. + + * ipmipower/src/ipmipower.h: Added AUTH_TYPE_AUTO to auth_type_t. + Added authtype field to ipmipower_powercmd structure. + + * ipmipower/src/ipmipower_auth.c + (ipmipower_auth_index, ipmipower_auth_string, + ipmipower_auth_list): Added "auto" authtype support. + + * ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets): + Calculate best authentication available under "auto" authtype. + Store authentication type code in authtype field of + ipmipower_powercmd struct. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet), + ipmipower/src/ipmipower_packet.c (ipmipower_packet_create): Use + authtype field of ipmipower_powercmd_t pointer rather than calling + ipmipower_ipmi_auth_type. + + * ipmipower/src/ipmipower_config.c (ipmipower_config_setup): Make + "auto" the default. + + * ipmipower/ipmipower.8.in, ipmipower/ipmipower.conf.5.in: Added + "auto" as available authentication type. + +2004-11-15 Albert Chu + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_lan_get_channel_auth_caps, ipmi_lan_get_session_challenge, + ipmi_lan_activate_session, ipmi_lan_set_session_priv_level, + ipmi_lan_close_session): Remove check for completion code after + call to ipmi_lan_cmd(). Check should be done by caller and + handled as it feels necessary. + + * libfreeipmi/src/ipmi-msg-support-cmds.c (ipmi_lan_open_session): + Check for completion code errors. + + * configure.ac: Added --enable-syslog option. + + * libfreeipmi/src/ipmi-utils.c (ipmi_comp_test): Remove syslogging + as default behavior. + + * libfreeipmi/src/ipmi-error.h (__IPMI_TRACE, __IPMI_SYSLOG): New + macros. + + * libfreeipmi/src/ipmi-error.h (ERR, ERR_EXIT): Cleaned up macros. + Disable syslogging as default behavior. + + * fish/src/ipmi-wrapper.c (lan_close_session): Check completion + code. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_output.c, + ipmipower/ipmipower.8.in, ipmipower/ipmipower.conf.5.in, + ipmipower/src/ipmipower.c: Changed "hostlist" output type to + "hostrange" type. Globally reworded documentation and variable + names around this change. + + * ipmipower/ipmipower.8.in: Added IPMI over LAN and + TROUBLESHOOTING sections. Cleaned up various wording. + + * ipmipower/ipmipower.conf.5.in, bmc-watchdog/bmc-watchdog.8.in, + ipmiping/ipmiping.8.in, rmcpping/rmcpping.8.in: Cleaned up some + wording and updated ORIGIN to be consistent to other LLNL + projects. + + * README: This isn't the fish project, its the FreeIPMI project + :-) + +2004-11-09 Albert Chu + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd): Make + ipmi_lan_cmd() consistent to style of ipmi_kcs_cmd() by requiring + caller to check completion code. + + * libfreeipmi/src/ipmi-msg-support-cmds.c + (ipmi_lan_get_channel_auth_caps, ipmi_lan_get_session_challenge, + ipmi_lan_activate_session, ipmi_lan_set_session_priv_level, + ipmi_lan_close_session): Add check for completion code after call + to ipmi_lan_cmd(). + +2004-11-04 Ian Zimmerman + + * libfreeipmi/src/ipmi-pef-cmds.c: Yet more PEF routines. + +2004-11-03 Ian Zimmerman + + * libfreeipmi/src/ipmi-pef-cmds.c: Lots of new PEF routines added. + +2004-11-02 Ian Zimmerman + + * configure.ac: fail configure if fish is being built but + readline is not found. If fish is not being built, don't + check for readline or guile at all. + +2004-11-02 Albert Chu + + * freeipmi.spec.in: Various fixes for potential build issues. + Added THANKS file. + +2004-10-29 Ian Zimmerman + + * libfreeipmi/src/ipmi-pef-cmds.c: More PEF commands added. + (ipmi_kcs_get_pef_alert_string): And more of the same. + +2004-10-28 Albert Chu + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_cmd): Fixed + initialization bug found by Andrew Cress + . + +2004-10-28 Anand Babu + + * bmc-watchdog/src/bmc-watchdog.c fish/src/fi-commands.c + fish/src/fi-utils.c fish/src/fi-utils.h fish/src/fish.c + fish/src/ipmi-wrapper-sensor.c fish/src/ipmi-wrapper.c + fish/src/scm-procedures.c fish/src/xmalloc.h + ipmipower/src/ipmipower_output.c ipmipower/src/wrappers.c + ipmipower/src/wrappers.h libfreeipmi/src/freeipmi.h + libfreeipmi/src/ipmi-kcs-interface.c + libfreeipmi/src/ipmi-lan-interface.c + libfreeipmi/src/ipmi-msg-support-cmds.c + libfreeipmi/src/ipmi-sdr-repo-cache.c + libfreeipmi/src/ipmi-semaphores.h + libfreeipmi/src/ipmi-smic-interface.c libfreeipmi/src/ipmi-utils.c + libfreeipmi/src/ipmi-watchdog.c libfreeipmi/src/libfreeipmi.c + libfreeipmi/src/rmcp.c: Applied patch for FreeBSD port by + Dmitry Frolov . Tested on FreeBSD + 5.3-BETA7. + * doc/freeipmi.texi: Updated doc on installation under FreeBSD. + * THANKS: Added Dimitry Frolov and other contributors. + * AUTHORS: Added package maintainers section. + +2004-10-27 Ian Zimmerman + + * libfreeipmi/src/ipmi-pef-cmds.c: more PEF commands. + +2004-10-26 Ian Zimmerman + + * libfreeipmi/src/ipmi-pef-param-spec.h: New file. + + * libfreeipmi/src/Makefile.am, libfreeipmi/src/freeipmi.h, + libfreeipmi/src/ipmi-pef-cmds.h, libfreeipmi/src/ipmi-pef-cmds.c: + added first batch of low level PEF functions. + +2004-10-25 Albert Chu + + * freeipmi.spec.in: Additional file packaging changes based on + recent changes to doc installation. + + * bmc-watchdog/bmc-watchdog.8.in: Modified for changes made by Ian + to _get_port(). + +2004-10-25 Ian Zimmerman + + * bmc-watchdog/src/bmc-watchdog.c (_get_port): probe for KCS + IO port, don't use hardcoded default. + +2004-10-25 A Balamurugan + + * fish/src/ipmi-wrapper-sensor.c: now sensors normal output shows + upper/lower critical threshold instead of normal min/max. + + * libfreeipmi/src/ipmi-sdr-record-types.[ch]: added new template + tmpl_generic_device_locator_sensor_record. + +2004-10-25 Ian Zimmerman + + * configure.ac, Makefile.am: make it possible to disable fish building. + +2004-10-24 Ian Zimmerman + + * configure.ac: bump version number to 0.1.3. + + * ipmipower/Makefile.am, bmc-watchdog/Makefile.am, ipmiping/Makefile.am, + rmcpping/Makefile.am: don't put configured manpages into distribution. + +2004-10-19 Ian Zimmerman + + * NEWS: insert a meaningless blurb to shut up lintian. + +2004-10-16 Anand Babu + + * libfreeipmi/src/fiid.h: fiid_template_t and fiid_tmpl_t are now + constants. + + * ipmipower/src/ipmipower_packet.c + (ipmipower_packet_cmd_template): modified return type accordingly. + + * libfreeipmi/src/ipmi-debug.c (fiid_obj_dump_perror): fixed + typecast warnings. + + * doc/freeipmi.texi: Added "Auth_Type_None conflict" section to + bmc-config known issues. + +2004-10-14 Ian Zimmerman + + * configure.ac, bmc-watchdog/Makefile.am, fish/Makefile.am, + ipmiping/Makefile.am, ipmipower/Makefile.am, rmcpping/Makefile.am, + doc/Makefile.am: reflect the fact that manpage templates have + moved from the doc directory to be next to the binaries they + describe. + + * configure.ac, fish/src/Makefile.am: Do not link everything with + ncurses and readline, just fish. + +2004-10-14 Anand Babu + + * freeipmi/libfreeipmi/src/ipmi-semaphores.h: Portability fixes - + careful macro checks for union semun. + + * freeipmi/libfreeipmi/src/xmalloc.h: Removed error.h and + error prototype. + +2004-10-14 Albert Chu + + * configure.ac: Remove --enable-rpm-install option. + + * freeipmi.spec.in: Remove use of --enable-rpm-install. Added and + removed package documents appropriately based on recent document + changes. Make install using DESTDIR. + + * bmc-watchdog/bmc-watchdog.log: Removed file. + + * bmc-watchdog/Makefile.am: Use init.d rather than rc.d/init.d for + portability. Remove install of bmc-watchdog.log, just make + /var/log/freeipmi directory. + + * bmc-watchdog/Makefile.am, libfreeipmi/Makefile.am: Remove use of + RPM_INSTALL flag. + +2004-10-13 Ian Zimmerman + + * doc/examples/Makefile.am (Examplesdir): use $(docdir)/examples + for installation. + + * doc/Makefile.am: export docdir variable. + +2004-10-11 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_pre_interrupt_timeout_str): + Renamed to _pre_timeout_interrupt_str to match code style in rest + of program. Output of NMI modified to more closely match IPMI + specification. + + * bmc-watchdog/src/bmc-watchdog.c (_get_cmd): Updated call to + _pre_timeout_interrupt_str appropriately. + +2004-10-11 Anand Babu + + * CVS tagged as release-0_1_0-tag. + +2004-10-08 A Balamurugan + + * bmc-watchdog/src/bmc-watchdog.c: fixed compiler warnings + +2004-10-08 Anand Babu + + * authors.texi, fdl.texi, freeipmi.texi, gpl.texi, + permissions.texi, version.texi.in: newly added - GNU FreeIPMI + User's Guide. + + * authors.texinfo, fish.texinfo, freeipmi-hg.texinfo, + gpl.texinfo: removed. + + * ipmi-over-ts2000.texi ipmi-network-layout.fig + ipmi-network-layout.xcf freeipmi-hackers-intro.sxi: additional + documentation added with (cvs add -kb) binary sticky flag. + + * fish/src/ipmi-wrapper-sensor.c: commented unused variables. + + * ipmipower/src/wrappers.c (_checkfill): fixed unused-warning. + + * ipmipower/src/ipmipower_check.c (_check_command): initialized + "expected_cmd" to -1. + + * ipmipower/src/conffile.c (conffile_parse): initialized "len" to + -1. + + * doc/Makefile.am: new entries to handle additional documentation + and PDF creation. + + * TODO: cleanup and reformating. + + * configure.ac: now becomes 0.1.0. + +2004-10-08 A Balamurugan + + * bmc-watchdog/src/bmc-watchdog.c: Fixed compatibility issues with + GCC 2.96 + + * libfreeipmi/src/ipmi-ping.c: like wise + +2004-10-07 Albert Chu + + * doc/bmc-watchdog.8.in: Fixed typo, 0x0CA2 to 0xCA2. + +2004-10-04 Albert Chu + + Removed --permsgauth_hosts command line option in ipmipower. + + * doc/ipmipower.8.in, doc/ipmipower.conf.5.in: Removed all + references to permsgauth_hosts command line, interactive command, + and configuration file options. Slight re-word of information in + KNOWN ISSUES. + + * ipmipower/src/ipmipower.h: Removed MSG_TYPE_PERMSGAUTH_REQUIRED + and MSG_TYPE_PERMSGAUTH_DISABLED definitions. Removed + permsgauth_hosts, permsgauth_hosts_count, and permsgauth_hosts_set + in ipmipower_config. Added permsgauth_enabled to + ipmipower_powercmd. + + * ipmipower/src/ipmipower_config.c (ipmipower_config_setup, + ipmipower_config_cmdline_parse, ipmipower_config_conffile_parse, + ipmipower_config_check_values): Removed all configuration + regarding permsgauth_hosts command line and configuration + file options. + + * ipmipower/src/ipmipower_output.c: Removed permsgauth output messages. + + * ipmipower/src/ipmipower_packet.c (ipmipower_packet_create): Base + authentication on permsgauth_enabled flag. + + * ipmipower/src/ipmipower_powercmd.c (ipmipower_powercmd_queue): + Initialize permsgauth_enabled. + + * ipmipower/src/ipmipower_powercmd.c (_recv_packet): Base + authentication on permsgauth_enabled flag. + + * ipmipower/src/ipmipower_powercmd.c (_process_ipmi_packets): Set + permsgauth_enabled flag based on result of Get Authentication + Capabilities response. + + * ipmipower/src/ipmipower_prompt.c (_cmd_permsgauth_hosts): + Removed function. + + * ipmipower/src/ipmipower_prompt.c (_cmd_advanced, _cmd_config, + ipmipower_prompt_process_cmdline): Removed all reference to + permsgauth_hosts interactive command. + +2004-09-29 A Balamurugan + + * libfreeipmi/src/ipmi-sensor-cmds.c: added optional ignore byte + in template tmpl_get_sensor_threshold_reading_rs. + +2004-09-27 Albert Chu + + * freeipmi.spec.in: Fixed up administration issues with the post + install script. + +2004-09-22 A Balamurugan + + * fish/extensions/bc-section.scm: bug #10446, skip unsupported + fields, is fixed. + +2004-09-17 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_get_port), + doc/bmc-watchdog.8.in: Make default port 0xCA2 based on IPMI spec. + + * bmc-watchdog/src/bmc-watchdog.c (_get_port): Fix bug with + --io-port option. + + * doc/bmc-watchdog.8.in: Added examples. + + * bmc-watchdog/bmc-watchdog: Modified default rc script to reset a + machine instead of generate an INIT. This is the more common use + of the bmc-watchdog. + + * doc/ipmipower.8.in: Fixed up examples. + +2004-09-15 Albert Chu + + * ipmipower/src/ipmipower_output.c: Fixed output message. + +2004-09-14 Albert Chu + + * doc/bmc-watchdog.8.in, doc/ipmipower.8.in, + doc/ipmipower.conf.5.in: Fixed wording and a few typos. + +2004-09-09 A Balamurugan + + * fish/extensions/bc-common.scm: now bmc-config --diff checks user + password. + * fish/extensions/bc-lan-conf-auth-section.scm: like wise + * fish/extensions/bc-lan-conf-misc-section.scm: like wise + * fish/extensions/bc-lan-conf-section.scm: like wise + * fish/extensions/bc-lan-serial-channel-section.scm: like wise + * fish/extensions/bc-misc-section.scm: like wise + * fish/extensions/bc-section.scm: like wise + * fish/extensions/bc-serial-conf-section.scm: like wise + * fish/extensions/bc-user-section.scm: like wise + * fish/src/bmc-conf2.[ch]: added new function + check_bmc_user_password(). + * fish/src/extension.c: added new primitive procedure + fi-check-bmc-user-password. + * fish/src/scm-procedures.c: added new function + ex_check_bmc_user_password(). + +2004-09-07 A Balamurugan + + * fish/extensions/utils.scm: renamed (simple->string) to (any->string) + * fish/extensions/bc-lan-conf-misc-section.scm: like wise + * fish/extensions/bc-section.scm: like wise + * fish/extensions/bc-serial-conf-section.scm: like wise + * fish/extensions/bc-user-section.scm: like wise + +2004-09-02 A Balamurugan + + * fish/extensions/bc-lan-conf-auth-section.scm: added code to + support empty values. + * fish/extensions/bc-lan-conf-misc-section.scm: like wise + * fish/extensions/bc-lan-conf-section.scm: like wise + * fish/extensions/bc-lan-serial-channel-section.scm: like wise + * fish/extensions/bc-misc-section.scm: like wise + * fish/extensions/bc-section.scm: like wise + * fish/extensions/bc-serial-conf-section.scm: like wise + * fish/extensions/bc-user-section.scm: like wise + * fish/extensions/utils.scm: (simple->string) primitive procedure + supports list. + * fish/src/scm-procedures.c: fixed bug toggling user input in + ex_set_bmc_lan_channel_volatile_access(), + ex_set_bmc_lan_channel_non_volatile_access(), + ex_set_bmc_serial_channel_volatile_access() and + ex_set_bmc_serial_channel_non_volatile_access() + +2004-08-24 Albert Chu + + * libfreeipmi/src/ipmi-sensor-cmds.c + (ipmi_kcs_get_sensor_thresholds): Fix typo. + +2004-08-23 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_bmclog): Fix typo. + +2004-08-20 A Balamurugan + + * fish/extensions/bc-common.scm: added new primitive procedure + (get-doc-string) + * fish/extensions/bc-lan-conf-auth-section.scm: added doc string + * fish/extensions/bc-lan-conf-misc-section.scm: like wise + * fish/extensions/bc-lan-conf-section.scm: like wise + * fish/extensions/bc-lan-serial-channel-section.scm: like wise + * fish/extensions/bc-misc-section.scm: like wise + * fish/extensions/bc-section.scm: like wise + * fish/extensions/bc-serial-conf-section.scm: like wise + * fish/extensions/bc-user-section.scm: like wise + +2004-08-20 Anand Babu + + * CVS tagged as release-0_1_0_alpha6-tag + +2004-08-20 A Balamurugan + + * doc/sel.1: added examples + +2004-08-20 Anand Babu + + * fish/extensions/sel.scm (sel-main): fixed bug in parsing + hex dump optional argument. Argument to value should not be + quoted. + +2004-08-20 Ian Zimmerman + + * doc/sel.1: document new options -x, --hex-dump + and -i, --info. + + * fish/extensions/sel.scm (sel-hex-dump): + Use sel-display-info. + (sel-display-info): New function. + (sel-display-flags): New function. + + * fish/src/extension.c (install_new_procedures): + New function ex_sel_get_info_binary. + + * fish/src/scm-procedures.h (ex_sel_get_info_binary): + New function. + + * fish/src/scm-procedures.c (ex_sel_get_info_binary): + New function. + + * fish/src/ipmi-wrapper-sel.h (struct sel_info): + Make all fields unsigned long for easier conversion + to Scheme. + +2004-08-20 A Balamurugan + + * doc/bmc-config.1: man page updated. + + * fish/extensions/bc-common.scm: added new primitive procedure + (make-section) + + * fish/extensions/bc-section.scm: added new primitive procedure + (diff-section-values) and (diff-section) + + * fish/extensions/bc2.scm: updated. added support for --key-pair + and --diff + +2004-08-19 Ian Zimmerman + + * fish/extensions/sel.scm (sel-main): + add --info option. + +2004-08-19 A Balamurugan + + * fish/src/ipmi-wrapper-sensor.c: modified + display_current_threshold_sensor_full_record() and + display_verbose_current_threshold_sensor_full_record(). + +2004-08-18 Ian Zimmerman + + * libfreeipmi/src/pcilocate.c (pci_get_dev_info): + Fix a typo causing warning in the stubbed out branch. + + * fish/extensions/sel.scm (sel-main): + Add call to fi-sel-get-info. + + * fish/src/extension.c (install_new_procedures): + Register fi-sel-get-info. + + * fish/src/scm-procedures.h (ex_sel_get_info): + Declare new function. + + * fish/src/scm-procedures.c (ex_sel_get_info): + Add function. + + * fish/src/ipmi-wrapper-sel.c (get_sel_info): + Add function. + + * fish/src/ipmi-wrapper-sel.h (struct sel_info): + Add this structure and enum for the flags field. + (get_sel_info): declare new function. + +2004-08-18 A Balamurugan + + * TODO: added new todo's. + * fish/src/ipmi-wrapper-sensor.c: now sensor status are relavent + to threshold state. + * libfreeipmi/src/ipmi-sensor-cmds.c: added + ipmi_kcs_get_sensor_thresholds(). + * libfreeipmi/src/ipmi-sensor-types.c: updated + ipmi_sensor_threshold_health_check(). + +2004-08-17 Ian Zimmerman + + * fish/extensions/sel.scm (sel-display-help): add --hex-dump + option to usage messages. + (sel-main): actually implement --hex-dump + + * fish/src/extension.c (install_new_procedures): + install ex_sel_*_{raw,hex}. + + * fish/src/scm-procedures.h: declare ex_sel_*_hex. + + * fish/src/scm-procedures.c (ex_sel_get_first_entry_hex): + new function. + (ex_sel_get_next_entry_hex): new function. + +2004-08-16 Ian Zimmerman + + * fish/src/scm-procedures.c (ex_sel_get_next_entry_raw): + Fix index out of bounds. + + * fish/src/scm-procedures.h: add prototypes for + ex_sel_get_next_entry_raw and ex_sel_get_first_entry_raw. + + * fish/src/scm-procedures.c (ex_sel_get_next_entry_raw): + new function. + (ex_sel_get_first_entry_raw): new function. + +2004-08-10 Ian Zimmerman + + * fish/src/scm-procedures.c (ex_sel_display_first_entry): + use SEL_RECORD_SIZE constant instead of hardcoding. + (hex_dump_record_data): new function. + + * fish/src/ipmi-wrapper-sel.h: #define SEL_RECORD_SIZE + + * TODO: Add gh -> scm conversion task. + +2004-08-16 A Balamurugan + + * fish/extensions/bc-common.scm: code cleanups + * fish/extensions/bc-section.scm: like wise + * fish/scripts/bmc-config/bmc-config.in: now uses new bmc-config + +2004-08-05 Ian Zimmerman + + * configure.ac: Bump version for snapshot release. + +2004-07-28 A Balamurugan + + * fish/extensions/bc-common.scm: added new procedure (file-exists?) + * fish/extensions/bc-section.scm: code cleanup and updated procedures + * fish/extensions/bc2.scm: like wise + +2004-07-26 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_bmclog, _init_bmc_watchdog): + Fixed --no-logging option. + +2004-07-17 A Balamurugan + + * fish/extensions/bc-common.scm: added primitives for checkout support + * fish/extensions/bc-lan-conf-auth-section.scm: like wise + * fish/extensions/bc-lan-conf-misc-section.scm: like wise + * fish/extensions/bc-lan-conf-section.scm: like wise + * fish/extensions/bc-lan-serial-channel-section.scm: like wise + * fish/extensions/bc-misc-section.scm: like wise + * fish/extensions/bc-section.scm: like wise + * fish/extensions/bc-serial-conf-section.scm: like wise + * fish/extensions/bc-user-section.scm: like wise + * fish/src/bmc-conf2.[ch]: added new functions + get_bmc_user_access(), get_bmc_channel_access(), + get_bmc_chassis_status(), get_bmc_username(), + get_bmc_user_lan_channel_access(), + get_bmc_user_serial_channel_access(), + get_bmc_lan_channel_volatile_access(), + get_bmc_lan_channel_non_volatile_access(), + get_bmc_lan_conf_ip_addr_source(), get_bmc_lan_conf_ip_addr(), + get_bmc_lan_conf_mac_addr(), get_bmc_lan_conf_subnet_mask(), + get_bmc_lan_conf_default_gw_ip_addr(), + get_bmc_lan_conf_default_gw_mac_addr(), + get_bmc_lan_conf_backup_gw_ip_addr(), + get_bmc_lan_conf_backup_gw_mac_addr(), + get_bmc_lan_conf_auth_type_enables(), + get_bmc_lan_conf_arp_control(), get_bmc_lan_conf_gratuitous_arp(), + get_bmc_serial_channel_volatile_access(), + get_bmc_serial_channel_non_volatile_access(), + get_bmc_serial_conf_conn_mode(), + get_bmc_serial_conf_page_blackout_interval(), + get_bmc_serial_conf_call_retry_time(), + get_bmc_serial_conf_ipmi_msg_comm_settings() and + get_bmc_power_restore_policy() + * fish/src/extension.c: added new primitives + fi-get-bmc-username, fi-get-bmc-user-lan-channel-access, + fi-get-bmc-user-serial-channel-access, + fi-get-bmc-lan-channel-volatile-access, + fi-get-bmc-lan-channel-non-volatile-access, + fi-get-bmc-lan-conf-ip-address-source, + fi-get-bmc-lan-conf-ip-address, fi-get-bmc-lan-conf-mac-address, + fi-get-bmc-lan-conf-subnet-mask, + fi-get-bmc-lan-conf-default-gateway-ip-address, + fi-get-bmc-lan-conf-default-gateway-mac-address, + fi-get-bmc-lan-conf-backup-gateway-ip-address, + fi-get-bmc-lan-conf-backup-gateway-mac-address, + fi-get-bmc-lan-conf-auth-type-callback-enables, + fi-get-bmc-lan-conf-auth-type-user-enables, + fi-get-bmc-lan-conf-auth-type-operator-enables, + fi-get-bmc-lan-conf-auth-type-admin-enables, + fi-get-bmc-lan-conf-auth-type-oem-enables, + fi-get-bmc-lan-conf-arp-control, + fi-get-bmc-lan-conf-gratuitous-arp, + fi-get-bmc-serial-channel-volatile-access, + fi-get-bmc-serial-channel-non-volatile-access, + fi-get-bmc-serial-conf-conn-mode, + fi-get-bmc-serial-conf-page-blackout-interval, + fi-get-bmc-serial-conf-call-retry-time, + fi-get-bmc-serial-conf-ipmi-msg-comm-settings and + fi-get-bmc-power-restore-policy. + * fish/src/scm-procedures.[ch]: added new functions + ex_get_bmc_username(), ex_get_bmc_user_lan_channel_access(), + ex_get_bmc_user_serial_channel_access(), + ex_get_bmc_lan_channel_volatile_access(), + ex_get_bmc_lan_channel_non_volatile_access(), + ex_get_bmc_lan_conf_ip_addr_source(), + ex_get_bmc_lan_conf_ip_addr(), ex_get_bmc_lan_conf_mac_addr(), + ex_get_bmc_lan_conf_subnet_mask(), + ex_get_bmc_lan_conf_default_gw_ip_addr(), + ex_get_bmc_lan_conf_default_gw_mac_addr(), + ex_get_bmc_lan_conf_backup_gw_ip_addr(), + ex_get_bmc_lan_conf_backup_gw_mac_addr(), + ex_get_bmc_lan_conf_auth_type_callback_enables(), + ex_get_bmc_lan_conf_auth_type_user_enables(), + ex_get_bmc_lan_conf_auth_type_operator_enables(), + ex_get_bmc_lan_conf_auth_type_admin_enables(), + ex_get_bmc_lan_conf_auth_type_oem_enables(), + ex_get_bmc_lan_conf_arp_control(), + ex_get_bmc_lan_conf_gratuitous_arp(), + ex_get_bmc_serial_channel_volatile_access(), + ex_get_bmc_serial_channel_non_volatile_access(), + ex_get_bmc_serial_conf_conn_mode(), + ex_get_bmc_serial_conf_page_blackout_interval(), + ex_get_bmc_serial_conf_call_retry_time(), + ex_get_bmc_serial_conf_ipmi_msg_comm_settings() and + ex_get_bmc_power_restore_policy() + +2004-07-13 A Balamurugan + + * fish/extensions/bc-common.scm: code cleanup + * fish/extensions/bc-lan-conf-auth-section.scm: like wise + * fish/extensions/bc-lan-conf-misc-section.scm: like wise + * fish/extensions/bc-lan-conf-section.scm: like wise + * fish/extensions/bc-lan-serial-channel-section.scm: like wise + * fish/extensions/bc-misc-section.scm: like wise + * fish/extensions/bc-section.scm: like wise + * fish/extensions/bc-serial-conf-section.scm: like wise + +2004-07-12 A Balamurugan + + * fish/extensions/bc-common.scm: new file + * fish/extensions/bc-lan-conf-auth-section.scm: new file + * fish/extensions/bc-lan-conf-misc-section.scm: new file + * fish/extensions/bc-lan-conf-section.scm: new file + * fish/extensions/bc-lan-serial-channel-section.scm: new file + * fish/extensions/bc-misc-section.scm: new file + * fish/extensions/bc-section.scm: new file + * fish/extensions/bc-serial-conf-section.scm: new file + * fish/extensions/bc-user-section.scm: new file + * fish/extensions/bc2.scm: new file + * fish/src/bmc-conf2.c: new file + * fish/src/bmc-conf2.h: new file + * fish/extensions/Makefile.am: updated + * fish/extensions/init.scm: added load-entry of bmc-conf2 + * fish/extensions/utils.scm: code cleanup + * fish/src/Makefile.am: updated + * fish/src/extension.c: added new primitive procedures + fi-set-bmc-username, fi-set-bmc-enable-user, + fi-set-bmc-user-password, fi-set-bmc-user-lan-channel-access, + fi-set-bmc-user-serial-channel-access, + fi-set-bmc-lan-channel-volatile-access, + fi-set-bmc-lan-channel-non-volatile-access, + fi-set-bmc-lan-conf-ip-address-source, + fi-set-bmc-lan-conf-ip-address, fi-set-bmc-lan-conf-mac-address, + fi-set-bmc-lan-conf-subnet-mask, + fi-set-bmc-lan-conf-default-gateway-ip-address, + fi-set-bmc-lan-conf-default-gateway-mac-address, + fi-set-bmc-lan-conf-backup-gateway-ip-address, + fi-set-bmc-lan-conf-backup-gateway-mac-address, + fi-set-bmc-lan-conf-auth-type-callback-enables, + fi-set-bmc-lan-conf-auth-type-user-enables, + fi-set-bmc-lan-conf-auth-type-operator-enables, + fi-set-bmc-lan-conf-auth-type-admin-enables, + fi-set-bmc-lan-conf-auth-type-oem-enables, + fi-set-bmc-lan-conf-arp-control, + fi-set-bmc-lan-conf-gratuitous-arp, + fi-set-bmc-serial-channel-volatile-access, + fi-set-bmc-serial-channel-non-volatile-access, + fi-set-bmc-serial-conf-conn-mode, + fi-set-bmc-serial-conf-page-blackout-interval, + fi-set-bmc-serial-conf-call-retry-time, + fi-set-bmc-serial-conf-ipmi-msg-comm-settings and + fi-set-bmc-power-restore-policy + * fish/src/scm-procedures.[ch]: added new functions + ex_set_bmc_username(), ex_set_bmc_enable_user(), + ex_set_bmc_user_password(), ex_set_bmc_user_lan_channel_access(), + ex_set_bmc_user_serial_channel_access(), + ex_set_bmc_lan_channel_volatile_access(), + ex_set_bmc_lan_channel_non_volatile_access(), + ex_set_bmc_lan_conf_ip_addr_source(), + ex_set_bmc_lan_conf_ip_addr(), ex_set_bmc_lan_conf_mac_addr(), + ex_set_bmc_lan_conf_subnet_mask(), + ex_set_bmc_lan_conf_default_gw_ip_addr(), + ex_set_bmc_lan_conf_default_gw_mac_addr(), + ex_set_bmc_lan_conf_backup_gw_ip_addr(), + ex_set_bmc_lan_conf_backup_gw_mac_addr(), + ex_set_bmc_lan_conf_auth_type_callback_enables(), + ex_set_bmc_lan_conf_auth_type_user_enables(), + ex_set_bmc_lan_conf_auth_type_operator_enables(), + ex_set_bmc_lan_conf_auth_type_admin_enables(), + ex_set_bmc_lan_conf_auth_type_oem_enables(), + ex_set_bmc_lan_conf_arp_control(), + ex_set_bmc_lan_conf_gratuitous_arp(), + ex_set_bmc_serial_channel_volatile_access(), + ex_set_bmc_serial_channel_non_volatile_access(), + ex_set_bmc_serial_conf_conn_mode(), + ex_set_bmc_serial_conf_page_blackout_interval(), + ex_set_bmc_serial_conf_call_retry_time(), + ex_set_bmc_serial_conf_ipmi_msg_comm_settings() and + ex_set_bmc_power_restore_policy() + +2004-07-12 Albert Chu + + * bmc-watchdog/Makefile.am: Fixed typo. + + * bmc-watchdog/src/bmc-watchdog.c (_bmclog): Fixed juvenile + mistake where arguments weren't output to the bmc log. + +2004-07-09 Albert Chu + + * freeipmi.spec.in: Renamed with_bmc_watchdog_setup conditional + with_bmc_watchdog_start. Added with_bmc_watchdog_condrestart + conditional. + +2004-07-09 Ian Zimmerman + + * libfreeipmi/src/ipmi-lan-interface.c (ipmi_lan_sendto): Fix buffer + overrun bug: the pad byte must _not_ be copied from caller provided + buffer, because it is not there. (_pkt_len -> pkt_len). + +2004-07-07 Albert Chu + + * bmc-watchdog/src/bmc-watchdog.c (_cmd): Removed fsync() calls. + Problem was unrelated to syncing. + +2004-07-07 Albert Chu + + Replace syslogging with a BMC-Watchdog logfile. + + * bmc-watchdog/src/bmc-watchdog.c (_bmclog, _bmclog_write, + _cmdline_default, _init_bmc_watchdog): New functions. + + * bmc-watchdog/src/bmc-watchdog.c (_cmdline_parse, _usage): Rename + --no-syslog to --no-logging option. Added --logfile option. + + * bmc-watchdog/src/bmc-watchdog.c (_init_ipmi, _daemon_init): + Removed openlog() calls. + + * bmc-watchdog/src/bmc-watchdog.c (main, _daemon_init): Call new + _init_bmc_watchdog() function. + + * bmc-watchdog/src/bmc-watchdog.c (main): Call new + _cmdline_default() function. Close logfile_fd descriptor. + + * bmc-watchdog/src/bmc-watchdog.c: Globally use _bmclog() instead + of _syslog(). + + * bmc-watchdog/src/bmc-watchdog.c (_syslog): Slightly alter code + structure. + + * bmc-watchdog/bmc-watchdog.log: New file. + + * bmc-watchdog/Makefile.am: Added bmc-watchdog.log install and + dist. + + * bmc-watchdog/src/bmc-watchdog.c (_cmd): Added fsync() call so + debug output is consistent. + + * doc/bmc-watchdog.8.in: Updated with appropriate information for + changes above. + + * freeipmi.spec.in: Updated with packaging requirements of files + in /var. + +2004-07-06 Albert Chu + + * doc/bmc-watchdog.8.in: Added --help and --version options. + + * bmc-watchdog/src/bmc-watchdog.c (_cmdline_parse, _usage): + Re-worked to output bmc-watchdog command specific options when + --help is listed with a command type. + + * bmc-watchdog/src/bmc-watchdog.c (_cmd_string): New functions. + + * bmc-watchdog/src/bmc-watchdog.c: Some minor code cleanup + throughout the code. + +2004-06-29 Albert Chu + + * ipmipower/src/conffile.c (_parseline): Fixed argument parsing + bugs. + +2004-06-25 Albert Chu + + Added Suspend BMC Arps functionality to BMC-Watchdog + + * bmc-watchdog/src/bmc-watchdog.c (_suspend_bmc_arps_cmd, + _get_lan_channel_number): New Functions. + + * bmc-watchdog/src/bmc-watchdog.c (_usage, _cmdline_parse, + _start_cmd, _daemon_setup): Added --arp-response-suspend and + --gratuitous-arp-suspend support. + + * bmc-watchdog/src/bmc-watchdog.c (_cmd): Added netfn argument. + Use netfn argument in kcs function calls. + + * bmc-watchdog/src/bmc-watchdog.c (_reset_watchdog_timer_cmd, + _set_watchdog_timer_cmd, _get_watchdog_timer_cmd, + _suspend_bmc_arps_cmd): Pass appropriate network function to + _cmd(). + + * libfreeipmi/src/ipmi-watchdog.c: Fix typo in + fiid_cmd_suspend_bmc_arp_rq template. + + * libfreeipmi/src/ipmi-watchdog.h,libfreeipmi/src/ipmi-watchdog.c + (fill_cmd_suspend_bmc_arps): Added channel_number argument. Fill + channel_argument field based on argument. + + * libfreeipmi/src/ipmi-watchdog.h: Added + IPMI_WATCHDOG_GRATUITOUS_ARP_NO_SUSPEND, + IPMI_WATCHDOG_GRATUITOUS_ARP_SUSPEND, + IPMI_WATCHDOG_ARP_RESPONSE_NO_SUSPEND, + IPMI_WATCHDOG_ARP_RESPONSE_SUSPEND, + IPMI_WATCHDOG_GRATUITOUS_ARP_VALID, and + IPMI_WATCHDOG_ARP_RESPONSE_VALID macros. + + * doc/bmc-watchdog.8.in: Updated with new info about suspend arps + options. + + Misc. Fixes. + + * libfreeipmi/src/ipmi-error.c (_ERR_RET): Fixed return value + error in macro. + + * TODO: Remove suspend arps note. Added note about need to + reprogram _get_lan_channel_number(). + +2004-06-24 Albert Chu + + Added Pulse Diagnostic Interrupt and Soft OS Shutdown commands + + * ipmipower/src/ipmipower.h: Added POWER_CMD_PULSE_DIAG_INTR and + POWER_CMD_SOFT_SHUTDOWN_OS definitions. + + * ipmipower/src/ipmipower_config.c (_usage, + ipmipower_config_cmdline_parse): Added support for --pulse and + --soft options. + + * ipmipower/src/ipmipower_prompt.c (_cmd_help, + ipmipower_prompt_process_cmdline): Added support for pulse and + soft commands. + + * ipmipower/src/ipmipower_config.c (ipmipower_packet_create): + Added support for pulse diagnostic interrupts and soft os + shutdowns. + + * doc/ipmipower.8.in: Added information about --pulse and --soft + options. + + * TODO: Remove pulse diag and soft shutdown todo. + + Misc Fixes. + + * ipmipower/src/ipmipower.h, ipmipower/src/ipmipower_config.c, + ipmipower/src/ipmipower_packet.c, + ipmipower/src/ipmipower_powercmd.c, + ipmipower/src/ipmipower_prompt.c: Changed POWER_CMD_POWER_STAT to + POWER_CMD_POWER_STATUS. + + * ipmipower/src/ipmipower_config.c (_usage): Reworded some usage. + + * ipmipower/src/ipmipower_config.c + (ipmipower_config_cmdline_parse): Put 'break' after usage and + version. + +2004-06-23 Albert Chu + + * ipmipower/src/ipmipower_prompt.c (_cmd_authtype): Check for + username and password length rather than non-null. + +2004-06-23 A Balamurugan + + * fish/src/ipmi-wrapper.c: now get_lan_channel_number() and + get_serial_channel_number() return predefined values. + +2004-06-16 A Balamurugan + + * fish/src/bmc-conf-commit.c: now set_user_password_commit() + enables users. + +2004-05-24 Albert Chu + + * freeipmi.spec.in: Added devel package. + +2004-05-19 Albert Chu + + * freeipmi.spec.in: Added optional powerman restart check. + +2004-05-18 A Balamurugan + + * doc/examples/hello-sensors.c: fixed. + +2004-05-18 Albert Chu + + * bmc-watchdog/bmc-watchdog: Fix careless cut and paste typo. + +2004-05-13 Albert Chu + + * bmc-watchdog/Makefile.am: Remove uninstall-extra. + + * autogen.sh: Change --foreign strictness to --gnu since we are + now a gnu project. + + * COPYING, INSTALL, freeipmi.spec.in: New Files. + + * Makefile.am: Add COPYING and INSTALL to dist and install. Add + freeipmi.spec.in to dist. + + * configure.ac: Generate freeipmi.spec. + + * doc/bmc-watchdog.8.in: Changed default io-port to corresponding + value used in code. + +2004-05-13 Ian Zimmerman + + * libfreeipmi/Makefile.am (IPCDIR), doc/examples/Makefile.am + (Examplesdir), doc/Makefile.am (docdir): s/PACKAGE_NAME/PACKAGE/ + + * fish/src/bmc-conf-key-utils.c: make bmc_config_key_list static, + it is not used outside of its defining file. + + * fish/src/bmc-conf-key-utils.h: remove bmc_config_key_list and + make it static, it is not used outside of its defining file. + + * fish/src/bmc-conf-checkout.c, fish/src/bmc-conf-commit.c, + fish/src/bmc-conf-utils.c, fish/src/ipmi-wrapper-sel.c, + fish/src/ipmi-wrapper.c, fish/src/scm-procedures.c, + libfreeipmi/src/ipmi-dev-global-cmds.c, + libfreeipmi/src/ipmi-kcs-interface.c, + libfreeipmi/src/ipmi-lan-interface.c, + libfreeipmi/src/ipmi-msg-support-cmds.c, + libfreeipmi/src/ipmi-sdr-repo-cache.c, + libfreeipmi/src/ipmi-sel-record-types.c, libfreeipmi/src/rmcp.c: + add nasty autoconf dance for alloca. + + * configure.ac: Add AC_FUNC_ALLOCA. + +2004-05-13 Albert Chu + + * COPYING.ipmiping, DISCLAIMER.ipmiping, COPYING.rmcpping, + DISCLAIMER.rmcpping, doc/ipmiping.8.in, doc/rmcpping.8.in, + libfreeipmi/src/ipmi-ping.h, libfreeipmi/src/ipmi-ping.c, + ipmiping/Makefile.am, ipmiping/src/Makefile.am, + ipmiping/src/ipmiping.c, rcmpping/Makefile.am, + rmcpping/src/Makefile.am, rmcpping/src/rmcpping.c: New files. + + * TODO: Added ipmiping and rmcpping todo list. + + * configure.ac: Generate ipmiping and rmcpping manpages. Generate + ipmiping and rmcpping makefiles. + + * doc/Makefile.am: Added ipmiping and rmcpping manpages. + + * Makefile.am: Added ipmiping and rmcpping subdirectories. Added + COPYING.ipmiping, DISCLAIMER.ipmiping, COPYING.rmcpping, + DISCLAIMER.rmcpping. + + * libfreeipmi/src/Makefile.am: Added ipmi-ping.h and ipmi-ping.c. + + * libfreeipmi/src/freeipmi.h: Added ipmi-ping.h. + +2004-05-12 Ian Zimmerman + + * fish/extensions/bmc-config.scm (bmc-config-main): If an + incomplete key-pair is given just display usage and exit. + + * fish/extensions/sensors.scm (sensors-main): use string-tokenize + to split sensors list, not read. + + * doc/sensors.1: Document the new --all flag. Should + this file be generated through make? + + * fish/extensions/sensors.scm (sensors-main): Add an --all flag + as requested by Al to override ignore list. + (sensors-display-help): Document the new --all flag. + +2004-05-11 Albert Chu + + * ipmipower/src/ipmipower_wrappers.h: Fix #include bug found by + Ian. + + * ipmipower/src/ipmipower_config.c: Remove _GNU_SOURCE define. + + * bmc-watchdog/bmc-watchdog: Set default use to SMS/OS and clear + all flags in default daemon execution. + + * doc/bmc-watchdog.8.in: Added known issue about using something + other than SMS/OS for the bmc watchdog timer use. + +2004-05-11 Albert Chu + + Added ipmipower. + + * COPYING.ipmipower, DISCLAIMER.ipmipower, doc/ipmipower.8.in, + doc/ipmipower.conf.5.in, ipmipower/Makefile.am, + ipmipower/src/Makefile.am, ipmipower/src/argv.c, + ipmipower/src/argv.h, ipmipower/src/cbuf.c, ipmipower/src/cbuf.h, + ipmipower/src/conffile.c, ipmipower/src/conffile.h, + ipmipower/src/error.c, ipmipower/src/error.h, ipmipower/src/fd.c, + ipmipower/src/fd.h, ipmipower/src/hostlist.c, + ipmipower/src/hostlist.h, ipmipower/src/hprintf.c, + ipmipower/src/hprintf.h, ipmipower/src/ipmipower_auth.c, + ipmipower/src/ipmipower_auth.h, ipmipower/src/ipmipower.c, + ipmipower/src/ipmipower_check.c, ipmipower/src/ipmipower_check.h, + ipmipower/src/ipmipower_config.c, + ipmipower/src/ipmipower_config.h, + ipmipower/src/ipmipower_connection.c, + ipmipower/src/ipmipower_connection.h, ipmipower/src/ipmipower.h, + ipmipower/src/ipmipower_output.c, + ipmipower/src/ipmipower_output.h, + ipmipower/src/ipmipower_packet.c, + ipmipower/src/ipmipower_packet.h, ipmipower/src/ipmipower_ping.c, + ipmipower/src/ipmipower_ping.h, + ipmipower/src/ipmipower_powercmd.c, + ipmipower/src/ipmipower_powercmd.h, + ipmipower/src/ipmipower_prompt.c, + ipmipower/src/ipmipower_prompt.h, ipmipower/src/ipmipower_util.c, + ipmipower/src/ipmipower_util.h, + ipmipower/src/ipmipower_wrappers.c, + ipmipower/src/ipmipower_wrappers.h, ipmipower/src/list.c, + ipmipower/src/list.h, ipmipower/src/wrappers.c, + ipmipower/src/wrappers.h: New files. + + * doc/Makefile.am: Added ipmipower.8 and ipmipower.conf.5. + + * Makefile.am: Added ipmipower subdirectory. + + * configure.ac: Added sys/wait.h, mmap, and mlock checks. + Generate ipmipower.8 and ipmipower.conf.5 manpages. Generate + Makefile.am and ipmipower/src Makefiles. + + * TODO: Added ipmipower todo list. + +2004-05-10 Ian Zimmerman + + * bmc-watchdog/src/bmc-watchdog.c (_set_watchdog_timer_cmd): + corrected typo in BIGENDIAN case + +2004-05-07 Albert Chu + + * configure.ac: Fixed bugs with --enable-debug option pointed out + by Ian. + +2004-05-07 Ian Zimmerman + + * fish/src/fish.c (inner_main): add call to ipmi_probe to locate + kcs io registers. + + * libfreeipmi/src/pcilocate.c: enclose everything + in a big #ifdef __linux because it uses /proc + (pci_get_dev_info): reverse the semantics of pinfo->bmc_io_mapped. + + * fish/src/fish.c (inner_main): rename default_ variables to cmdline_ + as that describes much better what they do. + +2004-05-07 Albert Chu + + Added bmc-watchdog + + * COPYING.bmc-watchdog, DISCLAIMER.bmc-watchdog, + doc/bmc-watchdog.8.in, bmc-watchdog/Makefile.am, + bmc-watchdog/bmc-watchdog, bmc-watchdog/src/Makefile.am, + bmc-watchdog/src/bmc-watchdog.c: New files. + + * Makefile.am: Added bmc-watchdog subdirectory. Add docs and + other files to dist. + + * TODO: Added bmc-watchdog todo list. + + * configure.ac: Generate bmc-watchdog makefiles and manpage. + Added --enable-debug option, getopt_long function check, and big + endian check. + + * doc/Makefile.am: Added bmc-watchdog.8. + + Added Suspend BMC Arps command + + * libfreeipmi/src/ipmi-watchdog.h, + libfreeipmi/src/ipmi-watchdog.c: Added + tmpl_cmd_suspend_bmc_arps_rq tmpl_cmd_suspend_bmc_arps_rs + templates. + + * libfreeipmi/src/ipmi-watchdog.h, libfreeipmi/src/ipmi-watchdog.c + (fill_cmd_suspend_bmc_arps): New function. + +2004-05-06 Ian Zimmerman + + * fish/src/fish.c (inner_main): make sure command line overrides + files if they conflict + + * fish/src/Makefile.am: improved Al's fix to use make features + instead of new shells. + +2004-05-06 Albert Chu + + * fish/fish.spec.in, fish/fish.lsm.in, + libfreeipmi/libfreeipmi.lsm.in, libfreeipmi/libfreeipmi.spec.in: + Removed files. + + * configure.ac: Remove generation of lsm and spec files. + + * fish/src/Makefile.am: Added dependency check to libfreeipmi.la. + + * fish/src/bmc-conf-checkout.c, fish/src/bmc-conf-commit.c, + fish/src/bmc-conf-key-utils.c, fish/src/bmc-conf-utils.c, + fish/src/fi-commands.c, fish/src/fish.c, fish/src/interpreter.c, + fish/src/ipmi-wrapper-sel.c, fish/src/ipmi-wrapper-sensor.c, + fish/src/ipmi-wrapper.c, libfreeipmi/src/ipmi-lan-cmds.c, + libfreeipmi/src/ipmi-sel-cmds.c, + libfreeipmi/src/ipmi-sel-record-types.c, + libfreeipmi/src/ipmi-sol-cmds.c: Changed to + "freeipmi.h" to ensure use of local header. + + * TODO: New file. + +2004-05-06 09:35 itz + + * autogen.sh, configure.ac: Use ancient automake to satisfy RH + users. + +2004-05-05 16:10 itz + + * fish/src/fish.c: Change "running for first time" message because + it isn't right to use PACKAGE anymore. + +2004-05-05 15:13 itz + + * aclocal.m4: Remove aclocal.m4 because it is not a real source + file (generated by autogen.sh via aclocal). + +2004-05-05 14:42 itz + + * libfreeipmi/src/ipmi-sdr-repo-cache.h: Use /var/lib/freeipmi for + sdr cache, not /var/lib/libfreeipmi + +2004-05-05 14:11 itz + + * libfreeipmi/src/ipmi-kcs-interface.c: Second fix from Al + +2004-05-05 14:08 itz + + * libfreeipmi/src/ipmi-kcs-interface.c: Fixed error output corner + case. Fixed return value bug. Unlock semaphore if a EBUSY + failure occurs. + +2004-05-05 14:00 itz + + * AUTHORS, Makefile.am, NEWS, README, aclocal.m4, autogen.sh, + configure.ac, doc/BUGS, doc/Makefile.am, doc/authors.texinfo, + doc/bmc-config.1, doc/bmc-info.1, doc/fish.1, doc/fish.texinfo, + doc/freeipmi-hg.texinfo, doc/gpl.texinfo, doc/sel.1, + doc/sensors.1, doc/examples/Makefile.am, + doc/examples/Makefile.example, doc/examples/hello-sensors.c, + fish/Makefile.am, fish/fish.lsm.in, fish/fish.scm, + fish/fish.spec.in, fish/extensions/Makefile.am, + fish/extensions/bmc-config.scm, fish/extensions/bmc-info.scm, + fish/extensions/discovery.scm, fish/extensions/init.scm, + fish/extensions/sel.scm, fish/extensions/sensors-conf.scm, + fish/extensions/sensors-utils.scm, fish/extensions/sensors.scm, + fish/extensions/shell.scm, fish/extensions/utils.scm, + fish/scripts/Makefile.am, fish/scripts/bmc-config/Makefile.am, + fish/scripts/bmc-config/bmc-config.in, + fish/scripts/bmc-info/Makefile.am, + fish/scripts/bmc-info/bmc-info.in, fish/scripts/sel/Makefile.am, + fish/scripts/sel/sel.in, fish/scripts/sensors/Makefile.am, + fish/scripts/sensors/sensors.in, fish/src/Makefile.am, + fish/src/bmc-conf-checkout.c, fish/src/bmc-conf-checkout.h, + fish/src/bmc-conf-commit.c, fish/src/bmc-conf-commit.h, + fish/src/bmc-conf-key-utils.c, fish/src/bmc-conf-key-utils.h, + fish/src/bmc-conf-utils.c, fish/src/bmc-conf-utils.h, + fish/src/extension.c, fish/src/extension.h, + fish/src/fi-commands.c, fish/src/fi-commands.h, + fish/src/fi-utils.c, fish/src/fi-utils.h, fish/src/fish.c, + fish/src/fish.h, fish/src/guile-wrapper.c, + fish/src/guile-wrapper.h, fish/src/interpreter.c, + fish/src/interpreter.h, fish/src/ipmi-wrapper-sel.c, + fish/src/ipmi-wrapper-sel.h, fish/src/ipmi-wrapper-sensor.c, + fish/src/ipmi-wrapper-sensor.h, fish/src/ipmi-wrapper.c, + fish/src/ipmi-wrapper.h, fish/src/scm-procedures.c, + fish/src/scm-procedures.h, fish/src/xmalloc.c, + fish/src/xmalloc.h, libfreeipmi/Makefile.am, libfreeipmi/ipckey, + libfreeipmi/libfreeipmi.lsm.in, libfreeipmi/libfreeipmi.spec.in, + libfreeipmi/src/Makefile.am, libfreeipmi/src/bit-ops.c, + libfreeipmi/src/bit-ops.h, libfreeipmi/src/fiid.c, + libfreeipmi/src/fiid.h, libfreeipmi/src/freeipmi.h, + libfreeipmi/src/ipmi-chassis-cmds.c, + libfreeipmi/src/ipmi-chassis-cmds.h, + libfreeipmi/src/ipmi-cmd-spec.h, libfreeipmi/src/ipmi-debug.c, + libfreeipmi/src/ipmi-debug.h, + libfreeipmi/src/ipmi-dev-global-cmds.c, + libfreeipmi/src/ipmi-dev-global-cmds.h, + libfreeipmi/src/ipmi-error.c, libfreeipmi/src/ipmi-error.h, + libfreeipmi/src/ipmi-ipmb-interface.h, + libfreeipmi/src/ipmi-kcs-interface.c, + libfreeipmi/src/ipmi-kcs-interface.h, + libfreeipmi/src/ipmi-lan-cmds.c, libfreeipmi/src/ipmi-lan-cmds.h, + libfreeipmi/src/ipmi-lan-interface.c, + libfreeipmi/src/ipmi-lan-interface.h, + libfreeipmi/src/ipmi-lan-param-spec.h, + libfreeipmi/src/ipmi-md2.c, libfreeipmi/src/ipmi-md2.h, + libfreeipmi/src/ipmi-md5.c, libfreeipmi/src/ipmi-md5.h, + libfreeipmi/src/ipmi-msg-interface-desc.c, + libfreeipmi/src/ipmi-msg-interface-desc.h, + libfreeipmi/src/ipmi-msg-support-cmds.c, + libfreeipmi/src/ipmi-msg-support-cmds.h, + libfreeipmi/src/ipmi-netfn-spec.c, + libfreeipmi/src/ipmi-netfn-spec.h, libfreeipmi/src/ipmi-probe.c, + libfreeipmi/src/ipmi-probe.h, + libfreeipmi/src/ipmi-sdr-record-types.c, + libfreeipmi/src/ipmi-sdr-record-types.h, + libfreeipmi/src/ipmi-sdr-repo-cache.c, + libfreeipmi/src/ipmi-sdr-repo-cache.h, + libfreeipmi/src/ipmi-sdr-repo-cmds.c, + libfreeipmi/src/ipmi-sdr-repo-cmds.h, + libfreeipmi/src/ipmi-sel-cmds.c, libfreeipmi/src/ipmi-sel-cmds.h, + libfreeipmi/src/ipmi-sel-record-types.c, + libfreeipmi/src/ipmi-sel-record-types.h, + libfreeipmi/src/ipmi-semaphores.c, + libfreeipmi/src/ipmi-semaphores.h, + libfreeipmi/src/ipmi-sensor-cmds.c, + libfreeipmi/src/ipmi-sensor-cmds.h, + libfreeipmi/src/ipmi-sensor-types.c, + libfreeipmi/src/ipmi-sensor-types.h, + libfreeipmi/src/ipmi-sensor-utils.c, + libfreeipmi/src/ipmi-sensor-utils.h, + libfreeipmi/src/ipmi-serial-cmds.c, + libfreeipmi/src/ipmi-serial-cmds.h, + libfreeipmi/src/ipmi-serial-modem-param-spec.h, + libfreeipmi/src/ipmi-sessions.c, libfreeipmi/src/ipmi-sessions.h, + libfreeipmi/src/ipmi-smic-interface.c, + libfreeipmi/src/ipmi-smic-interface.h, + libfreeipmi/src/ipmi-sol-cmds.c, libfreeipmi/src/ipmi-sol-cmds.h, + libfreeipmi/src/ipmi-utils.c, libfreeipmi/src/ipmi-utils.h, + libfreeipmi/src/ipmi-watchdog.c, libfreeipmi/src/ipmi-watchdog.h, + libfreeipmi/src/libfreeipmi.c, libfreeipmi/src/pcilocate.c, + libfreeipmi/src/pcilocate.h, libfreeipmi/src/rmcp.c, + libfreeipmi/src/rmcp.h, libfreeipmi/src/smbios.c, + libfreeipmi/src/smbios.h, libfreeipmi/src/xmalloc.c, + libfreeipmi/src/xmalloc.h: First merged tree. + diff --git a/source/freeipmi/usr/share/doc/freeipmi/ChangeLog.0 b/source/freeipmi/usr/share/doc/freeipmi/ChangeLog.0 new file mode 100644 index 00000000..75ca96c1 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/ChangeLog.0 @@ -0,0 +1,1480 @@ +2004-05-04 Albert Chu + + * src/ipmi-kcs-interface.c (ipmi_kcs_write_interruptible, + ipmi_kcs_cmd_interruptible): Fixed error output corner case. + + * src/ipmi-kcs-interfa.ce (ipmi_kcs_write, + ipmi_kcs_write_interruptible): Fixed return value bug. Unlock + semaphore if a EBUSY failure occurs. + +2004-04-30 A Balamurugan + + * src/ipmi-lan-param-spec.h: new file. + + * src/ipmi-serial-modem-param-spec.h: new file. + + * src/Makefile.am: updated. + + * src/freeipmi.h: updated. + + * src/ipmi-cmd-spec.h: code cleanup. + + * src/ipmi-lan-cmds.[ch]: like wise. + + * src/ipmi-serial-cmds.[ch]: like wise. + + +2004-04-27 Anand Babu + + CVS tagged as release-0_1_0_alpha5-tag + +2004-04-27 Albert Chu + + * libfreeipmi.spec.in: Fixed packaging issues. + +2004-04-22 Anand Babu + + CVS tagged as release-0_1_0_alpha5_qa3-tag + + +2004-04-19 Albert Chu + + * src/ipmi-msg-support-cmds.c (fill_cmd_activate_session): Fixed + endian bug. + +2004-04-15 Anand Babu + + CVS tagged as release-0_1_0_alpha5_qa2-tag + + +2004-04-10 Anand Babu + + * configure.ac: Mysteriously --enable-trace code dissappeared. + Added again. + + * src/ipmi-error.h: ERR macros - check for IPMI_TRACE definition. + + +2004-04-06 Albert Chu + + * src/ipmi-error.h (ERR_EXIT), src/ipmi-utils.c (ipmi_comp_test): + Use LOG_FAC & LOG_MAKEPRI with syslog. + + * src/ipmi-chassis-cmds.h (fill_cmd_set_power_restore_policy): + Added prototype. + + * src/ipmi-chassis-cmds.c (fill_cmd_set_power_restore_policy, + fill_cmd_get_chassis_status, fill_cmd_chassis_ctrl): Fixed + function names. Were previously incorrect or non-consistent with + other parts of the library. + + * src/ipmi-chassis-cmds.c (ipmi_set_power_restore_policy, + ipmi_get_chassis_status): Updated with function name changes. + +2004-04-05 Anand Babu + + * src/ipmi-error.h: Pass facility argument via LOG_FAC macro to + LOG_MAKEPRI. + + * src/xmalloc.c: Like wise. + + +2004-04-05 Albert Chu + + * src/ipmi-error.h (ERR, ERR_EXIT): Fixed errno output bug and + syslog parameter bug. + + * src/ipmi-utils.c (ipmi_comp_test): Fixed syslog parameter bug. + +2004-04-05 Anand Babu + + * configure.ac: added --enable-trace option. + + * src/ipmi-error.h (ERR): display error info only when IPMI_TRACE + is on. + + +2004-04-05 Anand Babu + + * src/ipmi-semaphores.h: cleaned up few MACROs. + + * TODO: garbaged done tasks. + + * THANKS: updated. + + +2004-04-01 Albert Chu + + * src/xmalloc.c: Fixed one additional xmalloc to ipmi_xmalloc bug. + + +2004-04-01 A Balamurugan + + * src/ipmi-sensor-types.c: added event-reading-code-desc for + 4,5,7,9,10 and 12. Bug #8406 fixed by passing double variables to + ipmi_sensor_threshold_health_check() + + * src/ipmi-utils.c: added new function ipmi_is_root(). + + +2004-04-01 Albert Chu + + * Globally renamed xmalloc to ipmi_xmalloc, xcalloc to + ipmi_xcalloc, xrealloc to ipmi_xrealloc, xstrdup to ipmi_xstrdup, + and xfree to ipmi_xfree. + + * libfreeipmi.spec.in: Updated for release changes. + +2004-04-01 Albert Chu + + * src/ipmi-sdr-repo-cache.h: Gave + IPMI_DEFAULT_SDR_REPO_CACHE_FILENAME different filename value. + + * src/ipmi-semaphore.h: Gave IPMI_IPCKEY different filename value. + + * libfreeipmi.spec.in: Updated for release changes. + +2004-03-31 Albert Chu + + * libfreeipmi.spec.in: Updated for new release. + +2004-03-31 Anand Babu + + * ipckey: new dummy file to install as ftok lock. + + * src/ipmi-semaphores.[c,h]: locking and synchrinization core. + + * src/ipmi-kcs-interface.c: Now supports locking and + synchronization transparently. + + CVS tagged as release-0_1_0_alpha5_qa1-tag + + +2004-03-31 A Balamurugan + + * src/fiid.c: new function fiid_obj_set_data(). + + * src/ipmi-msg-support-cmds.c: updated fill_kcs_set_user_name() + and fill_kcs_set_user_password(). + + +2004-03-31 A Balamurugan + + * src/fiid.c: fixed a bug in fiid_obj_get_data(). + + +2004-03-30 A Balamurugan + + * src/fiid.c: added new function fiid_obj_get_data(). + + * src/ipmi-kcs-interface.c: fixed a bug in ipmi_kcs_cmd(). + + * src/ipmi-sdr-repo-cache.c: updated ipmi_sdr_repo_info_write() + and ipmi_sdr_records_write(). + + * src/ipmi-sel-record-types.c: updated ipmi_sel_get_first_entry() + and ipmi_sel_get_next_entry(). + + * src/ipmi-chassis-cmds.[ch]: complete rewritten with + ipmi_kcs_cmd(). + + * src/ipmi-lan-cmds.[ch]: like wise + + * src/ipmi-msg-support-cmds.[ch]: like wise + + * src/ipmi-sdr-repo-cmds.[ch]: like wise + + * src/ipmi-sel-cmds.[ch]: like wise + + * src/ipmi-sensor-cmds.[ch]: like wise + + * src/ipmi-serial-cmds.[ch]: like wise + + * src/ipmi-sol-cmds.[ch]: like wise + + +2004-03-30 Albert Chu + + * src/ipmi-sdr-repo-cache.c (ipmi_sdr_repo_cache_get_sensor_name): + New function. + +2004-03-30 A Balamurugan + + * src/ipmi-sensor-types.c: added new functions + ipmi_sensor_threshold_health_check() and + ipmi_sensor_discrete_health_check(). + + +2004-03-30 Anand Babu + + * src/ipmi-kcs-interface.c (ipmi_kcs_cmd): new procedure. + + * src/ipmi-dev-global-cmds.c (ipmi_kcs_get_dev_id): rewritten to + use ipmi_kcs_cmd. + + +2004-03-29 A Balamurugan + + * src/ipmi-sensor-types.c: renamed + IPMI_SENSOR_CLASS_DIGITAL_DISCRETE to + IPMI_SENSOR_CLASS_GENERIC_DISCRETE and IPMI_SENSOR_CLASS_DISCRETE + to IPMI_SENSOR_CLASS_SENSOR_SPECIFIC_DISCRETE. + + +2004-03-29 Albert Chu + + * src/ipmi-sdr-repo-cache.c (ipmi_sdr_repo_cache_seek): Modified + seek algorithm to not re-start at the beginning of the cache if it + can be avoided. + + * src/ipmi-sensor-types.c (ipmi_sensor_classify): Remove changes + from 2004-03-26 and go back to original code. Code was used + differently than macro names indicated. + +2004-03-29 A Balamurugan + + * src/ipmi-sensor-types.c: updated struct + ipmi_sensor_type_slot_connector. + + +2004-03-29 Anand Babu + + * src/fiid.h (FIID_OBJ_GET): fixed a critical type casting bug. + + * src/ipmi-dev-global-cmds.c: new definitions for product IDs and + manifacturer IDs. New device info response template for Intel + products. + + +2004-03-29 A Balamurugan + + * src/ipmi-sel-cmds.c: added new functions + ipmi_kcs_delete_sel_entry() and ipmi_kcs_clear_sel(). + + +2004-03-28 A Balamurugan + + * src/ipmi-msg-interface-desc.c: new file. + + * src/Makefile.am: updated + + * src/freeipmi.h: updated + + * src/ipmi-msg-interface-desc.h: added enum system_software_type. + + * src/ipmi-sdr-repo-cache.c: now + ipmi_is_sensor_reading_available() returns false if + system_software_id > 0x47. + + * src/ipmi-sensor-types.c: added ipmi_sensor_type_threshold_desc + + +2004-03-26 Albert Chu + + * src/ipmi-kcs-interface.c (unassemble_ipmi_kcs_pkt): Fix bug in + function. Function now handles packets that may be smaller than + the user expected. + + * src/ipmi-sensor-cmds.c: Removed reserved3 field from + tmpl_get_sensor_threshold_reading_rs. This field is optionally + returned, not required to be returned. + + * src/ipmi-sensor-types.c (ipmi_sensor_classify): Fix bug in class + calculation. + + * src/ipmi-sdr-repo-cache.c (ipmi_sdr_repo_cache_sensor_classify): + Use correct template based on type. + +2004-03-26 Anand Babu + + * src/fiid.h (FIID_OBJ_GET): fixed ptr argument bug. + + * src/ipmi-dev-global-cmds.c (ipmi_kcs_get_dev_id): fixed ERR checks. + + * src/ipmi-dev-global-cmds.c: prototype updated. + + * Makefile.am: rewrote support for doc/examples. + +2004-03-25 A Balamurugan + + * src/ipmi-sel-cmds.c: modified function ipmi_kcs_get_sel_entry(). + + * src/ipmi-sel-record-types.c: added new function + ipmi_sel_get_first_entry() and ipmi_sel_get_next_entry(). + + +2004-03-25 Albert Chu + + * src/ipmi-sdr-repo-cache.h: Removed filename from + sdr_repo_cache_t structure. Added + IPMI_DEFAULT_SDR_REPO_CACHE_FILENAME. + + * src/ipmi-sdr-repo-cache.h, src/ipmi-sdr-repo-cache.c + (ipmi_sdr_repo_cache_load): Added filename parameter to function. + + * src/ipmi-sdr-repo-cache.h, src/ipmi-sdr-repo-cache.c: Added + corner case checks to all functions. Modified return to int from + u_int8_t in many situations, because return type may be negative. + +2004-03-24 A Balamurugan + + * src/ipmi-sel-record-types.c: added new function + ipmi_get_sel_record_type(), template tmpl_sel_record_header and + enum ipmi_sel_record_type. + + +2004-03-23 Albert Chu + + * doc/examples/hello-sensors.c + (display_verbose_current_digital_discrete_sensor_compact_record, + display_verbose_current_discrete_sensor_compact_record): Fixed + minor bug in which string name was printed from the wrong address. + +2004-03-23 Anand Babu + + * doc/examples/hello-sensors.c: Added Bala's Sensors subsystem + example code. + + * doc/examples/Makefile: Added a generic make file. + + * doc/Makefile.am: recognize examples folder. Changed + $(prefix)/doc to $(datadir)/doc now. + + +2004-03-23 A Balamurugan + + * src/ipmi-msg-support-cmds.h: added new macro + IPMI_PASSWORD_OPERATION_TEST_FAILED. + + +2004-03-22 Albert Chu + + * libfreeipmi.spec.in: Updated release. + +2004-03-21 A Balamurugan + + * src/ipmi-chassis-cmds.c: added new function + ipmi_get_chassis_status(). + + * src/ipmi-msg-support-cmds.c: modified function + ipmi_kcs_set_channel_access(). + + +2004-03-20 Albert Chu + + * src/rmcp.c (unassemble_rmcp_pkt): Remove packet size too big + check. + + * src/ipmi-sessions.c (check_hdr_session_authcode): Fixed numerous + bugs. + + * src/ipmi-debuc.c (fiid_obj_dump_lan, fiid_obj_dump_rmcp), + src/ipmi-lan-interface.c (unassemble_ipmi_lan_pkt), src/rmcp.c + (unassemble_rmcp_pkt): Fix unsigned integer arithmetic bug. + +2004-03-19 Albert Chu + + * src/fiid.h, src/fiid.c (fiid_obj_memset): New function. + + * src/ipmi-msg-support-cmds.h: Added + IPMI_AUTH_STATUS_ANONYMOUS_LOGIN_DISABLED, + IPMI_AUTH_STATUS_NULL_USERNAMES_DISABLED, and + IPMI_AUTH_STATUS_NON_NULL_USERNAMES_DISABLED macros. + IPMI_AUTH_STATUS_ANONYMOUS_LOGIN_ENABLED, + IPMI_AUTH_STATUS_NULL_USERNAMES_ENABLED, and + IPMI_AUTH_STATUS_NON_NULL_USERNAMES_ENABLED macros are now bit + values rather than masks. + + * src/ipmi-sessions.c (check_hdr_session_authcode): Rewritten. + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (fill_cmd_get_session_challenge): Added username_len parameter. + +2004-03-17 Albert Chu + + * src/ipmi-watchdog.c: Re-order template fields and function + parameter order to be consistent with other parts of libfreeipmi. + + * src/rmcp.c (unassemble_rmcp_pkt): Fixed several corner cases. + + * src/ipmi-debug.h, src/ipmi-debug.c (fiid_obj_dump_rmcp): New + function. + + * src/fiid.c (fiid_obj_free): Fixed bug in which memory was not + being freed correctly. + + * src/ipmi-msg-support-cmds.c (ipmi_lan_open_session): Fix bug in + which u_int32_t * unsafely cast to u_int64_t * with fiid_obj_get. + +2004-03-16 Albert Chu + + * src/ipmi-kcs-interface.c (ipmi_kcs_read): Modified to return + number of bytes read. + + * src/ipmi-kcs-interface.c (ipmi_kcs_write): Modified to return + number of bytes written. Added corner case checks. + +2004-03-15 Albert Chu + + * src/ipmi-watchdog.h: Changed "ENABLED" and "DISABLED" into + "ENABLE" and "DISABLE" to be consistent with other .h files. + +2004-03-15 Albert Chu + + * src/ipmi-kcs-interface.c (assemble_ipmi_kcs_pkt): Return length + of packet assembled rather than 0 on success. + + * src/rmcp.c (assemble_rmcp_pkt): Return length of package + assembled rather than 0 on success. + + * src/rmcp.c (ipmi_rmcp_ping): Modify error checks when calling + assemble_rmcp_pkt. + + * src/ipmi-dev-glovbal-cmds.c (ipmi_kcs_get_dev_id): Modify error + checks when calling assemble_ipmi_kcs_pkt. + +2004-03-11 Albert Chu + + * src/ipmi-watchdog.h, src/ipmi-watchdog.c: New files. + + * src/ipmi-debug.h: Removed hex_dump prototype. + + * src/freeipmi.h: Added ipmi-watchdog.h. + + * src/Makefile.am: Added ipmi-watchdog.h and ipmi-watchdog.c. + +2004-03-10 Albert Chu + + * src/ipmi-error.h, src/ipmi-error.c (ipmi_strerror_cmd_r): New function. + + * src/ipmi-error.h, src/ipmi-error.c (ipmi_strerror_r): Modifed + function parameters to be more consistent with the libc + strerror_r. The new ipmi_strerror_cmd_r function takes the place + of the old ipmi_strerror_r. + + * src/ipmi-utils.c (ipmi_comp_test): Modified to use new + ipmi_strerror_cmd_r. + +2004-03-10 A Balamurugan + + * src/ipmi-sensor-utils.c: now ipmi_sensor_decode_value() decodes + -ve values. + +2004-03-09 Albert Chu + + * src/ipmi-msg-support-cmds.h: Flipped value of + IPMI_USER_LEVEL_AUTHENTICATION_ENABLE, + IPMI_USER_LEVEL_AUTHENTICATION_DISABLE, + IPMI_PER_MESSAGE_AUTHENTICATION_ENABLE, + IPMI_PER_MESSAGE_AUTHENTICATION_DISABLE, IPMI_PEF_ALERTING_ENABLE, + and IPMI_PEF_ALERTING_DISABLE. The values were backwards from the + IPMI 1.5 specification. + + * src/ipmi-debug.c (fiid_obj_dump_lan): Fixed bug in which dumps + were not output based on authcode. + + * src/ipmi-lan-interface.c (unassemble_ipmi_lan_pkt): Fixed bug in + which incorrectly sized messages were never unassembled. + + * src/ipmi-utils.h (FREEIPMI_MIN): New macro. + +2004-03-09 Anand Babu + + * src/ipmi-smic-interface.[ch]: new SMIC driver. + + * src/ipmi-debug.c (ipmi_smic_print_flags): new function. + + * src/ipmi-kcs-interface.c: renamed get_kcs_poll_count () to + ipmi_kcs_get_poll_count (). Fixed few naming conventions and + variable types. + + +2004-03-06 Anand Babu + + CVS tagged as release-0_1_0_alpha4_qa0-tag + + +2004-03-06 A Balamurugan + + * src/ipmi-msg-support-cmds.c: new function + ipmi_kcs_get_channel_info() for command Get-Channel-Info. + + +2004-03-04 A Balamurugan + + * src/ipmi-sdr-repo-cache.c: renamed ipmi_sdr_cache_init() to + ipmi_sdr_cache_create(). added function + ipmi_sdr_repo_cache_get_sensor_group(). + + * src/ipmi-sensor-types.c: added function ipmi_get_sensor_group(). + + * src/ipmi-sensor-utils.c: ipmi_sensor_decode_value() and + ipmi_sensor_get_decode_params() now handles negative values. + + +2004-03-03 A Balamurugan + + * src/ipmi-sensor-types.c: added new element 'Unknown' in + ipmi_sensor_types. + + +2004-03-02 Anand Babu + + * src/ipmi-utils.h: added bool type with safe macro checks. + + * src/ipmi-sensor-types.[ch]: fixed unresolved symbol problem and + naming conventions for ipmi_sensor_types and ipmi_sensor_units* + definitions. + + * src/ipmi-kcs-interface.c: removed init_kcs_poll_count + function. kcs_poll_count is a readonly counter. + + * src/ipmi-sensor-types.[c,h]: whole bunch of new definitions and + tables for discrete and digital-descrete sensors. + + +2004-03-02 A Balamurugan + + * src/ipmi-sdr-repo-cache.[ch]: new file for SDR Repository Cache + supported functions. + + * src/ipmi-sensor-utils.[ch]: new file for sensor utility + functions. + + * src/ipmi-error.h: in macros ERR(expr) and ERR_EXIT(expr) changed + sprintf to snprintf + + * src/ipmi-sensor-types.c: added functions ipmi_sensor_classify() + and ipmi_is_oem_reserved_sensor_type(). + + +2004-03-02 Albert Chu + + * src/ipmi-sessions.h (IPMI_SESSION_AUTH_TYPE_VALID): Fix corner + case. + + * src/ipmi-msg-support-cmds.h (IPMI_PRIV_LEVEL_VALID): New macro. + + * src/ipmi-msg-support-cmds.c (fill_cmd_get_channel_auth_caps): + Added max_priv_level parameter. + + * src/ipmi-msg-support-cmds.c (ipmi_lan_get_channel_auth_caps): + Modify for change to fill_cmd_get_channel_auth_caps. + + * src/ipmi-msg-support-cmds.c (fill_cmd_get_session_challenge): + Fix several corner cases. + + * src/ipmi-msg-support-cmds.c (fill_cmd_activate_session): Use new + IPMI_PRIV_LEVEL_VALID macro. Fix several corner cases. + + * src/ipmi-msg-support-cmds.c (fill_cmd_set_session_priv_level): + Use new IPMI_PRIV_LEVEL_VALID macro. + +2004-03-01 Albert Chu + + * src/ipmi-debug.c (_set_prefix_str, _output_str, + _output_byte_array): New functions. + + * src/ipmi-debug (fiid_obj_dump_perror, fiid_obj_dump_lan): Use + new functions _set_prefix_str, _output_str, and + _output_byte_array. Fix several output bugs. + + * src/ipmi-lan-interface.c (ipmi_lan_check_net_fn, + ipmi_lan_check_rq_seq): Fix input corner case. + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_check_cmd, ipmi_check_comp_code): New functions. + +2004-02-29 Albert Chu + + * src/ipmi-debug.h, src/ipmi-debug.c (fiid_obj_dump_perror, + fiid_obj_dump_lan): New functions. + + * src/ipmi-debug.c (fiid_obj_dump): Output to appropriate file + descriptor. Use fiid_obj_dump_perror. + + * src/ipmi-lan-interface.c (assemble_ipmi_lan_pkt): Fixed a few + corner case bugs. + + * src/ipmi-error.h (ERR_OUT): New macro. + +2004-02-28 Albert Chu + + * src/ipmi-lan-interface.c (assemble_ipmi_lan_pkt): Use memcpy + instead of strcpy b/c passwords need not be one word. + + * src/ipmi-lan-interface.h, src/ipmi-lan-interface.c + (ipmi_lan_check_rq_seq, ipmi_lan_check_net_fn, + ipmi_lan_check_chksum): New functions. + + * src/ipmi-lan-interface.h, src/ipmi-lan-interface.c + (ipmi_lan_cmd): Changed auth_code parameter type from char to + u_int8_t. Renamed auth_code parameter to auth_code_data. Added + auth_code_data_len parameter. Modified to support more + authentication types. + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_lan_get_hannel_auth_caps, ipmi_lan_get_session_challenge, + ipmi_lan_activate_session, ipmi_lan_set_session_priv_level, + ipmi_lan_open_session, ipmi_lan_close_session): Changed auth_code + parameter type from char to u_int8_t. Renamed auth_code parameter + to auth_code_data. Added auth_code_data_len parameter. + + * src/ipmi-msg-support-cmds.c (ipmi_lan_get_channel_auth_caps, + ipmi_lan_get_session_challenge, ipmi_lan_activate_session, + ipmi_lan_set_session_priv_level, ipmi_lan_open_session, + ipmi_lan_close_session): Modified to support change to + ipmi_lan_cmd(). + + * src/ipmi-utils.h, src/ipmi-utils.c (ipmi_lan_chksum_test): + Removed function. + + * src/ipmi-lan-interface.c (ipmi_lan_cmd): Use ipmi_lan_recvfrom + properly. Use new ipmi_lan_check_chksum() function. + +2004-02-27 Albert Chu + + * src/ipmi-debug.c: Removed various unused and now unnecessary + functions and macros. + + * src/ipmi-sessions.h, src/ipmi-sessions.c + (check_hdr_session_authcode, check_hdr_session_session_seq_num, + check_hdr_session_session_id): New functions. + + * src/ipmi-lan-interface.c (unassemble_ipmi_lan_pkt): Fix md2/md5 + checksum calculations bug. Add support for + tmpl_hdr_session_auth_calc template. + +2004-02-24 Anand Babu + + * src/ipmi-sensor-types.c: sensor_unit_type_code_short_str new + short type codes. + +2004-02-21 Albert Chu + + * src/ipmi-sessions.h: Added IPMI_SESSION_AUTH_TYPE_VALID macro. + + * src/ipmi-sessions.h, src/ipmi-sessions.c: Added + tmpl_hdr_session_auth_calc template. + + * src/ipmi-sessions.h, src/ipmi-sessions.c (fill_hdr_session): + Changed auth_code parameter type from char to u_int8_t. Renamed + auth_code parameter to auth_code_data. Added auth_code_data_len + parameter. Use new IPMI_SESSION_AUTH_TYPE_VALID macro. Added + support for new tmpl_hdr_session_auth_calc template. + + * src/ipmi-lan-interface.h: Removed IPMI_LAN_PKT_SIZE, + IPMI_LAN_PKT_RQ_SIZE, and IPMI_LAN_PKT_RS_SIZE macros. Modified + IPMI_LAN_PKT_RQ_CHKSUM2_BLOCK_INDX and + IPMI_LAN_PKT_RS_CHKSUM2_BLOCK_INDX to calculate block indexes + dependent on the authentication type. + + * src/ipmi-lan-interface.h, src/ipmi-lan-interface.c + (assemble_ipmi_lan_pkt): Changed return type from int8_t to + int32_t. + + * src/ipmi-lan-interface.c (_ipmi_lan_pkt_size, + _ipmi_lan_pkt_rq_size, _ipmi_lan_pkt_rs_size): New functions. + + * src/ipmi-lan-interface.c (assemble_ipmi_lan_pkt, + unassemble_ipmi_lan_pkt): Re-worked to support + tmpl_hdr_session_auth_calc session header template and varying + authentication types, including none, md2, and m5, instead of just + straight passwd key. + + * src/ipmi-lan-interface.c (ipmi_lan_cmd): Re-worked to use new + functions. Will now only work with authentication type none or + straight passwd key. + + * src/ipmi-error.h (ERR): Add newlines to error outputs. + + * src/ipmi-error.c (ERR_EXIT): New macro. + + * src/ipmi-md5.c (_ipmi_md5_append_padding_and_length): Changed + "else if" to "else" that caused compiler warning. + + * src/ipmi-utils.h, src/ipmi-utils.c (ipmi_lan_chksum_test): Added + auth_type parameter. + + * src/ipmi-utils.c (ipmi_lan_chksum_test): Modified to support + checksum checks of multiple authentication types. + +2004-02-18 Anand Babu + + * QA-RELEASE: freeipmi-0.1.0-alpha3-qa0 release. Will TAG CVS after + passing QA. Downloads will be available from + ftp://ftp.californiadigital.com/pub/freeipmi/ + +2004-02-17 Albert Chu + + * Tagged current repository state libfreeipmi-0-0-0-0-alpha2. + + * libfreeipmi.spec.in: Updated release and changed refresh to + autogen. Added /usr/doc files. + + * BUGS: New file. + +2004-02-16 A Balamurugan + + * src/bits-ops.c: bits_merge msb/lsb bug fixed. + + * src/ipmi-lan-cmds.c: modified fiid template for + kcs_lan_set_auth_type_enables. + + * src/ipmi-msg-support-cmds.c: fixed wrong command macro to + IPMI_CMD_GET_USER_ACCESS_CMD in ipmi_kcs_get_user_access(). + + * src/ipmi-msg-support-cmds.h: added macros + IPMI_PRIV_LEVEL_NO_ACCESS, IPMI_CHANNEL_ACCESS_GET_NON_VOLATILE + and IPMI_CHANNEL_ACCESS_GET_VOLATILE. + + * src/ipmi-serial-cmds.h: added missing 'parameter_selector' in + tmpl_set_serial_conf_param_connmode_rq, + tmpl_set_serial_conf_param_pageblackout_rq, + tmpl_set_serial_conf_param_retry_rq and + tmpl_set_serial_conf_param_commbits_rq. + + * src/ipmi-serial-cmds.h: added macros + IPMI_SERIAL_CONF_GET_PARAMETER and + IPMI_SERIAL_CONF_GET_PARAMETER_REVISION. + + +2004-02-15 Anand Babu + + * src/ipmi-kcs-interface.c: changed return type to int from void + for ipmi_kcs_io_init (). + + +2004-02-13 A Balamurugan + + * src/ipmi-kcs-interface.c: add new ipmi_kcs_sleep_usecs and + kcs_poll_count control variables. Add new functions + init_kcs_poll_count(), get_kcs_poll_count() and + fill_hdr_ipmi_kcs(). + + +2004-02-13 Ian Zimmerman + + * src/Makefile.am: add new files ipmi-serial-cmds.[ch] + + * src/ipmi-serial-cmds.c: new file + + * src/ipmi-serial-cmds.h: new file + + * src/ipmi-msg-support.c, src/ipmi-msg-support.h: add new commands to + be used in bmcconfig + + * src/ipmi-lan-cmds.c, src/ipmi-lan-cmds.h: add new commands to + be used in bmcconfig + + +2004-02-13 Albert Chu + + * src/ipmi-md2.h, src/ipmi-md2.c, src/ipmi-md5.h, src/ipmi-md5.c: + New files. + + * src/freeipmi.h, src/Makefile.am: Updated for new files. + +2004-02-11 Anand Babu + + * ipmi-sensor-types.c: new file. Sensor type strings. + + +2004-02-10 Anand Babu + + * src/fiid.[c,h]: fiid_obj_alloc now uses xcalloc. new + FIID_OBJ_SET/GET, FIID_OBJ_ALLOC, FIID_OBJ_ALLOCA + macros. fiid_obj_t becomes fiid_template_t and fiid_obj_t + redefined as u_int8_t *. new function fiid_obj_field_lookup. + Patch from Bala - added + functions/macros to create dynamic fiid templates + fiid_template_make(), __fiid_template_make(), + fiid_template_free(). + + * src/ipmi-lan-interface.c: rewritten from scratch - easier, + cleaner and layered. Now supports new fiid model. + + * src/ipmi-dev-global-cmds.c: ported to fiid model. + + * src/rmcp.h: removed obsolete macros. New function ipmi_comp_test. + + * src/rmcp.c: rewritten to support new fiid model + enhancements. + + * src/ipmi-debug.c: removed struct based display routines. Needs more + discusion on the mailing list. + + * src/ipmi-msg-cmds.h: removed from CVS - dependent on struct + fields. Framework has changed, new implementation will go into + appropriate files. More discussion on the mailing list. + + * src/smbios.h, src/smbios.c: uniform naming convention changes. + + * src/ipmi-utils.c: ipmi_lan_chksum_test now valides both chksum1 + and chksum2. ipmi_strerr_r now accepts fiid_obj_t and returns + comp_code. New function ipmi_input_timeout. + + * src/xmalloc.c: syslog upon allocation failure and set errno to + ENOMEM. new xfree call. + + * src/ipmi-error.h: libfreeipmi only ERR macro to log and return + upon failure. + + * src/ipmi-sdr-record-types.[c,h]: New file - SDR record + types. Patch from Bala + + * src/ipmi-sdr-repo-cmds.[c,h]: New file - SDR commands - Get + Repository Info, Get SDR Repository Allocation Info, Reserve SDR + Repository and Get SDR. Patch from Bala + . Replaced function prefix from + ipmi_sdr_ to ipmi_kcs_. + + * src/ipmi-sensor-cmds.[c,h]: New file - Sensor commands - Get + Device SDR Info, Get Device SDR, Reserve Device SDR Repository, + Get Sensor Reading Factors, Set Sensor Hysteresis, Get Sensor + Hysteresis, Set Sensor Threshold, Sensor Threshold, Set Sensor + Event Enable, Get Sensor Event Status, Sensor Reading, Sensor + Type, Get Sensor Type. Patch from Bala + . Replaced function prefix from + ipmi_snsr_ to ipmi_kcs_ + + * src/ipmi-sensor-types.h: New file - Sensor types and Sensor unit + types. Patch from Bala . + + * src/ipmi-sel-cmds.[c,h]: New file - SEL subsystem. + Patch from Bala . + + * src/ipmi-sel-record-types.[c,h]: New file - SEL subsystem. + Patch from Bala . + + * src/ipmi-msg-support-cmds.c: completly rewritten from + scratch. All new APIs and functionalities. + + * src/smbios.c: copy_impi_dev_info(...) initialized *result to + NULL. + + * TODO: updated + + * AUTHORS: added Ian Zimmerman and + Balamurugan + + +2003-12-24 Anand Babu + + * src/ipmi-kcs-interface.c, src/ipmi-dev-global-cmds.c, + src/fiid.c: fixed serious bugs. All lengths are represented as + bytes at the top level. bit-level len is abstracted. + + +2003-12-23 Anand Babu + + * src/ipmi-kcs-interface.c: fixed fiid_alloc allocation size bug + reported by Ian . + + * src/ipmi-dev-global-cmds.c: fixed memory freeing bug reported by + Al + * src/smbios.c, src/smbios.h: integrated Ian's SMBIOS probe + functionality. + + * libfreeipmi: merged with old savannah code base. LAN-fiid in + next commit. + + +2003-12-21 Anand Babu + + * src/fiid.c: new FreeIPMI Interface Definition framework jointly + developed by Bala and myself. + + * src/bit-ops.[c,h]: rich set of BIT manipulation + macros and functions. + + * src/ipmi-kcs-interface.c: ported to new FIID framework. Now + accepts port from user. + * src/ipmi-dev-global-cmds.c: ported to new FIID framework. + + +2003-12-14 Anand Babu + + * src/ipmi-kcs-interface.c, src/ipmi-kcs-interface.c: new kcs init + macro. New _INB, _OUTB portable macros. Complete interface change + to accept port probed by the driver dynamically. + + * src/ipmi-debug.c: new function to print kcs register state. + + * src/ipmi-lan-interface.c: replaced alloca with xmalloc. alloca + is also ok as long as we do not allocate beyond the stack + rlimit. Portability is not a big concern, __builtin_alloca works + with little performance penalty. + + * src/xmalloc.c: split into header and source. + + * src/freeipmi.h: includes system.h and xmalloc.h + + +2003-12-08 Anand Babu + + * src/ipmi-kcs-interface.c, src/ipmi-kcs-interface.c: new + user-space inband KCS driver. + + * src/ipmi-error.h: new kcs status code definitions. + + * src/ipmi-error.c: new kcs status code str error + function. Split ERR_RET macro to _ERR and _ERR_RET. Fixed + "unspecified control code" return 0 bug. + + +2003-12-03 Albert Chu + + * src/ipmi-lan-interface.h, src/ipmi-lan-interface.c + (assemble_ipmi_lan_pre_session_rq_pkt, assemble_ipmi_lan_rq_pkt): + net_fn_t parameter type split into u_int8_t net_fn and u_int8_t + lun parameters. Added net_fn parameter check. + + * src/ipmi-msg-cmds.h: Made all macros upper case and prefixed + with "IPMI_" to avoid potential name space pollution. + + * src/rmcp.h: Made all macros upper case and prefixed with "RMCP_" + to avoid potential name space pollution. Renamed many macros + based on the wierdness of the resulting macro name. + + * src/ipmi-msg-support-cmds.h: Modified struct + ipmi_cmd_get_channel_auth_caps_rs "anonymous_login:3" field to be + three one-bit fields. + + * src/ipmi-msg-cmds.h (IPMI_ANONYMOUS_LOGIN_ENABLED, + IPMI_NULL_USERNAMES_ENABLED, IPMI_NON_NULL_USERNAMES_ENABLED): + Modified for change in struct ipmi_cmd_get_channel_auth_caps_rs. + + +2003-12-02 Anand Babu + + * src/ipmi-lan-core.c, src/ipmi-lan-core.h: removed. Related code moved to + ipmi-lan-interface.{c,h}. + + * src/ipmi-msg-support.h: moved net_fn_t to ipmi-netfn-spec.h. Renamed + ipmi_msg_rq and ipmi_msg_rs as ipmi_lan_msg_rq and ipmi_lan_msg_rs + to ipmi_lan_interface.{c,h}. Removed ipmi_session_t and + ipmi_lan_msg_rq_t headers from all commands. Replaced struct + anonymous_login with u_int8_t:3 for packing. Added + anonymous_login_status macro definitions. All functions and + structs will deal only the command part from now on. + + * src/ipmi-chassis-cmds.h: Removed ipmi_session_t and + ipmi_lan_msg_rq_t headers from all commands. + + * src/ipmi-kcs-interface.c, src/ipmi-kcs-interface.c: new BMC SMS + interface for inband userspace communication. + + * src/ipmi-sessions.c, src/ipmi-sessions.h: moved sessions related code + from ipmi-msg-support-cmds.h + + * src/ipmi-utils.c: 2 new functions ipmi_lan_pre_session_chksum_test, + ipmi_lan_chksum_test. + + * src/ipmi-debug.c: broken. Needs rework for the new interface. + + * src/rmcp.c: swapped msg_tag and presence_pong. + + * refresh: renamed to autogen.sh. Thanks to Ben Woodard + . + + +2003-11-28 Albert Chu + + * src/rmcp.h: Added RMCP_ASF_PRESENCE_PONG_MESSAGE_TAG_MAX macro. + Added several more helper macros. + + * src/rmcp.h, src/rmcp.c (rmcp_asf_presence_ping): Added + message_tag parameter. Parameter check also ensures tag is within + range. + + * src/rmcp.h, src/rmcp.c (rmcp_hdr): New function. + + * src/rmcp.c (rmcp_ipmi_hdr, rmcp_asf_hdr): Modified functions to + use new rmcp_hdr function. + + * Tagged current repository state libfreeipmi-0-0-0-0-alpha1. + + +2003-11-26 Albert Chu + + * src/ipmi-debug.c (rmcp_hdr_dump): Added missing dump fields. + + * src/ipmi-debug.c: Cast all checksum output to unsigned char, to + avoid sign extended output. + + +2003-11-26 Albert Chu + + * libfreeipmi.spec.in: Made release 0.alpha0. + + * Tagged current repository state libfreeipmi-0-0-0-0-alpha0. + + +2003-11-25 Albert Chu + + * src/ipmi-debug.c: Removed IPMI_DEBUG_FD_OK macro and all fd + parameter checks. File descriptor error checks will now fall + through to write(). + + +2003-11-24 Albert Chu + + Various Cleanup fixes + + * src/ipmi-msg-cmds.h (check_slave_netfn_checksum, + check_data_checksum): Added (u_int8_t *) cast to remove compiler + warnings. + + * src/ipmi-debug.h: Renamed IPMI_DEBUG_DEFAULT_FILE to + IPMI_DEBUG_DEFAULT_FD and use STDERR_FILENO instead of 2. Added + include of unistd.h for STDERR_FILENO definition. + + * src/ipmi-debug.c: Globally fixed debugging output alignment + issues and output issues. + + * src/ipmi-chassis-cmds.h, src/ipmi-chassis-cmds.c, + src/ipmi-msg-cmds.h, src/ipmi-debug.h, src/ipmi-debug.c: "chassis + status" command is actually called "get chassis status" in the + ipmi specification. Globally renamed everything around this fact. + + +2003-11-21 Albert Chu + + RMCP Changes + + * src/rmcp.h, src/rmcp.c (rmcp_ipmi_hdr, rmcp_asf_hdr): New + functions, for consistency with ipmi functions. + + * src/rmcp.h: Modified struct rmcp_hdr to be more consistent with + style of other packet structures. Removed numerous macros that + should not longer be used because of new rmcp_ipmi_hdr and + rmcp_asf_hdr functions. Modified + RMCP_HDR_MSG_CLASS_BIT_RMCP_NORMAL and + RMCP_HDR_MSG_CLASS_BIT_RMCP_ACK constants for consistency. Added + numerous new macros to be consistent with style in + ipmi-msg-cmds.h. + + Packing fixes + + * src/rmcp.h, src/ipmi-chassis-cmds.h, + src/ipmi-msg-support-cmds.h: Added #pragma pack(0) to the bottom + of the structure definitions. + + Misc + + * configure.ac: Added checks for sys/bitypes.h and sys/inttypes.h. + +2003-11-20 Albert Chu + + LAN Core fixes + + * src/ipmi-lan-core.c (ipmi_sendto, ipmi_recvfrom): Fixed bug in + which IPMI Lan packet padding incorrectly used. + + * src/ipmi-lan-core.c (ipmi_sendto, ipmi_recvfrom): Return length + of ipmi buffer sent or received, not the combined length of the + rmcp buffer and ipmi buffer. + + Checksums + + * src/ipmi-utils.h, src/ipmi-utils.c (ipmi_chksum_test): New + function. + + * src/ipmi-utils.c (ipmi_chksum): Added parameter checks. Removed + inline function declaration. + + * src/ipmi-msg-cmds.h: Added checksum macros. + + Misc + + * src/rmcp.c (rmcp_asf_presence_ping): Wrapped + RMCP_ASF_IANA_ENTERPRISE_NUM within htonl, because rmcp is + supposed to be big endian. + + * libfreeipmi.spec.in: Made initial changes to make this spec file + work. + +2003-11-19 Albert Chu + + * src/ipmi-debug.h, src/ipmi-debug.c: Added verbose flags to + functions to indicate raw or verbose dumps. Internally, many + changes were made to the code and most of the file was re-written. + + * src/ipmi-msg-cmds.h: New file with all ipmi message command + macros. + + * src/ipmi-msg-support-cmds.h, src/ipmi-chassis-cmds.h: Moved + macros to ipmi-msg-cmds.h. + + * src/freeipmi.h: Added ipmi-msg-cmds.h. + + * src/Makefile.am: Added ipmi-msg-cmds.h. + + * src/ipmi-lan-core.h, src/ipmi-lan-core.c (ipmi_sendto, + ipmi_recvfrom): Changed socklen_t to unsigned int, to fix + potential port issues. + + * TODO: Updated TODO list. + + * acinclude.m4: Added TYPE_SOCKLEN_T check. + + * configure.ac: Added socklen_t, stdarg.h, and varargs.h checks. + +2003-11-18 Albert Chu + + Debug fixes + + * src/ipmi-debug.h: Added IPMI_DEBUG_DEFAULT_FILE constant. + + * src/ipmi-debug.c (_dprintf, _write): New functions. + + * src/ipmi-debug.h, src/ipmi-debug.c: Added fd argument to all + functions to specify fd to write to. Rewrote all functions to use + _dprintf to write debug data to file descriptor rather than + stderr. + + Lan core fixes + + * src/ipmi-lan-core.c (ipmi_sendto_host): Added parameter check. + + * src/ipmi-lan-core.c (ipmi_recvfrom): Added parameter checks, + buffer overflow checks, error check on alloca, and corner case + check on recvfrom. + + IPMI packet creation fixes/changes + + * src/ipmi-msg-support.h: Split anonymous_login field in struct + ipmi_get_channel_auth_caps_rs into bit fields for specific status + info. + + * src/ipmi-debug.c (ipmi_get_channel_auth_caps_rs_dump): Updated + for above changes. + + * src/ipmi-chassis-cmds.h: Renamed all chassis status response + macros to more readable and make more sense. Removed the + ipmi_chassis_status_restore_policy macro. Renamed + IPMI_CHASSIS_STATUS_RESTORE_POLICY_POWER_ON to + IPMI_CHASSIS_STATUS_RESTORE_POLICY_POWER_UP. + + * src/ipmi-msg-support-cmds.h: Added get_channel_auth_caps + response macros. + + * src/ipmi-msg-support-cmds.h: Added generic response message + macros. + + Misc + + * src/ipmi-msg-support.h: Renamed _IPMI_MESG_SUPPORT_CMDS_H to + _IPMI_MSG_SUPPORT_CMDS_H. + + * src/ipmi-sessions.h: Renamed _IPMI_MESG_SUPPORT_CMDS_H to + _IPMI_SESSIONS_H. + + * configure.ac: Added --enable-debug option. + +2003-11-17 Albert Chu + + * refresh: Added libtoolize into the configuration. + + * config.sub, config.guess, depcomp, install-sh, ltmain.sh, + missing, mkinstalldirs: Removed files, they are handled by the + update to refresh. + + * src/ipmi-chassis-cmds.h: Added + IPMI_CHASSIS_STATUS_RESTORE_POLICY constants, as per sectoin 22.2 + of the IPMI v1.5 specification. Added macros to get and test all + of the status information from a chassis status response. + + * AUTHORS: Garlic with a 'K' :P + +2003-11-17 Anand Babu + + * TODO: updated ab's section + + * AUTHORS: Added Jim Garlick + + * INSTALL: added ./refresh execution + + * THANKS: added LLNL + + * Makefile.in, src/Makefile.in, config.h.in, doc/Makefile.in, + configure, aclocal.m4: removed from CVS + * doc/libfreeipmi.texinfo: moved to freeipmi-hg.texinfo and + cleaned up + + * doc/authors.texinfo: new + + * doc/gpl.texinfo: removed + + * www: updated http://www.nongnu.org/freeipmi/ home page + + +2003-11-17 Albert Chu + + * src/ipmi-debug.h, src/ipmi-debug.c: New files. + + * src/ipmi-msg-support-cmds.h: Split max_priv_level field in + struct ipmi_get_channel_auth_caps_rq and new_priv_level field in + struct ipmi_set_session_priv_level_rs into privilege and reserved + fields, to be more consistent with other privilege field + definitions in other packet types. + + * src/ipmi-chassis-cmds.h: Renamed fields in struct + ipmi_chassis_status_rs. + + * src/ipmi-msg-support-msgs.h: Renamed fields in struct + ipmi_get_channel_auth_caps_rs. + + * src/rmcp.h, src/rmcp.c (display_rmcp_asf_presence_pong, + display_rmcp_hdr): Removed functions, replaced with debug + functions in ipmi-debug.h and ipmi-debug.c. + + * src/rmcp.h: Renamed reserved field to reserved1, renamed + reserved_1 field to reserved2, and modified supported_entities + field in struct rmcp_asf_presence_pong to have consistent style to + ipmi packet structures. + + * src/rmcp.h, src/rmcp.c (rmcp_asf_presence_ping): Changed return + type to int and checked for proper parameters. + + * src/rmcp.c: Removed inclusion of error.h and netinet/in.h. + Added inclusion of errno.h. + + * src/freeipmi.h: Add new header file. Added missing + ipmi-netfn-spec.h header file. + + +2003-11-16 Albert Chu + + * src/ipmi-msg-support-cmds.h: Renamed struct ipmi_rq_msg seq + field to rq_seq, to have consistent naming with ipmi_rs_msg rq_seq + field. + + * src/ipmi-chassis-cmds.h, src/ipmi-chassis-cmds.c + (ipmi_chassis_ctrl_rq, ipmi_chassis_status_rq): Made field name + changes. + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_get_channel_auth_caps_rq, ipmi_get_session_challenge_rq, + ipmi_activate_session_rq, ipmi_set_session_priv_level_rq, + ipmi_close_session_rq): Made field name changes. + + * src/ipmi-msg-support-cmds.h: Modified struct + ipmi_get_channel_auth_caps_rs auth_status field to explicitly list + all status bit types. Modified oem_id field to be a array of + u_int8_t types instead of a u_int32_t type aligned on 24 bits. + Created an IPMI_OEM_ID_LEN macro for the oem_id length. + +2003-11-16 Albert Chu + + IPMI packet creation fixes + + * src/ipmi-chassis-cmds.h, src/ipmi-chassis-cmds.c + (ipmi_chassis_status_rq): Fixed bug with lun parameter being set + incorrectly. + + * src/ipmi-chassis-cmds.h, src/ipmi-chassis-cmds.c + (ipmi_chassis_ctrl_rq, ipmi_chassis_status_rq): Changed return + code from u_int8_t to int. Return -1 on parameter errors and set + errno appropriately. + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_get_channel_auth_caps_rq, ipmi_get_session_challenge_rq, + ipmi_activate_session_rq, ipmi_set_session_priv_level_rq, + ipmi_close_session_rq): Changed return code from u_int8_t to int. + Return -1 on parameter errors and set errno appropriately. + + Error handling fixes + + * src/ipmi-errno.h, src/ipmi-errno.c: Renamed to ipmi-error.h and + ipmi-error.c respectively. + + * src/ipmi-error.h: Removed ipmi_errno_t type. + + * src/ipmi-error.c: Removed ipmi_errno global variable + + * src/ipmi-error.c (ERANGE_CHECK): Fixed bug with ERANGE_CHECK + macro, which incorrectly returns ERANGE, should actually set errno + then return -1. Removed ERANGE_CHECK macro and moved code in + ERR_RET since it was only used in there. + + * src/ipmi-error.c (ERR_RET): Fixed bug, should use strlen on + errdesc string length, not errstr buffer. + + * src/ipmi-error.c (ipmi_strerror_r): Fixed bug which incorrecly + returned EINVAL on error, should set errno to EINVAL and return + -1. Use ERR_RET on completion code error string to avoid buffer + overflow. + + Misc + + * src/ipmi-msg-support-cmds.h, src/ipmi-netfn-spec.h: Moved + network function codes from ipmi-msg-support.h to new + ipmi-netfn-spec.h. + + * src/ipmi-msg-support-cmds.h, src/ipmi-chassis-cmds.h: Moved + chassis control macros from ipmi-msg-support-cmds.h to + ipmi-chassis-cmds.h. + + * src/ipmi-msg-support-cmds.h: IPMI_SESSION_AUTH_TYPE_NONE defined + twice, removed one of them. + + * srd/freeipmi.h: Updated with new header files. + + +2003-11-15 Albert Chu + + Fixed ipmi_sendto framework as discussed in e-mails + + * src/ipmi-lan-core.h, src/ipmi-lan-core.c (ipmi_sendto): Changed + API to more resemble sendto. Removed sockaddr_in construction + code. Added parameter checks and error check on alloca. Modified + call to sendto and return value based on varying sendto return + values. + + * src/ipmi-lan-core.h, src/ipmi-lan-core.c (ipmi_sendto_host): New + function to handle old ipmi_sendto functionality. + + IPMI packet creation fixes + + * src/ipmi-chassis-cmds.h, src/ipmi-chassis-cmds.c + (ipmi_chassis_ctrl_rq): Added auth_code_len parameter to function. + Memcpy auth_code buffer based on new parameter. + + Added Chassis Status Command + + * src/ipmi-msg-support-cmds.h: Added ipmi_chassis_status_rq_t and + ipmi_chassis_status_rs_t types + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_set_chassis_status_rq): New function. + + Misc + + * src/ipmi-chassis-cmds.h: Added #pragma pack(1). + + * src/ipmi-msg-support-cmds.h: Removed htonl on + IPMI_INITIAL_OUTBOUND_SEQ_NUM. Removed htonl comments. + + * src/ipmi-chassis-cmds.c, src/ipmi-msg-support-cmds.c: Removed + #include , no longer necessary due to above change. + + +2003-11-14 Albert Chu + + IPMI packet creation fixes + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_get_channel_auth_caps_rq, ipmi_get_session_challenge_rq, + ipmi_activate_session_rq): Added rq_seq parameter to function. + Set requester sequence number fields to rq_seq parameter rather + 0x00. + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_get_session_challenge_rq): Added username_len parameter. + Memcpy username buffer based on new parameter. + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_activate_session_rq, ipmi_set_session_priv_level_rq, + ipmi_chassis_ctrl_rq, ipmi_close_session_rq): Added auth_code_len + parameter to function. Memcpy auth_code buffer based on new + parameter. + + * src/ipmi-msg-support-cmds.h, src/ipmi-msg-support-cmds.c + (ipmi_activate_session_rq): Added challenge_str_len parameter. + Memcpy challenge_str buffer based on new parameter. + + Minor fixes + + * src/rmcp.c (display_rmcp_hdr): Added dump of reserved field. + + * src/ipmi-msg-support-cmds.h: Modified + IPMI_INITIAL_OUTBOUND_SEQ_NUM to explicitly be a 32 bit number, + because outbound sequence numbers are 32 bits. + + Misc + + * AUTHORS: Added me :-) + + +2003-11-14 Anand Babu + + * src/ipmi-chassis.c: new file, moved chassis control command and + defns to here. + + * src/ipmi-msg-support-cmds.c: rs_lun is now passed as arg. Fixed + inbound_seq_num bug. Thanks to Albert Chu for + reporting varoious enhancements and bugs. Macro IPMI_DEFAULT_LUN + removed. Use IPMI_BMC_IPMB_LUN_BMC instead. + + * src/ipmi-ipmb-interface.h: new file, added new IPMI definitions. + + +2003-11-10 Anand Babu + + * src/ipmi-lan-core.c: rewrote ipmi_sendto and ipmi_recvfrom. + + * src/ipmi-msg-support-cmds.h: rmcp_hdr_t separated from all + structures. Also structures are checksum friendly. + + * src/ipmi-msg-support-cmds.c: new functions - + ipmi_get_channel_auth_caps_rq, ipmi_get_session_challenge_rq, + ipmi_activate_session_rq, ipmi_set_session_priv_level_rq, + ipmi_chassis_ctrl_rq, close_session_rq and corresponding + request/response structures/macros. + + * src/rmcp.h: new macro for rmcp header values. + + * src/freeipmi.h: #pragma pack(1) moved to respective files, where + ever required. Removed verbose flag handling, we need to be thread + safe. + + * src/ipmi-errno.h: added new command specific codes. Removed + FI_PERROR. + + * src/ipmi-cmd-spec.h: added new definitions for network functions + + * libfreeipmi: this checkin freezes core framework for LAN for + now. Major facelift through out the code and are not logged here. + + +2003-10-28 Anand Babu + + * src/lfi-utils.[c,h]: removed + + * src/ipmi-utils.[c,h]: replaced lfi-utils + + * src/ipmi-cmd-spec.h: new file, IPMI command definitions + + * src/ipmi-errno.[c,h]: new file, IPMI error handler + + * src/ipmi-msg-support-cmds.[c,h]: new file, IPMI message support + functions + + * src/ipmi-lan-core.[c,h]: new file, core lan functions + + +2003-09-22 Anand Babu + + * libfreeipmi: checking into savannah.gnu.org + + +2002-10-09 Anand Babu + + * libfreeipmi: initial version. + +--------------------------------------------------------------------- +Do not add anything here. All your logs should be added to beginning +of the file. + +GUIDELINES: +* RUN 'make distclean' BEFORE YOU COMMIT. +* CHANGELOG HEADER FORMAT EXAMPLE: +EXAMPLE BEGIN +2002-10-29 Anand Babu + + * ChangeLog: added guidelines + + +EXAMPLE END + diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.bmc-watchdog b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.bmc-watchdog new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.bmc-watchdog @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.bmc-watchdog.UC b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.bmc-watchdog.UC new file mode 100644 index 00000000..c9cc7b10 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.bmc-watchdog.UC @@ -0,0 +1,45 @@ +Copyright (C) 2004-2007 The Regents of the University of California. +Produced at Lawrence Livermore National Laboratory. +Written by Albert Chu +UCRL-CODE-155913 + +This file is part of Bmc-watchdog, a base management controller (BMC) +watchdog timer management tool. For details, see http://www.llnl.gov/linux/. + +Bmc-Watchdog 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 2 of the License, or (at your +option) any later version. + +Bmc-Watchdog 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 Bmc-Watchdog; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +This notice is required to be provided under our contract with the +U.S. Department of Energy (DOE). This work was produced at the +University of California, Lawrence Livermore National Laboratory under +Contract No. W-7405-ENG-48 with the DOE. + +Neither the United States Government nor the University of California +nor any of their employees, makes any warranty, express or implied, or +assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe +privately-owned rights. + +Also, reference herein to any specific commercial products, process, +or services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or the University of +California. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States Government or +the University of California, and shall not be used for advertising or +product endorsement purposes. + +The precise terms and conditions for copying, distribution and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-dcmi b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-dcmi new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-dcmi @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-fru b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-fru new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-fru @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-fru.UC b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-fru.UC new file mode 100644 index 00000000..12bbc63a --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmi-fru.UC @@ -0,0 +1,46 @@ +Copyright (C) 2007 The Regents of the University of California. +Produced at Lawrence Livermore National Laboratory. +Written by Albert Chu +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 2 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, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +This notice is required to be provided under our contract with the +U.S. Department of Energy (DOE). This work was produced at the +University of California, Lawrence Livermore National Laboratory under +Contract No. W-7405-ENG-48 with the DOE. + +Neither the United States Government nor the University of California +nor any of their employees, makes any warranty, express or implied, or +assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe +privately-owned rights. + +Also, reference herein to any specific commercial products, process, +or services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or the University of +California. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States Government or +the University of California, and shall not be used for advertising or +product endorsement purposes. + +The precise terms and conditions for copying, distribution and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiconsole b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiconsole new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiconsole @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiconsole.UC b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiconsole.UC new file mode 100644 index 00000000..0300821b --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiconsole.UC @@ -0,0 +1,45 @@ +Copyright (C) 2006-2007 The Regents of the University of California. +Produced at Lawrence Livermore National Laboratory. +Written by Albert Chu +UCRL-CODE-221226 + +This file is part of Ipmiconsole, a set of IPMI 2.0 SOL libraries and +utilities. For details, see http://www.llnl.gov/linux/. + +Ipmiconsole 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 2 of the License, or (at your +option) any later version. + +Ipmiconsole 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 Ipmiconsole; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +This notice is required to be provided under our contract with the +U.S. Department of Energy (DOE). This work was produced at the +University of California, Lawrence Livermore National Laboratory under +Contract No. W-7405-ENG-48 with the DOE. + +Neither the United States Government nor the University of California +nor any of their employees, makes any warranty, express or implied, or +assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe +privately-owned rights. + +Also, reference herein to any specific commercial products, process, +or services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or the University of +California. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States Government or +the University of California, and shall not be used for advertising or +product endorsement purposes. + +The precise terms and conditions for copying, distribution and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmidetect b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmidetect new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmidetect @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmidetect.UC b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmidetect.UC new file mode 100644 index 00000000..24ae2ab6 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmidetect.UC @@ -0,0 +1,45 @@ +Copyright (C) 2007 The Regents of the University of California. +Produced at Lawrence Livermore National Laboratory. +Written by Albert Chu +UCRL-CODE-228523 + +This file is part of Ipmidetect, tools and libraries for detecting +IPMI nodes in a cluster. For details, see http://www.llnl.gov/linux/. + +Ipmidetect 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 2 of the License, or (at your +option) any later version. + +Ipmidetect 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 Ipmidetect; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +This notice is required to be provided under our contract with the +U.S. Department of Energy (DOE). This work was produced at the +University of California, Lawrence Livermore National Laboratory under +Contract No. W-7405-ENG-48 with the DOE. + +Neither the United States Government nor the University of California +nor any of their employees, makes any warranty, express or implied, or +assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe +privately-owned rights. + +Also, reference herein to any specific commercial products, process, +or services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or the University of +California. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States Government or +the University of California, and shall not be used for advertising or +product endorsement purposes. + +The precise terms and conditions for copying, distribution and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmimonitoring b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmimonitoring new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmimonitoring @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmimonitoring.UC b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmimonitoring.UC new file mode 100644 index 00000000..8b6daee7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmimonitoring.UC @@ -0,0 +1,46 @@ +Copyright (C) 2006-2007 The Regents of the University of California. +Produced at Lawrence Livermore National Laboratory. +Written by Albert Chu +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 2 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, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +This notice is required to be provided under our contract with the +U.S. Department of Energy (DOE). This work was produced at the +University of California, Lawrence Livermore National Laboratory under +Contract No. W-7405-ENG-48 with the DOE. + +Neither the United States Government nor the University of California +nor any of their employees, makes any warranty, express or implied, or +assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe +privately-owned rights. + +Also, reference herein to any specific commercial products, process, +or services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or the University of +California. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States Government or +the University of California, and shall not be used for advertising or +product endorsement purposes. + +The precise terms and conditions for copying, distribution and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiping b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiping new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiping @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiping.UC b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiping.UC new file mode 100644 index 00000000..66b3cd5f --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiping.UC @@ -0,0 +1,45 @@ +Copyright (C) 2003-2007 The Regents of the University of California. +Produced at Lawrence Livermore National Laboratory. +Written by Albert Chu +UCRL-CODE-155448 + +This file is part of Ipmiping, tools for pinging IPMI and RMCP compliant +remote systems. For details, see http://www.llnl.gov/linux/. + +Ipmiping 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 2 of the License, or (at your +option) any later version. + +Ipmiping 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 Ipmiping; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +This notice is required to be provided under our contract with the +U.S. Department of Energy (DOE). This work was produced at the +University of California, Lawrence Livermore National Laboratory under +Contract No. W-7405-ENG-48 with the DOE. + +Neither the United States Government nor the University of California +nor any of their employees, makes any warranty, express or implied, or +assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe +privately-owned rights. + +Also, reference herein to any specific commercial products, process, +or services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or the University of +California. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States Government or +the University of California, and shall not be used for advertising or +product endorsement purposes. + +The precise terms and conditions for copying, distribution and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmipower b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmipower new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmipower @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmipower.UC b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmipower.UC new file mode 100644 index 00000000..82e00528 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmipower.UC @@ -0,0 +1,45 @@ +Copyright (C) 2003-2007 The Regents of the University of California. +Produced at Lawrence Livermore National Laboratory. +Written by Albert Chu +UCRL-CODE-155698 + +This file is part of Ipmipower, a remote power control utility. For +details, see http://www.llnl.gov/linux/. + +Ipmipower 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 2 of the License, or (at your +option) any later version. + +Ipmipower 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 Ipmipower; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +This notice is required to be provided under our contract with the +U.S. Department of Energy (DOE). This work was produced at the +University of California, Lawrence Livermore National Laboratory under +Contract No. W-7405-ENG-48 with the DOE. + +Neither the United States Government nor the University of California +nor any of their employees, makes any warranty, express or implied, or +assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe +privately-owned rights. + +Also, reference herein to any specific commercial products, process, +or services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or the University of +California. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States Government or +the University of California, and shall not be used for advertising or +product endorsement purposes. + +The precise terms and conditions for copying, distribution and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiseld b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiseld new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.ipmiseld @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout new file mode 100644 index 00000000..1bb04be7 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout @@ -0,0 +1,24 @@ +This work was produced at the Lawrence Livermore National Laboratory +(LLNL) under Contract No. DE-AC52-07NA27344 (Contract 44) between +the U.S. Department of Energy (DOE) and Lawrence Livermore National +Security, LLC (LLNS) for the operation of LLNL. + +This work was prepared as an account of work sponsored by an agency of +the United States Government. Neither the United States Government nor +Lawrence Livermore National Security, LLC nor any of their employees, +makes any warranty, express or implied, or assumes any liability or +responsibility for the accuracy, completeness, or usefulness of any +information, apparatus, product, or process disclosed, or represents +that its use would not infringe privately-owned rights. + +Reference herein to any specific commercial products, process, or +services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or Lawrence Livermore +National Security, LLC. The views and opinions of authors expressed +herein do not necessarily state or reflect those of the Untied States +Government or Lawrence Livermore National Security, LLC, and shall +not be used for advertising or product endorsement purposes. + +The precise terms and conditions for copying, distribution, and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout.UC b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout.UC new file mode 100644 index 00000000..1cec19e1 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/DISCLAIMER.pstdout.UC @@ -0,0 +1,46 @@ +Copyright (C) 2007 The Regents of the University of California. +Produced at Lawrence Livermore National Laboratory. +Written by Albert Chu +UCRL-CODE-227589 + +This file is part of pstdout, a library used to launch and manage the +standard output of multiple threads. For details, see +http://www.llnl.gov/linux/. + +Pstdout 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 2 of the License, or (at your +option) any later version. + +Pstdout 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 Pstdout; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +This notice is required to be provided under our contract with the +U.S. Department of Energy (DOE). This work was produced at the +University of California, Lawrence Livermore National Laboratory under +Contract No. W-7405-ENG-48 with the DOE. + +Neither the United States Government nor the University of California +nor any of their employees, makes any warranty, express or implied, or +assumes any liability or responsibility for the accuracy, +completeness, or usefulness of any information, apparatus, product, or +process disclosed, or represents that its use would not infringe +privately-owned rights. + +Also, reference herein to any specific commercial products, process, +or services by trade name, trademark, manufacturer or otherwise does +not necessarily constitute or imply its endorsement, recommendation, +or favoring by the United States Government or the University of +California. The views and opinions of authors expressed herein do not +necessarily state or reflect those of the United States Government or +the University of California, and shall not be used for advertising or +product endorsement purposes. + +The precise terms and conditions for copying, distribution and +modification are specified in the file "COPYING". diff --git a/source/freeipmi/usr/share/doc/freeipmi/INSTALL b/source/freeipmi/usr/share/doc/freeipmi/INSTALL new file mode 100644 index 00000000..23e5f25d --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/INSTALL @@ -0,0 +1,236 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free +Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + +By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). Here is a another example: + + /bin/bash ./configure CONFIG_SHELL=/bin/bash + +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent +configuration-related scripts to be executed by `/bin/bash'. + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/source/freeipmi/usr/share/doc/freeipmi/NEWS b/source/freeipmi/usr/share/doc/freeipmi/NEWS new file mode 100644 index 00000000..9bf3933d --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/NEWS @@ -0,0 +1,2451 @@ +FreeIPMI 1.5.1 - 12/01/15 +------------------------- +o Update Intel Node Manager support for 3.0 specification. + - Update API and fiid templates in libfreeipmi. + - Support new OEM SEL events + - Update ipmi-oem commands. + - Support new get/set-turbo-synchronization-ratio + - Support new 'policypowerdomain' option in + get-node-manager-capabilities and set-node-manager-policy. + - Update output of get-node-manager-policy and + get-node-manager-capabilities for changes. + - get/set-node-manager-alert-thresholds converted to + get/set-node-manager-policy-alert-thresholds. Legacy commands + still supported. +o Update libfreeipmi for IPMI 2.0 Errata 7. + - Support/handle FRU Multirecord NVM Express type. +o Support Get Device SDR Info, Get Device SDR, and Reserve Device SDR + Repository commands in libfreeipmi. +o Support ipmi-sel OEM interpretation of Linux kernel panics. +o Re-organize OEM header files into per-vendor files. +o In ipmi-oem, fix error in "DNS Register BMC" output in + "get-dns-config" output in Inventec, Quanta, and Wistron vendor + sections. +o Support systemd through --with-systemdsystemunitdir configure option. +o Minor corner case bug fixes. + +FreeIPMI 1.4.11 - 10/29/15 +-------------------------- +o Fix logic error with a few OEM SEL events for Intel E5 2600 V3 motherboard. +o Fix various logic errors in ipmi-oem Intel Node Manager extensions. +o Documentation updates. + +FreeIPMI 1.4.10 - 10/20/15 +-------------------------- +o In ipmi-oem, support Supermicro get-power-supply-status2. +o In ipmi-locate, fix probing issue on arm32 & 64. +o Handle several additional completion code error message in libfreeipmi. +o Handle several error handling corner cases in ipmi-sensors. +o Support Intel E5 2600 V3 motherboard OEM SEL events. +o Fix several errors in ipmi-oem intelnm get-node-manager-statistics output. +o Fix logic errors in ipmi-oem intelnm set-node-manager-policy. + +FreeIPMI 1.4.9 - 06/01/15 +------------------------- +o Fix strtol parse corner cases in several commands. +o Minor documentation fixes. + +FreeIPMI 1.4.8 - 01/07/15 +------------------------- +o Fix segfault in crypt code with libgcrypt versions >= 1.6.0. +o Fix --fanout command line parse bug. + +FreeIPMI 1.4.7 - 12/10/14 +------------------------- +o Fix typo from FRU spec, language "Tegulu" is actually "Telugu". +o Fix typo in SEL session output, "Invalid Username of Password" to + "Invalid Username or Password". +o Loop on select() call if interrupted by EINTR in openipmi, ssif, and + sunbmc inband drivers. +o Fix integer overflow bug in ipmi-config when configure vlan ID > 255. +o Add workaround for ipmi-config issue on Supermicro X10DDW-i. +o Fix error handling bug in bmc-info. + +FreeIPMI 1.4.6 - 10/29/14 +------------------------- +o In ipmi-fru, support output of DDR4 SDRAM modules. +o Fix EFI probing on non IA64 systems. +o Fix corner case in ipmi-raw w/ standard input or --file and empty lines. +o Fix parsing corner case in ipmi-chassis. +o Support SSIF bridging. + +FreeIPMI 1.4.5 - 07/28/14 +------------------------- +o Fix libipmiconsole calculation bug w/ SOL character send size. +o Support Supermicro H8DGU and H8DG6 OEM sensors and events. +o Minor documentation updates. + +FreeIPMI 1.4.4 - 06/27/14 +------------------------- +o Support retrys of SSIF reads to handle SSIF NACKs. + +FreeIPMI 1.4.3 - 05/07/14 +------------------------- +o Fix compile bug in 1.4.2 release. + +FreeIPMI 1.4.2 - 05/06/14 +------------------------- +o In ipmi-oem, support Supermicro get-power-supply-status and + get-pmbus-power-supply-status commands. +o Support 'ipmiping' workaround in ipmipower. +o Minor documentation updates. + +FreeIPMI 1.4.1 - 03/01/14 +------------------------- + +Tools - New Features +-------------------- +o Support new tool ipmi-config. Ipmi-config is a consolidated + configuration tool implementing everything that was previously in + bmc-config, ipmi-pef-config, ipmi-sensors-config, and + ipmi-chassis-config. + - The consolidated tool will allow users to checkout, commit, and + diff sections/fields across the four former tools using only one + tool. + - The consolidated tool will also allow users to checkout, commit, + and diff new sections/fields not yet covered in the four former + tools. + - Legacy scripts for bmc-config, ipmi-pef-config, + ipmi-sensors-config, and ipmi-chassis-config will point to the new + tool with all appropriate options to ensure full backwards + compatability. + - The ipmi-pef-config --info option has been made legacy. It is + still supported but no longer advertised. +o Support Intel Data Center Host Interface / Management Engine as + optional driver type for in-band communication. + - Typically these are loaded as /dev/dcmi and /dev/mei drivers. + - This driver is identified as the "inteldcmi" type, as it is + specific to Intel systems. +o Support OEM extensions for Intel Windmill, Wiwynn Windmill, and + Quanta Winterfell motherboards in ipmi-sel and ipmi-sensors. These + motherboards are also know as motherboards for the Open Compute + Project (OCP). +o Support DCMI configuration in ipmi-config. +o Update FreeIPMI for changes in IPMI 2.0 Errata 5. Include are: + - New sensor events for Power Supply and OS Boot sensors. New + events are supported in all areas, ipmi-sensors, ipmi-sel, + libipmimonitoring, etc. + - PEF now supports 255 filter numbers, not 127. This is supported + in ipmi-config (formerly ipmi-pef-config). + - Support get/set of new System Info Parameters Present OS Version, + BMC URL, and Base OS/Hypervisor URL. This is supported in + bmc-info and bmc-device. +o Update ipmi-oem Intel Node Manager OEM commands for changes listed + in Intelligent Power Node Manager 2.0 specification. + - Due to changes in the specification, minor text changes may exist + in some output from intelnm OEM commands. +o Update ipmi-sel to support new SEL events in Intelligent Power Node + Manager 2.0 specification. +o Support 'serialalertsdeferred' workaround in ipmiconsole. +o Support 'solpacketseq' workaround in ipmiconsole. +o Fix portability issues for Apple / OS X. + +Tools - Bug Fixes/Minor Changes +------------------------------- +o Fix bmc-info output of GUID, format was output with two bytes out of + order. + - May affect scripts parsing and using the GUID. +o Bmc-info now supports --get-system-guid and outputs the System GUID + as well as the Device GUID by default. + - The Device GUID is not prefixed with the text "Device GUID" + instead of just "GUID". Any scripts scripting against this will + need to be adjusted. +o Bmc-info now supports a workaround of 'guidformat' to read the GUID + with a format a number of vendors have incorrectly used. +o In ipmi-config's sensor configuration, decimal values that cannot be + encoded accurately now report a clearer error message. + +Libraries +--------- + +o Update libfreeipmi and libipmimonitoring to support IPMI 2.0 Errata + 5. Included are: + - Support new sensor events for Power Supply and OS Boot sensors. + - Support PEF filter numbers up to 255. + - Support new System Info Parameters for Present OS Version, BMC + URL, and Base OS/Hypervisor URL. +o Update libfreeipmi to support Intel Node Manager payloads per Intel + Intelligent Power Node Manager 2.0 specification. + - Due to changes in the specification, some payload fields have been + changed. +o Update libfreeipmi SEL sub-library to handle new event messages in + Intelligent Power Node Manager 2.0 specification. +o Support SERIAL_ALERTS_DEFERRED workaround in libipmiconsole. +o Support INCREMENT_SOL_PACKET_SEQUENCE workaround in libipmiconsole. + +FreeIPMI 1.3.4 - 12/12/13 +------------------------- +o Support 'solchannelsupport' workraound in ipmiconsole / + IPMICONSOLE_WORKAROUND_SKIP_CHANNEL_PAYLOAD_SUPPORT workaround flag in + libipmiconsole. +o Fix SDR cache workaround for motherboards with invalid SDR record + counts listed. +o Workaround Supermicro bug in bmc-watchdog. +o Fix error checks in sensor decoding functions, leading to possible + problems in ipmi-sensors-config. +o Update documentation with additional workarounds for motherboards. +o Fix various minor bugs. + +FreeIPMI 1.3.3 - 10/29/13 +------------------------- +o Add support for intelnm get-node-manager-alert-destination and + set-node-manager-alert-destination in ipmi-oem. +o Under very verbose mode, ipmi-sel will now record types for OEM + records. This should allow OEM parses outside of FreeIPMI to more + effectively parse OEM specific SEL records. +o Fix big endian portability bugs. + +FreeIPMI 1.3.2 - 09/10/13 +------------------------- +o Update FreeIPMI tools to check libfreeipmi API error codes + correctly. +o Update ipmi-api.h to list mappings of IPMI completion codes and + RMCPPlus codes to API Error codes. + +FreeIPMI 1.3.1 - 08/22/13 +------------------------- + +Tools - New Features +-------------------- +o In all tools reporting time (ipmi-sel, ipmi-fru, ipmi-oem, + bmc-device, ipmi-sensors, ipmi-dcmi), timestamps are now reporting + under the assumption the timestamp is already in localtime (compared + to being in UTC time and converted to localtime). This is by + definition in the IPMI specification. +o In all tools reporting time (ipmi-sel, ipmi-fru, ipmi-oem, + bmc-device, ipmi-sensors, ipmi-dcmi), support --utc-to-localtime, + --localtime-to-utc, and --utc-offset options to allow users to + adjust timestamps as needed for certain environments. +o In ipmi-fru, support output of DDR3 SDRAM modules. +o In ipmi-fru, support output of new FRU multirecords, most notably + extended DC output and extended DC load (per FRU Revision 1.2 + update). +o In bmc-device, support --get-sel-time-utc-offset and + --set-sel-time-utc-offset. + +Tools - Bug Fixes/Minor Changes +------------------------------- +o In ipmi-fru, report power supply low/high end voltage ranges as + signed numbers (per FRU Revision 1.2 update). +o In ipmi-fru, output "unspecified" for manufacturing date/time or + peak capacity as appropriate (per FRU Revision 1.2 update). +o In ipmi-fru, bridge additional FRU entries as appropriate. +o In all tools reporting time (ipmi-sel, ipmi-fru, ipmi-oem, + bmc-device, ipmi-sensors, ipmi-dcmi), special timestamps such as + Post-Init and Unspecified will now be output. +o Fix output corner case with entity sensor names in various tools. + +Libraries +--------- +o In libfreeipmi, support additional chassis types (per FRU Revision + 1.2 update). +o In libfreeipmi, support new FRU multirecord types (per FRU Revision + 1.2 update). +o In libfreeipmi, support new IPMI_FRU_FLAGS_READ_RAW 'fru' + sub-library flag to read data from the FRU raw without parsing + headers/records. +o In libfreeipmi, add support for DDR3 SDRAM FRU entries and JEDEC + manufacturer IDs. +o In libfreeipmi, add support for Get SEL Time UTC Offset and Set SEL + Time UTC Offset payloads. +o In libfreeipmi 'sel' sub-library, support + IPMI_SEL_PARAMETER_UTC_OFFSET, + IPMI_SEL_STRING_FLAGS_UTC_TO_LOCALTIME, and + IPMI_SEL_STRING_FLAGS_LOCALTIME_TO_UTC options/flags. +o In libfreeipmi, do not pad legacy byte on IPMI 1.5 packets. Legacy + byte should be padded on ethernet frame, not IP packet. +o In libfreeipmi, 'sdr' sub-library, when creating SDR cache, add + checksums to cache to ensure data in cache is not corrupted. Older + caches without checksums still backwards compatible supported. +o In libfreeipmi, support new IPMI_ERR_COMMAND_INVALID_OR_UNSUPPORTED + error code for IPMI commands that are invalid or unsupported. + +FreeIPMI 1.2.9 - 07/17/13 +------------------------- +o Fix threshold output corner case in ipmi-sensors. +o Fix invalid declaration in libipmimonitoring header. +o Fix older compiler build problems. + +FreeIPMI 1.2.8 - 06/21/13 +------------------------- +o Fix portability build bug on ARM systems. +o Add 'internal IPMI error' troubleshooting to manpages. +o Fix bmc-info corner case on Bull 510 systems. + +FreeIPMI 1.2.7 - 05/16/13 +------------------------- +o Fix sensor output errors with OEM sensors. + +FreeIPMI 1.2.6 - 04/29/13 +------------------------- +o Support HP Proliant DL160 G8 OEM sensors. +o Support Supermicro X9SCM-iiF OEM sensors and events. +o Support output of temperature sampling period to ipmi-dcmi. +o Clarify error message when SOL session cannot be stolen in + ipmiconsole/libipmiconsole. +o Fix dcmi rolling average time period output error +o Fix ipmi-dcmi output errors with --get-dcmi-sensor-info. +o Fix corner case in calculation of confidentiality pad length with + AES-CBC-128 encryption. Incorrect pad effects some vendor firmware + implementations. +o Send IPMI 2.0 packets differently than IPMI 1.5 packets, as the + former does not require legacy pad data to be appended to payloads. +o Fix Intel OEM SEL buffer overflow. +o Fix out of trunk source build. + +Libraries +--------- +o Support new ipmi_rmcpplus_sendto() and ipmi_rmcpplus_recvfrom() + functions. +o Support new HP Proliant DL160 G8 OEM sensor events. + +FreeIPMI 1.2.5 - 02/26/13 +------------------------- +o In all config tools (bmc-config, ipmi-pef-config, + ipmi-chassis-config, ipmi-sensors-config), fix bug when user + specifies --checkout and --filename option and no data outputs to + file. +o In all config tools, exit with value 1 when non-fatal errors occur. + Exit with value 2 when fatal errors occur. +o Support Supermicro X9SPU-F-O OEM sensors and events. +o Support Supermicro X9DRI-LN4F+ OEM intepretations (previously + forgotten). +o Clarify use of --filename in config tool manpages. + +FreeIPMI 1.2.4 - 01/10/13 +------------------------- +o Support Supermicro X9DRI-LN4F+ OEM sensors and events. +o Fix output corner case for "session-based" channels. +o Fix ipmi-oem set-power-restore-delay corner case in time settings. +o Fix ipmiseld memleak. +o Fix libfreeipmi potential fd leak when generating random numbers. +o Fix libfreeipmi error output bug in RMCP interface. +o Fix several minor corner cases discovered by static code analysis. + +FreeIPMI 1.2.3 - 11/14/12 +------------------------- +Tools +------ +o In ipmi-oem, support new Dell Poweredge R720 OEM commands extensions, + including: + - get-nic-selection-failover + - set-nic-selection-failover + - power-monitoring-over-interval + - power-monitoring-interval-range + - get-last-post-code +o In ipmi-oem, update active-lom-status for Dell Poweredge R720. +o In ipmi-oem, support new Dell Poweredge R720 get-system-info option + 'cmc-info'. +o In ipmi-oem, Dell get-system-info "slot-number" key changed to + "blade-slot-info". Legacy option still supported. +o In ipmi-sel, support Dell Poweredge R720 OEM SEL extensions. +o In all tools, support nochecksumcheck workaround option. +o In all daemons (ipmiseld, ipmidetectd, bmc-watchdog), check for + syscall errors during daemon setup. + +Libraries +--------- +o In libfreeipmi, support Dell R720 OEM extension intepretations. +o In libfreeipmi, libipmimonitoring, and libipmiconsole, support + NO_CHECKSUM_CHECK workaround flag. +o In libipmiconsole, IPMICONSOLE_DEBUG_FILE logs debug to files in + current working directory and not /var/log. PID is also appended to + debug files. + +Misc +---- +o Various documentation updates and fixes. + +FreeIPMI 1.2.2 - 10/02/12 +------------------------- +Tools +------ +o Support new --sol-payload-instance and --deactivate-all-instances + options in ipmiconsole. +o Fix ipmiseld compile issue with -Werror=format-security. + +Libraries +--------- +o In libipmiconsole, add new ipmiconsole_ctx_set_config() and + ipmiconsole_ctx_get_config() functions. +o In libipmiconsole, add support for specifying and handling different + SOL payload instances. This support includes: + - Support new IPMICONSOLE_CTX_CONFIG_OPTION_SOL_PAYLOAD_INSTANCE + configuration option. + - In libipmiconsole, support new + IPMICONSOLE_BEHAVIOR_DEACTIVATE_ALL_INSTANCES behavior flag. + - Return more appropriate error codes when activation limits are + discovered. +o In libfreeipmi, fix debug output corner case when outputting byte + arrays. + +Misc +---- +o Various documentation updates and fixes. + +FreeIPMI 1.2.1 - 08/22/12 +------------------------- + +Tools - New Features +-------------------- +o Support new ipmiseld daemon, a daemon that regularly polls the SEL + and stores the events to the local syslog. +o In ipmipower, support --oem-power-type option to support OEM + specific power control operations. Included in this support were + the follow changes to ipmipower: + - Support initial OEM power type of C410X. + - Re-architect to allow input of extra information for an OEM power + operation via the '+' operator after the hostname. + - Re-architect to allow input of target hostname multiple times + under OEM power cases. + - Re-architect to allow serialization of power control operations to + the same host. +o Globally in tools, support --target-channel-number and + --target-slave-address to specify specific targets. +o Globally in tools, support ability to specify alternate port via + optional [:port] in hostname or host config. +o In ipmi-fru, support --bridge-fru option to allow reading FRU entries + from satellite controllers. +o In bmc-config, add configuration support for + Maximum_Privilege_Cipher_Suite_Id_15 under RMCPplus_Conf_Privilege. +o Globally support Cipher Suite ID 15 and 16 based on comments from + Intel. +o In ipmi-sensors, support --output-sensor-thresholds, to allow + outputting of sensor thresholds in default output for scripting. +o In ipmi-sel, support new --post-clear option. +o In bmc-device, support new --set-sensor-reading-and-event-status + option. +o In ipmi-oem, support additional Intel Node Manager commands, + including: + - get-node-manager-capabilities + - node-manager-policy-control + - get-node-manager-policy + - set-node-manager-policy + - remove-node-manager-policy + - get-node-manager-alert-thresholds + - set-node-manager-alert-thresholds + - get-node-manager-policy-suspend-periods + - set-node-manager-policy-suspend-periods + - set-node-manager-power-draw-range +o In ipmi-oem, support Wistron OEM commands extensions. +o In ipmi-sel, support Wistron OEM SEL interpretations. +o In ipmi-fru, support Wistron OEM FRU records. +o In ipmi-pef-config, support configuration volatile Alert String 0 + and Lan Alert Destination 0. + +Tools - Bug Fixes/Minor Changes +------------------------------- +o In ipmi-fru, if builtin FRU device (ID 0) has SDR entry, output SDR + entry name rather than fixed string. +o In ipmipower, exit with value 1 on IPMI errors in addition to system + errors. +o In ipmidetect, exit with exit value 2 when an error occurs. Exit + value of 0 or 1 are reserved for scripting. +o In bmc-watchdog, properly support assumeio and spinpoll workarounds. +o In bmc-watchdog and ipmidetectd daemon, support handling of SIGQUIT + signal in addition to SIGTERM and SIGINT, properly umask generated + pidfile, and delete pidfile when necessary. +o In bmc-watchdog, log all errors to syslog instead of unique file. +o In bmc-watchdog, remove --logfile option. +o In bmc-watchdog, support --verbose-logging option for increased + logging. +o In ipmidetectd daemon, create/handle pidfile. +o In ipmidetectd daemon and ipmidetect, update command line parsing to + use argp instead of getopt. This change leads to some changes for + consistency with the rest of FreeIPMI, but changes some command line + options. + - -v is no longer supported, -V outputs version information + - -h is no longer supported, -? outputs help +o In ipmi-raw, make --channel-number and --slave-address legacy + options. They are now overriden by --target-channel-number and + --target-slave-address. +o Re-work entity sensor names calculation to more properly meet IPMI + specification. Users may see slight changes in the output of sensor + names when using the --entity-sensor-names option or similar output + in ipmi-sensors, ipmi-sel, ipmi-pet, or ipmi-oem. +o Re-work shared sensors name output to more properly meet IPMI + specification. Users may see slight changes in the output of sensor + names when using the --shared-sensors option or similar output in + ipmi-sensors, ipmi-sel, or ipmi-pet. +o In ipmi-fru, deprecate --skip-checks option in favor of "skipchecks" + workaround flag. +o Support "assumemaxsdrrecordcount" workaround in all tools that use + SDR. +o Support "noauthcodecheck" workaround in all tools that use IPMI 1.5. +o Support workaround to load SDR properly on systems which return + invalid lengthed SDR records. Noticed on Xyratex HB-F8-SRAY. +o Support workaround handling of + IPMIPOWER_MSG_TYPE_PRIVILEGE_LEVEL_CANNOT_BE_OBTAINED completion + code when returned from activate session command. Noticed on + Xyratex HB-F8-SRAY. + +Libraries +--------- +o In libfreeipmi, create new 'sdr' sub-library which is merger of the + earlier 'sdr-cache' and 'sdr-parse' libraries. + - This results in an ABI change. Generally speaking, all + "ipmi_sdr_cache" and "ipmi_sdr_parse" functions, types, and macros + are changed to "ipmi_sdr", although some minor exceptions exist. + - For example: + ipmi_sdr_cache_ctx_t -> ipmi_sdr_ctx_t + ipmi_sdr_parse_ctx_t -> ipmi_sdr_ctx_t + ipmi_sdr_cache_ctx_create() -> ipmi_sdr_ctx_create() + ipmi_sdr_parse_ctx_destroy() -> ipmi_sdr_ctx_destroy() + IPMI_SDR_CACHE_ERR_PERMISSION -> IPMI_SDR_ERR_PERMISSION + IPMI_SDR_PARSE_ERR_PARAMETERS -> IPMI_SDR_ERR_PARAMETERS + - Please see the new ipmi-sdr.h header file for full changes. +o In libfreeipmi, create new 'sel' sub-library which replaces the + 'sel-parse' library. + - This results in an ABI change. Generally speaking, all + ipmi_sel_parse" functions, types, and macros + are changed to "ipmi_sel", although some minor exceptions exist. + - For example: + ipmi_sel_parse_ctx_t -> ipmi_sel_ctx_t + ipmi_sel_parse_ctx_destroy() -> ipmi_sel_ctx_destroy() + IPMI_SEL_PARSE_ERR_PARAMETERS -> IPMI_SEL_ERR_PARAMETERS + - Please see the new ipmi-sel.h header file for full changes. +o In libfreeipmi, create new 'fru' sub-library which replaces the + 'fru-parse' library. + - This results in an ABI change. Generally speaking, all + ipmi_fru_parse" functions, types, and macros + are changed to "ipmi_fru", although some minor exceptions exist. + - For example: + ipmi_fru_parse_ctx_t -> ipmi_fru_ctx_t + ipmi_fru_parse_ctx_destroy() -> ipmi_fru_ctx_destroy() + IPMI_FRU_PARSE_ERR_PARAMETERS -> IPMI_FRU_ERR_PARAMETERS + - Please see the new ipmi-fru.h header file for full changes. +o In libfreeipmi, support Cipher Suite 15 and 16 implementation based + on comments from Intel. +o In libfreeipmi, add Cipher Suite 18 and 19 information, but do not + support. +o In libfreeipmi, support SEL string output format '%E' for combined + event data1, data2, and data3 output. +o In libfreeipmi, support SEL string output format '%I' for + interpretation event output. +o In libfreeipmi, fix bug in SEL string output in which both sensor + name and severity used '%s'. Severity now uses '%S'. +o In libfreeipmi, support ability to config interpret config file and + sel library and receive appropriate error. +o In libfreeipmi, support reservation-id registration and clearing in + the sel sub-library. +o In libfreeipmi, sel sub-library now supports a "no sel entries + loaded" error. +o In libfreeipmi, condense sel record parsing functions. One + set of functions now handles the previous case of both sets. +o In libfreeipmi, fru sub-library now supports + ipmi_fru_parse_read_multirecord_record_type_id function. +o In libfreeipmi, support additional sensor/SEL interpretations, + including: + - OS Boot + - OS Critical State State + - Platform Alert State + - Boot Error State + - System Event Transition State +o In libfreeipmi, add missing macro definitions. +o In libipmimonitoring, support Cipher Suite ID 15, 16, and 17. +o In libfreeipmi, libipmiconsole, libipmimonitoring, support ability + to specify alternate port via optional [:port] in hostname. +o In libfreeipmi, add additional IPMI commands/payloads. +o In libfreeipmi, fix several macro names which did not meet + standardization needs. +o In libfreeipmi, support new IPMI_ERR_DRIVER_BUSY error code. +o In libfreeipmi sdr, support more complete parsing of + Management Controller Locator Records. +o In libfreeipmi, KCS driver now sleeps a small amount between IPMB + retries to avoid spinning. +o In libfreeipmi and libipmimonitoring, do not export functions that + shouldn't be. +o In libfreeipmi, support stats functions and new utility functions in + sdr sub-library. +o In libfreeipmi, sel sub-library now supports the output of entity + sensor names. +o In libfreeipmi, fru sub library now supports new function to + determine multirecord type. +o In libfreeipmi, fix argument size bugs with Intel Node Manager + functions. +o In libipmimonitoring, support entity sensor name output options. + +Misc +---- +o Add diagnostic/exit-value information to most manpages. + +FreeIPMI 1.1.7 - 07/30/12 +------------------------- +o In ipmi-sensors and ipmi-sel, fix units output corner case. +o In bmc-info, detect unsupported system info corner case. +o Update documentation with motherboard support. + +FreeIPMI 1.1.6 - 06/28/12 +------------------------- +Tools +------ +o In ipmi-sel, support Supermicro SEL OEM interpretations in + --output-event-state. +o In ipmi-sel and ipmi-sensors, support additional sensor/SEL + interpretations including: + - Version Change + - System Firmware Progress Transition Severity + - Button/Switch Transition Severity + - Chassis Transition Severity + - POST Memory Resize State + - Cable/Interconnect Transition Severity + - Boot Error Transition Severity + - Slot Connector Transition Severity + - Memory State + - Memory Transition Severity +o In bmc-config, ipmi-chassis-config, ipmi-pef-config, and + ipmi-chassis-config, support cipher suite ID argument. +o Support Supermicro X9DRi-F OEM sensors and events. +o Fix Intel S2600JF/Appro 512x OEM SEL interpretations based on + comments from Intel. + +Libraries +--------- +o Support Supermicro SEL OEM interpretations. +o Support new sensor/SEL interpretations. + +Misc +---- +o Various documentation updates and fixes. + + +FreeIPMI 1.1.5 - 05/17/12 +------------------------- +Tools +------ +o Support Supermicro OEM sensors/SEL on H8DGU-F motherboards. +o In ipmiconsole, fix password length check bug. +o In bmc-watchdog, fix --start-if-stopped and --reset-if-running + options. +o In ipmidetectd, fix usage output typos. +o In ipmi-sensors-config, fix several parallel output corner cases. +o For consistency to other tools, turn on quiet-caching if + communicating with multiple hosts in bmc-device and ipmi-oem. +o In ipmi-sensors, fix bug in which multiple workarounds could not be + used or used in combination with bridging. +o Fix start run levels in ipmidetectd init script. + +Libraries +--------- +o In libfreeipmi fru-parse API, handle additional device busy errors. + +Misc +---- +o Various documentation updates. + +FreeIPMI 1.1.4 - 04/19/12 +------------------------- +Tools +------ +o In ipmi-oem, fix error message output in several Supermicro OEM + commands. +o In ipmi-oem, add Intel --get-power-restore-delay and + --set-power-restore-delay support. +o In ipmi-sel, support Intel S2600JF/Appro 512x OEM SEL + interpretations. + +Libraries +---------- +o In libfreeipmi, support new sensor and SEL event interpretations, + including Session Audit, Voltage Limits. +o In libfreeipmi, support new OEM interpretations for Intel S5000PAL + NMI State and SMI timeout sensors/SEL events. +o In libfreeipmi, support Intel S2600JF/Appro 512x OEM SEL + interpretations. + +Misc +---- +o Various documentation updates. + +FreeIPMI 1.1.3 - 03/06/12 +------------------------- +Tools +------ +o Support Supermicro CPU temperature SEL events. +o In ipmi-oem, fix corner case with Dell C410x power control + calculation. +o In all tools, fix error messages to differentiate between invalid + and unsupported cipher suite IDs. +o In bmc-config, fix a Cipher Suite Privilege configuration + corner case in the workaround for an HP DL145 workaround. +o In bmc-config, add workaround for Cipher Suite Privilege + configuration on Intel S2600JF/Appro 512X. +o Various documentation updates. + +Libraries +---------- +o In libfreeipmi, fix incorrect packet layout for the Get Lan + Configuration Parameters RMCPplus Messaging Cipher Suite Entry Support + response. +o In libipmimonitoring, properly return connection timeout error on + connection timeout. + +Misc +---- +o Fix build when using --docdir. +o Various documentation updates. + +FreeIPMI 1.1.2 - 02/06/12 +------------------------- +Tools +------ +o In ipmi-oem, support new Dell C410x OEM extensions + slot-power-toggle, slot-power-control, get-port-map, set-port-map. +o Fix daemon setup race condition in ipmidetectd and bmc-watchdog that + can affect systemd. +o In ipmiconsole, support new --serial-keepalive-empty option. +o In bmc-device, support new --rearm-sensor option. +o In ipmi-oem, add additional Dell get-system-info options + - slot-number + - system-revision + - embedded-video-status + - idrac-info + - idrac-ipv4-url + - idrac-gui-webserver-control + - cmc-ipv4-url, + - cmc-ipv6-info + - cmc-ipv6-url +o In ipmi-oem, support Dell 12G mac addresses under get-system-info. +o In ipmi-sensors, some sensors that reported "Unknown" may now report + "N/A" due to an interpretation change of several IPMI error codes. +o In ipmi-sensors, workaround sensor reading issue on Sun Blade x6250 + and Sun Blade 6000M2. +o Fix several freeipmi.conf config file parsing bugs. + +Libraries +---------- +o In libipmiconsole, fix serial keepalive timeout calculation bug that + can lead to excessive packets retransmitted. +o In libipmiconsole, support new SERIAL_KEEPALIVE_EMPTY engine flag. +o In libipmiconsole, do not deactivate a SOL payload if it appears the + SOL payload has been stolen, but we did not receive a SOL deactivating + flag. +o In libipmiconsole, fix corner case in which session not closed + cleanly when DEACTIVATE_ONLY flag specified. +o In libipmiconsole, workaround bug in Dell Poweredge M605, M610, and + M915 where instance count of SOL is always returned as 0. +o In libfreeipmi, add functions for re-arm sensor events IPMI payload. +o In libfreeipmi/sensor-read, under some error conditions return error + of "unavailable" instead of "cannot be obtained" error code. +o In libfreeipmi/sensor-read, add workarounds to handle issues on Sun + Blade x6250 and Sun Blade 6000M2. + +Misc +---- +o Various documentation updates. +o Redo formattig of include/freeipmi/templates/ documents. + +FreeIPMI 1.1.1 - 01/03/12 +------------------------- + +Tools +----- +o Support new tool ipmi-pet, tool to parse/interpret platform event traps. +o Support new --sdr-cache-file option specify specific SDR cache file + in all SDR related tools (ipmi-sensors, ipmi-sel, ipmi-fru, etc.). +o In ipmi-fru, do not consider a busy device a fatal error. +o In ipmi-sensors, support 'ignoreauthcode' workaround option. +o In ipmi-sensors, support Quanta QSSC-S4R/Appro GB812X-CN OEM SDRs + and sensors. +o In ipmi-sel, support Quanta QSSC-S4R/Appro GB812X-CN OEM SEL events. +o In ipmi-sel, fix several OEM specific event output bugs. +o In ipmi-pef-config, fix configuration bug for Enable_PEF_Event_Messages. +o In ipmi-raw, for file/stdin input, output line number when there is + an error. + +Libraries +--------- +o Update libfreeipmi for DCMI 1.5 additions. +o Update libfreeipmi fru-parse sub-library to support FRU parsing + without an IPMI connection. +o In libfreeipmi, support IPMI_FLAGS_NOSESSION flag to open a context + for IPMI communication w/o establishing a session. +o In libfreeipmi, support IPMI_FLAGS_NO_LEGAL_CHECK flag, to + workaround motherboards to may return illegal IPMI packets. +o In libfreeipmi, support IPMI_FLAGS_IGNORE_AUTHENTICATION_CODE flag, + to workaround specific situations where motherboards return + incorrectly generated authentication codes. +o In libfreeipmi fru-parse sub-library, support + IPMI_FRU_PARSE_ERR_DEVICE_BUSY error code. +o In libfreeipmi, add support for IPMI firmware firewall and command + discovery payloads. +o In libfreeipmi, support Quanta QSSC-S4R/Appro GB812X-CN OEM SEL + events. +o Fix various macro names (typos, invalid naming, etc.) + +Contributions +------------- +o petalert.pl + - snmptrapd handler script to alert when Platform Event Traps (PET) occur. + +FreeIPMI 1.0.10 - 12/13/11 +-------------------------- +o Clarify bmc-watchdog error messages. +o Various documentation updates. + +FreeIPMI 1.0.9 - 11/21/11 +------------------------- +o Support Supermicro OEM sensors on X9SCA-F-O motherboards. +o Support Supermicro OEM sensors on X9SCM-F motherboards with + newer firmware. + +FreeIPMI 1.0.8 - 10/27/11 +------------------------- +o Fix corner case in which invalid SDR entry could be loaded when + shared sensors exist on event only records. +o Fix several event output corner cases. +o Fix 'assumesystemevent' workaround for ipmi-sel. +o Fix ipmi-raw and ipmi-oem allocation bug on newer systems, such as + RHEL6. +o Support Intel Node Manager sensor/SEL events for Intel S2600JF/Appro + 512X. +o Document workarounds for Intel S2600JF/Appro 512X. +o Per definition, output GUID w/ lower case characters in bmc-info. +o Other minor bug fixes. + +FreeIPMI 1.0.7 - 09/28/11 +------------------------- +o Support many new sensor state and sel event interpretations. +o Fix parsing bugs for freeipmi_interpret_sel.conf. +o Support 'assumebmcowner' workaround in ipmi-sensors. +o Support dynamic linking in libfreeipmi. +o Output pidfile in bmc-watchdog to support easier init script killing. +o Do not poll stdin in ipmipower when operating in non-interactive mode. +o Support IGNORE_SCANNING_DISABLED workaround in libipmimonitoring. +o Support Supermicro OEM sensors on X7DB8, X8DTN, X7SBI-LN4, X8DTL, + X8DTN+-F, and X8SIE motherboards. +o Fix handling error codes in optional parts of ipmi-dcmi. +o Fix various debug dumping bugs. +o Fix ipmimonitoring script install bug on some systems. +o Fix symbol global vs. locals in libipmimonitoring. +o Minor documentation and manpage updates. + +FreeIPMI 1.0.6 - 09/01/11 +------------------------- +o Support 'ignorescanningdisabled' workaround in ipmi-sensors. +o Support Supermicro X8SIL-F, X9SCL, and X9SCM motherboard OEM sensors. +o Update bmc-watchdog logrotate script to reduce unnecessary output. +o Fix ipmi-fru output typo. + +FreeIPMI 1.0.5 - 06/30/11 +------------------------- +o Fix various issues in ipmi-dcmi, including command line parsing + bugs, asset tag/string identifier overwriting, and fix assumptions + based on new information in v1.5 errata. +o Support pkg-config files for libraries. +o Various documentation updates. + +FreeIPMI 1.0.4 - 04/21/11 +------------------------- +o Support "discretereading" workaround in ipmi-sensors and associated + libraries. +o Support "spinpoll" workaround/performance optimization in tools and + libraries. +o Support additional sensor/SEL interpretations for Intel motherboards. +o Add convenience input checking functions to libipmiconsole. +o Fix bug in libipmimonitoring to allow additional OEM interpretations. + +FreeIPMI 1.0.3 - 03/29/11 +------------------------- +o Support additional error handling in bmc-info. +o Support ability to set "none" workaround flags on the command line + and in tools. +o In libipmiconsole, force ipmiconsole_engine_init() to be called + before ipmiconsole_ctx_create(). +o Fix libipmiconsole callback semantics. +o Fix libipmiconsole bugs in overriding standard defaults vs. config + file defaults. +o Fix potential race in libipmiconsole during engine teardown. +o Add package version macros to libfreeipmi. +o Add library version macros to all libraries. +o Fix Solaris build bug. +o Fix config output bug in ipmipower. + +FreeIPMI 1.0.2 - 02/22/11 +------------------------- +o Support --ignore-unrecognized-events in ipmi-sensors. +o Clarify error messages in ipmi-locate. +o Support Supermicro X7DBR-3, X8DTL-3F, X8DT3-LN4F motherboard OEM + sensors. +o Support Dell Module/Board OEM sensor interpretation on Poweredge + R210 motherboards. +o In bmc-info, support motherboards that don't implement Get Device + Guid. +o In bmc-watchdog, fix error logging corner case. +o Support new -r option in ganglia_ipmi_sensors.pl plugin to modify + ipmi hostname. +o Add workaround for SDR caching compliance bug in HP Proliant + DL585G7. +o In bmc-config, add workaround for motherboards that do not allow you + to configure identical usernames. +o Various documentation updates. + +FreeIPMI 1.0.1 - 01/20/11 +------------------------- + +Major Changes, Additions, and Features +-------------------------------------- +o Remove ipmimonitoring tool. Tool is now superseded by ipmi-sensors + and the new --output-sensor-state option. +o Support --output-event-state option for ipmi-sel to support SEL event + interpretation. +o All config-tools now support multi-channel configuration under + verbose mode. +o Re-architect libipmimonitoring to support all defined IPMI sensor + types, OEM bitmasks, and OEM interpretations. +o Add SEL monitoring support to libipmimonitoring. +o Support new 'interpret' sub-library in libfreeipmi. +o Support interpretation rules for sensors when no states/events occur. +o Support interpretation rules for out of spec sensor states/events. +o Support interpretation rules for OEM sensors and events. +o Move all config files to /etc/freeipmi/. Support legacy config + files for backwards compatibility. +o Support serial keepalive in ipmiconsole to check if serial + connection has remained alive across system reboots. +o Create symlinks and manpage pointers for 'ipmi-power', 'ipmi-ping', + 'rmcp-ping', 'ipmi-console', and 'ipmi-detect' to give some + additional consistency to the tool naming. +o Various documentation updates. +o Update to support DCMI 1.1. +o Update all licensing information to GPLv3. + +Tools - Detailed Enhancements/Changes/Fixes +------------------------------------------- +o ipmi-sensors + - Support --output-sensor-state option. + - Support --sensor-state-config-file option. + - Support --output-event-bitmask option. + - Support Intel Node Manager sensors. + - Some sensor states may now report 'N/A' if an invalid sensor event + occurred. + - Report 'N/A' instead of 'Unknown' is requested sensor does not exist + on motherboard. + - Support number input for --sensor-types and + --exclude-sensor-types. + - The "Unrecognized State" event string is now output as + "Unrecognized Event = X" or "OEM Event = X" where X is the event + bitmask. +o ipmi-sel + - Support --output-event-state option. + - Support --event-state-config-file option. + - Support --sensor-types option. + - Support --exclude-sensor-types option. + - Support --output-manufacturer-id option. + - Support --date-range option. + - Support --exclude-date-range option. + - Alter OEM record output to align with columns by outputting "N/A" + in appropriate fields and putting manufacturer ID in event output. +o ipmi-dcmi + - Support --set-asset-tag option. + - Support --get-management-controller-identifier-string option. + - Support --set-management-controller-identifier-string option. +o ipmiconsole + - Support --serial-keepalive option. + - Rework 'intel20' workaround to not allow a non two-part authentication. +o ipmipower + - Rework 'intel20' workaround to not allow a non two-part authentication. +o bmc-config + - Support --lan-channel-number. + - Support --serial-channel-number. + - Support --sol-channel-number. + - Support 'solchannelassumelanchannel' workaround. + - Support IPv4 header parameter configuration under verbose mode. + - Support RMCP port configuration under verbose mode. + - Move Vlan configuration to output only on verbose. + - Show verbose-only sections in --list. + - Do not output section comments if key-pair specified on command line. + - Allow checkout of sections/key-pairs if specified on command line, + even if not available by default. + - Support very-verbose output by specifying -vv. Move some output + from verbose output to very verbose output. +o ipmi-pef-config + - Support --lan-channel-number. + - Do not output section comments if key-pair specified on command line. + - Allow checkout of sections/key-pairs if specified on command line, + even if not available by default. + - Support very-verbose output by specifying -vv. Move some output + from verbose output to very verbose output. +o ipmi-sensors-config + - Do not output section comments if key-pair specified on command line. + - Allow checkout of sections/key-pairs if specified on command line, + even if not available by default. + - Support very-verbose output by specifying -vv. Move some output + from verbose output to very verbose output. +o ipmi-chassis-config + - Do not output section comments if key-pair specified on command line. + - Allow checkout of sections/key-pairs if specified on command line, + even if not available by default. + - Support very-verbose output by specifying -vv. Move some output + from verbose output to very verbose output. +o ipmi-oem + - Support Intel get/set-smtp-config. + - Support basic Intel Node Manager OEM commands. +o ipmimonitoring + - Removed tool. Tool is now superseded by ipmi-sensors and the new + --output-sensor-state option. + - Legacy output support maintained via + --ipmimonitoring-legacy-output option. +o ipmi-locate + - Do not output system defaults by default. + - Support --defaults option. + +Libraries - Detailed Enhancements/Changes/Fixes +----------------------------------------------- +o libfreeipmi + - Support new 'interpret' sub-library. + - Support new 'payload' sub-library and templates. Split off SOL + Payload templates, functions, etc. into this section. + - Support new 'oem' sub-library and templates. + - Support OEM Intel Node Manager extensions. + - 'sel-parse' library now does not require valid ipmi_ctx. + Functions performing ipmi communication will simply error. + - Rework 'intel20' workaround to not allow a non two-part authentication. + - Add DCMI 1.1 support. + - Split workaround flags for inband, IPMI 1.5, and IPMI 2.0 to save bits. + - Improve SDR caching speed for many modern motherboards. + - Support more IPMI templates. + - Fix some API differences from spec. + - Fix some template bugs/typos. + - Rename number of macros for consistency to IPMI spec. +o libipmimonitoring + - Add SEL monitoring support to libipmimonitoring. + - Re-architect to support all defined IPMI sensor types. + - Re-architect to use 'interpret' sub-library. + - Rename a number of functions to differentiate sensor vs. SEL + functions. + - Support percent (i.e. '%') units. + - Support OEM bitmasks and bitmask strings. + - Add bitmask type IPMI_MONITORING_SENSOR_BITMASK_TYPE_OEM. + - Add ipmi_monitoring_read_sensor_bitmask_string(). + - Remove ipmi_monitoring_sensor_bitmask_string(). + - Through libfreeipmi 'interpret' sub-library, support OEM sensor + interpretations. Initial OEM interpretations include: + - Dell Poweredge R610/R710 + - Supermicro X8DTH + - Support IPMI_MONITORING_ERR_SENSOR_CONFIG_FILE_DOES_NOT_EXIST error code. + - Remove unused IPMI_MONITORING_ERR_CONFIG_FILE_PARSE error code. + - Split workaround flags for inband, IPMI 1.5, and IPMI 2.0 to save bits. +o libipmiconsole + - Support serial keepalive to check for loss of serial connection. + - Support libipmiconsole.conf defaults file. + - Support default thread_count of 4 if zero input for thread_count. + +Contributions +------------- +o ganglia_ipmi_sensors.pl + - Updated for new output format and options. + - Support ability to monitor sensor state. + - Support -T and -t options to allow option to monitor only sensor + state or sensor readings. +o ganglia_ipmimonitoring.pl + - Removed. Superseded by ganglia_ipmi_sensors.pl. +o nagios_ipmi_sensors.pl + - New tool to replace nagios_ipmimonitoring.pl. +o nagios_ipmimonitoring.pl + - Removed. Superseded by nagios_ipmi_sensors.pl. + +FreeIPMI 0.8.12 - 10/28/10 +-------------------------- +o In bmc-config, workaround RMCP+ Privilege Level configuration bugs + on HP DL145 servers. +o Fix N/A output corner case in ipmi-sel. +o Support Supermicro X8DTU-6+ motherboard OEM sensors. + +FreeIPMI 0.8.11 - 10/28/10 +-------------------------- +o Support Fujitsu iRMC S1 and iRMC S2 OEM extensions in ipmi-sensors + and ipmi-sel. +o Support --output-oem-event-string in ipmi-sel. +o Other minor documentation/bug fixes. + +FreeIPMI 0.8.10 - 09/28/10 +-------------------------- +o Support many new Inventec OEM extensions in ipmi-oem. +o Support many new Quanta OEM extensions in ipmi-oem. +o Support many new Intel OEM extensions in ipmi-oem. +o Support Intel s5500WB OEM extensions in ipmi-sel. +o Support Intel Node Manager SEL events across Quanta S99Q, Inventec + 5441, Inventec 5442, and Intel S5500WB motherboards. +o Move some OEM extensions from Dell section to Inventec section in + ipmi-oem. Were previously thought to be additions by Dell, but in + fact are not. Backwards compatability supported. +o Support 'assumeio' inband workaround globally. +o Gracefully handle some errors in ipmi-sensors. +o Fix in-band probing corner case. +o Fix various parameter input checks in ipmi-oem. +o Fix help output corner cases in ipmi-oem. +o Other minor documentation/bug fixes. + +FreeIPMI 0.8.9 - 08/20/10 +------------------------- +o In ipmi-sel and ipmimonitoring, workaround Supermicro H8QME SEL + compliance issues in ipmi-sel. +o In ipmi-sel, do not report error if SEL is empty. +o Support Fujitsu 'get-sel-entry-long-text' in ipmi-oem. +o Fix workaround flags bug in ipmimonitoring. +o Revert 'Open Session Privilege Workaround' changes in 0.8.8, were unnecessary. +o Fix daylight savings bug when configuring BMC times in bmc-device. +o Support 'veryslowcommit' workaround for config tools to work around + very slow BMCs. +o Support --enable-rawdumps compile option. +o Support SHA256 in IPMI 2.0. +o Other minor bug fixes. + +FreeIPMI 0.8.8 - 07/20/10 +------------------------- +o Support Supermicro 'get-bmc-services-status' and + 'set-bmc-services-status' in ipmi-oem. +o Support bmc-watchdog 'ignorestateflag' workaround around more issues. +o Support Open Session Privilege Workaround around more related + compliance issues. +o Fix bmc-watchdog --version option. +o Fix legacy workaround corner case in channel detection for Intel nodes. +o Support Quanta reset-to-defaults command in ipmi-oem. +o Modify ipmiconsole protocol to not deactivate SOL protocol is SOL is + already deactivated. +o Modify ipmiconsole protocol to not error out under several malformed + packet scenarios. +o Fix ipmiping/rmcpping command line parsing corner case. +o Minor documentation updates. +o Minor error message output fixes. +o Support --without-random-device configure option for some embedded systems. + +FreeIPMI 0.8.7 - 06/17/10 +------------------------- +o Support Supermicro X8DTG OEM sensors. +o Support Supermicro X8DTG workarounds with 'integritycheckvalue' workaround flag. +o Document workarounds for Intel S5500WBV/Penguin Relion 700 motherboard. +o Map IPMI 2.0 "invalid role" error code to "privilege level cannot be + obtained" for better usability. +o Fix bmc-config Security Keys commit by making some required fields optional. +o Fix bmc-watchdog init script return codes on Suse. +o Support 'ignorestateflag' workaround in bmc-watchdog. +o Fix ipmi-sensors corner case for sensors with percentage units. +o Support 'slowcommit' workaround for config tools to work around slower BMCs. +o Update documentation w/ Supermicro X8DTG issues. +o Update documentation w/ inband troubleshooting. + +FreeIPMI 0.8.6 - 05/24/10 +------------------------- +o Support Quanta S99Q/Dell FS12-TY OEM SEL events. +o In ipmi-oem, support Quanta S99Q/Dell FS12-TY OEM commands. +o Fix --key-pair parsing bug in all config tools. +o Locally support sunbmc driver if bmc_intf.h header not found. +o If Sunbmc driver is not supported, report "Device Not Supported" + instead of "Internal Error". +o Fix error output messages. +o Fix Solaris install issue. +o Other minor fixes. + +FreeIPMI 0.8.5 - 04/29/10 +------------------------- +o Support Inventec 5442/Dell Xanadu III OEM events. +o Workaround Quanta S99Q/Dell FS12-TY Node Busy errors. +o Fix some library error checks limiting bmc-config Bad Password + Threshold configuration. +o Fix some library macro names based on actual OEM names. +o Fix documentation typos. + +FreeIPMI 0.8.4 - 03/05/10 +------------------------- +o Fix IPMI 2.0 sequence number wrap around corner case. +o Fix ipmi-sensors --comma-separated-output corner case. +o In ipmi-sensors, output multiple event strings w/ space delimiter in + simple output. +o In ipmi-oem, support Dell get-active-lom-status. +o In ipmi-oem, support IBM get-led. +o In ipmi-sel, fix possible --assume-system-event-records corner case. +o Fix Posix portability issue w/ time functions. +o Minor documentation updates. + +FreeIPMI 0.8.3 - 02/02/10 +------------------------- +o Support Sun Microsystems OEM SEL events. +o Fix Solaris 64 bit portability bugs. +o In ipmi-oem, fix some Dell options and output given Dell docs + (backwards compatability maintained on options). + - Rename 'get-power-headroom-info' to 'get-power-head-room'. +o Minor bug fixes. +o Minor documentation updates. +o Minor documentation fixes. + +FreeIPMI 0.8.2 - 01/05/10 +------------------------- +o Add fixes to deal with OSes that will report ECONNRESET or + ECONNREFUSED on failed UDP sends. +o In ipmi-sensors, fix output corner case w/ device types and + modifiers. +o In ipmi-sel, tweak column size to fix output for common scenario. +o In ipmi-sel, fix output corner case when --ignore-sdr-cache is + specified. +o In ipmi-dcmi, handle interpretation issue on --set-power-limit. +o In ipmi-dcmi, fix various output bugs. +o In ipmi-dcmi, add more detailed error messages. +o In ipmi-dcmi, fix command line parsing of + --activate-deactivate-power-limit. +o Support --interpret-oem-data option in ipmi-dcmi. +o In ipmi-oem, fix various Fujitsu ambiguities from the official + documentation. +o In ipmi-oem, fix various Dell options and output given Dell docs + (backwards compatability maintained on options). + - Rename 'product-name' to 'platform-model-name' for Dell + get-system-info. + - Dell get-power-info is now get-power-consumption-data + - Dell reset-power-info is now reset-power-consumption-data + - Dell get-power-supply-info is now power-supply-info + - Include additional output in Dell power-supply-info. + - Dell get-instantaneous-power-consumption-info is now + get-instantaneous-power-consumption-data. + - Support instance number for get-instantaneous-power-consumption-data. + - Dell get-average-power-history and get-peak-power-history + collapsed into get-power-consumption-statistics. + - Support 'min' option for Dell get-power-consumption-statistics. +o In ipmi-oem, support additional OEM commands + - Dell get-chassis-identify-status + - Dell get-system-info 'guid', 'chassis-service-tag', + 'chassis-related-service-tag', and 'board-revision' inputs. +o In ipmi-sensors, output Entity ID string with "Container Entity ID" + and "FRU Entity ID" if string available. +o Fix --eliminate corner case when elimination of nodes leads to 0 + hosts specified. +o Report proper error message when underlying crypt library is + incompatible. +o In ipmidetectd, support quick port reuse on server setup. +o Fix hostrange parsing corner case. +o Fix Cygwin portability bugs. +o Fix minor output corner cases on sensor units. +o Fix header file typing inconsistencies. +o Fix header file documentation. +o Various documentation updates and fixes. + +FreeIPMI 0.8.1 - 12/07/09 +------------------------- + +Tools - High Level Description of Changes +----------------------------------------- +o Support ipmi-dcmi, Data Center Management Interface (often referred + to as DCM or DCMI). +o Make output of ipmi-sel, ipmi-sensors, and ipmimonitoring easier to + read and consistent to each other. Under default output, sensors + listed in ipmi-sensors and ipmimonitoring are identical. Legacy + output is supported through the --legacy-output option. +o Rename pef-config to ipmi-pef-config for naming consistency. +o Make output of ipmi-chassis, bmc-info, bmc-device, and info output + of ipmi-sel, ipmi-sensors, and ipmi-pef-config consistent to + each other. +o When querying active/inactive, allowed/unallowed, true/false, + etc. status fields in ipmi-chassis, bmc-info, and bmc-device, output + all fields instead of only the active/allowed/true/etc. fields. +o Support exclusion equivalent options (such as + --exclude-sensor-types) in various tools such as ipmi-sel, + ipmi-sensors, and ipmimonitoring. +o Support sensor unit percentages, rates, and modifiers (e.g. "% + hit", "gigabyte per minute", "pounds / cu in") in most tools. +o Support non-abbreviated units (e.g. "Amps" instead of "A") in most + tools. +o Output IANA Manufacturer Name when appropriate in most tools. +o Support Entity ID based sensor naming through the + --entity-sensor-names option in many tools. +o Support OEM interpreted output through the --interpret-oem-data + option in many tools. +o "Library-ize" much of the functionality originally only included in + tools. +o Re-work libipmimonitoring to return sensor events for all sensors, + not just non-threshold sensors. Resulted in an API change. +o Removed many short options for more consistent command line + "architecture" between tools and to ensure short options are more + consistent between tools. Limit short options to only the most + popular options. Short options have been removed from ipmipower, + ipmiconsole, bmc-watchdog, ipmi-chassis, ipmimonitoring, ipmi-sel, + and ipmi-raw. See details below for specific short options removed. +o Various new options and features added to most tools. +o Various minor feature enhancements. +o Various bug fixes. +o Various documentation updates. + +Tools - Detailed Enhancements/Changes/Fixes +------------------------------------------- +o ipmi-dcmi + - A new tool to support the data center managemen interface + (often referred to as DCM or DCMI). +o ipmi-sel + - Alter output to make fields easier to read, consistent to other + tools, and more consistent to IPMI (legacy output option supported). + - Use short-message event strings instead of long ones for readability. + - Make output of ipmi-chassis, bmc-info, bmc-device, and info output + of ipmi-sel, ipmi-sensors, and ipmi-pef-config consistent to + each other. + - Support --verbose option to offer verbose and very verbose SEL + event information. + - Support --display and --display-range options. + - Support --exclude-display and --exclude-display-range options. + - Support --tail option. + - Support --system-event-only and --oem-event-only options. + - Support --non-abbreviated-units option to output no abbreviated + units (e.g. "Amps" instead of "A"). + - Support --entity-sensor-names option. + - Support --no-sensor-type-output option. + - Support --interpret-oem-data option. + - Support Inventec 5441/Dell Xanadu2 OEM SEL records. + - Support Dell Poweredge R610 OEM SEL records. + - Support Dell Poweredge R710 OEM SEL records. + - Support --comma-separated-output option. + - Support --no-header-output option. + - Rename --delete-all to --clear for consistency to IPMI spec. + Backwards compatability maintained. + - Output manufacturer name with "Manufacturer ID" if name available. + - Support sensor unit percentages, rates and modifiers (e.g. "% + hit", "gigabyte per minute", "pounds / cu in"). + - Output allocation information with --info if available. + - Output hex code more often if translation to string not available. + - Output OEM hex codes in consistent format. + - Re-work to use new libfreeipmi sel-parse sub library. + - Remove legacy option to dump hex output to optional filename. + - Removed the following short options (long options remain). + - 'c' (--delete-all) + - 'd' (--delete) + - 'R' (--delete-range) + - 'x' (--hex-dump) + - Support additional options in FreeIPMI config file. +o ipmi-sensors + - Alter output to make fields easier to read, consistent to other + tools, and more consistent to IPMI (legacy output option supported). + - Make output of ipmi-chassis, bmc-info, bmc-device, and info output + of ipmi-sel, ipmi-sensors, and ipmi-pef-config consistent to + each other. + - For consistency to other tools, outputs of "NA" are now "N/A". + - Events are now surrounded by single quotes (') instead of square + brackets ([]). + - Sensors that can't be read or don't exist (i.e. "N/A", "Unknown") are + now *not* surrounded by single quotes (') or square brackets ([]). + - Software sensors output "N/A" instead of "Unknown" now. + - Globally rename "Group" to "Sensor Type" for correctness to IPMI + spec. Leads to rename of --groups option to --sensor-types and + --list-groups to --list-sensor-types. Backwards compatability + maintained. + - Support --non-abbreviated-units option to output no abbreviated + units (e.g. "Amps" instead of "A"). + - Rename --sensors option to --record-ids. Maintain old options for + backwards compatability. + - Support --exclude-record-ids option. + - Support --exclude-sensor-types option. + - Support "all" and "none" inputs for sensor-types and record-ids + options. + - Support --comma-separated-output option. + - Support --no-header-output option. + - Support --shared-sensors option. + - Support --entity-sensor-names option. + - Support --no-sensor-type-output option. + - Support --interpret-oem-data option. + - Support Dell Poweredge R610 OEM sensors. + - Support Dell Poweredge R710 OEM sensors. + - Support Supermicro X8DTH OEM sensors. + - Do not output Sensor Reading for discrete sensors under verbose + mode (because the result is always "N/A"). + - Do not output SDR event records type under verbose output, only in very + verbose output. + - Support sensor unit percentages, rates and modifiers (e.g. "% + hit", "gigabyte per minute", "pounds / cu in"). + - Output allocation information with --sdr-info if available. + - Output Entity ID under verbose instead of very verbose mode. + - Under very verbose output, "Sensor Status" is now "Sensor Event". + - Under very verbose output, if multiple sensor states are + triggered, always output a prefix of "Sensor Event". + - Under very verbose output, always output a prefix of "Assertion + Event Enabled" or "Deassertion Event Enabled" for assertion and + deassertion event listings (changed from a single "Assertion + Events Enabled" or "Deassertion Events Enabled"). + - Under verbose output, do not output Nominal reading, Normal Min., + or Normal Max. if SDR flags do not indicate the values are + specified. + - Under very verbose output, output Sensor Direction. + - Under very verbose output, output Tolerance. + - Under very verbose output, output Resolution. + - Under very verbose output, output Accuracy. + - Under very verbose output, output sensor sharing information. + - Under very verbose output, output entity instance type. + - Under very verbose output, output OEM bytes in generic device + locator records. + - Output record-type names in addition to record type hex code in + very-verbose output. + - Output device-type names and device-modifiers in addition to hex + codes in very-verbose output. + - Under very verbose output, default to abbreviated units. + - Output linearization in hex in verbose outputs. + - Output linearization name in verbose outputs. + - Output analog data format in hex in verbose outputs. + - Output analog data format name in verbose outputs. + - Output manufacturer name with "Manufacturer ID" if name available. + - Output Entity ID string with "Entity ID" if string available. + - Output hex code of sensor type in addition to type name in + very-verbose output. + - Re-work to use new libfreeipmi sensor-read sub library. + - Support additional options in FreeIPMI config file. +o ipmimonitoring + - Alter output to make fields easier to read, consistent to other + tools, and more consistent to IPMI (legacy output option supported). + - "Monitoring Status" is now listed as "Sensor State" for + consistency to libipmimonitoring library definition. + - Sensor events are now output for all sensors. Sensor readings are + only output appropriately for non-discrete sensors. + - Rename a number of config fields for overall FreeIPMI consistency, + may break backwards compatability. + - Globally rename "Group" to "Sensor Type" for correctness to IPMI + spec. Leads to rename of --groups option to --sensor-types and + --list-groups to --list-sensor-types. Backwards compatability + maintained. + - With default output, output same sensors as listed in + ipmi-sensors, including some sensors that can't be interpreted. + - Sensors that can't be read or don't exist (i.e. "N/A", "Unknown") + are now *not* surrounded by single quotes ('). + - A sensor event of "NONE" is now output instead of "OK" if no + sensor events are indicated. + - Support --exclude-record-ids option. + - Support --exclude-sensor-types option. + - Support "all" and "none" inputs for sensor-types and record-ids + options. + - Support --ignore-non-interpretable-sensors option. + - Rename --sensors option to --record-ids. Maintain old options for + backwards compatability. + - Remove --regenerate-sdr-cache legacy option due to conflict with + newer option. + - Support --non-abbreviated-units option to output no abbreviated + units (e.g. "Amps" instead of "A"). + - Support --comma-separated-output option. + - Support --no-header-output option. + - Support --entity-sensor-names option. + - Support --no-sensor-type-output option. + - Support --interpret-oem-data option. + - Support --shared-sensors option. + - Utilize libipmimonitoring callback routines to make sensors output + as they are read, rather than just at the end. This removes the + impression that the tool "hangs" on start. + - Fix inconsistency in output, header output of "Record_ID" now + "Record ID". + - Support additional options in FreeIPMI config file. + - Removed the following short options (long options remain). + - 'c' (legacy --cache-dir) +o ipmi-fru + - Output hex with 'h' suffix instead of '0x' prefix for consistency to + other FreeIPMI tools. + - Output manufacturer name with "Manufacturer ID" if name available. + - Do not output string "Info Area", the text is redundant. + - Very verbose support removed. + - Language codes now output under verbose mode. Language code + output as string instead of hex code. + - Slightly alter Base/Extended Compatibility Code Mask output for + common case. + - Support --interpret-oem-data option. + - Various output changes under error conditions. + - Re-work to use new libfreeipmi fru-parse sub library. + - Check for valid device ID inputs. + - Support additional options in FreeIPMI config file. +o ipmipower + - Removed the following short options (long options remain). + - 'R' (legacy --ipmi-version) + - 'j' (--pulse) + - 'm' (--soft) + - 'g' (--on-if-off) + - 'A' (--wait-until-off) + - 'G' (--wait-until-on) + - 't' (legacy --session-timeout) + - 'y' (legacy --retransmission-timeout) + - 'q' (--retransmission--wait-timeout) + - 'b' (--retransmission-backoff-count) + - 'i' (--ping-interval) + - 'z' (--ping-timeout) + - 'v' (--ping-packet-count) + - 'w' (--ping-percent) + - 'x' (--ping-consec-count) +o ipmiconsole + - Removed the following short options (long options remain). + - 'c' (legacy --cipher-suite-id, 'I' support remains) +o bmc-device + - Make output of ipmi-chassis, bmc-info, bmc-device, and info output + of ipmi-sel, ipmi-sensors, and ipmi-pef-config consistent to + each other. + - Indicate hex code output consistently with 'h' suffix instead of + '0x' prefix. + - Support --get-bmc-global-eanbles, --set-system-firmware-version, + --set-system-name, --set-primary-operating-system-name, and + --set-operating-system-name. +o bmc-info + - When querying active/inactive, allowed/unallowed, true/false, + etc. status fields output all fields instead of only the + active/allowed/true/etc. fields. + - Make output of ipmi-chassis, bmc-info, bmc-device, and info output + of ipmi-sel, ipmi-sensors, and ipmi-pef-config consistent to + each other. + - Output GUID by default. + - Output system info by default. + - Rename --guid to --get-device-guid. Legacy option still supported. + - When outputting only the GUID, don't prefix "GUID : " in the + output. + - Support --get-system-info. + - Support --get-channel-info. + - Support --get-device-id. + - Support --interpret-oem-data option. Do not automatically assume + OEM data is correct and output by default. + - Output manufacturer name with "Manufacturer ID" if name available. +o ipmi-chassis + - Make output of ipmi-chassis, bmc-info, bmc-device, and info output + of ipmi-sel, ipmi-sensors, and ipmi-pef-config consistent to + each other. + - When querying active/inactive, allowed/unallowed, true/false, + etc. status fields output all fields instead of only the + active/allowed/true/etc. fields. + - Output some text more consistently to IPMI specification. + - Rename --get-status option to --get-chassis-status. Legacy option + still supported. + - Rename --get-capabilities option to --get-chassis-capabilities. + Legacy option still supported. + - Check interval input ranges. + - Removed the following short options (long options remain). + - 'c' (--get-chassis-capabilities) + - 's' (--get-chassis-status) + - 'O' (--chassis-control) + - 'i' (--chassis-identify) + - 'X' (legacy --set-power-restore-policy) + - 'S' (legacy --set-power-cycle-interval) + - 'R' (--get-system-restart-cause) + - 'H' (--get-power-on-hours-counter) + - 'G' (legacy --get-boot-flags) + - 'L' (legacy --set-boot-flags) +o ipmi-raw + - Support --channel-number and --slave-address for command bridging. + - Removed the following short options (long options remain). + - 'f' (--file) +o bmc-config + - Collapse "Password20" field into "Password" field so "Password" + supports both IPMI 1.5 and IPMI 2.0 length passwords. + "Password20" still supported as legacy support. + - Update to include new BMC Password Threshold configuration. + - Support ability to report read only field error. + - Support ability to report not supported field error. + - Support additional options in FreeIPMI config file. +o ipmi-chassis-config + - Update to include new configurable boot options in IPMI errata. + - Update to include new device instance selector in IPMI errata. + - Support ability to report read only field error. + - Support ability to report not supported field error. + - Support additional options in FreeIPMI config file. +o ipmi-sensors-config + - Support sensor unit percentages, rates and modifiers (e.g. "% + hit", "gigabyte per minute", "pounds / cu in"). + - Support ability to report read only field error. + - Support ability to report not supported field error. + - Support additional options in FreeIPMI config file. +o ipmi-pef-config/pef-config + - Rename pef-config to ipmi-pef-config for consistency to other + tools. Keep backwards compatability with symlinks and such. + - Make output of ipmi-chassis, bmc-info, bmc-device, and info output + of ipmi-sel, ipmi-sensors, and ipmi-pef-config consistent to + each other. + - Support workaround for Alert Policy config on Fujitsu motherboards. + - Support ability to report read only field error. + - Support ability to report not supported field error. + - Support additional options in FreeIPMI config file. +o ipmi-oem + - Support common 'list' command to all OEM IDs. + - If user does not input OEM ID, list OEM IDs and Commands. + - If user does not input OEM command, list OEM commands for a + particular OEM ID. + - Add additional Dell OEM commands. + - Add additional Inventec OEM commands. + - Add additional Sun OEM commands. + - Rename "get/set-nic-status" as "get/set-nic-mode" to meet vendor + doc naming. Backwards compatability included. +o bmc-watchdog + - Removed the following short options. + - 'h' (legacy -?) + - 'H' (legacy -?) +o Make init scripts LSB compliant. +o Various documentation updates. + +Libraries +--------- +o libfreeipmi + - Add new fru-parse sub library. + - Add new sdr-parse sub library. + - Add new sel-parse sub library. + - Add new sensor-read sub library. + - Add dcmi support. + - The locate sub library now uses a context style API for + consistency to the rest of libfreeipmi. + - Re-architect all 'unassemble' functions to return 1 if packet + fully and correctly parsed, 0 if not, and -1 on error. + - Support SDR sensor sharing in sdr-cache library. + - Collapse all BAD_COMPLETION_CODE variant errors into single + BAD_COMPLETION_CODE error. + - New 'ipmi_ctx_find_inband' call to find an inband device. + - New freeipmi/template/ files to document fiid fields for fiid + templates. + - New error code IPMI_ERR_NOT_FOUND in libfreeipmi API sub library + supported. + - Add a number of 'errormsg' functions so common code of + foo_strerror(foo_errnum(ctx)) can be condensed to foo_errormsg(ctx). + - Add 'ipmb' raw functions. + - Various API cleanup. + - Return int instead of int8_t or int32_t consistently. + - Pass unsigned int instead of uint32_t for buffer lengths. + - Fix function naming inconsistencies. + - Fix API inconsistencies. + - Appropriately indicate const pointers in parameters. + - Make buffers void * instead of uint8_t * consistently. + - Various fixes to maintain consistency between sub library APIs. + - Add IANA Enterprise Numbers definitions. + - Add Entity IDs definitions. + - Remove IPMI_ERR_LIBRARY_ERROR errnum. Use IPMI_ERR_INTERNAL_ERROR + errnum instead. + - IPMI_*CTX_ERR* renamed to IPMI_*ERR* for consistency throughout. + - The fiid sub library now includes wrapper functions for a number of + fiid library functions. + - Suppot FIID_FIELD_MAKES_PACKET_SUFFICIENT fiid field flags and new + functions. + - Support ipmi_sensor_units_string utility function to support + units, percentages, rates, and units modifiers (e.g. "% hit", + "gigabyte per minute", "pounds / cu in"). + - Properly handle int/unsigned int potential overflow conditions. + - Fix several sensor units abbreviations. + - More detailed KCS and SSIF debug output with header information. + - Always output debug key fields (e.g. 'raw_data' from ipmi-raw) in + byte array format instead of an integer even if the field length + is < 64 bits. + - Update various macros, fields, etc. for IPMI errata updates. + - Support 'session_handle' in close session packets (IPMI errata + 387). Results in API change for all close session packet calls. + - Support 'device instance locator' in chassis boot configuration. + Results in API change. + - Support 'change_bits' flag in Set User Access. Results in API + change. + - Remove duplicate sensor number checks in sdr-cache sub library, + which was invalid b/c of potential duplicate generator ids. + - Collapse v1.5 and v2.0 "Get Authentication Capabilities" + templates, functions, etc. into one. Results in API change. + - Collapse v1.5 and v2.0 "Set User Password" templates, functions, + etc. into one. Results in API change. +o libipmimonitoring + - Support callback functions in API to monitor sensors as they + are read/analyzed instead of after all sensors have been + read/analyzed. + - Support new function ipmi_monitoring_read_sensor_bitmask() to read + bitmask of each sensor. + - Add IPMI_MONITORING_SENSOR_BITMASK_TYPE_THRESHOLD bitmask type. + - Remove IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER16_BITMASK + sensor reading type. Every sensor technically has a bitmask, but + not all sensors have a sensor reading. + - Rename IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_UNREADABLE_SENSORS + to IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_NON_INTERPRETABLE_SENSORS. + Legacy macro still supported. + - Add IPMI_MONITORING_SENSOR_READING_FLAGS_INTERPRET_OEM_DATA flag. + - Add IPMI_MONITORING_SENSOR_READING_FLAGS_SHARED_SENSORS flag. + - Rename a number of macros for overall FreeIPMI consistency, may + break backwards compatability. + - Globally rename "Group" to "Sensor Type" for correctness to IPMI spec. + - Update various macros, fields, config, etc. for IPMI errata updates. + - Variety of API functions reworked or renamed for new functionality. Will + require recompile and rework in existing code. + +Contributions +------------- +o Update Ganglia and Nagios plugins for changes in ipmi-sensors and +ipmimonitoring. + +FreeIPMI 0.7.16 - 11/30/09 +-------------------------- +o In ipmi-oem, add additional Fujitsu OEM support. +o Fix portability to kfreebsd. + +FreeIPMI 0.7.15 - 11/19/09 +-------------------------- +o Add "solstatus" workaround to ipmiconsole. +o Support hex codes to event filter sensor type inputs in pef-config. +o In ipmiconsole, handle corner cases surrounding non-default SOL + ports more cleanly. +o In ipmi-oem, support Fujitsu OEM commands. +o Document workarounds for additional motherboards. + +FreeIPMI 0.7.14 - 10/16/09 +-------------------------- +o Fix consolidated-output corner cases. + +FreeIPMI 0.7.13 - 09/30/09 +-------------------------- +o Support --platform-event in bmc-device. +o Support read/clear eeprom in ipmi-oem. +o Fix corner case in system firmware progress error data2 output. +o Fix documentation typos. + +FreeIPMI 0.7.12 - 09/08/09 +-------------------------- +o In bmc-config, fix SOL config corner case. Assume LAN channel if + SOL channel cannot be read. +o In bmc-config, configure Password before Enable_User by default for + security. +o Add SDR reading/loading workarounds for Fujitsu RX 100 motherboards. +o Add --assume-system-event-records to ipmi-sel to workaround HP DL + 380 G5 motherboards. +o In bmc-config, add workarounds for Dell Poweredge servers. +o In ipmi-oem, support additional Dell Poweredge OEM commands. +o In ipmi-oem, support additional Supermicro OEM commands. +o Document workarounds necessary for newer Supermicro motherboards. +o Fix several error output corner cases. + +FreeIPMI 0.7.11 - 07/28/09 +-------------------------- +o In ipmi-fru, fix FRU output corner cases. +o In ipmi-oem, support Dell poweredge, Dell Xanadu2, and new Inventec + OEM commands. +o In ipmi-sensors and ipmimonitoring, continue reading sensors after a + "request parameter not supported" error. +o In libfreeipmi, support Get System Information parameters command. +o Support --without-encryption build option . +o Do not require execute permissions on driver devices. +o Fix portability for some embedded systems. + +FreeIPMI 0.7.10 - 06/16/09 +-------------------------- +o In all tools, properly deal with workaround flags when specifying + different devices than what workaround flags are intended for. +o In bmc-config, fix bug setting volatile vs. non-volatile settings. +o Fix in-band probing priority ordering to fix issues with machines + that support multiple drivers. +o In ipmi-sensors and ipmimonitoring, continue reading sensors after a + "command response cannot be provided" error. +o Add additional workaround handling into Sun 2.0 workaround. +o In ipmimonitoring, fix sunbmc driver interface bug. +o In ipmiconsole, consider IPMICONSOLE_ERR_BMC_IMPLEMENTATION a + non-fatal error. +o Update workaround documentation with additional motherboards. + +FreeIPMI 0.7.9 - 05/15/09 +------------------------- +o In bmc-config, fix diff check for "Password20" field. +o In ipmi-fru, fix various output typoes and output errors. + - Output "Product Name" instead of "Product Product Name". + - Output "FRU Chassis Type" instead of "Chassis Type". + - Output "Version" instead of "Version Type". + - Fix invalid DC Output and DC Load voltage outputs. mV multiplier + of 10 was previously not factored in. +o In ipmi-chassis, fix chassis-identify parameter parsing bug. +o In ipmi-chassis, fix output corner cases. +o In ipmipower, support identify-on, identify-off, identify-status in + interactive mode. +o In ipmipower, fix closing session corner case bug. +o Update ipmi-oem manpage with extra information. +o Fix bmc-device --get-mca-auxiliary-log-status bug. +o Fix debug output corner case in ipmi-oem. +o Fix glibc 2.8 portability bug with ipmi-raw. +o Fix freeipmi.conf comment typos. + +FreeIPMI 0.7.8 - 04/10/09 +------------------------- +o Support and document Inventec 5441 workarounds. Most notably, added + "opensesspriv" workaround to tools and OPEN_SESSION_PRIVILEGE + workaround to libraries. +o In ipmi-fru, do not fail on invalid chassis info area type, output + that type is unknown and continue to parse area. +o In bmc-info, output device ID, manufacturer ID, and product ID as + integers, not hex. +o Fix glibc 2.8 compile bug. + +FreeIPMI 0.7.7 - 04/03/09 +------------------------- +o Support inventec get-nic-status, set-nic-status, get-mac-address, + and set-mac-address OEM commands in ipmi-oem. +o Make default privilege level ADMIN for ipmi-oem. +o In bmc-info, output both chars of firmware minor revision (i.e. 1.01 + instead of 1.1). +o Fix libfreeipmi field validity checks for sensor units. +o Support "oem_reserved" group input to ipmi-sensors. +o Fix Solaris porting bugs. +o Fix potential config file bug by clearing out stack data + appropriatly. +o Support build option (--with-dont-check-for-root) to not have tools + check for root for in-band IPMI communication. Permission checks are + subsequently dealt with at underlying system calls and + drivers. (i.e. open() on /dev/ipmi0). +o Update bmc-config manpage with Dell specific workaround. +o Remove "experimental" note from SUNBMC driver documentation. + +FreeIPMI 0.7.6 - 02/25/09 +------------------------- +o In ipmimonitoring, output sensor group names consistently to other + tools: + "Cable Interconnect" -> "Cable/Interconnect" + "Slot Connector" -> "Slot/Connector" + "Module Board" -> "Module/Board" +o In ipmi-sensors, don't output threshold related fields for + non-threshold sensors in verbose modes. +o In bmc-config, ipmi-chassis-config, ipmi-sensors, + ipmi-sensors-config, ipmimonitoring, and pef-config, support + --config-file option. +o In ipmi-chassis-config, fix typo of "FLOOPY" to "FLOPPY". +o In ipmi-sensors-config, fix event bit bug in which assertion events + were configured for deassertion events. +o Fix bmc-watchdog init script portability to Suse. +o Update ipmi-sel manpage. + +FreeIPMI 0.7.5 - 01/12/09 +------------------------- +o In ipmi-fru, do not output error messages for FRU entries that do +not exist on a motherboard. +o In ipmi-sel, fix SEL message output corner case. +o In ipmi-sel, ipmi-sensors, and ipmimonitoring, check that inputted +record IDs are not illegal record ID values. +o In bmc-config, fix "Enable_User" checkout corner case bug. +o Fix/clarify minor documentation typos/wording. + +FreeIPMI 0.7.4 - 12/15/08 +------------------------- +o Change -I short option (for --chassis-identify) to -i in + ipmi-chassis to avoid conflicting short option with -I (for + --cipher-suite-id). +o Support output of "" in bmc-config for fields +that require a username to be configured before data may be +read/written. +o Support supermicro reset-intrusion OEM ID and command in ipmi-oem. +o Support --list option in ipmi-oem. +o Output checksum errors by default in ipmi-fru. +o Fix ipmipower/ipmiconsole corner case bugs for IPMI 2.0 with certain + cipher suite IDs. +o Fix bmc-config Enable_User workaround bug. +o Fix Intel IPMI 2.0 workarounds in all tools/libraries. +o Fix state machine cycle corner case in ipmiconsole/libipmiconsole. +o Fix Suse build issue in spec file. +o Fix glibc 2.8 build issues. +o Fix/clarify minor documentation typos/wording. + +FreeIPMI 0.7.3 - 12/01/08 +------------------------- +o Add workaround into ipmi-sensors and ipmi-sensors-config for +motherboards that do not support the Get Sensor Thresholds command. +o Output 'NA' on sensors in ipmi-sensors and ipmimonitoring that have +sensor scanning disabled. In libipmimonitoring, appropriately handle +sensors with sensor scanning disabled and return 'unreadable sensor'. +o Add the following ipmimonitoring/libipmimonitoring interpretations. + Power Unit Device Installation + Fan Transition Availability + Power Supply State + Drive Slot State + Drive Slot Predictive Failure + System ACPI Power State + Button Switch + Button Switch State + Entity Presence Device Install + Processor State +o Fix typos in macro names and string names for sensor types to +accurately coincide with IPMI specification. May lead to slightly +different inputs/outputs in ipmi-sensors and pef-config. Altered +strings include: + "Platform Chassis Intrusion" -> "Physical Security" + "Platform Security Violation" -> "Platform Security Violation Attempt" + "Post Memory Resize" -> "POST Memory Resize" + "System Firmware" -> "System Firmware Progress" + "Button" -> "Button/Switch" + "Microcontroller" -> "Microcontroller/Coprocessor" + "Cable Interconnect" -> "Cable/Interconnect" + "Slot Connector" -> "Slot/Connector" + "ACPI Power State" -> "System ACPI Power State" + "Monitor Asic" -> "Monitor ASIC/IC" +o Fix ipmi-sensors non-recoverable threshold output corner case. +o Fix ipmi-sensors group selection corner cases. +o Fix ipmiconsole workarounds command line parse corner case. +o Fix ipmi-sel/libfreeipmi event data output corner cases. +o Use a reservation ID on all SEL entry operations to workaround +some manufacturer compliance issues. +o Fix config option names in ipmimonitoring/libipmimonitoring. +o Add forgotten bitmask flags in libipmimonitoring. +o In ipmi-sensors default output, output non-recoverable or +non-critical thresholds if both non-critical thresholds are not +available. +o Remove unused libfreeipmi workaround flags/macros. Contain tool +specific workaround flags within tools. +o Optionally output auxiliary information in bmc-info. +o Add ipmi_monitoring_sensors.conf.5 manpage. +o Various documentation updates. + +FreeIPMI 0.7.2 - 11/18/08 +------------------------- +o Add Sensor Owner ID output to verbose and very verbose output in +ipmi-sensors. Alter previous ipmi-sensors output of slave address and +system software id to deal with slave address/system software ID +vs. sensor owner ID semantics. +o Fix ipmi-raw cmdline parsing corner case. +o Fix/clarify documentation. + +FreeIPMI 0.7.1 - 11/07/08 +------------------------- + +Tools - New Significant Additions/Features +------------------------------------------ +o Add new tool ipmi-chassis-config for chassis configuration, such as + boot device and power restore policy configuration. +o Add new tool bmc-device to support advanced BMC commands including + cold reset, warm reset, setting BMC times, and more. +o Support FreeIPMI configuration file for most tools (bmc-config, + bmc-info, bmc-device, bmc-watchdog, ipmi-chassis, + ipmi-chassis-config, ipmi-fru, ipmi-oem, ipmi-raw, ipmi-sel, + ipmi-sensors, ipmi-sensors-config, ipmiconsole, ipmimonitoring, + ipmipower, pef-config) to avoid typing common options on the command + line. See freeipmi.conf(5) for more information. +o Add hostrange support to all config tools (bmc-config, pef-config, + ipmi-sensors-config, ipmi-chassis-config) to support parallel + configuration on a cluster. +o Support --bridge-sensors in ipmi-sensors and ipmimonitoring to + access non-BMC owned sensors (experimental). +o Support --sensor-config-file on ipmimonitoring to support + alternate interpretation rules. +o Add additional "connection timeout" error message to tools to + differentiate between no IPMI communication at all vs. session + timeout in the middle of a command's operations. +o Support hysteresis and sensor event configuration in + ipmi-sensors-config. +o Support additional sensor monitoring interpretations in ipmimonitoring. +o Output additional sensor information in ipmi-sensors under verbose + modes, such as lun, channel and event enable information. +o Support --always-prefix option in most tools for easier scripting. +o Support --sdr-cache-recreate in all SDR related tools for easier + scripting. +o Support --guid option in bmc-info to retrieve global ID (guid). +o Support "SUNBMC" in-band driver for Solaris (experimental). Please +see README.sunbmc for compilation instructions. + +Tools - Enhancements/Changes/Bug Fixes +-------------------------------------- +o Global in most tools + - Rename --no-probing option to --disable-auto-probe for consistency + in FreeIPMI. Backwards compatability maintained. +o Global in config tools (bmc-config, pef-config, ipmi-sensors-config) + - More carefully check for fatal vs. non-fatal errors when + performing configuration. This change may result in slight + behavior differences. For example, a session-timeout may have + previously been considered a non-fatal error, making the config + tools continue on attempting more configuration activities. Now, + it would error out on the first session-timeout indication. +o ipmi-sensors + - Check variety of corner cases such as whether sensor readings, + hysteresis, thresholds, etc. are even available before reading + them. Some sensors may output slightly different information than + before. For example, suppose a power supply sensor exists for a + power supply that is not installed. If the sensor is enabled on + the motherboard, ipmi-sensors would likely report "OK". If the + sensor is disabled on the motherboard, ipmi-sensors would now likely + report "NA". Previously, "OK" would have been reported under both + conditions. + - Output "NA" for sensors whose slave addresses are not the BMC. + - Output "Unknown" for sensors whose readings cannot be determined. + - Output multiple sensor status messages on separate lines, rather + than all on one line under verbose modes. + - Output "Unrecognized State" if the sensor specifies a state that is + unrecognized. + - Busy sensors are now output with "Unknown" instead of causing + errors. + - When fields are not relevant, do not output as much information in + verbose and very verbose mode. For example, don't output + hysteresis or threshold information for power supply sensors. + - Alter some output ordering for consistency to IPMI spec. + - Shorten/adjust some state strings for readability under + non-verbose output. For example, "Fully Redundant (formerly + "Redundancy Regained")" is now just "Fully Redundant". + - Change default privilege from user to operator. +o ipmimonitoring + - Support -v verbose option to output sensors readings that aren't + readable. + - Check corner case for sensor readability. May lead to slightly + different output in ipmimonitoring. For example, suppose a power + supply sensor exists for a power supply that is not installed. If + the sensor is enabled on the motherboard, ipmimonitoring would + normally report "Nominal". If the sensor is disabled on the motherboard, + ipmimonitoring would normally not output a sensor state (it would + output "N/A" under verbose mode). Previously, "Nominal" would have + been reported under both conditions. + - Consider sensors without BMC slave addresses unreadable. May + result in sensors not being output like before. + - Busy sensors may result in sensors not being output rather than + causing errors. + - Output "Unrecognized State" if the sensor specifies a state that is + unrecognized. + - Output multiple bitmask strings if multiple bits are set. + - Output "OK", similarly to ipmi-sensors when no bitmask strings are + returned from a sensor reading. + - Shorten/adjust some state strings for readability. For example, + "Fully Redundant (formerly "Redundancy Regained")" is now just + "Fully Redundant". + - Change default privilege from user to operator. +o ipmipower + - Removed many early experimental features from ipmipower so + ipmipower is more like other tools. Removed ipmi-version, + cipher-suite-id, privilege-level, and authentication-type auto + discovery. Removed ability to enable/disable a number of experimental + features. + - Changed --config to --config-file in ipmipower for consistency to + other tools. Backwards compatability maintiained. + - Replace --ipmi-version option with --driver-type. Backwards + compatability maintained. + - Removed hostname config file option. Require users to always input + atleast hostname. + - Changed primary config file to /etc/freeipmi.conf. Legacy config + file searched for and still supported. + - Prefixed config file options with 'ipmipower' for consistency to + new global FreeIPMI config file. Old options still supported. +o bmc-config + - Support configuration of UserN:Lan_Session_Limit and + UserN:Serial_Session_Limit (where N is a user id number). + - By default, do not output unsupported authentication type enables + when checking out the Lan_Conf_Auth section. Output unsupported + authentication type enables under verbose output. + - By default, do not output serial configuration parameters on checkout. + Output serial configuration under verbose output. + - Remove checkout of "Misc" section and "Power_Restore_Policy" + field, which is now handled by ipmi-chassis-config. Backwards + compatability commit and diff maintained. + - Remove case sensitivity when checking a number of fields. +o ipmi-chassis + - Alter ipmi-chassis output to print "unknown" when field is not known. + - Alter some ipmi-chassis output text to be more consistent to IPMI + spec. + - Hide configuration options now supported in ipmi-chassis-config. +o ipmi-fru + - Output FRU device names along with IDs in ipmi-fru. + - Reduce excessive newline outputs in ipmi-fru. + - Output more information by default. Change the output of verbose + vs. very verbose output. +o ipmi-sel + - Change default privilege from user to operator. + - Search of SDR records by sensor number and sensor owner id. + - Support SEL Event Record debug dumping. +o ipmiconsole + - Support --session-timeout and --retransmission-timeout options. + - Removed -C short option for consistency to other tools. + - Removed hostname config file option. Require users to always input + atleast hostname. + - Changed primary config file to /etc/freeipmi.conf. Legacy config + file searched for and still supported. + - Prefixed config file options with 'ipmiconsole' for consistency to + new global FreeIPMI config file. Old options still supported. +o bmc-watchdog + - Remove legacy 'v' option for version. + +Libraries +--------- +o libfreeipmi + - Add additional IPMI commands. + - Support new "connection timeout" error message. + - Support new "command invalid for selected interface" error message. + - Support ipmb bridging in KCS, OPENIPMI, LAN, and LAN_2_0 interfaces. + - Check for additional corner cases in fiid API. + - Support SUNBMC driver. +o libipmimonitoring + - Support new "connection timeout" error message. + - Handle variety of corner case situations better, such as dealing + with sensor readings that are unavailable. + - Provide more information to user on unreadable/uninterpretable + sensor readings. + - Support SUNBMC driver. + - Provide new IPMI_MONITORING_SENSOR_READING_FLAGS_BRIDGE_SENSORS flag. + - Support several new sensor interpretation rules. + - Return short message strings in ipmi_monitoring_bitmask_string(). +o Various naming consistency fixes to IPMI specification. +o Various minor bug fixes. + +Contributions +------------- +o Ganglia plugin scripts ganglia_ipmimonitoring.pl and ganglia_ipmi_sensors.pl. +o Nagios plugin script nagios_ipmimonitoring.pl. + +FreeIPMI 0.6.10 - 10/13/08 +-------------------------- +o Fix ipmi-fru FRU parsing corner case. + +FreeIPMI 0.6.9 - 09/26/08 +------------------------- +o Handle ipmiconsole/libipmiconsole non-default port corner cases. +o Fix --debug portability. +o Document new workarounds. + +FreeIPMI 0.6.8 - 09/22/08 +------------------------- +o Handle "invalid parameters" error codes in ipmi-sensors and +ipmimonitoring/libipmimonitoring to work around some motherboards. +o Fix bug in ipmimonitoring sensors configuration file parsing. +o Fix corner case in libipmimonitoring sdr-cache filename creation. +o Fix config tool exit code corner case. + +FreeIPMI 0.6.7 - 09/11/08 +------------------------- +o Handle "illegal sensor" error code in ipmi-sensors and +ipmimonitoring/libipmimonitoring. + +FreeIPMI 0.6.6 - 08/26/08 +------------------------- +o Output NA/Unknown for non-BMC owned sensors in ipmi-sensors. +o Do not output readings for non-BMC owned sensors in ipmimonitoring. +o libfreeipmi/ipmi-chassis fix invalid console redirection input check. + +FreeIPMI 0.6.5 - 08/02/08 +------------------------- +o Fix ipmimonitoring group assignment bug. +o Fix several invalid error outputs. +o Fix several minor bugs. +o Minor documentation cleanup. + +FreeIPMI 0.6.4 - 06/04/08 +------------------------- +o Do not exit ipmi-sensors or ipmimonitoring for sensors that return + "sensor data not present" errors. Output "NA", "Unknown", skip sensor + output, etc. as needed. +o Fix bug in ipmi-sensors and ipmimonitoring when dealing with + optional sensor state assertions after a sensor read. +o Fix bug in ipmi-sensors and ipmimonitoring when dealing with + reserved fields in sensor state assertions after a sensor read. +o Add workaround in ipmi-sensors and ipmimonitoring when dealing with + sensors that improperly report sensor assertions after a sensor read + (i.e. no assertions set when required, or invalid assertions set). +o Fix minor corner cases. +o Fix manpage typos. + +FreeIPMI 0.6.3 - 05/27/08 +------------------------- +o Fix --eliminate option in ipmipower. +o Fix --quiet-cache option to work with flushing cache. +o Fix ipmi-sensors-config flush cache corner case. +o Fix ipmi-fru output corner case. +o Fix workarounds parsing bug. +o Fix/clarify various manpage text. + +FreeIPMI 0.6.2 - 05/15/08 +------------------------- +o Fix ipmi-fru output corner cases. +o Fix ipmi-chassis boot-device configuration bug. +o Fix ipmiconsole config file parsing corner case. +o Fix ipmipower max password length corner case check. +o Fix command line parsing error messages. +o Remove excess error output messages. +o Add missing manpage option listings. + +FreeIPMI 0.6.1 - 04/27/08 +------------------------- +For Users +--------- +o Add new tool ipmi-sensors-config. +o Add new tool ipmi-oem. +o Support --groups (plural) for multiple groups listing in + ipmi-sensors. Older --group (non-plural) option maintained for + backwards compatability. +o Support --list-groups and --flush in ipmimonitoring for consistency + to ipmi-sensors. +o Change --cache-dir to --sdr-cache-dir in ipmimonitoring for consistency + to ipmi-sensors. +o Change short option -f option to -n in pef-config and bmc-config for + consistency to ipmi-sensors-config. The -f option is maintained for + backwards compatability. +o Support -e (--escape-char) for alternate escape character in + ipmiconsole. +o Change --wait-until-off short option from -B to -G. +o Support -B in ipmipower for consistency to other tools, although -B + offers no purpose in ipmipower. +o Support -F in ipmipower for consistency to other tools. +o Enhanced speed of ipmi-fru, by skipping unnecessary FRU data reads. +o SSIF Inband driver will timeout after a certain period of time. +o Support additional sensor monitoring interpretations in ipmimonitoring. +o Provide more detailed error messages in config tools. +o Support shared SDR caches for ipmi-sensors, ipmi-fru, ipmi-sel, + ipmi-sensors-config, and ipmimonitoring. (libipmimonitoring will + still use a different default cache directory.) This will require a + new cache generation for these tools. +o Support driver-type options for ipmipower ipmi version option. +o Modified SDR caching output messages in ipmi-sensors, ipmi-sel, + ipmi-fru, ipmi-sensors-config and ipmimonitoring to provide more + useful information. +o In ipmi-sensors, updated SDR output under verbose and very verbose + output modes with: + o More IPMI compliant field names. For example, 'Sensor Name' has + been replaced with 'ID String'. + o More correct output. For example, 'NA' will be output instead of + '0.0' when a value is not truly available. Fields that don't exist + will not have a default output. + o Fix incorrect hysterisis calculation and output. + o Fix incorrect OEM data output. + o Support more SDR record types for output. + o Output more SDR record information in general. +o Added new freeipmi(7) and libfreeipmi(3) manpages. +o Various other bug fixes, documentation fixes, and enhancements. + +For Developers +-------------- +o Many libfreeipmi API changes. Not counting specific tool changes + listed above, these API changes should not affect FreeIPMI user tools. + o locate/probing API revamped. + o SMIC driver/api removed. + o 'udm' renamed to 'api' globally. + o 'ipmi_device_t' device context renamed to 'ipmi_ctx_t'. + o New sdr-caching library added. + o Code re-organized into subdirectories. + o New header files for more ipmi spec subsections added. +o Support new 'ipmi_monitoring_sdr_cache_filenames' function in + libipmimonitoring. +o Support IPMI_MONITORING_SENSOR_UNITS_WATTS sensor units in + libipmimonitoring. +o Store SDR with different format for ipmi-sensors, ipmi-fru, + ipmi-sel, and ipmi-sensors-config, ipmimonitoring/libipmimonitoring + for easier future extensibility. +o Packet names added to IPMI dump outputs in all tools for easier + packet identification in debugging. +o Make IPMI dump outputs consistent across all tools. +o Support driver timeout error codes in all drivers and APIs. +o SDR record dumping added into all tools. +o Various other bug fixes and enhancements. + +FreeIPMI 0.5.6 - 03/27/08 +------------------------- +o Fix bmc-watchdog probing corner case. +o Fix bmc-watchdog openipmi corner case. + +FreeIPMI 0.5.5 - 02/25/08 +------------------------- +o Fix bmc-info firmware and IPMI version output. +o Fix Sun endian bug workaround. +o Fix FRU data output corner cases. +o Fix workaround documentation. + +FreeIPMI 0.5.4 - 02/07/08 +------------------------- +o Output addresses in hex in ipmi-locate. +o Clarify device addresses in manpages. +o Support --ignore-sdr-cache option in ipmi-sel and ipmi-fru. +o Minor SDR caching bug fixes. +o Minor ipmimonitoring corner case fixes. +o Various SSIF corner case fixes. + +FreeIPMI 0.5.3 - 01/02/08 +------------------------- +o Fix minor ipmimonitoring command line option combination bugs. +o Fix several minor corner cases in ipmi-sel, ipmi-sensors, and +ipmimonitoring. +o Fix corner case in all tools by recognizing 127.0.0.1 as the same as +localhost. +o Fix documentation/manpage text/typos. + +FreeIPMI 0.5.2 - 12/21/07 +------------------------- +o Clarify "Password Verification Timeout" troubleshooting information. +o Fix ipmipower cmdline parse bug. +o Support suffixes in hostrange inputs. + +FreeIPMI 0.5.1 - 12/07/07 +------------------------- +For Users +--------- +o Added previously missing IPMI 2.0 (-D LAN_2_0) support into + ipmi-chassis, ipmi-fru, ipmi-sensors, ipmi-sel, ipmi-raw, and + ipmimonitoring. +o Added more strict IPMI over LAN implementation into ipmi-chassis, + ipmi-fru, ipmi-sensors, ipmi-sel, ipmi-raw, and ipmimonitoring. +o OpenIPMI and KCS Inband drivers will timeout after a certain period + of time, so tools will no longer hang if the BMC is non-functional. +o Ported IPMI compliance workarounds from ipmipower, ipmiconsole, and + ipmimonitoring into ipmi-chassis, ipmi-fru, ipmi-sensors, ipmi-sel, + and ipmi-raw. +o Updated all manpages with more instructions, information, examples, + and trouble shooting tips. +o Support --debug option under the non-debug builds. +o Rewrote error messages to provide more accurate descriptions. +o Removed CALLBACK and OEM privilege capabilities in most tools. +o Removed the quiet and silent options from bmc-config. +o Added openipmi driver to bmc-watchdog. +o Added keypair command line support to pef-config. +o Removed bmc-autoconfig tool. +o Added more details comments and instructions to bmc-config checkout. +o Converted ipmiconsole, ipmipower, and ipmimonitoring to use argp + instead of getopt for consistency of usage output. +o Re-word "ASUS 2.0" workaround into generic "IGNORE SOL PAYLOAD SIZE" + workaround. +o Support new "IGNORE SOL PORT" workaround. +o Made many command line options, interactive prompt, and config file + options consistent across FreeIPMI tools. Inconsistencies between + dashes and underscores have been fixed in a number of places. + Backwards compatability has been maintained when possible. Notable + changes include: + o --priv-level and --privilege options are now --privilege-level. + o --auth-type options are now --authentication-type. + o --reg-space or --register-space options are now --register-spacing. + o --hostnames (plural) is now --hostname (not-plural). + o --timeout is now --session-timeout. + o --retry is now --retransmission. + o All tools now use -W (--workarounds) to specify workarounds. + o The "plain" authentication type is now the + "straight_password_key" authentication type. + o The short option -r for --register-spacing has been removed for + consistency with other command line options. + o Short options for most debugging options have been removed. + o All -H and -h (help) options have been changed to -? for + consistency in all tools. + o All -v (version) options have been changed to -V for consistency + with all tools. + o The -T option and -I option in ipmipower have been flipped for + consistency with other tools. + o The -c option in ipmiconsole is now the -I option for consistency + with other tools. + o Short option -I changed to -D in bmc-watchdog for consistency with + other tools. + o The -i option in bmc-config is now the -c option. + o The -k option in bmc-config and pef-config is now the -e option. +o Various other minor bug fixes and enhancements. + +For Developers +-------------- +o Added IPMI 2.0 into UDM. +o Added workaround support into UDM for IPMI 1.5 and IPMI 2.0. +o Added IPMI 2.0 into the libipmimonitoring API. +o Added scalability fixes into libipmiconsole for Conman. +o Fix various library variable names and macros for consistency. + Notable changes. + 1) ipmi_ver_minor and ipmi_ver_major in struct ipmi_locate_info have + been renamed to ipmi_version_minor and ipmi_version_major. + 2) reg_space/register_space have been renamed to register_spacing globally. + 3) privilege has been replaced to privilege_level globally. + 4) Various library error codes have been renamed for consistency for + error codes in other libraries. For example OUTMEM has been + changed to OUT_OF_MEMORY globally. + 5) Various error codes and messages have been renamed/redone to give + more useful information. For example, IPMI_ERR_PRIVILEGE is now + IPMI_ERR_PRIVILEGE_LEVEL_CANNOT_BE_OBTAINED and the error message + has been updated appropriately. +o Various bug fixes and enhancements. + +FreeIPMI 0.4.6 - 10/11/07 +------------------------- +o Fix sdr cache corruption bug. + +FreeIPMI 0.4.5 - 10/02/07 +------------------------- +o Fix command line parse issue in ipmidetect. +o Fix rpm daemon install scripts for ipmidetectd. + +FreeIPMI 0.4.4 - 09/19/07 +------------------------- +o Alter userncame-capabilities workaround to +authentication-capabilities workaronds to cover more situations. +o Fix libipmiconsole new console port corner case. +o Fix manpage typos. + +FreeIPMI 0.4.3 - 08/14/07 +------------------------- +o Add ASUS P5M2 workarounds in ipmipower, ipmiconsole, and ipmimonitoring. +o Fix bad input assert corner cases. +o Fix non-default install bug. +o Fix range check in bmc-config SOL config that was inconsistent with IPMI spec. +o Fix ipmipower config file logic bug. +o Fix ipmipower config output logic bug. +o Fix potential pre-processor compile bug. +o Fix manpage typos. +o Fix error output messages in bmc-config. +o Fix legacy config option issues. +o Fix usage help in ipmiconsole. + +FreeIPMI 0.4.2 - 08/02/07 +------------------------- +o ipmimonitoring: Fixed free bug that can cause segfaults. +o Fix SLES packaging issue. + +FreeIPMI 0.4.1 - 07/26/07 +------------------------- + +For Users +--------- +o Added hostrange support to ipmi-sensors, ipmi-sel, ipmi-raw, and bmc-info +o Added ipmimonitoring +o Added ipmidetect +o Added pef-config +o Added ipmi-chassis +o Added ipmi-fru +o Added -T option to ipmiconsole. +o Re-architected workarounds options for Ipmipower due to increasing number + of vendor specific workarounds implemented. -W, -S, -Z, -X, -Y options removed. + New -W option implemented. +o Adjust ipmipower options to follow hostrange convention of other tools. +o -Q option added for ipmi-sensors and ipmi-sel. +o -q option added for ipmi-sensors. +o Add verbose checkout/commit progress information for large checkout(s)/commit(s). +o Add sensor names to ipmi-sel output when possible. +o Output more descriptive error messages in most FreeIPMI tools. +o '0x' parsing support in ipmi-raw. +o Sun IPMI 2.0 workarounds in ipmipower and ipmiconsole. +o Various bug fixes throughout FreeIPMI. + +For Developers +-------------- +o Added SDR debugging capabilities to ipmi-sdr and ipmi-sensors. +o Added libipmimonitoring +o Added libipmidetect +o Additional IPMI sub section support in libfreeipmi. +o Re-architected UDM for more descriptive error codes. +o Various bug fixes/performance fixes to libipmiconsole, libfreeipmi. + +FreeIPMI 0.3.3 - 05/05/07 +------------------------- +o Support per-msg-auth in LAN udm and majority of FreeIPMI tools. +o Support hex k-g input/output. +o Fix ipmipower per-msg-auth. +o Fix ipmiconsole k_g key corner case. +o Fix libipmiconsole state machine corner case. +o Fix OpenIPMI driver build bug. +o Fix strdup corner case in bmc-config. +o Allow OEM network functions. + +FreeIPMI 0.3.2 - 03/29/07 +------------------------- +o -N option added to ipmiconsole. +o -L option added to ipmiconsole. +o -K option added to ipmipower and ipmiconsole. +o -P option replaced w/ -W option in ipmipower. +o -P option added to most tools. +o Fix seg-fault in ipmiconsole. +o Fix various bugs in in libipmiconsole and ipmiconsole. +o Fix secure malloc bug. + +FreeIPMI 0.3.1 - 12/18/06 +------------------------- + +o FreeBSD Support +o libfreeipmi: Header file include/C++ fixes. +o ipmi-sensors, ipmi-sel: Fix SDR cache creation bug for /tmp. +o ipmi-sensors: Fix SDR parsing corner case bugs. +o ipmipower, ipmiconsole: Fix mem-leak possibility. + +FreeIPMI 0.3.0 - 11/13/06 +------------------------- + +For Users +--------- +o Added ipmiconsole. +o IPMI 2.0 connection support added to ipmipower. +o IPMI 2.0 ping support added to ipmiping. +o IPMI 2.0 and Serial-Over-LAN (SOL) configuration added to bmc-config. +o Added sectional input/output support to bmc-config (--listsections and --section options). +o Added OpenIPMI driver support to bmc-info, ipmi-raw, ipmi-sel, ipmi-sensors. +o ipmi-raw raw input/output style change to support luns and network functions. +o bmc-info, ipmi-raw, ipmi-sel, ipmi-sensors out-of-band communication made more reliable. +o Sensor reading added to ipmi-sel for better output +o Intel 2.0 workarounds added to ipmipower. +o Supermicro 2.0 workarounds added to ipmipower. +o --wait-until-on, --wait-until-off, --retry-wait-timeout options added to ipmipower. +o --delete-range option added to ipmi-sel +o --flush-cache option added to ipmi-sel. +o --sdr-cache-directory option added to ipmi-sel and ipmi-sensors. +o Removed fish +o Removed garpd +o Various bug fixes throughout FreeIPMI. + +For Developers +-------------- +o IPMI 2.0 support added to libfreeipmi. +o Added libipmiconsole. +o ipmi-sensors, ipmi-sel, and bmc-config re-written in C. +o Added OpenIPMI driver support to libfreeipmi. +o Libfreeipmi Fiid interface re-implemented. +o Libfreeipmi code significantly cleaned up. +o In debug mode, packet dump, function trace, and various debugging added to libfreeipmi. + + diff --git a/source/freeipmi/usr/share/doc/freeipmi/README b/source/freeipmi/usr/share/doc/freeipmi/README new file mode 100644 index 00000000..71eaab96 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/README @@ -0,0 +1,270 @@ +FreeIPMI - Copyright (C) 2003-2015 FreeIPMI Core Team + +FreeIPMI +-------- + +FreeIPMI provides in-band and out-of-band IPMI software based on the +IPMI v1.5/2.0 specification. + +What is IPMI? +------------- + +The IPMI specification defines a set of interfaces for platform +management. It is utilized by a wide variety of vendors for system +management on motherboards. The features of IPMI that most users will +be interested in are sensor monitoring, remote power control, +serial-over-LAN (SOL), and system debugging. The FreeIPMI tools and +libraries listed below should provide users with the ability to access +and utilize these features. + +Getting Started with IPMI +------------------------- + +IPMI can be used in-band (i.e. running on a machine locally) or +out-of-band (i.e. connecting remotely). + +Most FreeIPMI tools can operate in-band by using one of the in-band +drivers included. These in-band drivers include a userspace KCS +interface driver, a SSIF driver through the Linux SSIF device +(i.e. /dev/i2c-0), the OpenIPMI Linux kernel driver (i.e. /dev/ipmi0), +the Sun/Solaris BMC driver (i.e. /dev/bmc), and the Intel DCMI/MEI +driver (i.e. /dev/dcmi). If your system requires the use of installed +drivers, those appropriate modules must be installed ahead of time. +However, most systems should automatically load these drivers when +appropriate. + +Under most scenarios, the FreeIPMI tools should automatically discover +which in-band interface to use and the proper settings to use. Users +may execute the tools on the command line to begin using them. Some +motherboards may require you to determine driver type, addresses, +paths, etc. on your own and pass them as command line options to the +tools. You may use ipmi-locate(8) to help determine this information. +Other tools such as dmidecode(8) may also provide this information. + +To use IPMI out-of-band with tools such as ipmipower(8) or +ipmi-sensors(8), the remote machine's BMC must first be configured for +out of band communication. Typically, this involves setting a +username, password, IP address, MAC address, and a few other +parameters. This can be done using the tool ipmi-config(8). +Additional information on how to configure with ipmi-config(8) can be +found in the ipmi-config.conf(5) manpage. Some vendors may +pre-configure their motherboards with default values so that +ipmi-config(8) can be used remotely to configure the machine. However, +most of the time, the BMC must be configured in-band before +out-of-band access can be allowed (for example, the correct IP address +and MAC address must be configured). + +In order to remotely connect to a machine, you typically must specify +the host, username, and password for the tool in order to connect. +Depending on configuration settings, a K_g key, privilege level, +authentication type, cipher suite id, or protocol version may need to +be specified. + +Some vendors may have not implemented IPMI properly and a workaround +must be specified into FreeIPMI to ensure the tool can execute +properly. For example, a fair number of vendors have populated their +FRU records with invalid checksums. To properly ignore these set of +checksums a 'skipchecks' workaround has been added to ipmi-fru(8). +Please see each of the tool manpages to see a list of available +workarounds. + +Additional information, examples, and general trouble-shooting can be +found in each of the tool manpages. + +General Use +----------- + +The primary tools that most users of FreeIPMI will be interested in +for system management are the following: + +Ipmi-sensors + +A tool to read IPMI sensor readings to aid in system monitoring. + +Ipmi-sel + +A tool to read and manage IPMI System Event Log (SEL) records to aid +in system debugging. + +Ipmipower + +A tool for remote power control. + +Ipmiconsole + +A tool for Serial-over-Lan (SOL) console access. + +Many other tools and libraries are listed below that cover additional +features and areas of IPMI. + +Additional information, examples, and general trouble-shooting can be +found in each of the tool manpages. + +Configuration +------------- + +In order to avoid typing in a long list of command line options to +specify IPMI communication requirements everytime a command is +executed (e.g. driver paths, usernames, passwords, etc.), an +alternate set of default values can be set for most FreeIPMI +tools in the FreeIPMI configuration file. See freeipmi.conf(5) +for more information. + +HPC Support +----------- + +Much of FreeIPMI was written with HPC support in mind. Ipmi-config(8) +comes with file input/output support so that configuration can be +copied and verified across nodes in a cluster. Most tools (like +ipmipower(8) and ipmi-sensors(8)) come with hostrange support so +multiple hosts can be specified on the command line at the same time +and IPMI can be executed against the hosts in parallel. See tool +manpages for more information. Also see the document +freeipmi-hostrange.txt for detailed usage and explanation. +Ipmi-sensors(8) and the libipmimonitoring(3) library support the +ability to interpret sensor readings as well as just reporting them. +By mapping sensor readings into NOMINAL, WARNING, or CRITICAL states, +it makes monitoring sensors easier across large numbers of nodes. + +Development +----------- + +For information on the libraries that can be used to program IPMI +applications with, please see, please see libfreeipmi(3), +libipmiconsole(3), libipmimonitoring(3), and libipmidetect(3). Or +see the document freeipmi-libraries.txt. + +Project Tools +------------- + +The following tools are distributed and supported by FreeIPMI. + +Bmc-info + +A tool to read information about a BMC such as device version numbers, +device support, and globally unique IDs (guids). + +Bmc-watchdog + +A tool/daemon to manage a BMC Watchdog. This tool is typically used +for system timeout management and automatic system restarts in the +event of a system crash. + +Ipmi-chassis + +A tool to manage/monitor a chassis, such as chassis power, +identification (i.e. LED control), and status. + +Ipmi-fru + +A tool to read field replaceable unit (FRU) information from a +motherboard/machine. + +Ipmi-sel + +A tool to read and manage IPMI System Event Log (SEL) records. SEL +records store system event information and may be useful for debugging +problems. + +Ipmi-sensors + +A tool to read IPMI sensor readings and sensor data repository (SDR) +information. + +Ipmipower + +A tool for remote power control. + +Ipmiconsole + +A tool for Serial-over-Lan (SOL) console access. + +Ipmi-config + +A tool to configure BMC and IPMI information. In can be used to +configured usernames, passwords, networking information, security, +Serial-over-LAN (SOL), Platform Event Filtering (PEF), boot devices, +power restoration policy, sensor thresholds, sensor events, and many +more configuration options. + +Ipmi-raw + +A tool that provides hex input/output of IPMI commands. + +Ipmi-locate + +A tool that can probe for information about the location of a BMC +device, such as device addresses. + +Ipmi-pet + +A tool to parse and interpret Platform Event Traps (PET). + +Ipmi-dcmi + +A tool to perform Data Center Manageability Interface (DCMI) IPMI +extension commands. Supports extensions for asset management and +power usage management. + +Bmc-device + +A tool to perform advanced BMC commands, such as resetting the BMC, +configuring ACPI, configuring SDR/SEL time, manually generating +events, re-arming sensors, and configuring manufacturer settings. + +Ipmiping + +An IPMI ping tool for debugging. + +Rmcpping + +A RMCP ping tool for debugging. + +Ipmi-oem + +An IPMI tool for OEM specific commands. + +Ipmidetect/Ipmidetectd + +A tool and daemon for IPMI node detection. + +Ipmiseld + +A daemon that regularly polls the SEL and stores the events to the +local syslog. + +Additional information, examples, and general trouble-shooting can be +found in each of the tool manpages. + +Project Libraries +----------------- + +The following libraries are distributed and supported by FreeIPMI. + +Libfreeipmi + +A C library that includes KCS, SSIF, OpenIPMI Linux, and Solaris BMC +drivers, IPMI 1.5 and IPMI 2.0 LAN communication interfaces, IPMI +packet building utilities, IPMI command utilities, and utilities for +reading/interpreting/managing IPMI. + +Libipmiconsole + +A library for Serial-over-Lan (SOL) console access. SOL console +access is abstracted into a file descriptor interface, so users may +read and write console data through a file descriptor. + +Libipmimonitoring + +A library for sensor monitoring that abstracts away most IPMI details. + +Libipmidetect + +A library for IPMI node detection. + +Help, Questions, etc. +--------------------- + +Please send comments, help, and questions to the freeipmi mailing +lists, freeipmi-users@gnu.org and freeipmi-devel@gnu.org. Or see +our webpage at http://www.gnu.org/software/freeipmi/. diff --git a/source/freeipmi/usr/share/doc/freeipmi/README.argp b/source/freeipmi/usr/share/doc/freeipmi/README.argp new file mode 100644 index 00000000..c800235d --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/README.argp @@ -0,0 +1,6 @@ +Local FreeIPMI argp modified from argp-standalone-1.3. Many +configure.ac autoconfing for the local argp library taken from +argp-standalone as well. + +argp-standalone taken from glibc from Neil Moller. +http://www.lysator.liu.se/~nisse/misc/ diff --git a/source/freeipmi/usr/share/doc/freeipmi/README.build b/source/freeipmi/usr/share/doc/freeipmi/README.build new file mode 100644 index 00000000..7d8c7b83 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/README.build @@ -0,0 +1,107 @@ +Building/Install from source +---------------------------- + +The instructions below (modified from the INSTALL file) should +work for most people. + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. If your system + requires additional packages and/or libraries in order for FreeIPMI + to be built, appropriate messages should be displayed. These + packages and/or libraries should be installed and `./configure' should + be executed again. + + 2. Once `./configure' has succeeded, type `make' to compile the + package. + + 3. Type `make install' to install the programs and any data files and + documentation. + + You may need to be root in order for files to be installed into + the proper locations on your system. + +By default files will typically be installed in /usr/local (binaries +in /usr/local/bin, libraries in /usr/local/lib, configuration files in +/usr/local/etc/, etc.). To install into the more common locations +such as /usr/bin, /usr/lib/, /etc, etc. the options passed into +`./configure' must be adjusted. + +The following set of options and settings are suitable for most Linux +systems. + +--prefix=/usr --exec-prefix=/usr --sysconfdir=/etc +--localstatedir=/var --mandir=/usr/share/man + +Your mileage may vary depending on your system. + +If you install the binaries or libraries in non-standard locations +(e.g. /usr/local or /opt), you may have to update other system +configuration to find the files and libraries. For example, in Linux +you may need to update your PATH or LD_LIBRARY_PATH environment +variables. Or you may need to update your /etc/ld.so.conf files and +run ldconfig(8) to find libraries globally. This is highly dependent +on your operating system. + +Building RPMs +------------- + +For most people you can build RPMs one of two ways. + +From the source: + +rpmbuild -ta freeipmi-X.Y.Z.tar.gz + +From the source rpm: + +rpmbuild --rebuild freeipmi-X.Y.Z-1.src.rpm + +Depending on your default RPM build environment, you may need to be root +in order for RPMs to be stored in the default locations. + +After the RPMs are built, you may install them the normal way: + +rpm -i freeipmi-X.Y.Z.ARCH.rpm + +Additional configure options +---------------------------- + +The following configure options are available to users for more unique +compilation requirements and environments. + +--without-encryption + +This option disables compilation of encryption support in FreeIPMI. +Most notably, this disables encryption support when doing out of band +IPMI 2.0 communication. + +This option may be particularly useful in embedded environments that +do not have the libraries needed to compile encryption support. + +--with-dont-check-for-root + +When running tools inband, root access is normally required. In some +systems, this may not be desired. This options removes the check for +root access in FreeIPMI tools. + +--without-random-device + +This option disables checks and use of /dev/urandom and /dev/random. +This may be required for embededded systems without these devices. + +--with-pkgconfig-dir + +This option can configure an alternate default pkgconfig directory. + +--with-bmc-watchdog-logfile + +This option can configure an alternate default bmc-watchdog log +directory. + +--with-ipmi-monitoring-sdr-cache-dir + +This option can configure an alternate default libipmimonitoring SDR +cache directory. + diff --git a/source/freeipmi/usr/share/doc/freeipmi/README.openipmi b/source/freeipmi/usr/share/doc/freeipmi/README.openipmi new file mode 100644 index 00000000..83b00592 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/README.openipmi @@ -0,0 +1,25 @@ +The Linux OpenIPMI driver is often loaded via the /etc/init.d/ipmi +setup script. If your distribution/environment does not have this +script, the following script can be used to load/unload the driver. + +#!/bin/sh + +/sbin/modprobe ipmi_devintf + +maj=`cat /proc/devices | awk '/ipmidev/{print $1}'` +if [ -c /dev/ipmi0 ] +then + rm -f /dev/ipmi0 + /bin/mknod /dev/ipmi0 c $maj 0 +else + /bin/mknod /dev/ipmi0 c $maj 0 +fi + +/sbin/modprobe ipmi_si + +# do stuff + +/sbin/rmmod ipmi_si +/sbin/rmmod ipmi_devintf +/sbin/rmmod ipmi_msghandler + diff --git a/source/freeipmi/usr/share/doc/freeipmi/TODO b/source/freeipmi/usr/share/doc/freeipmi/TODO new file mode 100644 index 00000000..eb88dad9 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/TODO @@ -0,0 +1,398 @@ +*** - priority for future major release +XXX - priority for future minor release +ooo - priority code cleanup that should be done + +branches to merge +----------------- + +to test +------- +ipmi-oem get/set bmc services for intels2600jf + +FreeIPMI FAQ/documentation +-------------------------- + +FreeIPMI general +---------------- +- oem extensions + - test/check handle firmware versions + - document firmware versions in docs/ or mans/? +- build system + - single Makefile, so parallel build faster? +- consider moving #defines to #enums globally for easier debugging w/ + gdb +- event handling api/mechanism +- loop/try again on NODE_BUSY errors (***) + - treat more like network busy than error? + - option for alternate behavior? +- update text documents to texinfo (ooo) +- OEM extensions generalized + - generalize "+" syntax in ipmipower to all FreeIPMI tools? + - or use extra option? +- audit/cleanup memsets, use sizeof() when appropriate + +FreeIPMI new stuff +------------------ +- ASF - maybe support base protocol stuff like rmcp? +- picmg hpm/hpmi.1 standard - defines ipmi firmware update stuff + - http://www.picmg.org/v2internal/specifications.htm +- pmbus.org + - doable via FreeIPMI? Can pass through Smbus to PmBus to do power control monitoring? +- server simulator + - support testing at scale + - test larger set of corner cases, possibilities, workarounds, etc. + - different SDR combos + - different SEL entries + - all permutations of sensors, etc. +- config tools for (***) + - intel node manager (***) + - maybe not? Intel NM does not configure via a standard + checkout/commit fashion. Policies are created, then removed. + In addition, policies must be disabled before they can be + reconfigured. + + some of these mechanisms could be hidden (i.e. if user changed + any configuration, disable policy, then re-configure it, then + re-enable it), but some would require blatant assumptions, such + as number of policies to output into the --checkout .conf file. + - firmware firewall + - other config options in ipmi-oem + - inventec mac/shared nic stuff + - will reboot BMC, is big problem +- fru library like libipmimonitoring +- ipmi proxy + - capture lan and do inband, maybe useful if you have dedicated port + that can't be seen by the network, and you don't have enough switch + ports to have both plugged up to the network. +- OCP IPMI extensions + - FRU record + - command extensions + +FreeIPMI maybe stuff +-------------------- +redo ipmipower/ipmiconole using phi accrual failure detector algorithm? + +library general +--------------- +- merge all libs into one? would aid debian packaging. + - make package layout simpler? + - make .so-naming consistent? + - merge all except libipmidetect? + +libfreeipmi +----------- +- forwarded command support (errata 35b) +- support serial interface? +- have funcs that return buflen return ssize_t?, input should be + size_t and void *? like read(), write()? +- xRC4 + - on Quanta S99Q/Dell FS12-TY + - Began on branches/xrc, from the branch ChangeLog + - xRC has been dropped for the time being. After researching xRC, + ultimately the current architecture of all of FreeIPMI is + ill-suited for it. As a stream based encryption, too much + architecture of FreeIPMI has been based on individual packets + being sent/recved/encrypted/decrypted independently of each other. + Most of xRC implementation is doable with some hacks. For + example, the initialization vector and data offsets could be + passed as in/out parameters to the assemble/disassemble packet + functions. The Krc could be re-generated as needed if the + initialization vector had been noticed to change (or data offset + == 0). However, the deal break was an "out-of-band" requirement + for implementation of the suspend/resume payload encryption. In + particular, if a packet from the BMC that had a new initialization + vector was dropped on the network, the client would need to send a + "suspend/resume payload encryption" packet to tell the BMC to + start over again before doing a resend. Architecturally, this was + the part that would have been VERY difficult to implement across + FreeIPMI as the client would suddenly be required to understand + the assemble/disassemble subtleties underneath and send the packet + on its own. + +libfreeipmi-fiid +---------------- +- rearch for speed to not use strings, use macros + strings in internal. So something like: + {1, FOO_MACRO, "FIELD_NAME", FLAGS} + so avoid string compares for get/set/compare/etc., but have available for debug output. + +libfreeipmi-driver +------------------ +- kcs/ssif/etc + - how to deal with servers w/ multiple BMCs (***) + - need knew inband option on tools? +- ssif userspace implementation + - see ipmiutil for example + + +libfreeipmi-api +--------------- +--fail-if-ipmi-not-detected + - would need inband flag - discover vs. not-discover on locate + - Ultimately impossible to do correctly, vendor need not store + anything in acpi/smbios/etc. + - User can use ipmi-locate if they really want to probe? + +libfreeipmi-interpret +--------------------- +- handle sensor/sel events outside of spec - configurable in some way? + - some vendors have extra bits not in spec +- handle sensor/sel events differently for different sensors on same + motherboard + - e.g. + SENSORFAULT | State Deasserted + SENSOROK | State Asserted + - need mechanism to specify record ids/sensor number/entity/generator? +- some sensor interpretations dependent on sensor number, way to add? + - QSSCS4R SMI Timeout & Power Throttled sensors + - same event-type/sensor-type/etc., but different interpretation?? + +libfreeipmi-sdr +--------------- + +libfreeipmi-fru +--------------- + +libfreeipmi-sel +--------------- +- cleanup parsing functions + +libipmiconsole +-------------- +- "learn" workarounds function - to figure out workaround flags for user support simultaneous SOL sessions + - very hard, almost impossible to do?? +- "check" function, to see if session currently running +- engine_submit() - try and move initialization/setup code into engine + to reduce time spent in engine_submit(), this is the core loop used by + conman and other console software. (***) +- use conditional signals w/ garbage collector + - should work, it's not like the poll loop from before +- buffer character input chars and send in chunks as necessary (nagle like) + - perhaps ~100ms of character data to reduce packets send? + - as far as I can tell, most ssh implementations send 1 char at a time, + to most users that libipmiconsole will get similar interaction. + +libipmimonitoring +----------------- +- select sensors via sensor name? + - deal w/ motherboards with slightly different SDRs + - but some mobos have sensor name == each other, so what is the purpose? + - would need to also add sensor number with it?? + - also to deal w/ probability SDR's change on some mobos +- how specify record ids w/ sharing +- entity sensor names + +tools common +------------ +- entity ids 0x41, 0x42, are "identical" to other entries + - should map them together for --entity-id-names output in + ipmi-sensors and ipmi-sel? +- hostrange exclude hosts option + - not really necessary in FreeIPMI? in pdsh, the reason you really + need this is because you can do -a (all) or -g (genders + attribute/netgroups attribute). +- if user inputs hostname of localhost, do inband not outofband? +- config via environment variables too - like config file? +- config file - support workarounds/etc. for heterogenous clusters + - maybe? + - workaround-flags BLAH hosts[1-3] + - workaround-flags FOO hosts[5-9] +- read/store username/password/k_g out of file encrypted so it's not + sitting there in the clear +- convenience function to loop infinite times necessary to expand (***) + hostrange until done. + - i.e. node[0-4]-[3-10] + - hack is in ipmipower right now for 2s, no where else supported + +ipmi-sensors +------------ +- split vendor files into motherboard files? Is getting big. +- option to check sensor thresholds manually instead of event bitmask + - some mobos seem to set flags incorrectly +- column for sensor number? + - useful for shared sensor output? +- how to select specific shared sensor on commad line, can't do normally (***) + - i.e. perhaps need to do record-id and something else, like + -r 5.2 to indicate record id 5 and offset 2. + - issue for libipmimonitoring too? +- remove shared sensor option + - make default like it should be + - this really ties to many other shared sensor issues +- do not error out on unexpected sensor_read errors, move on? (***) + - i.e. unexpected completion code error? + - require rework of sensor-read lib? How detect session timeout, etc. +- make 'discretereading' on by default? + - it does not appear that to be illegal by IPMI spec. + +ipmi-sel +-------- +- binary search like mechanism to make --display faster +- support kernel panic OEM event 0xF0 + - can't make work, is just my motherboard? Or perhaps specific panics, not test panics? + - redhat doesn't enable by default, probably don't need to worry about this much + - see http://cateee.net/lkddb/web-lkddb/IPMI_PANIC_STRING.html + - see http://www.cyberciti.biz/tips/compiling-linux-kernel-module.html +- non-uncommon for motherboards to output events both directions of + crossing threshold. Can be confusing b/c assert/deassert not output + by default. Should alter output in these cases? +- --delete-date-range (***) +- ganglia plugin? +- nagios plugin? + +ipmipower +-------- +- mechanism to parallelize oem extension options ranges. (***) + - i.e. on myhost+[0-3]. Simultaneous power off slots 0-3. + - perhaps --serialize-same-host option + - Will require larger re-architecture, create additional sockets per + power control attempt. The constant sockets created in the + ipmipower_connection structs limit this for the time being. + +ipmi-fru +-------- +- write FRU data option + - for OEM integrators + - or should be in bmc-device? + +bmc-device +-------- +- set bmc global enables + - really should be done by firmware or distro + - or only as needed in ipmi-oem per vendor need? +- (NOT CONFIRMED) get auxiliary log status +- set sensor reading (***) + +bmc-watchdog +------------ +Log to normal syslog, not to bmc log +- legacy from when bmc-wachdog in cron, not daemon, and would log + every bmc reset +cleanup to finally use libfreeipmi or common tool functions + +ipmiconsole +----------- +- support other escape codes like w/ &D +- support F1-F12 suggested by user + +ipmi-config +------------ +- make tools prefix sections w/ appropriate prefixes to allow + for checking of what sections should be used?? + - i.e. BMC, CHASSIS, PEF, etc. + - probably not, too much backwords compatability crap to handle. + Also would make code ugly as hell to make all duplicate sections. + should do database of what sections go to what categories +- core: support ipv4 mapped ipv6 addresses? + - until in spec, no point, maybe deal in ipmi-oem? +- chassis, pef & sensors: conf.5 manpage +- chassis: (NEVER TESTED) panel button config - need hardware w/ this +- chassis: (NEVER TESTED) device instance selector +- sensors: instructions for each section?? +- sensors: when value cannot be encodd accurately, report numbers that can work + +ipmi-oem +-------- +dell poweredge lcd support? + +ipmiseld +-------- +send e-mail on alert noticed/received? + +contributions +------------- +- perl extensions + - api support? + - raw support? +- python extensions + - api support? + - raw support? +- zenoss plugin +- powerman + - let ipmipower return error messages to user in some way + - intead of "command completed successfully" all the time + +RELEASE TODOS - Do on every release +----------------------------------- +Email freeipmi-users && freeipmi-devel +Email info-gnu@gnu.org +Update savannah announcements +Update freshmeat.net +Update freeipmi webpage +Update opendesktop.org page +Update ohloh page +Update to softpedia?? +Update fsf directory info. +Upload to ftp.gluster.com +Upload to ftp.gnu.org + +Workaround for CVE + +perl -pe 's/perm -777 -exec chmod a\+rwx/perm -755 -exec chmod 755 /' Makefile.in > Makefile.in.new + +Workaround for CVE 2012-3386 + +perl -pe 's/chmod a\+w \$\(distdir\)/chmod u\+w \$\(distdir\)/' Makefile.in > Makefile.in.new + +info-gnu@gnu.org template e-mail + +FreeIPMI X.X.X has been released. It can be downloaded at: + +http://www.gnu.org/software/freeipmi/download.html + +What is IPMI? + +The Intelligent Platform Management Interface (IPMI) specification +defines a set of interfaces for platform management. It is +implemented by a large number of hardware manufacturers to support +system management on motherboards. The features of IPMI that most +users will be interested in are sensor monitoring (e.g. CPU +temperatures, fan speeds), remote power control, and serial-over-LAN +(SOL). + +What is FreeIPMI? + +FreeIPMI provides in-band and out-of-band IPMI software based on the +IPMI v1.5/2.0 specification. FreeIPMI provides tools and libraries +for users to access and read IPMI sensor readings, system event log +(SEL) entries, serial-over-LAN (SOL), remote power control functions, +field replaceable unit (FRU) device information, and more. More +information about FreeIPMI can be found at the FreeIPMI webpage at: + +http://www.gnu.org/software/freeipmi/index.html + +Release X.X.X Changes +--------------------- + +To do this: + +1. The file to be distributed (for example, foo.tar.gz). + +2. Detached GPG binary signature for (1), (for example, foo.tar.gz.sig). + +gpg -b foo.tar.gz + +3. A clearsigned directive file, (for example, foo.tar.gz.directive.asc). + +Format is: + +version: 1.1 +directory: freeipmi +filename: freeipmi-0.X.X.tar.gz +comment: FreeIPMI 0.X.X + +gpg --clearsign foo.tar.gz.directive + +4. Upload the file(s) via anonymous ftp to ftp-upload.gnu.org. If the +upload is destined for ftp.gnu.org, place the file(s) in the +/incoming/ftp directory. If the upload is destined for alpha.gnu.org, +place the file(s) in the /incoming/alpha directory. + +Uploads are processed every five minutes. Uploads that are in progress +while the upload processing script is running are handled properly, so +do not worry about the timing of your upload. Uploaded files that +belong to an incomplete triplet are deleted automatically after 24 +hours. + +Your designated upload email addresses (see Automated Upload +Registration) are sent a message if there are any problems processing +an upload for your package. You also receive a message when your +upload has been successfully processed. diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/ganglia/README b/source/freeipmi/usr/share/doc/freeipmi/contrib/ganglia/README new file mode 100644 index 00000000..802fe48f --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/ganglia/README @@ -0,0 +1,18 @@ +ganglia_ipmi_sensors.pl +----------------------- + +This script can be used to monitor IPMI sensors in ganglia via +FreeIPMI's ipmi-sensors. Please see instructions found at the top of +the script for detailed instructions. + +By default, this tool will monitor the sensor state (Nominal, Warning, +or Critical) of each sensor as determined by libfreeipmi's interpret +library and the sensor readings of temperature, fan and voltage +sensors. See ipmi-sensors(8) for more general info on ipmi-sensors +and freeipmi_interpret_sensors.conf(5) for more information on sensor +states. + +Albert Chu +chu11 at llnl dot gov + + diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/ganglia/ganglia_ipmi_sensors.pl b/source/freeipmi/usr/share/doc/freeipmi/contrib/ganglia/ganglia_ipmi_sensors.pl new file mode 100644 index 00000000..cbf60212 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/ganglia/ganglia_ipmi_sensors.pl @@ -0,0 +1,444 @@ +#!/usr/bin/perl +############################################################################# +# Copyright (C) 2003-2010 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, 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 . +############################################################################# +# +# ganglia_ipmi_sensors.pl +# +# Author: +# +# Albert Chu +# +# Description: +# +# This script can be used to monitor IPMI sensors in ganglia via +# FreeIPMI's ipmi-sensors. +# +# By default, this tool will monitor the sensor state (Nominal, +# Warning, or Critical) of each sensor as determined by libfreeipmi's +# interpret library and the sensor readings of temperature, fan and +# voltage sensors. See ipmi-sensors(8) for more general info on +# ipmi-sensors and freeipmi_interpret_sensors.conf(5) for more +# information on sensor states. +# +# Options: +# +# -h - specify hostname(s) to remotely access (don't specify for inband) +# -r - specify search and replace substitution expressions (separated by a colon) to +# modify a hostname before being passed to gmetric. This is useful if +# the IPMI hostname differs from the desired hostname to input to gmetric. +# For example "ipmi:my" would turn "ipmihost4" into "myhost4". Not specifying +# a colon results in a degenerate string removal. For example, +# "-ipmi" would turn "host4-ipmi" into "host4". +# -S - specify an alternate ipmi-sensors location +# -s - specify additional ipmi-sensors arguments +# -G - specify an alternate gmetric location +# -g - specify additional gmetric arguments +# -d - print debug info +# -D - do not send sensor data to ganglia (useful during debugging) +# -H - output help +# +# Environment Variables: +# +# IPMI_HOSTS - specify hostname(s) to remotely access (don't specify for inband) +# IPMI_HOSTS_SUBST - specify search and replace substitution +# expressions (separated by a colon) to modify a +# hostname before being passed to gmetric. This is +# useful if the IPMI hostname differs from the +# desired hostname to input to gmetric. +# IPMI_SENSORS_PATH - specify an alternate ipmi-sensors location +# IPMI_SENSORS_ARGS - specify additional ipmi-sensors arguments +# GMETRIC_PATH - specify an alternate gmetric location +# GMETRIC_ARGS - specify additional gmetric arguments +# +# Setup Notes: +# +# Specify the remote hosts you wish to access IPMI information from +# via the -h option or IPMI_HOSTS environment variable. If you wish +# only to monitor the local node, do not specify an ipmi host. The +# input to the -h option is passed directly to ipmi-sensors. So you +# may specify anything the ipmi-sensors tool accepts including +# hostranged (e.g. foo[0-127]) or comma separated +# (e.g. foo0,foo1,foo2,foo3) inputs. If you wish to monitor both +# remote and local system, remember to specify one of the hosts as +# "localhost". +# +# If stored in a non-default location the -S option or +# IPMI_SENSORS_PATH environment variable must be specified to +# determine the ipmi-sensors location. +# +# If stored in a non-default location the -G option or GMETRIC_PATH +# environment variable must be specified to determine the gmetric +# location. +# +# In order to specify non-defaults for ipmi-sensors use the -s +# argument or IPMI_SENSORS_ARGS environment variable. Typically, +# this option is necessary for non-default communication information +# or authentication information (e.g. driver path, driver type, +# username, password, etc.). Non-default communication information +# can also be stored in the FreeIPMI configuration file. This is the +# suggested method because passwords and other sensitive information +# could show up in ps(1). If you wish to limit the sensors being +# monitored, you can also specify which record-ids are to be monitored +# (-r option). +# +# In order to specify non-defaults for gmetric, use the -g argument +# or GMETRIC_ARGS environment variable. Typically, this option is +# necessary for non-default gmond.conf paths (i.e. -c +# /myspecial/gmond.conf). +# +# Most users will want to set this script to execute in cron(8). +# Using cron you may monitor at whatever interval you wish. The +# recommended interval should be atleast longer than 20 seconds, since +# that is the default session timeout length. +# +# Help: +# +# Report bugs to freeipmi-users@gnu.org or freeipmi-devel@gnu.org. +# +############################################################################# + +use strict; + +use Getopt::Std; + +use Socket; + +my $no_sensor_state = 0; +my $no_sensor_readings = 0; +my $debug = 0; +my $no_ganglia = 0; + +my $IPMI_HOSTS = undef; +my $IPMI_HOSTS_SUBST = undef; +my $IPMI_SENSORS_PATH = "/usr/sbin/ipmi-sensors"; +my $IPMI_SENSORS_ARGS = ""; +my $GMETRIC_PATH = "/usr/bin/gmetric"; +my $GMETRIC_ARGS = ""; +my $IPMI_SENSORS_EXTRA_ARGS = ""; + +my $IPMI_SENSORS_OUTPUT; +my @IPMI_SENSORS_OUTPUT_LINES; +my $line; + +my $cmd; +my @subst; + +sub usage +{ + my $prog = $0; + print "Usage: $prog [-h ] [-r ] [-S ] [-s ] [-G ] [-g ] [-T] [-t] [-d] [-H]\n"; + print " -h specify hostname(s) to remotely access\n"; + print " -r specify search and replace substitution expressions on the hostname (e.g. 'ipmi:host')\n"; + print " -S specify an alternate ipmi-sensors path\n"; + print " -s specify additional ipmi-sensors arguments\n"; + print " -G specify an alternate gmetric path\n"; + print " -g specify additional gmetric arguments\n"; + print " -T do not monitor sensor state\n"; + print " -t do not monitor sensor readings\n"; + print " -d print debug info\n"; + print " -D do not send sensor data to ganglia (useful during debugging)\n"; + print " -H output help\n"; + exit 0; +} + +if (!getopts("h:r:S:s:G:g:TtdDH")) +{ + usage(); +} + +if (defined($main::opt_H)) +{ + usage(); +} + +if (defined($main::opt_h)) +{ + $IPMI_HOSTS = $main::opt_h; +} + +if (defined($main::opt_r)) +{ + $IPMI_HOSTS_SUBST = $main::opt_r; +} + +if (defined($main::opt_S)) +{ + $IPMI_SENSORS_PATH = $main::opt_S; +} + +if (defined($main::opt_s)) +{ + $IPMI_SENSORS_ARGS = $main::opt_s; +} + +if (defined($main::opt_G)) +{ + $GMETRIC_PATH = $main::opt_G; +} + +if (defined($main::opt_g)) +{ + $GMETRIC_ARGS = $main::opt_g; +} + +if (defined($main::opt_T)) +{ + $no_sensor_state = 1; +} + +if (defined($main::opt_t)) +{ + $no_sensor_readings = 1; +} + +if (defined($main::opt_d)) +{ + $debug = 1; +} + +if (defined($main::opt_D)) +{ + $no_ganglia = 1; +} + +if ($ENV{"IPMI_HOSTS"}) +{ + $IPMI_HOSTS = $ENV{"IPMI_HOSTS"}; +} + +if ($ENV{"IPMI_HOSTS_SUBST"}) +{ + $IPMI_HOSTS_SUBST = $ENV{"IPMI_HOSTS_SUBST"}; +} + +if ($ENV{"IPMI_SENSORS_PATH"}) +{ + $IPMI_SENSORS_PATH = $ENV{"IPMI_SENSORS_PATH"}; +} + +if ($ENV{"IPMI_SENSORS_ARGS"}) +{ + $IPMI_SENSORS_ARGS = $ENV{"IPMI_SENSORS_ARGS"}; +} + +if ($ENV{"GMETRIC_PATH"}) +{ + $GMETRIC_PATH = $ENV{"GMETRIC_PATH"}; +} + +if ($ENV{"GMETRIC_ARGS"}) +{ + $GMETRIC_ARGS = $ENV{"GMETRIC_ARGS"}; +} + +if ($debug) +{ + print "IPMI_HOSTS=$IPMI_HOSTS\n"; + print "IPMI_HOSTS_SUBST=$IPMI_HOSTS_SUBST\n"; + print "IPMI_SENSORS_PATH=$IPMI_SENSORS_PATH\n"; + print "IPMI_SENSORS_ARGS=$IPMI_SENSORS_ARGS\n"; + print "GMETRIC_PATH=$GMETRIC_PATH\n"; + print "GMETRIC_ARGS=$GMETRIC_ARGS\n"; +} + +if (!(-x $IPMI_SENSORS_PATH)) +{ + print "$IPMI_SENSORS_PATH cannot be executed\n"; + exit(1); +} + +if (!$no_ganglia) +{ + if (!(-x $GMETRIC_PATH)) + { + print "$GMETRIC_PATH cannot be executed\n"; + exit(1); + } +} + +if ($no_sensor_state && $no_sensor_readings) +{ + print "Must monitor atleast sensor state or sensor readings\n"; + exit(1); +} + +if ($IPMI_HOSTS) +{ + $cmd = "$IPMI_SENSORS_PATH $IPMI_SENSORS_ARGS -h $IPMI_HOSTS --quiet-cache --sdr-cache-recreate --always-prefix --no-header-output --output-sensor-state"; +} +else +{ + $cmd = "$IPMI_SENSORS_PATH $IPMI_SENSORS_ARGS --quiet-cache --sdr-cache-recreate --always-prefix --no-header-output --output-sensor-state" +} + +if ($debug) +{ + print "ipmi-sensors command: $cmd\n"; +} + +$IPMI_SENSORS_OUTPUT = `$cmd`; +if ($? != 0) +{ + print "$IPMI_SENSORS_PATH: exited with error\n"; +} + +@IPMI_SENSORS_OUTPUT_LINES = split(/\n/, $IPMI_SENSORS_OUTPUT); + +foreach $line (@IPMI_SENSORS_OUTPUT_LINES) +{ + my $hostname; + my $record_id; + my $id_string; + my $type; + my $state; + my $reading; + my $units; + my $event; + my $id_string_state; + + my $ip_address; + + my $cmd_state; + my $cmd_reading; + + if ($debug) + { + print "Parsing: $line\n"; + } + + if ($line =~ /(.+)\: (\d+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)/) + { + $hostname = $1; + $record_id = $2; + $id_string = $4; + $type = $6; + $state = $8; + $reading = $10; + $units = $12; + $event = $14; + + # trim whitespace off end of string + $record_id =~ s/\s+$//; + $id_string =~ s/\s+$//; + $type =~ s/\s+$//; + $state =~ s/\s+$//; + $reading =~ s/\s+$//; + $units =~ s/\s+$//; + } + else + { + print "Line not parsable\n"; + next; + } + + # make name better, convert spaces and slashes into underscores + $id_string =~ s/ /_/g; + $id_string =~ s/\//_/g; + + if ($IPMI_HOSTS_SUBST) { + @subst = split(/:/, $IPMI_HOSTS_SUBST); + $hostname =~ s/$subst[0]/$subst[1]/; + } + + if ($hostname ne "localhost" && $hostname ne "127.0.0.1") + { + my $packet_ip = gethostbyname($hostname); + + if (defined($packet_ip)) + { + $ip_address = inet_ntoa($packet_ip); + } + else + { + print "Cannot resolve ip: $hostname\n"; + next; + } + } + + if (!$no_sensor_state) + { + if ($state ne "N/A") + { + $id_string_state = $id_string . "_State"; + if ($hostname ne "localhost" && $hostname ne "127.0.0.1") + { + $cmd_state = "$GMETRIC_PATH $GMETRIC_ARGS -n $id_string_state -v $state -t string -S $ip_address:$hostname"; + } + else + { + $cmd_state = "$GMETRIC_PATH $GMETRIC_ARGS -n $id_string_state -v $state -t string"; + } + } + } + + if (!$no_sensor_readings) + { + if ((($type eq "Temperature" + && ($units eq "C" + || $units eq "F")) + || ($type eq "Voltage" + && $units eq "V") + || ($type eq "Fan" + && $units eq "RPM")) + && $reading ne "N/A") + { + if ($hostname ne "localhost" && $hostname ne "127.0.0.1") + { + $cmd_reading = "$GMETRIC_PATH $GMETRIC_ARGS -n $id_string -v $reading -t double -u $units -S $ip_address:$hostname"; + } + else + { + $cmd_reading = "$GMETRIC_PATH $GMETRIC_ARGS -n $id_string -v $reading -t double -u $units"; + } + } + } + + if ($debug) + { + if ($cmd_state) + { + print "gmetric command = $cmd_state\n"; + } + if ($cmd_reading) + { + print "gmetric command = $cmd_reading\n"; + } + } + + if (!$no_ganglia) + { + if ($cmd_state) + { + `$cmd_state`; + if ($? != 0) + { + print "\"$cmd_state\": failed\n"; + exit(1); + } + } + if ($cmd_reading) + { + `$cmd_reading`; + if ($? != 0) + { + print "\"$cmd_reading\": failed\n"; + exit(1); + } + } + } +} + diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/libipmimonitoring/ipmimonitoring-sel.c b/source/freeipmi/usr/share/doc/freeipmi/contrib/libipmimonitoring/ipmimonitoring-sel.c new file mode 100644 index 00000000..f1b3105f --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/libipmimonitoring/ipmimonitoring-sel.c @@ -0,0 +1,648 @@ +/*****************************************************************************\ + * $Id: ipmimonitoring-sel.c,v 1.3 2010-07-22 21:49:00 chu11 Exp $ + ***************************************************************************** + * 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 + * 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 . +\*****************************************************************************/ + +/* This is an example of how to use the libipmimonitoring library to + * read and monitor the SEL. + * + * At the top of this file, you'll find a number of variables for + * configuration of IPMI communication and what SEL records you are + * interested in monitoring. Those variables are used in the + * libipmimonitoring calls below. + * + * Hopefully this example will be sufficient to help anyone program + * IPMI monitoring software for their environment. + * + * To compile, linking against the library should be sufficient for + * most environments. e.g. + * + * gcc -o ipmimonitoring-sel ipmimonitoring-sel.c -lipmimonitoring + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +/* Communication Configuration - Initialize accordingly */ + +/* Hostname, NULL for In-band communication, non-null for a hostname */ +char *hostname = NULL; + +/* In-band Communication Configuration */ +int driver_type = IPMI_MONITORING_DRIVER_TYPE_KCS; /* or -1 for default */ +int disable_auto_probe = 0; /* probe for in-band device */ +unsigned int driver_address = 0; /* not used if probing */ +unsigned int register_spacing = 0; /* not used if probing */ +char *driver_device = NULL; /* not used if probing */ + +/* Out-of-band Communication Configuration */ +int protocol_version = IPMI_MONITORING_PROTOCOL_VERSION_1_5; /* or -1 for default */ +char *username = "foousername"; +char *password = "foopassword"; +unsigned char *k_g = NULL; +unsigned int k_g_len = 0; +int privilege_level = IPMI_MONITORING_PRIVILEGE_LEVEL_USER; /* or -1 for default */ +int authentication_type = IPMI_MONITORING_AUTHENTICATION_TYPE_MD5; /* or -1 for default */ +int cipher_suite_id = 0; /* or -1 for default */ +int session_timeout = 0; /* 0 for default */ +int retransmission_timeout = 0; /* 0 for default */ + +/* Workarounds - specify workaround flags if necessary */ +unsigned int workaround_flags = 0; + +/* Initialize w/ record id numbers to only monitor specific record ids */ +unsigned int record_ids[] = {0}; +unsigned int record_ids_length = 0; + +/* Initialize w/ sensor types to only monitor specific sensor types + * see ipmi_monitoring.h sensor types list. + */ +unsigned int sensor_types[] = {0}; +unsigned int sensor_types_length = 0; + +/* Initialize w/ date range to only monitoring specific date range */ +char *date_begin = NULL; /* use MM/DD/YYYY format */ +char *date_end = NULL; /* use MM/DD/YYYY format */ + +/* Set to an appropriate alternate if desired */ +char *sdr_cache_directory = "/tmp"; +char *sel_config_file = NULL; + +/* Set to 1 or 0 to enable these SEL flags + * - See ipmi_monitoring.h for descriptions of these flags. + */ +int reread_sdr_cache = 0; +int interpret_oem_data = 0; +int assume_system_event_record = 0; +int entity_sensor_names = 0; + +/* Initialization flags + * + * Most commonly bitwise OR IPMI_MONITORING_FLAGS_DEBUG and/or + * IPMI_MONITORING_FLAGS_DEBUG_IPMI_PACKETS for extra debugging + * information. + */ +unsigned int ipmimonitoring_init_flags = 0; + +static const char * +_get_sensor_type_string (int sensor_type) +{ + switch (sensor_type) + { + case IPMI_MONITORING_SENSOR_TYPE_RESERVED: + return ("Reserved"); + case IPMI_MONITORING_SENSOR_TYPE_TEMPERATURE: + return ("Temperature"); + case IPMI_MONITORING_SENSOR_TYPE_VOLTAGE: + return ("Voltage"); + case IPMI_MONITORING_SENSOR_TYPE_CURRENT: + return ("Current"); + case IPMI_MONITORING_SENSOR_TYPE_FAN: + return ("Fan"); + case IPMI_MONITORING_SENSOR_TYPE_PHYSICAL_SECURITY: + return ("Physical Security"); + case IPMI_MONITORING_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT: + return ("Platform Security Violation Attempt"); + case IPMI_MONITORING_SENSOR_TYPE_PROCESSOR: + return ("Processor"); + case IPMI_MONITORING_SENSOR_TYPE_POWER_SUPPLY: + return ("Power Supply"); + case IPMI_MONITORING_SENSOR_TYPE_POWER_UNIT: + return ("Power Unit"); + case IPMI_MONITORING_SENSOR_TYPE_COOLING_DEVICE: + return ("Cooling Device"); + case IPMI_MONITORING_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR: + return ("Other Units Based Sensor"); + case IPMI_MONITORING_SENSOR_TYPE_MEMORY: + return ("Memory"); + case IPMI_MONITORING_SENSOR_TYPE_DRIVE_SLOT: + return ("Drive Slot"); + case IPMI_MONITORING_SENSOR_TYPE_POST_MEMORY_RESIZE: + return ("POST Memory Resize"); + case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS: + return ("System Firmware Progress"); + case IPMI_MONITORING_SENSOR_TYPE_EVENT_LOGGING_DISABLED: + return ("Event Logging Disabled"); + case IPMI_MONITORING_SENSOR_TYPE_WATCHDOG1: + return ("Watchdog 1"); + case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_EVENT: + return ("System Event"); + case IPMI_MONITORING_SENSOR_TYPE_CRITICAL_INTERRUPT: + return ("Critical Interrupt"); + case IPMI_MONITORING_SENSOR_TYPE_BUTTON_SWITCH: + return ("Button/Switch"); + case IPMI_MONITORING_SENSOR_TYPE_MODULE_BOARD: + return ("Module/Board"); + case IPMI_MONITORING_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR: + return ("Microcontroller/Coprocessor"); + case IPMI_MONITORING_SENSOR_TYPE_ADD_IN_CARD: + return ("Add In Card"); + case IPMI_MONITORING_SENSOR_TYPE_CHASSIS: + return ("Chassis"); + case IPMI_MONITORING_SENSOR_TYPE_CHIP_SET: + return ("Chip Set"); + case IPMI_MONITORING_SENSOR_TYPE_OTHER_FRU: + return ("Other Fru"); + case IPMI_MONITORING_SENSOR_TYPE_CABLE_INTERCONNECT: + return ("Cable/Interconnect"); + case IPMI_MONITORING_SENSOR_TYPE_TERMINATOR: + return ("Terminator"); + case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_BOOT_INITIATED: + return ("System Boot Initiated"); + case IPMI_MONITORING_SENSOR_TYPE_BOOT_ERROR: + return ("Boot Error"); + case IPMI_MONITORING_SENSOR_TYPE_OS_BOOT: + return ("OS Boot"); + case IPMI_MONITORING_SENSOR_TYPE_OS_CRITICAL_STOP: + return ("OS Critical Stop"); + case IPMI_MONITORING_SENSOR_TYPE_SLOT_CONNECTOR: + return ("Slot/Connector"); + case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE: + return ("System ACPI Power State"); + case IPMI_MONITORING_SENSOR_TYPE_WATCHDOG2: + return ("Watchdog 2"); + case IPMI_MONITORING_SENSOR_TYPE_PLATFORM_ALERT: + return ("Platform Alert"); + case IPMI_MONITORING_SENSOR_TYPE_ENTITY_PRESENCE: + return ("Entity Presence"); + case IPMI_MONITORING_SENSOR_TYPE_MONITOR_ASIC_IC: + return ("Monitor ASIC/IC"); + case IPMI_MONITORING_SENSOR_TYPE_LAN: + return ("LAN"); + case IPMI_MONITORING_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH: + return ("Management Subsystem Health"); + case IPMI_MONITORING_SENSOR_TYPE_BATTERY: + return ("Battery"); + case IPMI_MONITORING_SENSOR_TYPE_SESSION_AUDIT: + return ("Session Audit"); + case IPMI_MONITORING_SENSOR_TYPE_VERSION_CHANGE: + return ("Version Change"); + case IPMI_MONITORING_SENSOR_TYPE_FRU_STATE: + return ("FRU State"); + } + + return ("Unrecognized"); +} + +static int +_ipmimonitoring (struct ipmi_monitoring_ipmi_config *ipmi_config) +{ + ipmi_monitoring_ctx_t ctx = NULL; + unsigned int sel_flags = 0; + unsigned int i; + int sel_count; + int errnum; + int rv = -1; + + if (ipmi_monitoring_init (ipmimonitoring_init_flags, &errnum) < 0) + { + fprintf (stderr, + "ipmi_monitoring_init: %s\n", + ipmi_monitoring_ctx_strerror (errnum)); + goto cleanup; + } + + if (!(ctx = ipmi_monitoring_ctx_create ())) + { + perror ("ipmi_monitoring_ctx_create:"); + goto cleanup; + } + + if (sdr_cache_directory) + { + if (ipmi_monitoring_ctx_sdr_cache_directory (ctx, + sdr_cache_directory) < 0) + { + fprintf (stderr, + "ipmi_monitoring_ctx_sdr_cache_directory: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + + /* Must call otherwise only default interpretations ever used */ + if (sel_config_file) + { + if (ipmi_monitoring_ctx_sel_config_file (ctx, + sel_config_file) < 0) + { + fprintf (stderr, + "ipmi_monitoring_ctx_sel_config_file: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + else + { + if (ipmi_monitoring_ctx_sel_config_file (ctx, NULL) < 0) + { + fprintf (stderr, + "ipmi_monitoring_ctx_sel_config_file: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + + if (reread_sdr_cache) + sel_flags |= IPMI_MONITORING_SEL_FLAGS_REREAD_SDR_CACHE; + + if (interpret_oem_data) + sel_flags |= IPMI_MONITORING_SEL_FLAGS_INTERPRET_OEM_DATA; + + if (assume_system_event_record) + sel_flags |= IPMI_MONITORING_SEL_FLAGS_ASSUME_SYSTEM_EVENT_RECORD; + + if (entity_sensor_names) + sel_flags |= IPMI_MONITORING_SEL_FLAGS_ENTITY_SENSOR_NAMES; + + if (record_ids_length) + { + if ((sel_count = ipmi_monitoring_sel_by_record_id (ctx, + hostname, + ipmi_config, + sel_flags, + record_ids, + record_ids_length, + NULL, + NULL)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_by_record_id: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + else if (sensor_types_length) + { + if ((sel_count = ipmi_monitoring_sel_by_sensor_type (ctx, + hostname, + ipmi_config, + sel_flags, + sensor_types, + sensor_types_length, + NULL, + NULL)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_by_sensor_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + else if (date_begin + || date_end) + { + if ((sel_count = ipmi_monitoring_sel_by_date_range (ctx, + hostname, + ipmi_config, + sel_flags, + date_begin, + date_end, + NULL, + NULL)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_by_sensor_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + else + { + if ((sel_count = ipmi_monitoring_sel_by_record_id (ctx, + hostname, + ipmi_config, + sel_flags, + NULL, + 0, + NULL, + NULL)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_by_record_id: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + + printf ("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n", + "Record ID", + "Record Type", + "SEL State", + "Timestamp", + "Sensor Name", + "Sensor Type", + "Event Direction", + "Event Type Code", + "Event Data", + "Event Offset", + "Event Offset String"); + + for (i = 0; i < sel_count; i++, ipmi_monitoring_sel_iterator_next (ctx)) + { + int record_id, record_type, sel_state, sensor_type, sensor_number, event_direction, + event_offset_type, event_offset, event_type_code, manufacturer_id; + unsigned int timestamp, event_data1, event_data2, event_data3; + int record_type_class; + char *event_offset_string = NULL; + const char *sensor_type_str; + const char *event_direction_str; + const char *sel_state_str; + char *sensor_name = NULL; + unsigned char oem_data[64]; + int oem_data_len; + unsigned int j; + + if ((record_id = ipmi_monitoring_sel_read_record_id (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_record_id: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((record_type = ipmi_monitoring_sel_read_record_type (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_record_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((record_type_class = ipmi_monitoring_sel_read_record_type_class (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_record_type_class: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sel_state = ipmi_monitoring_sel_read_sel_state (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_sel_state: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if (sel_state == IPMI_MONITORING_STATE_NOMINAL) + sel_state_str = "Nominal"; + else if (sel_state == IPMI_MONITORING_STATE_WARNING) + sel_state_str = "Warning"; + else if (sel_state == IPMI_MONITORING_STATE_CRITICAL) + sel_state_str = "Critical"; + else + sel_state_str = "N/A"; + + printf ("%u, %u, %s", + record_id, + record_type, + sel_state_str); + + if (record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD + || record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD) + { + + if (ipmi_monitoring_sel_read_timestamp (ctx, ×tamp) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_timestamp: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + /* XXX: This should be converted to a nice date output using + * your favorite timestamp -> string conversion functions. + */ + printf (", %u", timestamp); + } + else + printf (", N/A"); + + if (record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_SYSTEM_EVENT_RECORD) + { + /* If you are integrating ipmimonitoring SEL into a monitoring application, + * you may wish to count the number of times a specific error occurred + * and report that to the monitoring application. + * + * In this particular case, you'll probably want to check out + * what sensor type each SEL event is reporting, the + * event offset type, and the specific event offset that occurred. + * + * See ipmi_monitoring_offsets.h for a list of event offsets + * and types. + */ + + if (!(sensor_name = ipmi_monitoring_sel_read_sensor_name (ctx))) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_sensor_name: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_type = ipmi_monitoring_sel_read_sensor_type (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_sensor_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_number = ipmi_monitoring_sel_read_sensor_number (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_sensor_number: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((event_direction = ipmi_monitoring_sel_read_event_direction (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_event_direction: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((event_type_code = ipmi_monitoring_sel_read_event_type_code (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_event_type_code: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if (ipmi_monitoring_sel_read_event_data (ctx, + &event_data1, + &event_data2, + &event_data3) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_event_data: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((event_offset_type = ipmi_monitoring_sel_read_event_offset_type (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_event_offset_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((event_offset = ipmi_monitoring_sel_read_event_offset (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_event_offset: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if (!(event_offset_string = ipmi_monitoring_sel_read_event_offset_string (ctx))) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_event_offset_string: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if (!strlen (sensor_name)) + sensor_name = "N/A"; + + sensor_type_str = _get_sensor_type_string (sensor_type); + + if (event_direction == IPMI_MONITORING_SEL_EVENT_DIRECTION_ASSERTION) + event_direction_str = "Assertion"; + else + event_direction_str = "Deassertion"; + + printf (", %s, %s, %u, %s, %Xh, %Xh-%Xh-%Xh", + sensor_name, + sensor_type_str, + sensor_number, + event_direction_str, + event_type_code, + event_data1, + event_data2, + event_data3); + + if (event_offset_type != IPMI_MONITORING_EVENT_OFFSET_TYPE_UNKNOWN) + printf (", %Xh", event_offset); + else + printf (", N/A"); + + if (event_offset_type != IPMI_MONITORING_EVENT_OFFSET_TYPE_UNKNOWN) + printf (", %s", event_offset_string); + else + printf (", N/A"); + } + else if (record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD + || record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_NON_TIMESTAMPED_OEM_RECORD) + { + if (record_type_class == IPMI_MONITORING_SEL_RECORD_TYPE_CLASS_TIMESTAMPED_OEM_RECORD) + { + if ((manufacturer_id = ipmi_monitoring_sel_read_manufacturer_id (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_manufacturer_id: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + printf (", Manufacturer ID = %Xh", manufacturer_id); + } + + if ((oem_data_len = ipmi_monitoring_sel_read_oem_data (ctx, oem_data, 1024)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sel_read_oem_data: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + printf (", OEM Data = "); + + for (j = 0; j < oem_data_len; j++) + printf ("%02Xh ", oem_data[j]); + } + else + printf (", N/A, N/A, N/A, N/A, N/A, N/A, N/A"); + + printf ("\n"); + } + + rv = 0; + cleanup: + if (ctx) + ipmi_monitoring_ctx_destroy (ctx); + return (rv); +} + +static void +_init_ipmi_config (struct ipmi_monitoring_ipmi_config *ipmi_config) +{ + assert (ipmi_config); + + ipmi_config->driver_type = driver_type; + ipmi_config->disable_auto_probe = disable_auto_probe; + ipmi_config->driver_address = driver_address; + ipmi_config->register_spacing = register_spacing; + ipmi_config->driver_device = driver_device; + + ipmi_config->protocol_version = protocol_version; + ipmi_config->username = username; + ipmi_config->password = password; + ipmi_config->k_g = k_g; + ipmi_config->k_g_len = k_g_len; + ipmi_config->privilege_level = privilege_level; + ipmi_config->authentication_type = authentication_type; + ipmi_config->cipher_suite_id = cipher_suite_id; + ipmi_config->session_timeout_len = session_timeout; + ipmi_config->retransmission_timeout_len = retransmission_timeout; + + ipmi_config->workaround_flags = workaround_flags; +} + +int +main (int argc, char **argv) +{ + struct ipmi_monitoring_ipmi_config ipmi_config; + + _init_ipmi_config (&ipmi_config); + + if (_ipmimonitoring (&ipmi_config) < 0) + exit (1); + + exit (0); +} + diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/libipmimonitoring/ipmimonitoring-sensors.c b/source/freeipmi/usr/share/doc/freeipmi/contrib/libipmimonitoring/ipmimonitoring-sensors.c new file mode 100644 index 00000000..918613c3 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/libipmimonitoring/ipmimonitoring-sensors.c @@ -0,0 +1,607 @@ +/*****************************************************************************\ + * $Id: ipmimonitoring-sensors.c,v 1.6 2010-07-22 21:49:00 chu11 Exp $ + ***************************************************************************** + * 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 + * 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 . +\*****************************************************************************/ + +/* This is an example of how to use the libipmimonitoring library to + * read and monitor sensors. + * + * At the top of this file, you'll find a number of variables for + * configuration of IPMI communication and what sensors you are + * interested in monitoring. Those variables are used in the + * libipmimonitoring calls below. + * + * Hopefully this example will be sufficient to help anyone program + * IPMI monitoring software for their environment. + * + * To compile, linking against the library should be sufficient for + * most environments. e.g. + * + * gcc -o ipmimonitoring-sensors ipmimonitoring-sensors.c -lipmimonitoring + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +/* Communication Configuration - Initialize accordingly */ + +/* Hostname, NULL for In-band communication, non-null for a hostname */ +char *hostname = NULL; + +/* In-band Communication Configuration */ +int driver_type = IPMI_MONITORING_DRIVER_TYPE_KCS; /* or -1 for default */ +int disable_auto_probe = 0; /* probe for in-band device */ +unsigned int driver_address = 0; /* not used if probing */ +unsigned int register_spacing = 0; /* not used if probing */ +char *driver_device = NULL; /* not used if probing */ + +/* Out-of-band Communication Configuration */ +int protocol_version = IPMI_MONITORING_PROTOCOL_VERSION_1_5; /* or -1 for default */ +char *username = "foousername"; +char *password = "foopassword"; +unsigned char *k_g = NULL; +unsigned int k_g_len = 0; +int privilege_level = IPMI_MONITORING_PRIVILEGE_LEVEL_USER; /* or -1 for default */ +int authentication_type = IPMI_MONITORING_AUTHENTICATION_TYPE_MD5; /* or -1 for default */ +int cipher_suite_id = 0; /* or -1 for default */ +int session_timeout = 0; /* 0 for default */ +int retransmission_timeout = 0; /* 0 for default */ + +/* Workarounds - specify workaround flags if necessary */ +unsigned int workaround_flags = 0; + +/* Initialize w/ record id numbers to only monitor specific record ids */ +unsigned int record_ids[] = {0}; +unsigned int record_ids_length = 0; + +/* Initialize w/ sensor types to only monitor specific sensor types + * see ipmi_monitoring.h sensor types list. + */ +unsigned int sensor_types[] = {0}; +unsigned int sensor_types_length = 0; + +/* Set to an appropriate alternate if desired */ +char *sdr_cache_directory = "/tmp"; +char *sensor_config_file = NULL; + +/* Set to 1 or 0 to enable these sensor reading flags + * - See ipmi_monitoring.h for descriptions of these flags. + */ +int reread_sdr_cache = 0; +int ignore_non_interpretable_sensors = 1; +int bridge_sensors = 0; +int interpret_oem_data = 0; +int shared_sensors = 0; +int discrete_reading = 0; +int ignore_scanning_disabled = 0; +int assume_bmc_owner = 0; +int entity_sensor_names = 0; + +/* Initialization flags + * + * Most commonly bitwise OR IPMI_MONITORING_FLAGS_DEBUG and/or + * IPMI_MONITORING_FLAGS_DEBUG_IPMI_PACKETS for extra debugging + * information. + */ +unsigned int ipmimonitoring_init_flags = 0; + +static const char * +_get_sensor_type_string (int sensor_type) +{ + switch (sensor_type) + { + case IPMI_MONITORING_SENSOR_TYPE_RESERVED: + return ("Reserved"); + case IPMI_MONITORING_SENSOR_TYPE_TEMPERATURE: + return ("Temperature"); + case IPMI_MONITORING_SENSOR_TYPE_VOLTAGE: + return ("Voltage"); + case IPMI_MONITORING_SENSOR_TYPE_CURRENT: + return ("Current"); + case IPMI_MONITORING_SENSOR_TYPE_FAN: + return ("Fan"); + case IPMI_MONITORING_SENSOR_TYPE_PHYSICAL_SECURITY: + return ("Physical Security"); + case IPMI_MONITORING_SENSOR_TYPE_PLATFORM_SECURITY_VIOLATION_ATTEMPT: + return ("Platform Security Violation Attempt"); + case IPMI_MONITORING_SENSOR_TYPE_PROCESSOR: + return ("Processor"); + case IPMI_MONITORING_SENSOR_TYPE_POWER_SUPPLY: + return ("Power Supply"); + case IPMI_MONITORING_SENSOR_TYPE_POWER_UNIT: + return ("Power Unit"); + case IPMI_MONITORING_SENSOR_TYPE_COOLING_DEVICE: + return ("Cooling Device"); + case IPMI_MONITORING_SENSOR_TYPE_OTHER_UNITS_BASED_SENSOR: + return ("Other Units Based Sensor"); + case IPMI_MONITORING_SENSOR_TYPE_MEMORY: + return ("Memory"); + case IPMI_MONITORING_SENSOR_TYPE_DRIVE_SLOT: + return ("Drive Slot"); + case IPMI_MONITORING_SENSOR_TYPE_POST_MEMORY_RESIZE: + return ("POST Memory Resize"); + case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_FIRMWARE_PROGRESS: + return ("System Firmware Progress"); + case IPMI_MONITORING_SENSOR_TYPE_EVENT_LOGGING_DISABLED: + return ("Event Logging Disabled"); + case IPMI_MONITORING_SENSOR_TYPE_WATCHDOG1: + return ("Watchdog 1"); + case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_EVENT: + return ("System Event"); + case IPMI_MONITORING_SENSOR_TYPE_CRITICAL_INTERRUPT: + return ("Critical Interrupt"); + case IPMI_MONITORING_SENSOR_TYPE_BUTTON_SWITCH: + return ("Button/Switch"); + case IPMI_MONITORING_SENSOR_TYPE_MODULE_BOARD: + return ("Module/Board"); + case IPMI_MONITORING_SENSOR_TYPE_MICROCONTROLLER_COPROCESSOR: + return ("Microcontroller/Coprocessor"); + case IPMI_MONITORING_SENSOR_TYPE_ADD_IN_CARD: + return ("Add In Card"); + case IPMI_MONITORING_SENSOR_TYPE_CHASSIS: + return ("Chassis"); + case IPMI_MONITORING_SENSOR_TYPE_CHIP_SET: + return ("Chip Set"); + case IPMI_MONITORING_SENSOR_TYPE_OTHER_FRU: + return ("Other Fru"); + case IPMI_MONITORING_SENSOR_TYPE_CABLE_INTERCONNECT: + return ("Cable/Interconnect"); + case IPMI_MONITORING_SENSOR_TYPE_TERMINATOR: + return ("Terminator"); + case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_BOOT_INITIATED: + return ("System Boot Initiated"); + case IPMI_MONITORING_SENSOR_TYPE_BOOT_ERROR: + return ("Boot Error"); + case IPMI_MONITORING_SENSOR_TYPE_OS_BOOT: + return ("OS Boot"); + case IPMI_MONITORING_SENSOR_TYPE_OS_CRITICAL_STOP: + return ("OS Critical Stop"); + case IPMI_MONITORING_SENSOR_TYPE_SLOT_CONNECTOR: + return ("Slot/Connector"); + case IPMI_MONITORING_SENSOR_TYPE_SYSTEM_ACPI_POWER_STATE: + return ("System ACPI Power State"); + case IPMI_MONITORING_SENSOR_TYPE_WATCHDOG2: + return ("Watchdog 2"); + case IPMI_MONITORING_SENSOR_TYPE_PLATFORM_ALERT: + return ("Platform Alert"); + case IPMI_MONITORING_SENSOR_TYPE_ENTITY_PRESENCE: + return ("Entity Presence"); + case IPMI_MONITORING_SENSOR_TYPE_MONITOR_ASIC_IC: + return ("Monitor ASIC/IC"); + case IPMI_MONITORING_SENSOR_TYPE_LAN: + return ("LAN"); + case IPMI_MONITORING_SENSOR_TYPE_MANAGEMENT_SUBSYSTEM_HEALTH: + return ("Management Subsystem Health"); + case IPMI_MONITORING_SENSOR_TYPE_BATTERY: + return ("Battery"); + case IPMI_MONITORING_SENSOR_TYPE_SESSION_AUDIT: + return ("Session Audit"); + case IPMI_MONITORING_SENSOR_TYPE_VERSION_CHANGE: + return ("Version Change"); + case IPMI_MONITORING_SENSOR_TYPE_FRU_STATE: + return ("FRU State"); + } + + return ("Unrecognized"); +} + +static int +_ipmimonitoring (struct ipmi_monitoring_ipmi_config *ipmi_config) +{ + ipmi_monitoring_ctx_t ctx = NULL; + unsigned int sensor_reading_flags = 0; + unsigned int i; + int sensor_count; + int errnum; + int rv = -1; + + if (ipmi_monitoring_init (ipmimonitoring_init_flags, &errnum) < 0) + { + fprintf (stderr, + "ipmi_monitoring_init: %s\n", + ipmi_monitoring_ctx_strerror (errnum)); + goto cleanup; + } + + if (!(ctx = ipmi_monitoring_ctx_create ())) + { + perror ("ipmi_monitoring_ctx_create:"); + goto cleanup; + } + + if (sdr_cache_directory) + { + if (ipmi_monitoring_ctx_sdr_cache_directory (ctx, + sdr_cache_directory) < 0) + { + fprintf (stderr, + "ipmi_monitoring_ctx_sdr_cache_directory: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + + /* Must call otherwise only default interpretations ever used */ + if (sensor_config_file) + { + if (ipmi_monitoring_ctx_sensor_config_file (ctx, + sensor_config_file) < 0) + { + fprintf (stderr, + "ipmi_monitoring_ctx_sensor_config_file: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + else + { + if (ipmi_monitoring_ctx_sensor_config_file (ctx, NULL) < 0) + { + fprintf (stderr, + "ipmi_monitoring_ctx_sensor_config_file: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + + if (reread_sdr_cache) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_REREAD_SDR_CACHE; + + if (ignore_non_interpretable_sensors) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_NON_INTERPRETABLE_SENSORS; + + if (bridge_sensors) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_BRIDGE_SENSORS; + + if (interpret_oem_data) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_INTERPRET_OEM_DATA; + + if (shared_sensors) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_SHARED_SENSORS; + + if (discrete_reading) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_DISCRETE_READING; + + if (ignore_scanning_disabled) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_IGNORE_SCANNING_DISABLED; + + if (assume_bmc_owner) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_ASSUME_BMC_OWNER; + + if (entity_sensor_names) + sensor_reading_flags |= IPMI_MONITORING_SENSOR_READING_FLAGS_ENTITY_SENSOR_NAMES; + + if (!record_ids_length && !sensor_types_length) + { + if ((sensor_count = ipmi_monitoring_sensor_readings_by_record_id (ctx, + hostname, + ipmi_config, + sensor_reading_flags, + NULL, + 0, + NULL, + NULL)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_readings_by_record_id: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + else if (record_ids_length) + { + if ((sensor_count = ipmi_monitoring_sensor_readings_by_record_id (ctx, + hostname, + ipmi_config, + sensor_reading_flags, + record_ids, + record_ids_length, + NULL, + NULL)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_readings_by_record_id: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + else + { + if ((sensor_count = ipmi_monitoring_sensor_readings_by_sensor_type (ctx, + hostname, + ipmi_config, + sensor_reading_flags, + sensor_types, + sensor_types_length, + NULL, + NULL)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_readings_by_sensor_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + } + + printf ("%s, %s, %s, %s, %s, %s, %s, %s, %s, %s\n", + "Record ID", + "Sensor Name", + "Sensor Number", + "Sensor Type", + "Sensor State", + "Sensor Reading", + "Sensor Units", + "Sensor Event/Reading Type Code", + "Sensor Event Bitmask", + "Sensor Event String"); + + for (i = 0; i < sensor_count; i++, ipmi_monitoring_sensor_iterator_next (ctx)) + { + int record_id, sensor_number, sensor_type, sensor_state, sensor_units, + sensor_bitmask_type, sensor_bitmask, sensor_reading_type, + event_reading_type_code; + char **sensor_bitmask_strings = NULL; + const char *sensor_type_str; + const char *sensor_state_str; + char *sensor_name = NULL; + void *sensor_reading; + + if ((record_id = ipmi_monitoring_sensor_read_record_id (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_record_id: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_number = ipmi_monitoring_sensor_read_sensor_number (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_number: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_type = ipmi_monitoring_sensor_read_sensor_type (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if (!(sensor_name = ipmi_monitoring_sensor_read_sensor_name (ctx))) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_name: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_state = ipmi_monitoring_sensor_read_sensor_state (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_state: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_units = ipmi_monitoring_sensor_read_sensor_units (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_units: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_bitmask_type = ipmi_monitoring_sensor_read_sensor_bitmask_type (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_bitmask_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_bitmask = ipmi_monitoring_sensor_read_sensor_bitmask (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_bitmask: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if (!(sensor_bitmask_strings = ipmi_monitoring_sensor_read_sensor_bitmask_strings (ctx))) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_bitmask_strings: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if ((sensor_reading_type = ipmi_monitoring_sensor_read_sensor_reading_type (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_sensor_reading_type: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + sensor_reading = ipmi_monitoring_sensor_read_sensor_reading (ctx); + + if ((event_reading_type_code = ipmi_monitoring_sensor_read_event_reading_type_code (ctx)) < 0) + { + fprintf (stderr, + "ipmi_monitoring_sensor_read_event_reading_type_code: %s\n", + ipmi_monitoring_ctx_errormsg (ctx)); + goto cleanup; + } + + if (!strlen (sensor_name)) + sensor_name = "N/A"; + + sensor_type_str = _get_sensor_type_string (sensor_type); + + printf ("%u, %s, %u, %s", + record_id, + sensor_name, + sensor_number, + sensor_type_str); + + if (sensor_state == IPMI_MONITORING_STATE_NOMINAL) + sensor_state_str = "Nominal"; + else if (sensor_state == IPMI_MONITORING_STATE_WARNING) + sensor_state_str = "Warning"; + else if (sensor_state == IPMI_MONITORING_STATE_CRITICAL) + sensor_state_str = "Critical"; + else + sensor_state_str = "N/A"; + + printf (", %s", sensor_state_str); + + if (sensor_reading) + { + const char *sensor_units_str; + + if (sensor_reading_type == IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER8_BOOL) + printf (", %s", + (*((uint8_t *)sensor_reading) ? "true" : "false")); + else if (sensor_reading_type == IPMI_MONITORING_SENSOR_READING_TYPE_UNSIGNED_INTEGER32) + printf (", %u", + *((uint32_t *)sensor_reading)); + else if (sensor_reading_type == IPMI_MONITORING_SENSOR_READING_TYPE_DOUBLE) + printf (", %.2f", + *((double *)sensor_reading)); + else + printf (", N/A"); + + if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_CELSIUS) + sensor_units_str = "C"; + else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_FAHRENHEIT) + sensor_units_str = "F"; + else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_VOLTS) + sensor_units_str = "V"; + else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_AMPS) + sensor_units_str = "A"; + else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_RPM) + sensor_units_str = "RPM"; + else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_WATTS) + sensor_units_str = "W"; + else if (sensor_units == IPMI_MONITORING_SENSOR_UNITS_PERCENT) + sensor_units_str = "%"; + else + sensor_units_str = "N/A"; + + printf (", %s", sensor_units_str); + } + else + printf (", N/A, N/A"); + + printf (", %Xh", event_reading_type_code); + + /* It is possible you may want to monitor specific event + * conditions that may occur. If that is the case, you may want + * to check out what specific bitmask type and bitmask events + * occurred. See ipmi_monitoring_bitmasks.h for a list of + * bitmasks and types. + */ + + if (sensor_bitmask_type != IPMI_MONITORING_SENSOR_BITMASK_TYPE_UNKNOWN) + printf (", %Xh", sensor_bitmask); + else + printf (", N/A"); + + if (sensor_bitmask_type != IPMI_MONITORING_SENSOR_BITMASK_TYPE_UNKNOWN) + { + unsigned int i = 0; + + printf (","); + + while (sensor_bitmask_strings[i]) + { + printf (" "); + + printf ("'%s'", + sensor_bitmask_strings[i]); + + i++; + } + } + else + printf (", N/A"); + + printf ("\n"); + } + + rv = 0; + cleanup: + if (ctx) + ipmi_monitoring_ctx_destroy (ctx); + return (rv); +} + +static void +_init_ipmi_config (struct ipmi_monitoring_ipmi_config *ipmi_config) +{ + assert (ipmi_config); + + ipmi_config->driver_type = driver_type; + ipmi_config->disable_auto_probe = disable_auto_probe; + ipmi_config->driver_address = driver_address; + ipmi_config->register_spacing = register_spacing; + ipmi_config->driver_device = driver_device; + + ipmi_config->protocol_version = protocol_version; + ipmi_config->username = username; + ipmi_config->password = password; + ipmi_config->k_g = k_g; + ipmi_config->k_g_len = k_g_len; + ipmi_config->privilege_level = privilege_level; + ipmi_config->authentication_type = authentication_type; + ipmi_config->cipher_suite_id = cipher_suite_id; + ipmi_config->session_timeout_len = session_timeout; + ipmi_config->retransmission_timeout_len = retransmission_timeout; + + ipmi_config->workaround_flags = workaround_flags; +} + +int +main (int argc, char **argv) +{ + struct ipmi_monitoring_ipmi_config ipmi_config; + + _init_ipmi_config (&ipmi_config); + + if (_ipmimonitoring (&ipmi_config) < 0) + exit (1); + + exit (0); +} + diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/nagios/README b/source/freeipmi/usr/share/doc/freeipmi/contrib/nagios/README new file mode 100644 index 00000000..881c5198 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/nagios/README @@ -0,0 +1,18 @@ +nagios_ipmi_sensors.pl +----------------------- + +This script can be used to monitor IPMI sensors in nagios via +FreeIPMI's ipmi-sensors. Please see instructions found at the top of +the script for detailed instructions. + +This tool will monitor the sensor state (Nominal, Warning, or +Critical) of each sensor as determined by libfreeipmi's interpret +library. The Nominal, Warning, and Critical states of each sensor +will be collected and counted. The overall IPMI sensor status will be +mapped into a Nagios status of OK, Warning, or Critical. Details will +then be output for Nagios to read. See ipmi-sensors(8) for more +general info on ipmi-sensors and freeipmi_interpret_sensors.conf(5) +for more information on sensor states. + +Albert Chu +chu11 at llnl dot gov diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/nagios/nagios_ipmi_sensors.pl b/source/freeipmi/usr/share/doc/freeipmi/contrib/nagios/nagios_ipmi_sensors.pl new file mode 100644 index 00000000..9a90cdce --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/nagios/nagios_ipmi_sensors.pl @@ -0,0 +1,327 @@ +#!/usr/bin/perl +############################################################################# +# Copyright (C) 2003-2009 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, 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 . +############################################################################# +# +# nagios_ipmi_sensors.pl +# +# Author: +# +# Albert Chu +# +# Description: +# +# This script can be used to monitor IPMI sensors in nagios via +# FreeIPMI's ipmi-sensors. +# +# This tool will monitor the sensor state (Nominal, Warning, or +# Critical) of each sensor as determined by libfreeipmi's interpret +# library. The Nominal, Warning, and Critical states of each sensor +# will be collected and counted. The overall IPMI sensor status will +# be mapped into a Nagios status of OK, Warning, or Critical. Details +# will then be output for Nagios to read. See ipmi-sensors(8) for +# more general info on ipmi-sensors and +# freeipmi_interpret_sensors.conf(5) for more information on sensor +# states. +# +# Options: +# +# -h - specify hostname(s) to remotely access (don't specify for inband) +# -S - specify an alternate ipmi_sensors location +# -s - specify additional ipmi_sensors arguments +# -d - print debug info +# -H - output help +# +# Environment Variables: +# +# IPMI_HOSTS - specify hostname(s) to remotely access (don't specify for inband) +# IPMI_SENSORS_PATH - specify an alternate ipmi-ssensors location +# IPMI_SENSORS_ARGS - specify additional ipmi-sensors arguments +# +# Setup Notes: +# +# Specify the remote hosts you wish to access IPMI information from +# via the -h option or IPMI_HOSTS environment variable. If you wish +# only to monitor the local node, do not specify an ipmi host. The +# input to the -h option is passed directly to ipmimonitoring. So you +# may specify anything the ipmimonitoring tool accepts including +# hostranged (e.g. foo[0-127]) or comma separated +# (e.g. foo0,foo1,foo2,foo3) inputs. If you wish to monitor both +# remote and local system, remember to specify one of the hosts as +# "localhost". Most will probably want to monitor just one host (get +# the IPMI status for each individual machine being monitored), +# however more than one host can be analyzed for a collective result. +# +# If stored in a non-default location the -S option or +# IPMI_SENSORS_PATH environment variable must be specified to +# determine the ipmimonitoring location. +# +# In order to specify non-defaults for ipmimonitoring use the -s +# argument or IPMI_SENSORS_ARGS environment variable. Typically, +# this option is necessary for non-default communication information +# or authentication information (e.g. driver path, driver type, +# username, password, etc.). Non-default communication information +# can also be stored in the FreeIPMI configuration file. This is the +# suggested method because passwords and other sensitive information +# could show up in ps(1). If you wish to limit the sensors being +# monitored, you can also specify which record-ids are to be monitored +# (-s option). +# +# The setup for this can vary depending on your environment and nagios +# setup, but most will need to set this up in nagios by defining a +# command and then a service. +# +# define command { +# command_name nagios_ipmi_sensors +# command_line /path/nagios_ipmi_sensors.pl -h $ARG1$ +# } +# +# define service { +# host_name foohost +# service_description ipmi +# check_command nagios_ipmi_sensors!foohost +# } +# +# The default session timeout length in ipmi-sensors is 20 seconds. +# We would recommend that IPMI not be monitored more frequently than +# that. +# +# Help: +# +# Report bugs to freeipmi-users@gnu.org or freeipmi-devel@gnu.org. +# +############################################################################# + +use strict; + +use Getopt::Std; + +my $debug = 0; + +my $IPMI_HOSTS = undef; +my $IPMI_SENSORS_PATH = "/usr/sbin/ipmi-sensors"; +my $IPMI_SENSORS_ARGS = ""; + +my $IPMI_SENSORS_OUTPUT; +my @IPMI_SENSORS_OUTPUT_LINES; +my $line; + +my $cmd; + +my $num_output = 0; +my $warning_num = 0; +my $critical_num = 0; +my $fatal_error = 0; + +sub usage +{ + my $prog = $0; + print "Usage: $prog [-h ] [-S ] [-s ] [-d] [-H]\n"; + print " -h specify hostname(s) to remotely access\n"; + print " -S specify an alternate ipmi-sensors path\n"; + print " -s specify additional ipmi-sensors arguments\n"; + print " -d print debug info\n"; + print " -H output help\n"; + exit 0; +} + +if (!getopts("h:S:s:dH")) +{ + usage(); +} + +if (defined($main::opt_H)) +{ + usage(); +} + +if (defined($main::opt_h)) +{ + $IPMI_HOSTS = $main::opt_h; +} + +if (defined($main::opt_S)) +{ + $IPMI_SENSORS_PATH = $main::opt_S; +} + +if (defined($main::opt_s)) +{ + $IPMI_SENSORS_ARGS = $main::opt_s; +} + +if (defined($main::opt_d)) +{ + $debug = 1; +} + +if ($ENV{"IPMI_HOSTS"}) +{ + $IPMI_HOSTS = $ENV{"IPMI_HOSTS"}; +} + +if ($ENV{"IPMI_SENSORS_PATH"}) +{ + $IPMI_SENSORS_PATH = $ENV{"IPMI_SENSORS_PATH"}; +} + +if ($ENV{"IPMI_SENSORS_ARGS"}) +{ + $IPMI_SENSORS_ARGS = $ENV{"IPMI_SENSORS_ARGS"}; +} + +if ($debug) +{ + print "IPMI_HOSTS=$IPMI_HOSTS\n"; + print "IPMI_SENSORS_PATH=$IPMI_SENSORS_PATH\n"; + print "IPMI_SENSORS_ARGS=$IPMI_SENSORS_ARGS\n"; +} + +if (!(-x $IPMI_SENSORS_PATH)) +{ + print "$IPMI_SENSORS_PATH cannot be executed\n"; + exit(1); +} + +# note, don't need --ignore-non-interpretable-sensors, legacy output handles it +if ($IPMI_HOSTS) +{ + $cmd = "$IPMI_SENSORS_PATH $IPMI_SENSORS_ARGS -h $IPMI_HOSTS --quiet-cache --sdr-cache-recreate --always-prefix --no-header-output --output-sensor-state"; +} +else +{ + $cmd = "$IPMI_SENSORS_PATH $IPMI_SENSORS_ARGS --quiet-cache --sdr-cache-recreate --always-prefix --no-header-output --output-sensor-state" +} + +if ($debug) +{ + print "ipmi-sensors command: $cmd\n"; +} + +$IPMI_SENSORS_OUTPUT = `$cmd`; +if ($? != 0) +{ + print "$IPMI_SENSORS_PATH: exited with error\n"; +} + +@IPMI_SENSORS_OUTPUT_LINES = split(/\n/, $IPMI_SENSORS_OUTPUT); + +foreach $line (@IPMI_SENSORS_OUTPUT_LINES) +{ + my $hostname; + my $record_id; + my $id_string; + my $type; + my $state; + my $reading; + my $units; + my $event; + my $id_string_state; + + my $output_str; + + if ($debug) + { + print "Parsing: $line\n"; + } + + if ($line =~ /(.+)\: (\d+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)(\s+)\| (.+)/) + { + $hostname = $1; + $record_id = $2; + $id_string = $4; + $type = $6; + $state = $8; + $reading = $10; + $units = $12; + $event = $14; + + # trim whitespace off end of string + $record_id =~ s/\s+$//; + $id_string =~ s/\s+$//; + $type =~ s/\s+$//; + $state =~ s/\s+$//; + $reading =~ s/\s+$//; + $units =~ s/\s+$//; + } + else + { + print "Line not parsable\n"; + $fatal_error++; + next; + } + + # make name better, convert spaces and slashes into underscores + $id_string =~ s/ /_/g; + $id_string =~ s/\//_/g; + + if ($state eq "Nominal") + { + next; + } + + if ($state eq "N/A") + { + next; + } + + if ($state eq "Warning") + { + $warning_num++; + $output_str = "WARNING"; + } + elsif ($state eq "Critical") + { + $critical_num++; + $output_str = "CRITICAL"; + } + else + { + print "State not parsable\n"; + $fatal_error++; + next; + } + + if ($num_output) + { + print "; "; + } + print "$id_string - $output_str"; + $num_output++; +} + +# Nagios Exit Codes +# 0 = OK +# 1 = WARNING +# 2 = CRITICAL +# 3 = UNKNOWN + +if ($fatal_error) +{ + exit 3; +} + +if ($critical_num) +{ + exit 2; +} + +if ($warning_num) +{ + exit 1; +} + +exit 0; diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/README b/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/README new file mode 100644 index 00000000..5f9b4140 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/README @@ -0,0 +1,453 @@ +petalert.pl +----------------------- + +This is a snmptrapd handler script to alert when Platform Event Traps +(PET) occur. It was written because traptoemail distributed with +net-snmp-5.3.2.2 is incapable of handling multi-line hexstrings and +restricted to email alert. + +This script operates in two modes, traphandle or embperl. When in +traphandle mode, it concatenates the quoted hex string into one long +line, then builds structures to resemble embperl mode. Both modes then +invokes helper decoder, ipmi-pet(8) from FreeIPMI, parses the output +and alerts in given way like email, nagios external command, nsca, etc. + + +1. REQUIREMENTS + +freeipmi-1.1.1 and above is required for the script to function. Both +FreeIPMI and the script imply Unix-like system, notably GNU/Linux; +Windows is not supported as of this writing, Dec 13, 2011. + +Net-SNMP 5.3.2.2 and above is required to make a complete alerting +solution. Actually only snmptrapd is related which acts as the trap +receiver. + +If you prefer to running it as embedded perl handler, your version of +Net-SNMP should have embedded perl support enabled, see "Embedded Perl +Support" from snmpd.conf(8) for more infomration. Usually it's +enabled, and you can verify with the following command: + +# net-snmp-config --configure-options | tr ' ' '\n' | grep perl +'--enable-embedded-perl' + +If you prefer to invoking the handler directly rather than invoking it +with perl(1), make sure the script itself has execute permission. Both +cases require a working Perl installation, better Perl-5.8.8. + +If you prefer to built-in email alerting, make sure Net::SMTP is +installed. + +If you prefer to Nagios monitoring system, make sure the Nagios +process and snmptrapd is on the same host. Usually you don't need to +worry about write permission of Nagios external command file, because +the handler is invoked as root by snmptrapd. If that's not your case, +you need to ensure write permission on the command file. + +You might prefer to other alerting methods, bad news is it is not +implemented yet. Please drop me a mail, then I might take my time to +go on with plugin support. + +Paranoids might check firewall rules allowing only traffic from +trusted hosts. + + +2. CONFIGURATION + +(Note backslash-newline concatenates adjacent lines, so put them in +one) Put a line like these in your snmptrapd.conf file: + + traphandle .1.3.6.1.4.1.3183.1.1 /usr/bin/perl \ + /usr/share/doc/freeipmi/contrib/pet/petalert.pl --mode=traphandle \ + --alert=email --sdrcache SDRCONF -- -f FROM -s SMTPSERVER ADDRESSES + +Or, if you prefer embedded perl, + + perl do "/usr/share/doc/freeipmi/contrib/pet/petalert.pl"; + perl IpmiPET::main(qw(--mode=embperl --trapoid=OID --sdrcache=SDRCONF \ + --alert=email -- -s SMTPSERVER -f FROM ADDRESSES)); + +where: + only --mode is required, see "petalert.pl -h". + +Make sure execute permission is granted to execute handlers, for +example, + + authCommunity execute COMMUNITY_STRING + +see "ACCESS CONTROL" from snmptrapd.conf(8) for more information. Bad +news is that you have to use numeric representation, so in addition +add "-Of -On" to snmptrapd options. + +You have to enable PET on IPMI nodes as well, including LAN access, +PEF alerting, community, alert policy and destination. You may use +ipmi-config from FreeIPMI to do the configuration (use --category to +checkout core and pef category of configuration). See "IPMI NODES". + +You might wish to set up PTR records for IPMI nodes, otherwise, +snmptrapd reports to traphandle and the script will fall +back to use ip. + +2.1 ACKNOWLEDGE + +Platform event trap is over UDP, you might worry about trap loss. IPMI +spec allows the trap receiver to acknowledge the trap. Use --ack to +acknowledge the trap before alerting. You may need workarounds for +acknowledgement. See BUGS. So in a acknowlege setup, it might be like +this: + + perl do "/usr/share/doc/freeipmi/contrib/pet/petalert.pl"; + perl IpmiPET::main(qw(--mode=embperl --trapoid=OID --sdrcache=SDRCONF \ + --ack -W malformedack \ + --alert=email -- -s SMTPSERVER -f FROM ADDRESSES)); + +2.2 NAGIOS INTEGRATION + +Nagios monitoring system could be plugged into by writing to its +external command file as passive check. See ipminodes.cfg and +check_rmcping for related Nagios configuration. + +Assuming Nagios process is local, use: + + perl do "/usr/share/doc/freeipmi/contrib/pet/petalert.pl"; + perl IpmiPET::main(qw(--mode=embperl --trapoid=OID --sdrcache=SDRCONF \ + --alert=nagios -- -H short -S PET NAGIOS_COMMAND_FILE)); + +where "-H short" means if 10.2.3.4 resolves to foo.example.com, Nagios +passive check gets foo as host; use "-H fqdn" to pass foo.example.com +to Nagios. In addition, "-S PET" sets service description. + +If Nagios process is on remote host, normally you turns to NSCA which +consists of NSCA daemon on the Nagios host and the send_nsca client +program. To alert by send_nsca, + + perl do "/usr/share/doc/freeipmi/contrib/pet/petalert.pl"; + perl IpmiPET::main(qw(--mode=embperl --trapoid=OID --sdrcache=SDRCONF \ + --alert=nsca -- --prog /usr/bin/send_nsca -H short -S PET \ + -- -H NAGIOS_HOST -c SEND_NSCA_CONF)); + +Notice the unattached -- appears two times in the configuration line +separating three steps of arguments processing, namely generic args, +alert specific args, and external helper args. + + +3. SDR CACHE FILE MAPPING + +Notice the underlying helper program ipmi-pet(8) normally depends on +some sdr cache file, either preinitialized or created on demand. If no +credential is supplied, ipmi-pet(8) simply assumes localhost and +creates sdr cache which is usually +~/.freeipmi/sdr-cache/sdr-cache-.localhost. You may wish to +supply preinitialized ones, then use -c sdrmapping.conf to associate +them with IPMI nodes. + +The sdr cache config syntax is: every unindented line starts an sdr +cache file, followed by any number of indented lines of IPMI +nodes. Every IPMI node line may consist of multiple nodes delimited by +whitespaces. Comments follow Shell-style, trailing whitespaces are +trimmed, empty lines skipped. + +For example, + +|/path/to/sdr-cache-file-1 +| 10.2.3.10 # comment +| +|/path/to/sdr-cache-file-2 +| 10.2.3.4 # one node +| 10.2.3.5 10.2.3.6 # two nodes +| 10.2.3.[7-9] # trhee nodes in range form +| +^-- this is the beginning of lines + +3.1 SDR CACHE INITIALIZATION + +The sdr cache file can be initialized by ipmi-sel(8) and the +--sdr-cache-file option. + +# ipmi-sel -h 10.2.3.4 -u root -P --sdr-cache-file=/path/to/sdr-cache-file-X +Password: +Caching SDR repository information: /path/to/sdr-cache-file-X +Caching SDR record 125 of 125 (current record ID 125) +ID | Date | Time | Name | Type | Event +1 | Dec-12-2011 | 16:41:51 | SEL | Event Logging Disabled | Log Area Reset/Cleared +... + + +4. IPMI NODES + +For PET to be generated, configurations on IPMI nodes have to be done, +including LAN access, PEF alerting, trap community, alert policy and +destination. You may use ipmi-config from FreeIPMI to do the +configuration (use --category to checkout core and pef category of +configuration). + +However, before doing configurations and facing unexpected firmware +issues, you'd better verify that the trap receiver end works +well. Simply modify the following example traphandle input to meet +your setup, then feed it to stdin of petalert.pl like this, assuming +you prefer to alert email: + +# perl petalert.pl -D :all --mode=traphandle --sdrcache SDRCONF \ + --alert=email -- -f FROM -s SMTPSERVER ADDRESSES <; $x=eval "@v"; print join(" ", $x->[0], @{$x->[1]})."\n"' +[ + '/usr/sbin/ipmi-pet', + [ + '--pet-acknowledge', + '-h', + '10.2.3.4', + '356096', + '44', + '45', + '4C', + '4C', +... + ] + ] +Ctrl-D +/usr/sbin/ipmi-pet --pet-acknowledge -h 10.2.3.4 356096 44 45 4C 4C ... + +Then you could simply paste the command in the shell to simulate a +manual acknowledge. Looks like acknowledge requests without previous +PET is also accepted and responded as usual. + +snmptrapd(8) itself allows for logging of traps into syslog which +requires log permission, see "ACCESS CONTROL" from snmptrapd.conf for +more information. + +NSCA daemon logs to syslog, set "debug=1" in nsca.cfg to get detailed +connection handling. Nagios is also able to log to syslog, set +"use_syslog=1" in nagios.cfg to help debugging alert. + + +6. PET TRAFFIC + +On a no-acknowledge setup, usually there should be only one packet on +behalf of the PET from the ipmi node targeting the trap receiver, +however, firmware defect was spotted resulting in additional traffic, +see BUGS. + +On an acknowledge setup, there should be three packets per event, one +PET, one PET acknowledge request from trap receiver targeting the ipmi +node, and one PET acknowledge response in the other direction. More +bugs were spotted, see BUGS. + +Any setup, packets could be captured like this +# tcpdump -i any -nn -vvv -s0 -w pet.pcap 'host 10.2.3.4 and udp' + +Then you can browse the interactions with the help of Wireshark. + + +7. BUGS + +It's spotted that factory default rules of iDRAC Express on Dell +PowerEdge R610 don't match software generated events. You need to make +a catch-all filter rule to report those events. However, hardware +gernerated events are not subject to such limitation. To verify this +situation, open the case to generate a hardware generated intrusion +event. Dell PowerEdge 1950 with BMC has similiar problem. The +difference is that 1950 has 31 filter rules, so you don't worry about +overwriting an existent one. + +It's spotted that Dell PowerEdge 1950 with BMC suffers clock drift, +remarkably SEL timestamps. bmc-device(8) from FreeIPMI could be used +to adjust SEL time and SDR repository time, +# bmc-device --set-sdr-repository-time=now +# bmc-device --set-sel-time=now +Notice that 'now' refers to current timestamp on the host where the +commands are issued. bmc-device(8) works out of band, so simply issue +the commands on a host where clock is synchronized. + +It's spotted that iDRAC Express on Dell PowerEdge R610 generates two +traps per hardware event. Notice session id from the two traps differ, +they are different traps instead of duplication, even though other +contents of payload are identical. + +It's spotted that iDRAC Express on Dell PowerEdge R610 produces +malformed PET acknowledge responses. In this case, ipmi-pet exits with +timeout error "ipmi_cmd_pet_acknowledge: message timeout". You may use +'-W malformedack', which is simply passed through, to instruct the +underlying helper ipmi-pet(8) to disable such detection and to +immediately return. Timeout hurts snmptrapd because slow handler +hinders the main loop. To discover potential time consuming cases, +use "-D perf" and observe the log. + +It's spotted that some DNS servers return "localhost" on private ip +addresses rather than NXDOMAIN, in this case, snmptrapd(8) passes +"localhost" as resolved hostname to petalert.pl which is +confused. You'd better switch to a correctly configured DNS server, or +contact the administrator to solve the problem. + + +Kaiwang Chen +kaiwang.chen@gmail.com + diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/check_rmcpping b/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/check_rmcpping new file mode 100644 index 00000000..b1e3a50c --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/check_rmcpping @@ -0,0 +1,65 @@ +#!/bin/bash + +# Checks ipmi nodes by RMCP ping/pong +# Mon 12 Dec 2011 kaiwang.chen@gmail.com + +PACKETS=3 + +while getopts ":H:w:c:p:" opt +do + case $opt in + H) + HOST=$OPTARG + ;; + w) + WARNING=$OPTARG + ;; + c) + CRITICAL=$OPTARG + ;; + p) + PACKETS=$OPTARG + ;; + \?) + echo "RMCPPING UNKNOWN - invalid option -$OPTARG" + exit 3 + ;; + :) + echo "RMCPPING UNKNOWN - Option -$OPTARG requires an argument." + exit 3 + ;; + esac +done + +[[ "$HOST"x == x ]] && { + echo "RMCPPING UNKNOWN - which ipmi node to ping" + exit 3 +} + +PROG=/usr/sbin/rmcpping +[[ -x $PROG ]] || { + echo "RMCPPING UNKNOWN - check $PROG executable" + exit 3 +} + +LOSS=`$PROG -c $PACKETS $HOST | sed -n '/packet loss/{s/^.*, \([0-9]*\)[.][0-9]*% packet loss$/\1/;p}'` + +[[ "$WARNING"x == "x" || "$CRITICAL"x == "x" ]] && { + echo "RMCPPING UNKNOWN - Packet loss $LOSS%" + exit 3 +} +WARNING=`echo $WARNING|sed s/%//` +CRITICAL=`echo $CRITICAL|sed s/%//` + +if [[ $LOSS -ge $CRITICAL ]] +then + echo "RMCPPING CRITICAL - Packet loss $LOSS%" + exit 2 +elif [[ $LOSS -ge $WARNING ]] +then + echo "RMCPPING WARNING - Packet loss $LOSS%" + exit 1 +else + echo "RMCPPING OK - Packet loss $LOSS%" + exit 0 +fi diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/ipminodes.cfg b/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/ipminodes.cfg new file mode 100644 index 00000000..0a231ec3 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/ipminodes.cfg @@ -0,0 +1,49 @@ +; commands +define command{ + command_name check-ipminode-alive + command_line $USER1$/check_rmcpping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 3 + } +define command{ + command_name check_dummy + command_line $USER1$/check_dummy 3 'It is a volatile passive check' + } + +; templates +define service{ + name pet-service + use generic-service + flap_detection_enabled 0 + active_checks_enabled 0 + passive_checks_enabled 1 + max_check_attempts 1 + is_volatile 1 + register 0 + check_command check_dummy +} +define host{ + name ipmi-node + use generic-host + check_period 24x7 + check_interval 5 + retry_interval 1 + max_check_attempts 10 + check_command check-ipminode-alive!20%!60% + notification_period workhours + notification_interval 120 + notification_options d,u,r + contact_groups admins + register 0 + } + +; ipmi nodes and services +define host{ + use ipmi-node + host_name foo ; short + alias foo.example.com ; fqdn + address 10.2.3.4 + } +define service{ + use pet-service + host_name foo + service_description PET + } diff --git a/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/petalert.pl b/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/petalert.pl new file mode 100644 index 00000000..775d0f45 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/contrib/pet/petalert.pl @@ -0,0 +1,827 @@ +#!/usr/bin/perl -w + +# This is snmptrapd handler script to alert Platform Event Traps (PET). +# I wrote it because traptoemail distributed with net-snmp-5.3.2.2 is +# incapable of handling multi-line hexstrings and restricted to email alert. +# +# This script operates in two modes, traphandle or embperl. When in +# traphandle mode, it concatenates the quoted hex string into one long line, +# then builds structures to resemble embperl mode. Both modes then invokes +# helper decoder, ipmi-pet(8) from FreeIPMI, parses the output and alerts +# in given way like email, nagios external command, etc. See README for +# a simple tutorial. +# +# This script is tested on Dell PowerEdge 1950 and PowerEdge R610 servers. +# Feel free to adjust to meet your need. It's BSD-licensed. +# +# ChangeLog +# +# * Fri 16 Dec 2011 kaiwang.chen@gmail.com +# - Re-add nsca support. +# - Protect against hex string for traphandle missing ending whitespace. +# +# * Wed 14 Dec 2011 kaiwang.chen@gmail.com +# - Add performance logging support with 'perf' token +# +# * Mon 12 Dec 2011 kaiwang.chen@gmail.com +# - Remove nsca support because snmptrapd is meant to run on the Nagios host +# - Fix nagios external command file support +# - Map FreeIPMI Nominal state to Nagios OK +# - Fix Net::SMTP typos and options handling +# - Remove USAGE section, please refer to README +# +# * Sun 11 Dec 2011 kaiwang.chen@gmail.com +# - Add -W to pass workaround flags to ipmi-pet +# +# * Wed 7 Dec 2011 kaiwang.chen@gmail.com +# - Add --ack support +# - capture exit code of helper +# +# * Mon 14 Nov 2011 kaiwang.chen@gmail.com +# - complete rewritten, supports embperl mode and additional alert methods +# +# * Sat 12 Nov 2011 kaiwang.chen@gmail.com +# - support sdr cache file mapping with -c option +# - add debug log +# - in case of no PTR, fallback to ip +# +# * Sun 06 Nov 2011 kaiwang.chen@gmail.com +# - Inital version + +package IpmiPET::Perf; +use Time::HiRes qw(tv_interval gettimeofday); +sub new { + bless { + _elapsed => 0, + }, __PACKAGE__; +} +sub start { shift->{_start} = [gettimeofday] } +sub stop { + my ($obj,$name) = @_; + my $t1 = [gettimeofday]; + my $t = tv_interval($obj->{_start}, $t1); + $obj->{_elapsed} += $t; + if ($name) { + $obj->{_laps}{$name} = $t; + } + return $t; +} +sub reset { + my ($obj) = @_; + $obj->{_elapsed} = 0; + if ($obj->{_start}) { delete $obj->{_start} } + if ($obj->{_laps}) { delete $obj->{_laps} } +} +sub elapsed { shift->{_elapsed} } +sub laps { shift->{_laps} } +1; + + +package IpmiPET; + +use strict; +use Getopt::Long; + +# mapping IPMI nodes to preinitialized sdr caches +my %cache_mapping=(); + +# options +my %opts = (); + +# options and args pass to specific alert mechanisms +my %alert_opts = (); # when use builtin features to alert +my $alert_prog = ""; # when use external program to alert + +# logger +my $log_filename = "/var/log/petalert.log"; +my %logger_token = ('warn' => 1); # always warn + +# performance ticker +my $perf; + + +sub usage { + print <<"EOF"; +USAGE + +$0 [OPTIONS] -- [ALERT_SPECIFIC_OPTIONS] ALERT_SPECIFIC_ARGS + + OPTIONS + -m + --mode {traphandle|embperl} + Specify mode of execution. Required. + --ack + Acknowledge the trap before alert. + -W + --workaround + Sets workaround flags for ipmi-pet to acknowledge the trap. + -o + --trapoid OID + Sets trapoid in embperl mode, or defaults to "all". + -c + --sdrcache sdr_cache_config + Specify the sdr cache configuration file. + -f + --log log_file + Specify logging file + -n + --alert {mail|nagios|nsca|noop|MODULE} + Specify alert method. Defaults to "noop". + + ALERT SPECIFIC OPTIONS AND ARGS + email + --prog mailer + Sets mailer. If not specified, falls back to Net::SMTP. + mailer_options_and_args + + --server smtp_server + Sets the smtpserver for Net::SMTP to send the mail through. + Defaults to "localhost". + --from from_address + Sets the email for Net:SNMP to be used on the From: line. + Defaults to "root". + to_addresses + Sets where you want Net::SMTP to send the email to. Required. + + nagios + --host {fqdn|short} + Sets host in nagios external commands. Defaults to short (first component). + --service + Sets service in nagios external commands. Defaults to PET. + command_file + Sets Nagios external command file, a named pipe (FIFO). + Required. + nsca + --prog send_nsca + Sets path to send_nsca binary, required. + --host {fqdn|short} + Sets host for the passive check. Defaults to short (first component). + --service + Sets service for the passive check. Defaults to PET. + -- send_nsca_options_and_args + Pass options and args through to send_nsca binary. + + noop Yes, it is a no-op. + + MODULE + --prog plugin + Path to plugin script, which must provides.. + plugin_options_and_args + Additional arguments passed to plugin as \@ARGV. +EOF + + exit; +} + +sub logger { + my ($token, $msg, $variable) = @_; + $token ||= ""; + + if (open my $fh, ">>", $log_filename) { + if ($logger_token{":all"} || $logger_token{$token}) { + if ($variable) { + use Data::Dumper; + my $t = $Data::Dumper::Terse; + $Data::Dumper::Terse = 1; + print $fh "[".localtime()."] $token $msg " . Dumper($variable); + $Data::Dumper::Terse = $t; + } + else { + print $fh "[".localtime()."] $token $msg\n"; + } + } + close $fh; + } +} + +# extract ip from value like "UDP: [172.23.252.107]:32768" +sub extract_ip { + my ($ip) = ($_[0] =~ /\[([\d.]+)\]:/); + return $ip || "0.0.0.0"; +} + +# decode specified event hexstring into hash like +# 'Time' => '13:16:24', +# 'Event' => 'General Chassis Intrusion ; Intrusion while system On', +# 'System_ID' => '256', +# 'State' => 'Critical', +# 'GUID' => '44454c4c-5000-1059-8043-b2c04f333358', +# 'Date' => 'Oct-15-2011', +# 'Manufacturer_ID' => 'Dell Inc.', +# 'Name' => 'Sensor #115', +# 'Severity' => 'N/A', +# 'Event_Direction' => 'Assertion Event', +# 'Type' => 'Physical_Security' +# +sub decode_pet { + my ($specific, $event_hexstring, $sdrcache) = @_; + + my $ipmi_pet = "/usr/sbin/ipmi-pet"; + my @o = qw(-v -v --output-event-severity --output-event-state --interpret-oem-data --comma-separated-output); + if ($sdrcache) { push @o, "--sdr-cache-file", $sdrcache } + push @o, $specific; + $event_hexstring =~ tr/0-9a-fA-F/ /cs; # sanity check + $event_hexstring =~ s/^\s+//; # in case of (split/\s+/)[0] being "" + push @o, split /\s+/, $event_hexstring; + + my @x = (); + logger("decode", "command line ", [$ipmi_pet, \@o]); + if (open my $fh, "-|", $ipmi_pet, @o) { + @x = <$fh>; + close $fh; + if ($? >> 8) { + logger("warn", "decode failure with CHILD_ERROR: $?"); + return; + } + } + else { + logger("warn", "decoder failure: $!"); + return; + } + chomp(@x); + + logger("decode", "output ", \@x); + my @headers = split /,/, $x[0]; + my @values = split /,/, $x[1]; # TODO support doubly quoted value + if (@headers != @values) { + logger("warn", "Spot malicious comma separated value", \@x); + } + my %event = (); + for my $i (0..$#headers) { + my $h = $headers[$i]; + $h =~ s/ /_/g; + $event{$h} = $values[$i]; + } + logger("decode", "event ", \%event); + return \%event; +} + +sub ack_pet { + my ($specific, $event_hexstring, $host, $workaround) = @_; + + my $ipmi_pet = "/usr/sbin/ipmi-pet"; + my @o = qw(--pet-acknowledge); + if ($workaround) { + push @o, "-W", $workaround; + } + push @o, "-h", $host; + push @o, $specific; + $event_hexstring =~ tr/0-9a-fA-F/ /cs; # sanity check + $event_hexstring =~ s/^\s+//; # in case of (split/\s+/)[0] being "" + push @o, split /\s+/, $event_hexstring; + + my @x = (); + logger("ack", "command line ", [$ipmi_pet, \@o]); + if (open my $fh, "-|", $ipmi_pet, @o) { + @x = <$fh>; + close $fh; + if ($? >> 8) { + logger("warn", "ackhelper failure with CHILD_ERROR: $?"); + } + } + else { + logger("warn", "ackhelper failure: $!"); + } +} + +# ipmi-pet localtime to calendar time +sub pettime { + my ($event) = @_; + require POSIX; + my ($hour,$min,$sec) = split /:/, $event->{Time}; + my ($mon,$mday,$year) = split /-/, $event->{Date}; + $year -= 1900; + my %m = ( + Jan => 0, Feb => 1, Mar => 2, Apr => 3, May => 4, Jun => 5, + Jul => 6, Aug => 7, Sep => 8, Oct => 9, Nov => 10, Dec => 11, + ); + if (exists $m{$mon}) { $mon = $m{$mon} } + else { + logger("warn", "pettime month $mon will map to 0, please check ipmi-pet"); + $mon = 0; + } + return POSIX::mktime($sec, $min, $hour, $mday, $mon, $year); +} + +# convert event to nagios plugin output +# See http://nagios.sourceforge.net/docs/3_0/pluginapi.html +sub nagios_check { + my ($event) = @_; + my ($code, $state); + + $state = uc($event->{State}); + if ($state eq "WARNING") {$code = 1} + elsif ($state eq "CRITICAL") {$code = 2} + elsif ($state eq "OK") {$code = 0} + elsif ($state eq "NOMINAL") {$code = 0; $state = "OK"} + else {$code = 3; $state = "UNKNOWN"} + + my $plugin_output = join(" ", $state, "-", map { defined $_ ? $_ : "" } @{%{$event}}{qw(Name Type Event_Direction Event)}); + $plugin_output =~ tr/\n\t;|/@:/; + + return ($code, $plugin_output); +} +sub nagios_host { + my ($pdu_info, $opt) = @_; + my $h = $pdu_info->{hostname}; + if ($opt eq 'short') { + ($h) = ($pdu_info->{hostname} =~ m/([^.]+)/); + } + return $h; +} + +# assemble SMTP DATA, http://cr.yp.to/smtp/mail.html +# TODO return encoded data +sub mail_data { + my ($from, $to, $pdu_info, $uptime, $event) = @_; + + local $" = ", "; # " balance + my $data = <<"DATA"; +To: @{$to} +From: $from +Subject: PET from $pdu_info->{hostname}: $event->{State} - $event->{Event} + +Host: $pdu_info->{hostname} ($pdu_info->{receivedfrom}) uptime $uptime +DATA + + for my $k (qw(Date Time Name Type Event Event_Direction State Severity GUID Manufacturer_ID System_ID)) { + $data .= "$k: $event->{$k}\n"; + } + + return $data; +} + +# embperl NetSNMP::TrapReceiver trap receiver +sub my_receiver { + my ($pdu_info, $varbindings) = @_; + + #use Data::Dumper;print Dumper($pdu_info); print Dumper($varbindings); + logger("embperl", "original input is ", \@_); + + # inject hostname + unless (exists $pdu_info->{hostname}) { + use Socket; + my $ip = extract_ip($pdu_info->{receivedfrom}); + $perf->start; + $pdu_info->{hostname} = gethostbyaddr(inet_aton($ip), AF_INET) || $ip; + $perf->stop("resolv"); + } + + # do cleanup before processing; values are untouched if -OQ, see snmpcmd(1) + for (@$varbindings) { + $_->[1] =~ s/^OID: //; + $_->[1] =~ s/^IpAddress: //; + $_->[1] =~ s/^STRING: //; + $_->[1] =~ s/^Hex-STRING: //; + if ($_->[1] =~ s/^Timeticks: //) { + $_->[1] =~ s/^\(\d+\) //; + $_->[1] =~ s/ days, /:/; + } + } + logger("embperl", "input after cleanup is ", \@_); + + process($pdu_info, $varbindings); + my $laps = $perf->laps; + logger("perf", join(", ", map { $_ . "=" . $laps->{$_} } keys %{$laps})); + $perf->reset; +} + +# you got it.. +sub process { + my ($pdu_info, $varbindings) = @_; + my ($event_oid, $specific, $uptime, $event); + + # locate the PET event hex string, and extract specific trap number + for my $v (@{$varbindings}) { + if ($v->[0] =~ /^\Q.1.3.6.1.6.3.1.1.4.3.0\E$/) { + $event_oid = $v->[1]; + } + if ($v->[0]=~ /^\Q.1.3.6.1.6.3.1.1.4.1.0\E$/) { + ($specific)=($v->[1]=~/(\d+)$/); + } + if ($v->[0] =~ /^\Q.1.3.6.1.2.1.1.3.0\E$/) { + $uptime = $v->[1]; + } + } + $event_oid .= ".1"; + + $uptime ||= "00:00:00:00.00"; + if (my ($d,$H,$M,$S,$x) = ($uptime =~ /(\d+):(\d+):(\d+):(\d+)\.(\d+)/)) { + if ($d > 0) { $uptime = "${d}d${H}h" } + elsif ($H > 0) { $uptime = "${H}h${M}m" } + elsif ($M > 0) { $uptime = "${M}m${S}s" } + else { $uptime = "${S}.${x}s" } + } + + # convert event string to human readable form + for my $v (@{$varbindings}) { + if ($v->[0] =~ /^\Q$event_oid\E$/) { + my $ip = extract_ip($pdu_info->{receivedfrom}); + if ($opts{ack}) { + $perf->start; + ack_pet($specific, $v->[1], $ip, $opts{workaround}); + $perf->stop("ack"); + } + + my $sdrcache = resolve_sdrcache($ip); + + # decode octet hex string + $event = decode_pet($specific, $v->[1], $sdrcache); + } + } + + # invalid events cease here + return unless $event; + + alert($pdu_info, $uptime, $event); + return; +} + +# build NetSNMP::TrapReceiver style structures from standard input +# See NOTIFICATION PROCESSING snmptrapd.conf(5) +sub get_from_stdin { + my ($stdin) = @_; + my $hostname = shift @{$stdin}; + my $ipaddress = shift @{$stdin}; + + chomp($hostname); + chomp($ipaddress); + + # in case of no PTR records available for the IPMI node + if($hostname eq "" && (my $ip = extract_ip($ipaddress))) { + $hostname = $ip; + } + + # some defaults, blindly.. to resemble those by NetSNMP::TrapReceiver + my %pdu_info = ( + notificationtype => "TRAP", + hostname => $hostname, + receivedfrom => $ipaddress, + version => 0, + errorstatus => 0, + messageid => 0, + transactionid => 1, + errorindex => 0, + requestid => 0, + ); + + my @varbindings= (); + my ($oid,$value); + my $more = 0; + my $line = ""; + for (@{$stdin}) { + if ($more == 0 && $line) { + $line =~ s/\n\Z//s; + ($oid, $value) = ($line =~ /([^\s]+)\s+(.*)/s); + $line = ""; + push @varbindings, [$oid, $value, "="]; + } + + # recognize doubly quoted context + my $count = 0; + my $x = -1; + $x=index($_, q{"}); + while ($x >= 0) { + unless ($x > 0 && substr($_, $x-1, 1) eq "\\") { + $count++; + } + $x += 1; + $x=index($_, q{"}, $x); + } + if ($count % 2 == 1) { + $more = $more == 1 ? 0 : 1; + } + + $line .= "$_\n"; + } + if ($line) { + $line =~ s/\n\Z//s; + ($oid, $value) = ($line =~ /([^\s]+)\s+(.*)/s); + $line = ""; + push @varbindings, [$oid, $value]; + } + + # Notice the assembled varbindings slightly differs from that in embperl. + # For instance, hex string is surrounded by doubly quote, and never + # prefixed by "Hex-STRING: ". + return (\%pdu_info, \@varbindings); +} + +# traphandle handler +sub handle_trap { + chomp(my @stdin = ); + logger("traphandle", "input text is ", \@stdin); + my ($pdu_info, $varbindings) = get_from_stdin(\@stdin); + logger("traphandle", "got pdu_info and varbindings ", [$pdu_info,$varbindings]); + process($pdu_info, $varbindings); + + my $laps = $perf->laps; + logger("perf", join(", ", map { sprintf '%s=%f', $_,$laps->{$_} } keys %{$laps})); + $perf->reset; +} + +# alert dispatcher +sub alert { + my ($pdu_info, $uptime, $event) = @_; + + if ($opts{'alert'} eq 'email') { + my $data = mail_data($alert_opts{'from'}, \@ARGV, $pdu_info, $uptime, $event); + logger("alert", "mail data is", [\$data]); + + if ($alert_prog) { + logger("alert", "mailer invoked with ", [$alert_prog,\@ARGV]); + $perf->start; + if (open MAILER, "|-", $alert_prog, @ARGV) { + print MAILER $data; + close MAILER; + } + else { + logger("warn", "Unable to alert through mailer[$alert_prog @ARGV]: $!"); + } + $perf->stop("mailer"); + } + else { + logger("alert", "mail by Net::SMTP ", [$alert_opts{'server'},$alert_opts{'from'}, \@ARGV]); + $perf->start; + eval { + my $message = Net::SMTP->new($alert_opts{'server'}) || die "ERROR: can't talk to server $alert_opts{'server'}\n"; + $message->mail($alert_opts{'from'}); + $message->to(@ARGV) || die "ERROR: failed to send to the recepients ",join(",",@ARGV),": $!"; + $message->data(); + $message->datasend($data); + $message->dataend(); + $message->quit; + }; + $perf->stop("netsmtp"); + if ($@) { + logger("warn", "alert mail failure ", $@); + } + } + } + elsif ($opts{'alert'} eq 'nagios') { + my $command_file = $ARGV[0]; + logger("alert", "nagios external command file is $command_file"); + + my $t = pettime($event); + my ($code,$plugin_output) = nagios_check($event); + my $nagios_host = nagios_host($pdu_info, $alert_opts{host}); + my $nagios_service = $alert_opts{service}; + + # http://nagios.sourceforge.net/docs/3_0/extcommands.html + my $cmd = "[$t] PROCESS_SERVICE_CHECK_RESULT;$nagios_host;$nagios_service;$code;$plugin_output"; + logger("alert", "nagios command is", $cmd); + + $perf->start; + if (open NAGIOS, ">>", $command_file) { + print NAGIOS "$cmd\n"; + close NAGIOS; + } + else { + logger("warn", "nagios failure with $command_file: $!"); + } + $perf->stop("nagios"); + } + elsif ($opts{'alert'} eq 'nsca') { + logger("alert", "send_nsca invoked as ", [$alert_prog, \@ARGV]); + + my ($code,$plugin_output) = nagios_check($event); + my $nagios_host = nagios_host($pdu_info, $alert_opts{host}); + my $nagios_service = $alert_opts{service}; + + # http://nagios.sourceforge.net/download/contrib/documentation/misc/NSCA_Setup.pdf + my $cmd= "$nagios_host\t$nagios_service\t$code\t$plugin_output"; + logger("alert", "nsca command is", $cmd); + + $perf->start; + if (open NSCA, "|-", $alert_prog, @ARGV) { + print NSCA "$cmd\n"; + close NSCA; + if ($? >> 8) { + logger("warn", "nsca failure with CHILD_ERROR: $?"); + } + } + else { + logger("warn", "nsca failure: $!"); + } + $perf->stop("nsca"); + } + elsif ($opts{'alert'} eq 'noop') { + logger('alert', 'noop alert selected'); + } + else { + logger("alert", "alert module"); + # TODO module + die "alert module is not implemented!"; + } +} + +# load sdr cache config into global mapping hash +sub load_sdrcache_config { + my ($conf) = @_; + + my $cache_file = ""; + my $nl = 0; + for (@{$conf}) { + $nl++; + chomp; + s/#.*$//; # trim comment + s/\s+$//; # trim trailing whitespaces + next if /^$/; + if (/^\S/) { + if (-e $_) { + $cache_file = $_; + } + else { + return "ERROR: no such sdr cache file[$_] at line #$nl"; + } + } + if (/^\s/) { + s/^\s+//; # trim leading whitespaces + if ($cache_file) { + for (split /\s+/) { + $cache_mapping{$_} = $cache_file; + } + } + else { + return "ERROR: missing sdr cache file for host[$_] at line #$nl"; + } + } + } + + return; +} + +# given an ipv4 address, resolve to related sdr cache +sub resolve_sdrcache { + my ($ipmi_node) = @_; + my $sdrcache = ""; + if (exists $cache_mapping{$ipmi_node}) { + $sdrcache = $cache_mapping{$ipmi_node}; + logger("sdrcache", "$ipmi_node resolved to $sdrcache"); + } + else { + my $re = qr/^(.*)\[([-\d,]+)\](.*)$/; # to match against eg. 10.2.3.[4-7] + for my $k (keys %cache_mapping) { + if (my ($prefix,$range,$suffix) = ($k =~ m/$re/)) { + if (my ($item) = ($ipmi_node =~ /^\Q$prefix\E(.+)\Q$suffix\E$/)) { + for (split /,+/, $range) { + my ($f,$t); + if ( + ((($f,$t) = m/^(\d+)-(\d+)$/) && $f <= $item && $item <= $t) + || $item == $_ + ) { + # got it + $sdrcache = $cache_mapping{$k}; + logger("sdrcache", "$ipmi_node resolved to ", [$k => $sdrcache]); + } + } + } + } + } + } + + $sdrcache || logger("sdrcache", "$ipmi_node will use default cache"); + + return $sdrcache; +} + +# process and verify args +sub process_args { + # parse global ARGV for this package + GetOptions(\%opts, 'help!', 'quiet!', 'mode|m=s', 'ack!', 'workaround|W=s', + 'trapoid|o=s', 'sdrcache|c=s', 'log|f=s', 'Debug|D=s', 'alert|n=s'); + + if ($opts{'help'}) { + usage(); + } + + # log file + if ($opts{'log'}) { + if (-w $opts{'log'}) { + $log_filename = $opts{'log'}; + } + else { + die "log file $opts{'log'} is not writable"; + } + } + unless ($opts{'quiet'}) { + print STDERR "petalert.pl is logging to $log_filename, use -q to suppress this tip\n"; + } + + # comma-separted debug tokens + if ($opts{'Debug'}) { + $logger_token{$_} = 1 for split /,+/, $opts{'Debug'}; + } + # logging now ready + logger("argv", "parsed options is ", \%opts); + + if ($opts{'sdrcache'}) { + my $conf = $opts{'sdrcache'}; + logger("sdrcache", "config is [$conf]"); + + open CONF, "<", $conf || logger("warn", "assumes default cache because failed to config file[$conf]: $!"); + chomp(my @lines = ); + close CONF; + + load_sdrcache_config(\@lines); + logger("sdrcache", "cache_mapping is ", \%cache_mapping); + + if ($opts{'syntax-only'}) { + exit; + } + } + + if ($opts{'mode'} eq 'embperl') { + unless (exists $opts{trapoid}) { + $opts{trapoid} = "all"; + logger("argv", "no trapoid specified, defaults to all"); + } + require NetSNMP::TrapReceiver; + } + elsif ($opts{'mode'} eq 'traphandle') { + } + else { + print STDERR "Unknown operation mode: $opts{mode}\n"; + usage(); + } + + # alert method defaults to no-op + unless (exists $opts{'alert'}) { + $opts{'alert'} = 'noop'; + logger("argv", "no alert method specified, defaults to noop"); + } + + # alert methods + if ($opts{'alert'} eq 'email') { + # use external mail program + if ($ARGV[0] && $ARGV[0] eq "--prog") { + shift @ARGV; + $alert_prog = shift @ARGV; + unless (-x $alert_prog) { + die "mailer[$alert_prog] is not executable\n"; + } + } + # or use perl module + else { + GetOptions(\%alert_opts, "server=s", "from=s"); + require Net::SMTP; + } + } + elsif ($opts{'alert'} eq 'nagios' || $opts{'alert'} eq 'nsca') { + GetOptions(\%alert_opts, "prog=s", "host|H=s", "service|S=s"); + $alert_opts{host} ||= "short"; + $alert_opts{service} ||= "PET"; + if ($alert_opts{host} ne "fqdn" && $alert_opts{host} ne "short") { # TODO + die "Unknown host mapping $alert_opts{host}\n"; + } + if ($opts{'alert'} eq 'nagios' && !($ARGV[0] && -w $ARGV[0])) { + die "nagios external command file[$ARGV[0]] is not writable\n"; + } + if ($opts{'alert'} eq 'nsca' && ! $alert_opts{prog}) { + die "send_nsca binary is not set\n"; + } + $alert_prog = $alert_opts{prog} || ""; + } + elsif ($opts{'alert'} eq 'noop') { + } + else { + my $module = $opts{'alert'}; + if (-r $module) { + require "$module"; + # TODO + die ""; + } + else { + die "Unknown alert module to load: $module\n"; + } + # invokes handler + } + + # @ARGV now holds alert specific arguments +} + +sub main { + @ARGV = @_; # set global ARGV for this package + process_args(); + $perf = IpmiPET::Perf->new; + if ($opts{'mode'} eq 'traphandle') { + logger("main", "running as traphandle"); + handle_trap(); + } + elsif ($opts{'mode'} eq 'embperl') { + logger("main", "running as embperl"); + NetSNMP::TrapReceiver::register($opts{trapoid}, \&my_receiver) || + warn "failed to register our perl trap handler\n"; + } + else { + die "Should never reach here!\n"; + } + + return 0; +} + + +# run the program +if ( !caller ) { exit main(@ARGV); } + +1; diff --git a/source/freeipmi/usr/share/doc/freeipmi/freeipmi-bugs-issues-and-workarounds.txt b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-bugs-issues-and-workarounds.txt new file mode 100644 index 00000000..8aa20457 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-bugs-issues-and-workarounds.txt @@ -0,0 +1,1902 @@ +FreeIPMI Bugs, Issues, and Workarounds + +by + +Albert Chu +chu11@llnl.gov +Last Updated: December 29, 2014 + +The following are some short descriptions of the issues I've found +while developing FreeIPMI on various motherboards. The descriptions +below also describe workarounds I've had to implement to get around +issues. When possible, the motherboards these issues were found on +are also documented. + +Each of the issues below is listed under one of the following +categories: + +[COMPLIANCE] - IPMI implementations that are out of compliance with + the IPMI specification. These issues range from simple + bugs in the implementation, to misinterpretation of the + IPMI specification, to flag out illegal + implementations. + +[INTERPRETATION] - Interpretation ambiguity between multiple vendors + and the IPMI specification. + +[IMPLEMENTATION] - Implementations that are legal IPMI + implementations, but implementation choices makes + IPMI poorer, confusing, or more difficult to use. + +For the record, I have nothing against the vendors and the products +that have these issues. I am just as prone to programming bugs as +they are. The IPMI specification is gigantic and mistakes will +happen. I expect some design decisions were made for time to release, +cost, customer needs, etc. too. This documentation is mostly for +historical purposes, people searching for information, and to document +the difficulty of developing portable IPMI code. + +---------------------- +| Inband IPMI Issues | +---------------------- + +---------------------------------------------------------------------- + +Inband IPMI Issue #1: [COMPLIANCE] + + The SMBIOS/DMI tables do not properly indicate that KCS base address + is IO instead of memory-mapped. + + Seen on: HP ProLiant DL145 G1 + + Resolution: Workaround option added to inform software to use + memory-mapped IO. + +---------------------------------------------------------------------- + +----------------------------- +| LAN Authentication Issues | +----------------------------- + +---------------------------------------------------------------------- + +LAN Authentication Issue #1: [IMPLEMENTATION] + + BMCs would not respond to retransmissions of a Get Session Challenge + Request if a previous Get Session Challenge response was lost. + + Seen on: Intel SR870BN4/Tiger 4 + + Resolution: Workaround added to send retransmitted Get Session + Challenge requests from a different source port. + +LAN Authentication Issue #2: [COMPLIANCE] + + The only authentication supported by the motherboard is an OEM + specific authentication. IPMI specification requires several + non-OEM authentication mechanisms. + + Seen on: Undocumented Motherboard + + Resolution: None + + Notes: Undocumented motherboard was an early Supermicro motherboard + with IPMI support, but I never documented which one (achu). + +LAN Authentication Issue #3: [COMPLIANCE] + + The initial outbound sequence number on activate session response is + off by one. The activate session response packet is supposed to + contain the initial outbound sequence number passed during the + request. + + Seen on: Intel SE7520JR2 with National Semiconductor PC87431M mBMC, + Intel SE7520AF2 with Intel Server Management Module (Professional + Edition) + + Resolution: Initially, workaround was done to accept off by one + sequence number. Later when packet windows were implemented, the + situation was automatically handled. + +LAN Authentication Issue #4: [COMPLIANCE] + + The IPMI 2.0 packet responses for RAKP 2 have payload lengths that + are off by 1 (i.e. an invalid length). + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: Workaround option added to inform software to handle the + invalid length. + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. + +LAN Authentication Issue #5: [COMPLIANCE] + + Username capabilities and/or K_g status are not reported properly by + the Get Authentication Capabilities response. + + Seen on: Asus P5M2, Asus P5MT-R, Asus S162-E4, Asus RX4, Sun Fire + X4150, Sun Fire X4450, Intel SR1520ML, Intel X38ML + + Resolution: Workaround option added to inform software to ignore + flags in the Get Authentication Capabilities response. + +LAN Authentication Issue #6: [COMPLIANCE] + + The IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL flag does not work in the + Open Session phase of IPMI 2.0 connections. The Open Session + response seems to simply return the privilege level passed in the + request (i.e. the IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL flag rather + than the actual highest level privilege that can be used). + + Seen on: Intel SE7520AF2 with Intel Server Management Module + (Professional Edition) + + Resolution: Workaround option added to inform software to not pass + IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL and pass a specific privilege + level. + +LAN Authentication Issue #7: [COMPLIANCE] + + The username field is incorrectly padded during IPMI 2.0 + authentication, leading to invalid keys. + + Seen on: Intel SE7520AF2 with Intel Server Management Module + (Professional Edition) + + Resolution: Workaround option added to inform software to adjust the + username when authenticating. + +LAN Authentication Issue #8: [COMPLIANCE] + + When the authentication algorithm is HMAC-MD5-128 and the password + is greater than 16 bytes, the Intel BMC incorrectly truncates the + password to 16 bytes when generating keys, leading to invalid keys. + + Seen on: Intel SE7520AF2 with Intel Server Management Module + (Professional Edition) + + Resolution: Workaround option added to inform software to adjust the + password when authenticating. + +LAN Authentication Issue #9: [COMPLIANCE] + + During the RAKP4 response, the integrity check value is incorrectly + calculated based on the integrity algorithm instead of the + authentication algorithm. + + Seen on: Intel SE7520AF2 with Intel Server Management Module + (Professional Edition) + + Resolution: Workaround option added to inform software to look for + and handle this situation. + +LAN Authentication Issue #10: [COMPLIANCE] + + During the RAKP3 request, the name_only_lookup field must be + disabled, it cannot be enabled. + + Seen on: Intel SE7520AF2 with Intel Server Management Module + (Professional Edition) + + Resolution: Workaround option added to inform software to disable + the field. + +LAN Authentication Issue #11: [COMPLIANCE] + + Cipher suite IDs are are incorrectly attached to specific privilege + levels rather than a maximum privilege level limit. So you can only + authenticate at the configured privilege level rather than a + privilege level <= to it. + + Seen on: Undocumented Motherboard + + Resolution: By passing IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL during the + session establishment instead of the specific privilege level, the + problem is avoided. + + Notes: Undocumented motherboard was an early Tyan motherboard with + IPMI 2.0 support, but never documented which one (achu). + +LAN Authentication Issue #12: [COMPLIANCE] + + During a RAKP2 response, the key exchange authentication code is the + wrong length. + + Seen on: Sun Fire 4100 with ILOM + + Resolution: Workaround option added to inform software to handle the + invalid length. + +LAN Authentication Issue #13: [COMPLIANCE] + + The remote BMC incorrectly calculates keys using the privilege + specified in the open session stage rather than the privilege used + during the RAKP1 stage. This can be problematic if you specify + IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL during that stage instead of a + specific privilege level (i.e. operator). + + Seen on: Sun Fire X4150, Inventec 5441/Dell Xanadu II, Supermicro + X8DTH, Supermicro X8DTG, Supermicro X8DTU, Intel S5500WBV/Penguin + Relion 700, Intel S2600JF/Appro 512X, Quanta QSSC-S4R/Appro + GB812X-CN + + Resolution: Workaround option added to inform software to pass a + specific privilege level instead of + IPMI_PRIVILEGE_LEVEL_HIGHEST_LEVEL. + + Notes: Confirmed fixed in newer firmware for Inventec 5441/Dell + Xanadu II. Due to legacy, vendor reports will not fix on Intel + S5500WBV/Penguin Relion 700 and Intel S2600JF/Appro 512X. + +LAN Authentication Issue #14: [COMPLIANCE] + + Given specific configuration of IPMI 1.5 authentication types, + certain user privileges are not specified correctly during Get + Authentication Capabilities and a CCh = "Invalid data field in + request" is returned during Activiate Session. + + Seen on: Inventec 5441/Dell Xanadu II + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Inventec 5441/Dell + Xanadu II. + +LAN Authentication Issue #15: [COMPLIANCE] + + Disabling a specific cipher suite ID does not prohibit a user from + continuing to use that cipher suite ID. + + Seen on: Supermicro X8DTG, Supermicro X8DTU, MSI MS-91D2, Intel + Windmill, Quanta Winterfell, Wiwynn Windmill + + Resolution: None + +LAN Authentication Issue #16: [COMPLIANCE] + + Cipher suites 0 fails to authenticate. During the RAKP4 + communication, an integrity key is returned, when it in fact should + be 0 length. + + Seen on: Supermicro X8DTG, Supermicro X8DTU, Intel S5500WBV/Penguin + Relion 700, Intel S2600JF/Appro 512X + + Resolution: Workaround option added to inform software to ignore the + non-zero length field. + + Notes: Confirmed fixed in newer firmware for Supermicro X8DTG, + Supermicro X8DTU, Intel S2600JF/Appro 512X. + +LAN Authentication Issue #17: [COMPLIANCE] + + Cipher suites 7 and 8 fail to establish a session. Authentication + codes are not returned for session packets, therefore packets are + dropped as they are viewed as malformed. + + Seen on: Supermicro X8DTG, Supermicro X8DTU + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro X8DTG, + Supermicro X8DTU. + +LAN Authentication Issue #18: [COMPLIANCE] + + Cipher suites 11 and 12 fail to establish a session. Authentication + codes returned are incorrect. + + Seen on: Supermicro X8DTG, Supermicro X8DTU + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro X8DTG, + Supermicro X8DTU. + +LAN Authentication Issue #19: [IMPLEMENTATION] + + When attempting to authenticate with a disabled Cipher Suite ID, a + 0Ah status ("Unauthorized role or privelege level requested.") is + returned instead of 11h ("No Cipher Suite match with proposed + security algorithms."). The resulting error message is confusing. + + Seen on: Supermicro X8DTG + + Resolution: None + +LAN Authentication Issue #20: [IMPLEMENTATION] + + When attempting to authenticate with a disabled Cipher Suite ID, a + 12h status ("Illegal or Unrecognized parameter.") is returned + instead of 11h ("No Cipher Suite match with proposed security + algorithms."). The resulting error message is confusing. + + Seen on: MSI MS-91D2 + + Resolution: None + +LAN Authentication Issue #21: [COMPLIANCE] + + The tag bits for some of the cipher records are wrong. + + Seen on: Sun Fire 4100 with ILOM + + Resolution: Workaround added to parse unique cipher suite records. + +LAN Authentication Issue #22: [COMPLIANCE] + + The motherboard reports support of Cipher Suite ID 15, however when + attemption authenticate with it, it is reported as unsupported. + + Seen on: Intel S2600JF/Appro 512X + + Resolution: None + + Notes: Confirmed fixed in newer firmware. + +LAN Authentication Issue #23: [COMPLIANCE] + + The motherboard allows IPMI 1.5 authentication when > 16 byte + passwords are configured. It appears the motherboard allows users + to authenticate using the 16 byte equivalent truncated password. + This violates the text in Table 22-35, which states "A password that + has been stored as a 20-byte password cannot be used for + establishing an IPMI v1.5 session." + + Seen on: Supermicro X8DTG-D + +LAN Authentication Issue #24: [COMPLIANCE] + + When activating a session, the remote system requires that the + "maximum privilege requested" specified in the request be identical + to the maximum set for a user. It cannot be less than it. When + this occurs, an error of 0xD4 ("Cannot execute command due to + insufficient privilege level") is unexpectedly returned. + + Seen on: Xyratex HB-F8-SRAY + + Resolution: Specify specific privilege level to workaround this + issue. + +LAN Authentication Issue #24: [COMPLIANCE] + + When authenticating with the 'straight password key' authentication + type, all responses from a session contain an empty authentication + code. + + Seen on: Xyratex HB-F8-SRAY + + Resolution: Workaround added to ignore these invalid authentication + codes. + +LAN Authentication Issue #25: [COMPLIANCE] + + Cannot authenticate with a user without assigning privilege limit of + Administrator. + + Seen on: Xyratex HB-F8-SRAY + + Resolution: None + +LAN Authentication Issue #26: [COMPLIANCE] + + Cannot authenticate with IPMI 1.5, authentication code generated + incorrectly. + + Seen on: Intel Windmill, Quanta Winterfell, Wiwynn Windmill + + Resolution: Workaround added to ignore these invalid authentication + codes. + +---------------------------------------------------------------------- + +---------------------- +| LAN Session Issues | +---------------------- + +---------------------------------------------------------------------- + +LAN Session Issue #1: [COMPLIANCE] + + There is no response from the IPMI close command if a RESET is + executed. + + Seen on: Intel SR870BN4/Tiger 4 + + Resolution: Workaround added to close session without waiting for + response. + +LAN Session Issue #2: [COMPLIANCE] + + After the IPMI session is brought up, packet responses return empty + session IDs (i.e. 00000000h) to the client. + + Seen on: Tyan S2882 with m3289 BMC + + Resolution: Workaround option added to inform software to accept + empty session IDs. + + Notes: Problem is reported to be fixed in newer firmware for Tyan + S2882 with m3289 BMC. + +LAN Session Issue #3: [COMPLIANCE] + + When Per-Message Authentication is disabled, packet responses + contain non-null authentication data when they should be null. + + Seen on: Dell PowerEdge 2850, Dell Poweredge SC1425 + + Resolution: Workaround option added to verify unexpected non-null + authentication codes as though they were expected. + + Notes: Confirmed fixed in newer firmware for Dell PowerEdge 2850, + Dell Poweredge SC1425. + +LAN Session Issue #4: [COMPLIANCE] + + The remote BMC will advertise that Per Message Authentication is + disabled, but actually require it for the protocol. + + Seen on: IBM eServer 325 + + Resolution: Workaround option added to inform software to use Per + Message Authentication no matter what is advertised by the remote + BMC. + + Notes: Differs from Session Issue #5 below in resolution. + +LAN Session Issue #5: [COMPLIANCE] + + The remote BMC will advertise that Per Message Authentication is + disabled, but actually require it for the protocol. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: Workaround added to notice this condition and re-enable + Per Message Authentication. + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. + +LAN Session Issue #6: [COMPLIANCE] + + Session sequence numbers have the wrong endian during IPMI 1.5 + sessions. + + Seen on: Sun Fire 4100 with ILOM + + Resolution: Workaround option added to inform software to handle + incorrect endian sequence numbers. + +LAN Session Issue #7: [COMPLIANCE] + + LAN session headers contain invalid checksums. + + Seen on: Supermicro X9SCM-iiF, Supermicro X9DRi-F, Supermicro X9DRFR + + Resolution: Workaround option added to inform software to ignore bad + checksums. + +---------------------------------------------------------------------- + +-------------- +| SDR Issues | +-------------- + +---------------------------------------------------------------------- + +SDR Issue #1: [COMPLIANCE] + + The record count reported by a Get SDR Repository Info command is + not consistent to the number of records that exist on the + motherboard. + + Seen on: Fujitsu RX 100, Fujitsu RX300/200-S8 + + Resolution: Workaround added to recognize situation and adjust count. + +SDR Issue #2: [COMPLIANCE] + + The record ID returned from a Get SDR Record command is sometimes + different from the record ID passed in. + + Seen on: Supermicro X6-DHR-1G with BMC2.0 daughter card + + Resolution: No resolution in FreeIPMI required. Resolved in + IPMItool with workaround to detect issue and use input record ID + instead of output record ID. + +SDR Issue #3: [COMPLIANCE] + + When reading a SDR record, sometimes records list an invalid excess + number of bytes. For example, the SDR record is 15 bytes long, but + a record of length 20 is indicated. + + Seen on: HP Proliant DL585G7 + + Resolution: Workaround added to adjust and handle the correct length + of the record. + +SDR Issue #4: [COMPLIANCE] + + When reading SDR records, the SDR last record id record is not + implemented, leading to errors when reading the SDR. + + Seen on: Unspecified Inspur motherboard + + Resolution: Workaround added to stop reading records after + recognized max. + +SDR Issue #5: [COMPLIANCE] + + When reading an entire SDR record (with + IPMI_SDR_READ_ENTIRE_RECORD_BYTES_TO_READ) the response returns + fewer bytes than the actual length of the record. This leads to + issues later during SDR caching. When reading SDR records with + partial reads, things work correctly. + + Seen on: Xyratex HB-F8-SRAY + + Resolution: Workaround added to detect issue and do parital reads + instead. + +SDR Issue #6: [COMPLIANCE] + + Retrieving sensors results in a "IPMI Internal Error" b/c a "Get SDR + Repository Info" command is not supported on the motherboard + (completion code 0xC1). + + Seen on: Artesyn ATCA-7367 + + Resolution: None + +SDR Issue #7: [COMPLIANCE] + + Retrieving sensors results in a "IPMI Internal Error" b/c a "Reserve + SDR Repository" command is not supported on the motherboard + (completion code 0xC1). + + Seen on: Artesyn ATCA-7367 + + Resolution: None + +---------------------------------------------------------------------- + +-------------------------- +| Serial-Over-LAN Issues | +-------------------------- + +---------------------------------------------------------------------- + +Serial-Over-LAN Issue #1: [COMPLIANCE] + + Serial breaks are not supported/do not work. + + Seen on: Undocumented Motherboard + + Resolution: None + + Notes: Undocumented motherboard was an early Tyan motherboard with + IPMI support 2.0, but I never documented which one (achu). + +Serial-Over-LAN Issue #2: [COMPLIANCE] + + SOL payload sizes are reported incorrectly. + + Seen on: Asus P5M2, Asus P5MT-R, Asus S162-E4, Asus RX4, Intel + SR1520ML, Intel X38ML, Inventec 5441/Dell Xanadu II, Supermicro + X8DTH, Supermicro X8DTH-iF, Supermicro X8DTG, Supermicro X8DTU, + Quanta QSSC-S4R/Appro GB812X-CN, Intel S5500WBV/Penguin Relion 700 + + Resolution: Workaround option added to inform software to ignore + payload size checks and assume reasonable maximums. + + Notes: Confirmed fixed in newer firmware for Inventec 5441/Dell + Xanadu II. Problem is reported to be fixed in newer firmware for + Supermicro X8DTH-iF. + +Serial-Over-LAN Issue #3: [COMPLIANCE] + + A non-default SOL port is specified but not functional. + + Seen on: Asus P5M2, Asus P5MT-R + + Resolution: Workaround option added to inform software to ignore the + non-default port and assume the default SOL port is still used. + +Serial-Over-LAN Issue #4: [COMPLIANCE] + + The Get Channel Payload Support command is not supported. + + Seen on: Sun Fire 4100 with ILOM, Intel Windmill, Quanta Winterfell, + Wiwynn Windmill + + Resolution: Workaround option added to inform software to skip this + point in the SOL state machine. + + Notes: This command is optional in the IPMI spec, it is not optional + if SOL is supported. + +Serial-Over-LAN Issue #5: [COMPLIANCE] + + SOL sessions are not deactivated after a Deactivate Payload request, + despite the response indicating success. This could lead to a loop + that continually believes a SOL session is active, tries to + deactivate it, believes it is deactivated, then checks again if it + is active. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: Code added to error after a number of failed deactivations. + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. This is similar to issue #17 below. + +Serial-Over-LAN Issue #6: [COMPLIANCE] + + When a new IPMI session is started and steals the SOL session from a + previous one, the initial SOL session is not sent a "SOL is + deactivating" flag in a "BMC to Remote Console" packet. The initial + IPMI session should eventually time out, but the closing is not + clean. + + In some cases, the IPMI session may "stay alive" and it is only + serial data that may time out, leading to a situation that may be + very similar to Serial-Over-LAN Issue #8. + + Seen on: Supermicro H8QME with SIMSO daughter card, Inventec + 5441/Dell Xanadu II, Inventec 5442/Dell Xanadu III, Dell Poweredge + R610, Dell Poweredge R710, Quanta S99Q/Dell FS12-TY, Supermicro + X8DTG, Supermicro X8DTU, Intel S2600JF/Appro 512X, Quanta + QSSC-S4R/Appro GB812X-CN, Wistron / Dell Poweredge C6220. + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card, Inventec 5441/Dell Xanadu II, Inventec + 5442/Dell Xanadu III. + +Serial-Over-LAN Issue #7: [IMPLEMENTATION] + + During a reboot, SOL packets appear to be temporarily internally + dropped. This leads to a large increase in sequence numbers once + the SOL session is "re-connected". While the SOL session is + technically alive, the inability to predict/handle the sequence + number jump makes the SOL session difficult to handle, as you cannot + determine if packets are proper retransmissions or not. + + Seen on: Tyan S4811 with SMDC daughter card + + Resolution: Code added to error after a number of consecutive + invalid packets are received. + +Serial-Over-LAN Issue #8: [IMPLEMENTATION] + + After a reboot, the SOL session appears to "disconnect" from the + motherboard's serial chip. While the IPMI/SOL session is + technically alive, and character data input from the user is + accepted by the remote BMC, no character data is sent back from the + remote motherboard. The SOL session is subsequently useless. + + Seen on: Intel SR1520ML, Intel X38ML + + Resolution: The SOL session must be closed and restarted. Code to + implement "serial NUL pings" may aid software in detecting this + situation more quickly. + +Serial-Over-LAN Issue #9: [COMPLIANCE] + + The Activate Payload requires the "BMC asserts CTS and DCD/DSR to + baseboard upon activation" flag to be set, it is not optional. + + Seen on: Undocumented Motherboard + + Resolution: None + + Notes: Undocumented motherboard is an Intel motherboard. + +Serial-Over-LAN Issue #10: [IMPLEMENTATION] + + If the remote system requires encryption, but the user attempts to + connect without encryption, an error response other than "Cannot + activate payload without encryption" is returned. The resulting + error message is confusing. + + Seen on: Inventec 5441/Dell Xanadu II + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Inventec 5441/Dell + Xanadu II. + +Serial-Over-LAN Issue #11: [COMPLIANCE] + + The Get Payload Activation Status command is not implemented + correctly. The completion code CCh = "Invalid data field in + request" is returned when attempted. + + Seen on: Supermicro X8SIL-F + + Resolution: Workaround option added to inform software to skip this + point in the SOL state machine. + + Notes: Problem is reported to be fixed in newer firmware for + Supermicro X8SIL-F. + +Serial-Over-LAN Issue #12: [COMPLIANCE] + + The reported SOL port is specified w/ the wrong endian. + + Seen on: Supermicro X8DTH-iF + + Resolution: Workaround option added to inform software to ignore the + non-default port and assume the default SOL port is still used. + + Notes: Problem is reported to be fixed in newer firmware for + Supermicro X8DTH-iF. + +Serial-Over-LAN Issue #13: [COMPLIANCE] + + The Get Payload Activation Status command does not correctly report + if a previous SOL session was created. + + Seen on: Quanta S99Q/Dell FS12-TY + + Resolution: None + +Serial-Over-LAN Issue #14: [COMPLIANCE] + + SOL appears to be allowed regardless of SOL being enabled / disabled + or a user being enabled / disabled for SOL access. + + Seen on: MSI MS-91D2 + + Resolution: None + +Serial-Over-LAN Issue #15: [COMPLIANCE] + + The Activate / Deactivate Payload commands appear to require Admin + privileges, regardless of how SOL support is configured. The IPMI + specification indicates privilege requirements for executing these + commands depends on configuration. + + Seen on: MSI MS-91D2 + + Resolution: None + +Serial-Over-LAN Issue #16: [COMPLIANCE] + + The number of SOL payload instances that can simultaneously be + activated on a motherboard is always reported as 0, suggesting that + it cannot be activated. + + Seen on: Dell Poweredge M605, Dell Poweredge M610, Dell Poweredge + M915 + + Resolution: Workaround added to assume the instance capacity is + really 1 when it is 0. The assumption is made that the vendor does + not support multiple instances, which is why it is reported as 0. + +Serial-Over-LAN Issue #17: [COMPLIANCE] or [IMPLEMENTATION] + + SOL sessions are not deactivated after a Deactivate Payload request. + Despite the SOL session being active, it appears the BMC does not + know it is activated, and returns "Payload already deactivated" + (0x80) completion code. This could lead to a loop that continually + believes a SOL session is activated when calling Activate Payload, + and deactivated when calling Deactivate Payload. + + Seen on: Dell Poweredge M605, Dell Poweredge M610, Dell Poweredge + M915 + + Notes: It is possible the Dell BMC does not allow a SOL payload + deactivation except for the IPMI session that activated the SOL + payload. While deactivation of a payload from another IPMI session + is allowed in IPMI (see Table 15-2 [2]), I am not sure if it is + required. So I'm listing this as [COMPLIANCE] or [IMPLEMENTATION]. + This is similar to issue #5 above. + +Serial-Over-LAN Issue #18: [COMPLIANCE] + + SOL is always reported to have an active session in progress, so no + SOL session can be created. This includes after a deactivate + payload completes successfully. + + It is possible this motherboard does not support SOL. However, it + should indicate that early in the session setup (perhaps via the Get + Channel Payload Support request). + + Seen on: Xyratex HB-F8-SRAY + + Resolution: None + +Serial-Over-LAN Issue #19: [COMPLIANCE] + + SOL payload instances are not completely independent of each other. + Deactivate of SOL payload instance #X may deactivate a different SOL + payload instance #Y. + + Seen on: Supermicro X8DTG-D, Inventec 5442/Dell Xanadu III + Resolution: None + +Serial-Over-LAN Issue #20: [COMPLIANCE] + + The Activate Payload requires Serial/modem alerts to be deferred + instead of failed even though motherboards do not have serial/modem + ports to communicate over. + + Seen on: Intel Windmill, Quanta Winterfell, Wiwynn Windmill + + Resolution: Workaround added to defer serial alerts. + +Serial-Over-LAN Issue #21: [COMPLIANCE] + + The BMC occassionally gets stuck and an increase in the SOL packet + sequence number is required to get the machine unstuck. + + Seen on: Intel Windmill, Quanta Winterfell, Wiwynn Windmill + + Resolution: Workaround added to increase sequence number on severe + situations. + +---------------------------------------------------------------------- + +--------------------------------- +| BMC/IPMI Configuration Issues | +--------------------------------- + +---------------------------------------------------------------------- + +BMC/IPMI Configuration Issue #1: [COMPLIANCE] + + BMC requires that a password must be passed to the Set User Password + command even if you are just trying to enable/disable a user. The + IPMI specification explicitly states that the password is optional + when enabling/disabling a user. + + Seen on: Sun X4140, Intel Windmill, Quanta Winterfell, Wiwynn Windmill + + Resolution: Workaround added to detect this situation and retry with + a dummy password. + +BMC/IPMI Configuration Issue #2: [COMPLIANCE] + + Users cannot be enabled/disabled via Set User Password. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. + +BMC/IPMI Configuration Issue #3: [COMPLIANCE] + + Test passwords via Set User Password not supported. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. + +BMC/IPMI Configuration Issue #4: [COMPLIANCE] + + SOL privilege level, Character Send Threshold, SOL Retry Count, and + SOL Retry interval cannot be modified. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. + +BMC/IPMI Configuration Issue #5: [COMPLIANCE] + + User access parameters "Enable IPMI Msgs" and "Privilege Limit" are + not changeable via Set User Access. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. + +BMC/IPMI Configuration Issue #6: [COMPLIANCE] [CONFIG-1] + + Default Channel configuration has a privilege limit of OEM even + though motherboard does not support an OEM privilege. Attempts to + modify sub-fields "piecemeal" within the Set Channel Access command + fail a parameter out of range error (0xC9). + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. + +BMC/IPMI Configuration Issue #7: [COMPLIANCE] + + Setting a channel privilege limit (e.g. LAN channel privilege limit) + does not affect authentication and/or execution of IPMI commands + over LAN. + + Seen on: Supermicro H8QME with SIMSO daughter card, Inventec + 5441/Dell Xanadu II + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Supermicro H8QME with + SIMSO daughter card. + +BMC/IPMI Configuration Issue #8: [IMPLEMENTATION] + + When commiting/writing large amounts of configuration data, some + data does not get stored or written properly. It appears that the + BMC may lose data if overwhelmed with data written to the BMC. + + Seen on: Supermicro H8QME with SIMSO daughter card, Quanta S99Q/Dell + FS12-TY + + Resolution: Workaround option added to inform software to slow down + writing of data. + +BMC/IPMI Configuration Issue #9: [COMPLIANCE] + + The ability to authenticate under standard IPMI 1.5 authentication + types (i.e. MD5) OEM authentication to be enabled. It appears to be + an internal logic error on the motherboard. + + Seen on: Tyan S4811 with SMDC daughter card + + Resolution: OEM authentication must be enabled in the BMC + configuration. + +BMC/IPMI Configuration Issue #10: [IMPLEMENTATION] + + Get Username and Get User Payload commands fail with CCh = "Invalid + data field in request" if a username was not set previously. + + Seen on: Sun X4140, Inventec 5441/Dell Xanadu II + + Resolution: Workaround added to notify user to configure username + first. + +BMC/IPMI Configuration Issue #11: [IMPLEMENTATION] + + User access parameters "Enable IPMI Msgs" and "Privilege Limit" are + not changeable via Set User Access until a username has been set. + + Seen on: Inventec 5441/Dell Xanadu II, Supermicro X8DTH, Intel + S5500WBV/Penguin Relion 700 + + Resolution: Workaround added to notify user to configure username + first. + +BMC/IPMI Configuration Issue #12: [COMPLIANCE] + + When disabling LAN IPMI via Set User Access "Enable IPMI Msgs", IPMI + over LAN still works for a user. + + Seen on: Inventec 5441/Dell Xanadu II + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Inventec 5441/Dell + Xanadu II. + +BMC/IPMI Configuration Issue #13: [COMPLIANCE] + + Setting Non-volatile settings also changes Volatile settings for + channel configuration via Set Channel Access. + + Seen on: Inventec 5441/Dell Xanadu II, Intel S5500WBV/Penguin Relion + 700, Supermicro X8DTH + + Resolution: None + +BMC/IPMI Configuration Issue #14: [COMPLIANCE] + + ARP response configuration is not functional even though the BMC ARP + response is available. + + Seen on: Inventec 5441/Dell Xanadu II, Dell Poweredge R610, Dell + Poweredge R710 + + Resolution: None + + Notes: This command is optional in the IPMI spec, but it is not + optional if ARP response is supported (see Table 23-4 [2]). + Confirmed fixed in newer firmware for Inventec 5441/Dell Xanadu II. + +BMC/IPMI Configuration Issue #15: [COMPLIANCE] + + Setting a password using IPMI 2.0 extensions (i.e. up to 20 bytes in + length) does not work. + + Seen on: Undocumented Motherboard + + Resolution: User must configure password using IPMI 1.5 formatted + payloads. + +BMC/IPMI Configuration Issue #16: [IMPLEMENTATION] + + User cannot be enabled/disabled until after a non-null password has + been configured. + + Seen on: Dell Poweredge R610, Dell Poweredge R710, Wistron / Dell + Poweredge C6220. + + Resolution: Workaround added to re-try enable/disable user after + password set. + +BMC/IPMI Configuration Issue #17: [COMPLIANCE] [CONFIG-1] + + Default Authentication Type Enables configure several OEM + authentications on. However, the motherboard does not support these + OEM authentications, and any "piecemeal" configuration of the + remaining sub-fields results in a bad parameter completion code + (0xCC). + + Seen on: Dell Poweredge R610, Dell Poweredge R710 + + Resolution: Workaround added to notice this circumstance and attempt + to configure fields simultaneously. + +BMC/IPMI Configuration Issue #18: [IMPLEMENTATION] + + Read only fields return an error code of 0xD5 (request parameter not + supported) instead of 0x82 (read only parameter). The resulting + error message is confusing. + + Seen on: Dell Poweredge R610, Dell Poweredge R710 + + Resolution: None + +BMC/IPMI Configuration Issue #19: [COMPLIANCE] + + User IPMI messaging being enabled/disabled does not affect + authentication and/or execution of IPMI commands for the user. + + Seen on: Dell Poweredge R610, Dell Poweredge R710 + + Resolution: None + +BMC/IPMI Configuration Issue #20: [COMPLIANCE] + + Configuring the Subnet Mask will also lead to the "Default Gateway + IP Address" to be configured. It appears to be some type of memory + corruption on the motherboard firmware. + + Seen on: Inventec 5441/Dell Xanadu II + + Resolution: None + +BMC/IPMI Configuration Issue #21: [IMPLEMENTATION] + + Several configuration fields, most notably several SOL configuration + fields, are stored in volatile memory rather than non-volatile + memory. These particular configuration fields were not required by + IPMI to be stored in non-volatile memory, but ultimately is an issue + b/c it requires users to reconfigure IPMI on every system boot. + + Seen on: Inventec 5441/Dell Xanadu II + + Resolution: None + + Notes: Resolved/enhanced in newer firmware for Inventec 5441/Dell + Xanadu II. + +BMC/IPMI Configuration Issue #22: [COMPLIANCE] + + Gratuitous ARP configuration can be enabled, but is not available on + the system. + + Seen on: Quanta S99Q/Dell FS12-TY + + Resolution: None + +BMC/IPMI Configuration Issue #23: [COMPLIANCE] + + MAC address is read only, but motherboard does not return read-only + error when changing the MAC address. This leads the user to believe + MAC address can be configured. + + Seen on: Quanta S99Q/Dell FS12-TY + + Resolution: None + +BMC/IPMI Configuration Issue #24: [COMPLIANCE] + + IPMI over LAN functions only if ARPs are enabled. If ARPs are + disabled and you choose to store the MAC address locally in an ARP + cache, IPMI over LAN will still not function. + + Seen on: Quanta S99Q/Dell FS12-TY + + Resolution: None + +BMC/IPMI Configuration Issue #25: [IMPLEMENTATION] + + A default username cannot be changed. + + Seen on: Supermicro X8DTG, Supermicro X8DTU, Intel S5500WBV/Penguin Relion 700 + + Resolution: None + +BMC/IPMI Configuration Issue #26: [COMPLIANCE] + + User access parameters configured via Set User Access do not work + for some users. + + Seen on: Supermicro X8DTG, Supermicro X8DTU + + Resolution: None + +BMC/IPMI Configuration Issue #27: [COMPLIANCE] + + Cipher Suites 6, 7, 8, 11, and 12 are not available on the board, + but their Cipher Suite's Maximum Privilege Level are configurable, + suggesting to the user they are available. + + Seen on: Supermicro X8DTG, Supermicro X8DTU + + Resolution: None + +BMC/IPMI Configuration Issue #28: [COMPLIANCE] + + Multiple LAN Channels exist, however when asking the BMC how many + SOL Channels there are, it indicates only 1. Generally speaking, + this need not be a bug. However, for this particular motherboard it + is. + + Seen on: Intel S5500WBV/Penguin Relion 700 + + Resolution: None + +BMC/IPMI Configuration Issue #29: [COMPLIANCE] + + The number of entries returned from a RMCP+ Messaging Cipher Suite + Privilege Levels request is not valid. Not only is it not valid, + the number of entries does not even match the number of entries + specified by a RMCP+ Messaging Cipher Suite Entry Support Count + request. + + Seen on: HP DL145 + + Resolution: Workaround added to not output a privilege if one is not + available. + +BMC/IPMI Configuration Issue #30: [COMPLIANCE] + + Cipher Suite 1-16 are listed as supported instead of cipher suites + 0-15. + + Seen on: Intel S2600JF/Appro 512X + + Resolution: Workaround added to detect this specific situation and + adjust appropriately. + + Notes: Confirmed fixed in newer firmware. + +BMC/IPMI Configuration Issue #31: [IMPLEMENTATION] + + Some new IPMI configuration are not accepted by the BMC until after + a system reboot is done. + + Seen on: Dell Poweredge R610, Dell Poweredge R710, Inventec + 5441/Dell Xanadu II + + Resolution: None + + Notes: A cold reset of the BMC is sufficient to resolve this issue + on Inventec 5441/Dell Xanadu II without rebooting the machine. + +BMC/IPMI Configuration Issue #32: [COMPLIANCE] + + Motherboard errors out with unspecified password when trying to set + a new user password (completion code 0x8F). + + Seen on: Wistron / Dell Poweredge C6220 + + Resolution: None + + Notes: Motherboard has internal password requirements leading to + error. + +BMC/IPMI Configuration Issue #33: [COMPLIANCE] + + When retrieving boot flags via Get System Boot Options, the response + payload under IPMI 2.0 contains an extra 12 bytes of + unknown/unspecified data. + + Seen on: HP DL380 G5 + + Resolution: None + +BMC/IPMI Configuration Issue #34: [COMPLIANCE] + + Many configuration options return "Parameter Not Supported" (0x80) + when attempting to set a value, but do not when the parameter is + being read. It is likely the firmware writers meant that the + parameter was read only (0x82). + + Seen on: Xyratex HB-F8-SRAY + + Resolution: None + +BMC/IPMI Configuration Issue #35: [COMPLIANCE] + + User #1 cannot be enabled/disabled. It is permanently enabled. + + Seen on: Supermicro X10DDW-i + + Resolution: None + +BMC/IPMI Configuration Issue #36: [COMPLIANCE] [CONFIG-1] + + Default user privilege limit is RESERVED. Attempts to + modify sub-fields "piecemeal" within the Set User Access command + fail. + + Seen on: Supermicro X10DDW-i + + Resolution: Workaround added to work around this situation. + +BMC/IPMI Configuration Issue #37: [COMPLIANCE] + + IPMI LAN session w/ IPMI 1.5 times out after changing a user + password within the LAN session. + + Seen on: Supermicro X9DRT-HF+ + + Resolution: It appeared that this motherboard was still accepting + request packets using the old Password for the authentication hash + but was responding with packets using the new Password for the hash. + Ignoring the authentication code of response packets was sufficient + to work around the problem. It was also discovered communicating + with IPMI 2.0 worked and did not exhibit this problem. + +---------------------------------------------------------------------- + +------------------------------------------------------- +| Platform Event Filtering (PEF) Configuration Issues | +------------------------------------------------------- + +---------------------------------------------------------------------- + +Platform Event Filtering Configuration Issue #1: [IMPLEMENTATION] [CONFIG-1] + + Alert Policy configurations cannot be configured "piecemeal". If + all fields are not configured perfectly and simultaneously, every + configuration will result in a completion code of 0xCC (Invalid data + field in Request). + + Seen on: Inventec 5441/Dell Xanadu II, Fujitsu RX 100 + + Resolution: Workaround added to notice this circumstance and attempt + to configure fields simultaneously. + +---------------------------------------------------------------------- + +--------------------------------------- +| Field Replaceable Unit (FRU) Issues | +--------------------------------------- + +---------------------------------------------------------------------- + +Field Replaceable Unit Issue #1: [COMPLIANCE] + + Some FRU data has invalid checksums. + + Seen on: Undocumented Motherboard, Inventec 5441/Dell Xanadu II, + Dell Poweredge R610, Dell Poweredge R710, + + Resolution: Workaround option added to inform software to not check + checksums. + + Notes: Undocumented motherboard was an Intel Tiger motherboard, but + never documented which one (achu). + +Field Replaceable Unit Issue #2: [IMPLEMENTATION] + + A FRU Chassis Info Area reports an unspecified chassis type. + + Seen on: Quanta S99Q/Dell FS12-TY + + Resolution: None + +---------------------------------------------------------------------- + +------------------ +| Sensors Issues | +------------------ + +---------------------------------------------------------------------- + +Sensors Issue #1: [COMPLIANCE] + + Some sensors don't return a sensor state (16 bit field) although + only half of the sensor state (8 bit field) is optional. + + Seen on: Dell 2950, Inventec 5441/Dell Xanadu II + + Resolution: Workaround added to assume sensor state is 0 when this + occurs. + +Sensors Issue #2: [COMPLIANCE] + + Some sensors return sensor states that are illegal. For example, a + sensor state of 0x40 is returned, but 0x1 through 0x20 are the only + legal ones. + + Seen on: Dell 2950, SuperMicro X9DRI-LN4F+ + + Resolution: Workaround added to ignore invalid sensor states. + +Sensors Issue #3: [COMPLIANCE] [SENSORS-1] + + Some sensors return + IPMI_COMP_CODE_REQUEST_SENSOR_DATA_OR_RECORD_NOT_PRESENT (0xCB) + completion codes for unknown reasons. + + Seen on: Dell 2950 + + Resolution: Workaround added to assume sensor not available. + +Sensors Issue #4: [COMPLIANCE] [SENSORS-1] + + Some sensors return + IPMI_COMP_CODE_COMMAND_ILLEGAL_FOR_SENSOR_OR_RECORD_TYPE (0xCD) for + unknown reasons. + + Seen on: Sun V20Z + + Resolution: Workaround added to assume sensor not available. + +Sensors Issue #5: [COMPLIANCE] [SENSORS-1] + + Some sensors return IPMI_COMP_CODE_PARAMETER_OUT_OF_RANGE (0xC9) + completion codes for unknown reasons. + + Seen on: Dell 2650 + + Resolution: Workaround added to assume sensor not available. + +Sensors Issue #6: [COMPLIANCE] [SENSORS-1] + + Some sensors return IPMI_COMP_CODE_COMMAND_CANNOT_RESPOND (0xCE) + completion codes for unknown reasons. + + Seen on: HP ProLiant DL145 G2 + + Resolution: Workaround added to assume sensor not available. + +Sensors Issue #7: [COMPLIANCE] + + The Get Sensor Event Enable command always returns "sensor scanning + disabled" bit, even if sensor scanning is not disabled. + + Seen on: Sun X4140 + + Resolution: None + +Sensors Issue #8: [COMPLIANCE] + + Several sensors have invalid Entity IDs. In other words, not in the + valid Entity ID range or OEM defined range. + + Seen on: Inventec 5441/Dell Xanadu II + + Resolution: None, generic unknown Entity ID type listed. + +Sensors Issue #9: [COMPLIANCE] + + Sensor bridging over IPMI 1.5 fails b/c IPMB respones have invalid + authentication codes. + + Seen on: Inventec 5441/Dell Xanadu II, Inventec 5442/Dell Xanadu III + + Resolution: Workaround option added to inform software to ignore + authentication codes in response packets. + + Notes: Confirmed fixed in newer firmware for Inventec 5442/Dell + Xanadu III. + +Sensors Issue #10: [COMPLIANCE] [SENSORS-1] + + Some sensors return IPMI_COMP_CODE_REQUEST_PARAMETER_NOT_SUPPORTED + (0xD5) completion codes for unknown reasons. + + Seen on: Sun Fire X4450 w/ ELOM 3.0.0 + + Resolution: Workaround added to assume sensor not available. + +Sensors Issue #11: [COMPLIANCE] + + Some sensors report invalid event bitmasks. For example, when the + lower critical threshold has not been crossed, the lower critical + threshold event bitmask is set. + + Seen on: Intel SR2500, Intel SR1500SAS, Intel S5000PAL + + Resolution: None + +Sensors Issue #12: [COMPLIANCE] + + Sensors on the motherboard are owned by the BMC, but the SDR reports + that it is not. Thus, sensor bridging fails. + + Seen on: HP Proliant DL140 G1, Fujitsu RX300, Fujitsu RX300S2 + + Resolution: Workaround option added to inform software to assume the + sensor owner is the BMC no matter what. + + Notes: Confirmed fixed in newer firmware for Fujitsu RX300, Fujitsu + RX300S2. + +Sensors Issue #13: [INTERPRETATION] [IMPLEMENTATION] + + Sensors do not assert state bits (i.e. sensor event bitmask) + consistently to indicate that a sensor is "doing good". For + example, for a "Power Supply" sensor, offset 00h (i.e. state 0 or + bitmask 0x0001) indicates "Presence Detected". On some motherboards + this is considered to be the "good" result to see from a "Power Supply" + sensor reading. On some other motherboards, the motherboards have + elected to not return any offset (i.e. no states set or bitmask + 0x0000) when the power supply is fine, electing to only return an + offset when an actual failure occurs. + + Seen on: Various, this is a general issue. + + Resolution: None + +Sensors Issue #14: [IMPLEMENTATION] + + Event only sensors are listed in the SDR using a full or compact SDR + record. Software is very likely to believe these are sensors that + are readable, leading to non-optimal performance. + + Seen on: Various, this is a general issue. + + Resolution: None + +Sensors Issue #15: [INTERPRETATION] + + SDR records for some sensors list an event/reading type code for a + discrete sensor, but return an analog reading from a Get Sensor + Reading command. (The SDR's analog data format indicates an + analog/threshold based sensor, however no threshold limits for the + sensor are listed in the SDR.) + + This was discovered when FreeIPMI and IPMItool sensor output + mismatched. In FreeIPMI, ipmi-sensors would report discrete states + (e.g. "At or Below (<=) Lower Non-Critical Threshold") without an + actual sensor reading (e.g. 100 Watts). In IPMItool, it would + output the sensor reading (e.g. 100 Watts) but invalid/incorrect + discrete states. + + IMO, a SDR record that indicates an analog reading w/ a discrete + event/reading type code is illegal. At the minimum it makes no + sense. If you report an analog reading without any treshold + information, what is the use? While it is not explicitly stated in + the IPMI specification, this is strongly implied to be wrong. In + 42.1, it states for threshold sensors, "The Get Sensor Reading + command for a threshold-based sensor contains the present 'analog' + reading for the sensor along in addition to the discrete threshold + comparison status bit field." + + Seen on: HP Proliant DL380 G7, HP ProLiant ML310 G5 + + Resolution: Workaround option added to inform software to read the + sensor reading if there are enough hints it may be available. + +Sensors Issue #16: [INTERPRETATION] + + The analog data format lists 4 possible conditions: 00b = unsigned, + 01b = 1's complement, 10b = 2's complement, 11b = does not return + analog reading. This strongly suggests that any SDR entry that does + not report an analog reading should set this field to 11b. However, + text below this section states, "If neither thresholds nor analog + reading are provided, this field should be written as 00h." Some + vendors set this field to 00b for non-analog sensors, while others + set it to 11b. + + Seen on: Various, this is a general issue. + + Resolution: None + +Sensors Issue #17: [COMPLIANCE] + + Some sensors report that their sensor scanning is disabled, even + though the sensor is actually not. + + Seen on: Dell Poweredge 2900, Dell Poweredge 2950, Dell Poweredge + R410, Dell Poweredge R610, HP Integrity rx3600 + + Resolution: Workaround option added to inform software to ignore the + scanning bit and read a sensor reading regardless of the scanning + bits value. + +Sensors Issue #18: [COMPLIANCE] [SENSORS-1] + + Some sensors return IPMI_COMP_CODE_UNSPECIFIED_ERROR + (0xFF) completion codes for unknown reasons. + + Seen on: Sun Blade x6250 + + Resolution: Workaround added to assume sensor not available. + +Sensors Issue #19: [COMPLIANCE] [SENSORS-1] + + Some sensors return IPMI_COMP_CODE_DESTINATION_UNAVAILABLE (0xD3) + completion codes for unknown reasons. + + Seen on: Sun Blade 6000M2 + + Resolution: Workaround added to assume sensor not available. + +Sensors Issue #20: [IMPLEMENTATION] + + Some sensors are given a unit modifier (i.e. A / B, or A * B) but a + modifier unit of unspecified. This leads to sensors with units + like: "C / unspecified". + + Seen on: Wistron / Dell Poweredge C6220 + + Resolution: Workaround added to handle corner case. + +Sensors Issue #21: [IMPLEMENTATION] + + Some SDR entries report RPM thresholds that are inconsistent + and illogical. For example, a upper critical threshold will be + reported that is below the nominal reading. + + Seen on: HP DL140 G3 and HP ML160 G6 + + Resolution: None + +---------------------------------------------------------------------- + +--------------------------------- +| System Event Log (SEL) Issues | +--------------------------------- + +---------------------------------------------------------------------- + +System Event Log Issue #1: [COMPLIANCE] + + SEL records incorrectly report the generator_id slave address. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: Workaround added to handle this as a special case and + adjust the generator ID appropriately. + +System Event Log Issue #2: [COMPLIANCE] + + Different record ids (e.g. 280 vs. 281) can be used to retrieve + identical SEL records. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: None + +System Event Log Issue #3: [COMPLIANCE] + + The Reserve SEL IPMI command incorrectly requires an Operator + privilege Level instead of a User privilege level. + + Seen on: Supermicro H8QME with SIMSO daughter card + + Resolution: Workaround added to simply continue without a + reservation ID. + +System Event Log Issue #4: [COMPLIANCE] + + The Get SEL Entry command is not supported. + + Seen on: HP DL 585 + + Resolution: None + +System Event Log Issue #5: [COMPLIANCE] + + Some SEL records report illegal record types. + + Seen on: HP DL 380 G5, Intel S2600JF/Appro 512X + + Resolution: Workaround option added to inform software to assume the + record is a normal system event. + +System Event Log Issue #6: [IMPLEMENTATION] + + The SEL contains sensor numbers and sensor owner IDs which are not + listed in the SDR. This can lead to an output that contains less + useful information. + + Seen on: Inventec 5441/Dell Xanadu II, Sun Fire X4150 + + Resolution: None + +System Event Log Issue #7: [IMPLEMENTATION] + + SEL events showing a threshold sensor do not properly report if they + are going high or going low, which can lead to confusion for + users. For example, the following set of events might occur. + + Upper Non-critical - going high ; Sensor Reading = 242.00 W ; Threshold = 240.00 W + Upper Non-critical - going high ; Sensor Reading = 180.00 W ; Threshold = 240.00 W + + The following would be preferred + + Upper Non-critical - going high ; Sensor Reading = 242.00 W ; Threshold = 240.00 W + Upper Non-critical - going low ; Sensor Reading = 180.00 W ; Threshold = 240.00 W + + It is very likely the implementors only thought of + asserting/deasserting identical events, without considerations of + the actual event messages and the resulting output that can occur. + + Seen on: Dell Poweredge C410x + + Resolution: None + + Notes: + + The following SEL output in ipmitool shows how it can lead to even more confusion. + + Upper Non-critical going high | Reading 240 > Threshold 240 Watts + Upper Non-critical going high | Reading 88 > Threshold 240 Watts + + It reads "88 > 240" + +---------------------------------------------------------------------- + +----------------------------- +| BMC Watchdog Timer Issues | +----------------------------- + +---------------------------------------------------------------------- + +BMC Watchdog Timer Issue #1: [COMPLIANCE] + + The timer is running/stopped flag appears to be stuck on "stopped" + regardless if the timer is running or not. Functionality may be + limited due to this. + + Seen on: Sun x4100, Sun x4200, Sun x4500 + + Resolution: Workaround option added to inform software to analyze + countdown rather than flag for running vs stopped state. + + Notes: Confirmed fixed in newer firmware for Sun x4100, Sun x4200, + Sun x4500. + +BMC Watchdog Timer Issue #2: [???] + + A reply from a Get Watchdog Timer command returns a packet without + valid data. + + Seen on: Unspecified Supermicro + + Resolution: Handle special case and retry command. + +---------------------------------------------------------------------- + +--------------- +| DCMI Issues | +--------------- + +---------------------------------------------------------------------- + +DCMI Issue #1: [COMPLIANCE] + + DCMI is reported as available, when it is not. + + Seen on: Inventec 5441/Dell Xanadu II + + Resolution: None + + Notes: Confirmed fixed in newer firmware for Inventec 5441/Dell + Xanadu II. + +DCMI Issue #2: [INTERPRETATION] + + The DCMI spec indicates a potential completion code for the "Get + Power Limit" command as "No Set Power Limit" (0x80). FreeIPMI + originally interpreted this to mean the "Set Power Limit" command + was not available. Atleast one vendor interpreted this to mean "No + Power Limit Set". One can consider this an English interpretation + issue of 'No set POWER LIMIT' vs. 'No SET POWER LIMIT' (i.e. is + "set" a verb or part of a proper noun referencing the DCMI command). + Confounding this issue is the fact that the example implementation + in Intel's DCMItool implements the former, while the DCMI + Conformance test suite implements the latter. In addition to this, + with the latter interpretation, it need not be an indication of an + error, but rather a flag. So the rest of the packet can be + completely full of legitimate data. + + Seen on: Various, this is a general issue. + + Resolution: Code added to handle both interpretations. + +DCMI Issue #3: [INTERPRETATION] + + The DCMI 1.1 Specification includes new commands to set the asset + tag and management controller identifier string. The payload to + write these strings is: + + Byte 1 - Group Extension (DCh) + Byte 2 - Offset to Write + Byte 3 - Bytes to Write (max 16) + Byte 4-N - Data + + and the response is: + + Byte 1 - Completion Code + Byte 2 - Group Extension (DCh) + Byte 3 - Total Length Written + + The maximum size for both strings is listed at 64 bytes. + + In the spec, it is unclear how this payload is to be used. It is + unclear if the "Total Length Written" field is similar to a posix + write, where <= the bytes passed in may be written. Or is it an + indication of the total length of bytes stored? The management + identifier string is stated to be NUL terminated, but the asset tag + is not stated with this requirement. + + Seen on: Various, this is a general issue. + + Resolution: Code assumes that all 64 bytes of the buffer must be + overwritten everytime the string is modified. This seems to be the + safest approach. + +DCMI Issue #4: [COMPLIANCE] + + The Set Asset Tag command does not return the length of the asset + tag written. + + Seen on: Unspecified Supermicro Motherboard + + Resolution: None + +---------------------------------------------------------------------- + +------------------------------------ +| Platform Event Trap (PET) Issues | +------------------------------------ + +---------------------------------------------------------------------- + +Platform Event Trap Issue #1: [COMPLIANCE] + + Responses from a PET Acknowledge are invalid and malformed. The + payload is short by one byte (i.e. does not contain a completion + code). + + Seen on: Dell Poweredge R610 + + Resolution: Workaround option added to inform software to accept + malformed packets. + +---------------------------------------------------------------------- + +-------------------- +| Misc IPMI Issues | +-------------------- + +---------------------------------------------------------------------- + +Misc IPMI Issue #1: [COMPLIANCE] + + The Get System Info Parameters command incorrectly requires + administrator privileges rather than the defined user level + privileges. + + Seen on: MSI MS-91D2 + + Resolution: None, user should attempt to authenticate at a higher + privilege level. + +Misc IPMI Issue #2: [COMPLIANCE] + + The Get System Info Parameters command returns insufficient + privilege level (0xD4) even when the privilege level is sufficient. + + Seen on: Supermicro X8DTL-3F, Supermicro X9DRFR + + Resolution: None, user should attempt to authenticate at a higher + privilege level. + +Misc IPMI Issue #3: [COMPLIANCE] + + The manufacturer ID specified by the motherboard was invalid + (i.e. not a valid IANA Enterprise number). + + Seen on: Supermicro X8DTH, Supermicro X8DTG, Supermicro X8DTU + + Resolution: Workaround added to recognize special case IANA number + as belonging to a specific manufacturer. + +Misc IPMI Issue #4: [INTERPRETATION] + + When retrieving the operating system name via Get System Info + Parameters, the 'set_selector', 'encoding', or 'string_length' + fields in the response is not set. It is not clear if this is an + error in their packet for indicating an unsupported field or an + empty field. + + Seen on: Bull 510 Blade. + + Resolution: Workaround added to bmc-info to handle special case. + +Misc IPMI Issue #5: [COMPLIANCE] + + The Get System Info Parameters command returns insufficient + privilege level (0xD4) regardless of privilege level. + + Seen on: Intel Windmill, Quanta Winterfell, Wiwynn Windmill + + Resolution: None + +Misc IPMI Issue #6: [COMPLIANCE] + + The Get SDR Repository Info command returns insufficient privilege + level (0xD4) regardless of privilege level. + + Seen on: Wiwynn Windmill + + Resolution: None, user should attempt to authenticate at a higher + privilege level. + +Misc IPMI Issue #7: [COMPLIANCE] + + System does not support RMCP ping/pong. + + Seen on: Intel Windmill, Quanta Winterfell, Wiwynn Windmill + +---------------------------------------------------------------------- + +------------ +| Appendix | +------------ + +[CONFIG-1] + +To see a discussion on why this implementation is poor, please see +"Configuration tool callback design" in the freeipmi-design.txt +document. + +[SENSORS-1] + +In all liklihood, these are all circumstances that the vendor wanted +to say "this sensor isn't available on this motherboard". It is +ironic that there are so many error codes vendors are returning for +this circumstance. It's also strange that so many vendors don't set +the "reading unavailable" or "sensor scanning disabled" bit when +returning the Get Sensor Reading command. But I digress. + +I get the impression vendors try to put the same SDR on multiple +motherboards, regardless of whether a motherboard can even have a +sensor reading/event represented by that SDR entry, leading to the +strange range of error codes. + +The best thing vendors could do is have an SDR for each motherboard +that is actually legit. The IPMI spec strongly suggests this as well: + +"Sensor Data Records are data records that contain information about +the type and number of sensors in the platform ..." (1.7.7). + +"The SDR Repository is intended to hold information indicating the set +of management controllers, sensors, and FRU Devices that is expected +to be in the system ... For example, suppose the baseboard had +connectors for five fans, but only the first four were supposed to be +populated. The SDRs for the system would report four fan sensors ..." +(33) + diff --git a/source/freeipmi/usr/share/doc/freeipmi/freeipmi-coding.txt b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-coding.txt new file mode 100644 index 00000000..500ddff0 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-coding.txt @@ -0,0 +1,272 @@ +FreeIPMI Coding + +by + +Albert Chu +chu11@llnl.gov +Last Updated: February 8, 2012 + +These are some short descriptions on coding style, API style, other +thoughts for those interested in developing for FreeIPMI. + +1) Code Style +------------- + +The GNU coding style was selected for FreeIPMI. Please try to follow +the coding style used in the rest of FreeIPMI. Here's a short example +that covers the generics of the GNU coding style. + +int +main(int argc, char **argv) +{ + int a = 0; + int b = 1; + + if (a == 1) + printf("yoda\n"); + + if (a == 5 + || b == 1) + { + printf("foobar\n"); + printf("xyzzy\n"); + } + + while (a++ < 5) + printf("lala\n"); + + while (b++ < 7) + { + printf("blah\n"); + printf("garble\n"); + } +} + +2) Parameter Checking +--------------------- + +Please carefully check the input parameters on the inputs your +program and/or functions take. Minor parsing issues can lead to +catastrophic mistakes in IPMI. + +For example, suppose you have a --power-control option that takes a +number to represent a type of operation (on, off, etc.). Suppose a +user inputs "--power-control=foobar". The "foobar" will be read as a +'0' by strtoul(). If not properly checked, the '0' can be passed to +the IPMI Chassis Control command, which uses the '0' to power off a +node. + +In programs, when appropriate, output error messages to the user +indicating that how and why the inputted parameters were incorrect. + +3) Code Consistency +------------------- + +Please keep your code as consistent as possible to other code in +FreeIPMI. That includes code indenting style, brace style, API style, +and naming convention (which is discussed in more detail below). + +Although there may be situations that a particular API style or naming +convention will make things easier for you and your code (such as +shortening the name of a function, decreasing the number of parameters +you need to pass to a function via a struct, etc.), we ask that your +code be consistent so that it does not confuse other developers. + +If there is a distinct technical reason that you must use a different +API style, please bring it up with the FreeIPMI authors. + +For example, pretty much all of the "fill" functions in libfreeipmi +take the exact parameters they need to fill the fiid object which is +passed along as a parameter. All parameters are passed by value, not +by a pointer or other method (e.g. object, struct, etc.). + +Exceptions do exist. For example, fill_cmd_chassis_identify() takes +parameters passed by pointer instead of passed by value. The reason +is that both fields are optional and need not be filled according to +the IPMI specification. The pointer gives the caller the ability to +set values (by passing a valid pointer) or not (by passing NULL). + +4) Libfreeipmi naming/function parameter conventions +---------------------------------------------------- + +The naming style in libfreeipmi was developed primarily for the +purpose of readability when code is being compared to the IPMI +specification. + +Due to the size of the IPMI spec, there will be a lot of code. In +earlier versions of FreeIPMI, there was confusion on where code was +located, what parameters were called, how parameters should be input, +etc. due to different people using different abbreviations styles, +putting functions out of order with the spec, in different files, +using/not-using different bitmasks, etc. The code has been auditted +and cleaned up since then. + +So when adding new functions/templates/parameters/files/etc. to +libfreeipmi, please name them consistently to the rest of the +libfreeipmi library and the IPMI specification. + +This includes: +- naming functions/templates/parameters/files based on the spec +- in most cases, not abbreviating any words (or using consistent + abbreviations in the rest of the library, check first!) +- matching parameter lists to the templates and in the same order +- ordering functions/templates/parameters/files/etc. consistently with the spec. + +For example: + +ipmi-messaging-support-cmds.c + +is the file for messaging support commands, chapter 22 of the IPMI 2.0 spec. + +tmpl_cmd_get_channel_authentication_capabilities_rq +tmpl_cmd_get_channel_authentication_capabilities_rs + +are the templates for the Get Channel Authentication Capapilities +command. + +fiid_template_t tmpl_cmd_get_channel_authentication_capabilities_rq = + { + { 8, "cmd", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 4, "channel_number", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 3, "reserved1", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "get_ipmi_v2.0_extended_data", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 4, "maximum_privilege_level", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 4, "reserved2", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 0, "", 0} + }; + +fiid_template_t tmpl_cmd_get_channel_authentication_capabilities_rs = + { + { 8, "cmd", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED | FIID_FIELD_MAKES_PACKET_SUFFICIENT}, + { 8, "comp_code", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED | FIID_FIELD_MAKES_PACKET_SUFFICIENT}, + { 8, "channel_number", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_type.none", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_type.md2", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_type.md5", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_type.reserved1", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_type.straight_password_key", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_type.oem_prop", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_type.reserved2", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_type.ipmi_v2.0_extended_capabilities_available", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_status.anonymous_login", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_status.null_username", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_status.non_null_username", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_status.user_level_authentication", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_status.per_message_authentication", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "authentication_status.k_g", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 2, "authentication_status.reserved", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "channel_supports_ipmi_v1.5_connections", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 1, "channel_supports_ipmi_v2.0_connections", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 6, "reserved", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 24, "oem_id", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 8, "oem_auxiliary_data", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + { 0, "", 0} + }; + +The fields listed in the templates above directly match table 22-15, +the Get Channel Authentication Capabilities request and response +commands. + +int fill_cmd_get_channel_authentication_capabilities (uint8_t channel_number, + uint8_t maximum_privilege_level, + fiid_obj_t obj_cmd_rq); + +The function above matches the naming and takes exactly the parameters +needed by the Get Channel Authentication Capabilities request +template. + +The coding conditions specified above may lead to function names or +function parameters names that exceed the 80 column mark or having +very long parameter lists. We accept this annoyance (or poor coding +style, we admit it), as we consider matching the specification as a +more important need in libfreeipmi. + +For example: + +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); + +The function name and parameters look pretty long and terrible. But +the names and fields exactly match the get authentication type enables +fields listed in Table 23-4. There should be very little difficulty +understanding what this funciton does, how it should be called, and +what the parameters are if you are reading along with the spec. + +Because we want the code to match the IPMI spec as closely as +possible, we currently accept the code inefficiencies (due to large +stacks of parameters) that come with having long parameters lists and +the atrocities of having gigantic 25+ parameter function calls in +code. + +5) Compilation and Development Notes +------------------------------------ + +Normally, to build and develop from the source tree you need to run: + +./autogen.sh +./configure +make + +out of the directory you are in. + +The following configure options can help you with many development +issues: + +--enable-debug + +This option will turn on compilation of debugging symbols. More +warnings may also be enabled when compiling. + +In addition, this option may enable a few "workarounds" to allow for +easier development of code. Most notably, inband drivers may look in +additional locations for an ipckey, so that inband development can be +done in a local directory without a full installation. + +Generally speaking, if developing out of a local tree, you'll almost +always want to enable this flag. + +--enable-profile + +If --enable-debug is enabled, this option will turn on compilation +with profiling data. + +--enable-trace + +Compile tracing information into a significant portion of FreeIPMI +code. This will result in significant amounts of extra information to +be output. + +--enable-rawdumps + +Some users may be more familiar with raw IPMI packet dumps instead of +the detailed field identified dumps that normally occur when running +tools with --debug. In this case, --enable-rawdumps, will inform +FreeIPMI to also output packets in raw form. + + diff --git a/source/freeipmi/usr/share/doc/freeipmi/freeipmi-design.txt b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-design.txt new file mode 100644 index 00000000..5a817c3b --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-design.txt @@ -0,0 +1,598 @@ +FreeIPMI Design + +by + +Albert Chu +chu11@llnl.gov +Last Updated: August 27, 2013 + +These are some notes on various design decisions made in FreeIPMI. + +1) Fiid vs. other Marshalling/Unmarshalling Styles +-------------------------------------------------- + +Several programmers have asked us why we have chosen a relatively +unpopular/different method to marshall/unmarshall IPMI packets and +build network packets. + +First, lets discuss several classic methods for +marshalling/unmarshalling data when using structs to represent a +packet. + +Method A: Marshall/Unmarshall "manually": +----------------------------------------- + +struct packet +{ + uint8_t field_1; /* 1 bit */ + uint8_t field_2; /* 3 bits */ + uint8_t field_3; /* 4 bits */ + int16_t field_4; /* 16 bits */ +}; + +my_marshall_function(struct packet *pkt, char *buf, unsigned int buflen) +{ + buf[0] |= pkt->field_1 & 0x1; + buf[0] |= (pkt->field_2 << 1) & 0x0E; + buf[0] |= (pkt->field_3 << 4) & 0xF0; + /* assuming network byte order here */ + buf[1] |= (pkt->field_4 & 0xFF00) >> 8; + buf[2] |= pkt->field_4 & 0x00FF; +} + +my_unmarshall_function(struct packet *pkt, char *buf, unsigned int buflen) +{ + pkt->field_1 = buf[0] & 0x01; + pkt->field_2 = buf[0] & 0x0E >> 1; + pkt->field_3 = buf[0] & 0xF0 >> 4; +#if LITTLE_ENDIAN_HOST + pkt->field_4 = buf[2] | buf[1] << 8;; +#else + pkt->field_4 = buf[1] | buf[2] << 8;; +#endif +} + +general_usage_example() +{ + struct packet pkt; + char buf[1024]; + int len; + + pkt.field_1 = 1; + pkt.field_2 = 2; + pkt.field_3 = 3; + pkt.field_4 = 5; + + my_marshall_function(&pkt, buf, 1024); + my_send_data_function(buf); + + len = my_receive_data_function(buf); + my_unmarshall_function(&pkt, buf, len); + + printf("field_1 is: %d\n", pkt.field_1); +} + +Pros: + +A) No need to deal with struct packing issues in the compiler. +B) The struct definition describes packets closely and is relatively + easy to use and understand. +C) Relatively efficient. +D) General usage code size is relatively small. +E) General usage need not determine field type (e.g. is it an unsigned + or signed integer). + +Cons: + +A) Have to deal with endian problems. +B) Lots of marshalling and unmarshalling code are required for each + packet type. +C) Relatively difficult to deal with optional fields. (You'll need + flags in the struct to indicate if a field was set/unset, or validate + the fields via protocol definition knowledge.) +D) Relatively difficult to deal with variable length fields. (You'll + need a length parameter in the struct to indicate the length of a + field.) +E) Packet dumps/debugging is relatively poor (you only get hex) or you + have to create debug functions to handle each packet type. +F) Struct changes (e.g. due to IPMI errata changes) may break ABI if + the structs are part of a public interface. + +Method B: Cast a buffer to a packed struct: +------------------------------------------- + +For Example: + +struct packet +{ + uint8_t field_1 : 1; + uint8_t field_2 : 3; + uint8_t field_3 : 4; + int16_t field_4; +}; + +my_marshall_function(struct packet *pkt, char *buf, unsigned int buflen) +{ + memcpy(buf, pkt, sizeof(struct packet)); +#if LITTLE_ENDIAN_HOST + swap(&buf[1], &buf[2]); +#endif +} + +my_unmarshall_function(struct packet *pkt, char *buf, unsigned int buflen) +{ + *pkt = *((struct packet *)buf); +#if LITTLE_ENDIAN_HOST + pkt->field_4 = ntohs(pkt->field_4); +#endif +} + +general_usage_example() +{ + struct packet pkt; + char buf[1024]; + int len; + + pkt.field_1 = 1; + pkt.field_2 = 2; + pkt.field_3 = 3; + pkt.field_4 = 5; + + my_marshall_function(&pkt, buf, 1024); + my_send_data_function(buf); + + len = my_receive_data_function(buf); + my_unmarshall_function(&pkt, buf, len); + + printf("field_1 is: %d\n", pkt.field_1); +} + +Pros: + +A) Not too much marshalling and unmarshalling code is required. +B) General usage code size is relatively small. +C) The struct definition describes packets exactly and is relatively + easy to use and understand. +D) Very efficient (little actual marshalling/unmarshalling needs to be done.) +E) General usage need not determine field type (e.g. is it an unsigned + or signed integer). + +Cons: + +A) Have to deal with endian problems. +B) Have to deal with portability of struct packing techniques between + different compilers (there are differences in compilers, but nowadays, + this may be easier/more portable than I originally believed it to be). +C) Difficult to deal with optional fields (no flags can be put + in the struct to indicate if a field was set/unset, can only + validate the fields via protocol definition knowledge.) +D) No mechanism to deal with variable length fields (no length + field can be put in the struct to indicate the field length.) +E) Packet dumps/debugging is relatively poor (you only get hex) or you + have to create debug functions to handle each packet type. +F) Struct changes (e.g. due to IPMI errata changes) may break ABI if + the structs are part of a public interface. + +Our Method C: string_name -> bitmask mapping +-------------------------------------------- + +The "FreeIPMI Interface Definition" or 'fiid' API in libfreeipmi uses +a string_name/bit_count template and an API to get and set values in a +packet to handle marshalling/unmarshalling. + +The following are a few of the API functions used for FIID to give you +an idea for the fiid API: + +fiid_obj_t fiid_obj_create (fiid_template_t tmpl); +int32_t fiid_obj_errnum(fiid_obj_t obj); +int8_t fiid_obj_clear (fiid_obj_t obj); +int8_t fiid_obj_set (fiid_obj_t obj, char *field, uint64_t val); +int8_t fiid_obj_get (fiid_obj_t obj, char *field, uint64_t *val); +int32_t fiid_obj_get_all (fiid_obj_t obj, uint8_t *data, uint32_t data_len); +int32_t fiid_obj_set_all (fiid_obj_t obj, uint8_t *data, uint32_t data_len); + +The following is the fiid equivalent in the previous examples: + +fiid_template_t tmpl_example = + { + {1, "field_1", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + {3, "field_2", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + {4, "field_3", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + {16, "field_4", FIID_FIELD_REQUIRED | FIID_FIELD_LENGTH_FIXED}, + {0, "", 0} + }; + +general_usage_example() +{ + fiid_obj_t obj; + char buf[1024]; + int len; + uint64_t val; + + obj = fiid_obj_create(tmpl_example); + fiid_obj_set(obj, "field_1", 1); + fiid_obj_set(obj, "field_2", 2); + fiid_obj_set(obj, "field_3", 3); + fiid_obj_set(obj, "field_4", 5); + + /* "marshall" the packet */ + fiid_obj_get_all(obj, buf, 1024); + my_send_data_function(buf); + + fiid_obj_clear(obj); + + len = my_receive_data_function(buf); + + /* "unmarshall" the packet */ + fiid_obj_set_all(obj, buf, len); + + fiid_obj_get(obj, "field_1", &val); + printf("field_1 is: %d\n", (int16_t)val); +} + +The pros and cons of the fiid method are: + +Pros: + +A) No need to deal with endian problems (handled internally in the API). +B) No need to deal with struct packing issues (bit shifts are handled + internally in the API). +C) Easier to deal with optional fields (For marshalling, don't set a + field. For unmarshalling, the api can identify if a field is set or not). +D) Easier to deal with variable length fields (For marshalling, set + whatever length you want. For unmarshalling, the api can identify the + length of the field read). +E) Templates describe the packets exactly. +F) Easy to do large packet dumps and debug (fields and values easily + output and identified). +G) Significantly reduce the amount of marshalling, unmarshalling, and + debug code needed (the API handles it all already). +F) Template changes (e.g. due to IPMI errata changes) shouldn't break + ABI. (You can publish the template strings, need not publish the + template itself.) + +Cons: + +A) Need to learn/use a reasonably large API and learn/use all the + templates. +B) Pretty inefficient (lots of string comparisons). +C) General usage code size is increased. +D) General usage must determine and cast field to appropriate type + (e.g. is it an unsigned or signed integer). + +(Side Comments: + +Some other networking APIs have a similar API, but use +macros/enums for the field names rather than strings. Many of the +above benefits are identical, except the debug dump output +capabilities are weaker in exchange for better performance. + +Some other networking APIs may return a type of a field (e.g. signed +vs unsigned, 16bit vs 32bit, etc.). That would remove need to +determine casting in general usage in exchange for larger general +usage code size.) + +The big reasons why this was developed and chosen over traditional +methods. + +A) The IPMI specification is very large, so reducing code size weighed +in as an important factor for the FreeIPMI authors. This allowed +there to be fewer marshalling/unmarshalling/debug functions. By one +FreeIPMI author's counting in the specification, there are 304 +different base payloads in the IPMI specification. This does not +include permutations of payloads due to different versions, optional +fields, headers, trailers, encryption, oem extensions, record formats +data is stored in, etc. + +B) There are a relatively large number of optional fields and variable +length fields in the IPMI specification. As stated above, the +traditional struct based marshalling/unmarshalling have issues +with handling these. + +C) The lack of IPMI compliance from vendors is a well known problem in +the open-source community. The templates have saved developers +countless hours of debugging time due to the easy method by which +packets can be dumped with their fields and values quickly identified. +It is very easy to find vendor IPMI compliance problems very quickly. + +Here's an example of a dump: + +pwopr2: : RMCP Header: +pwopr2: : ------------ +pwopr2: [ 6h] = version[ 8b] +pwopr2: [ 0h] = reserved[ 8b] +pwopr2: [ FFh] = sequence_number[ 8b] +pwopr2: [ 7h] = message_class.class[ 5b] +pwopr2: [ 0h] = message_class.reserved[ 2b] +pwopr2: [ 0h] = message_class.ack[ 1b] +pwopr2: : IPMI Session Header: +pwopr2: : -------------------- +pwopr2: [ 0h] = authentication_type[ 8b] +pwopr2: [ 0h] = session_sequence_number[32b] +pwopr2: [ 0h] = session_id[32b] +pwopr2: [ 9h] = ipmi_msg_len[ 8b] +pwopr2: : IPMI Message Header: +pwopr2: : -------------------- +pwopr2: [ 20h] = rs_addr[ 8b] +pwopr2: [ 0h] = rs_lun[ 2b] +pwopr2: [ 6h] = net_fn[ 6b] +pwopr2: [ C8h] = checksum1[ 8b] +pwopr2: [ 81h] = rq_addr[ 8b] +pwopr2: [ 0h] = rq_lun[ 2b] +pwopr2: [ 26h] = rq_seq[ 6b] +pwopr2: : IPMI Command Data: +pwopr2: : ------------------ +pwopr2: [ 38h] = cmd[ 8b] +pwopr2: [ Eh] = channel_number[ 4b] +pwopr2: [ 0h] = reserved1[ 3b] +pwopr2: [ 1h] = get_ipmi_v2.0_extended_data[ 1b] +pwopr2: [ 2h] = maximum_privilege_level[ 4b] +pwopr2: [ 0h] = reserved2[ 4b] +pwopr2: : IPMI Trailer: +pwopr2: : -------------- +pwopr2: [ 1Fh] = checksum2[ 8b] + +2) Non-generic error messages +----------------------------- + +Under some circumstances, it may be preferred to return generic error +messages to the user, so that a malicious user cannot infer remote +login information from different error messages returned. For +example, returning a generic error message of "Permission Denied" +would not give a malicious user information on whether the username or +password was input incorrectly. + +Although implemented earlier on, the FreeIPMI authors have elected to +not implement this now. There are many vendor implementations of IPMI +and many configuration options (authentication mechanism, cipher suite +id, username, password, K_g, privilege level) needed for proper IPMI +session establishment. The number of error messages that could be +mapped into a generic "Permission Denied" would make it too difficult +for users to determine why they failed to connect properly. The +overall worth of implementing a generic "Permission Denied" error +message just doesn't seem worth it now. + +3) Get Channel Authentication Capabilities Command +-------------------------------------------------- + +The Get Channel Authentication Capabilities Command is typically the +first packet sent in the IPMI session. It returns information +on the remote machine's support of: + +A) IPMI 1.5 authentication mechanisms (e.g. md2, md5, etc.) +B) IPMI 1.5 and/or IPMI 2.0 +C) per msg authentication +D) K_g status +E) null username/non-null username/anonymous logins + +Currently in FreeIPMI, we check each of these values during the +session setup to determine if a person can connect to the remote +machine later in the protocol: + +A) If the user input an unsupported authentication mechanism, we +return an error. + +B) If the user requested IPMI 2.0, but the remote machine doesn't +support IPMI 2.0, we return an error. + +C) We determine if per msg authentication should be considered later +in the protocol session. + +D) If the user was required/not-required to input a K_g value, we +return an error appropriately. + +E) If the user input an unsupported username/password combination, we +return an error appropriately. + +There is a question as to what values above, if any, need to be +checked and appropriate errors returned to the user. The Get Channel +Authentication Capabilities command is often implemented incorrectly +by a number of vendors, so that overall benefit of checks has been put +in question. The FreeIPMI authors have elected to keep all the checks +for the following reasons. + +* 'A' and 'B' should be checked to avoid potential timeouts: + + - Later in the protocol, the password could be sent/hashed + incorrectly, leading to a timeout because packets are not accepted by + the remote machine. + + - If the remote machine does not support IPMI 2.0, later packets + could timeout because the remote machine does not recognize the packet + format. + +* 'C''s checks could be skipped as long as per msg authentication was not + supported. + +* 'D''s checks could be skipped, because an improper null vs non-null K_g +will be caught later during IPMI 2.0 authentication. + +* 'E''s checks are the most complicated. An improper null vs non-null +username will be caught later during IPMI 1.5 and IPMI 2.0 +authentication. An improper null vs non-null password can be caught +later during IPMI 2.0 authentication, but may result in a timeout +during IPMI 1.5 authentication. + +An argument could also be made that the speed at which an invalid +username/password error is returned to a user could also give a +malicious user information on the username/password of the remote BMC. + +In the end, the authors have felt the overall positive benefits +provided by the checking of these values provides more than the +negative implications. Changes in the overall industry implementation +could change this viewpoint later. + +4) Configuration tool callback design +------------------------------------- + +Ipmi-config is coded with a archicture that reads/writes each +configurable field in the BMC separately. + +As an example, suppose we have the following BMC configuration file +we'd like to commit. + +FieldA Value1 +FieldB.1 Value2 +FieldB.2 Value3 +FieldB.3 Value4 +FieldB.4 Value5 + +Suppose FieldA is read/written using a single IPMI packet and fields +FieldB.1-FieldB.4 can be read/written using a single IPMI packet. + +In the architecture that ipmi-config is currently based on, the above +would require 5 read requests to read all 5 values. It would require +1 read request for FieldA, 4 read requests for FieldB.1-FieldB.4, and +5 write requests to write the values. + +Obviously, this sounds like (and is!) very inefficient. + +The authors acknowledge that the code is very inefficient b/c it will +cause an excess number of request/response packets to be generated. With +a large number of inputs the Configtools can be slow. + +Here are some of the major reasons why this was done and is still +kept. + +A) Due to widely varying IPMI versions and implementations, this +handles the write configuration case best. Suppose FieldB.2 is only +configurable on IPMI 2.0 systems but not IPMI 1.5 systems. Suppose +(perhaps b/c it is optional in the IPMI specification) FieldB.3 is +supported by some vendors but not other vendors. Suppose FieldB.4 is +simply not implemented correctly by the vendor. + +This architecture allows the majority of the configuration to succeed +on a specific platform, and allows the end user to know exactly what +fields may or may not be configurable. If all 4 fields of +FieldB.1-FieldB.4 were written at the same time, there is currently no +method in the IPMI protocol to know what field was configured +incorrectly and why (only a generic error of "invalid input" is +returned, but you won't know which field it is). + +In the future, functionality could be added to retry each field +separately if there was such a failure, however that would add another +piece of complexity into the code we currently don't have time to add. +In addition, with so many IPMI firmware implementations, it may +difficult to add such functionality because of the wide array of error +cases that might occur. + +B) There are several (and possibly more future) vendor compliance +problems that can be (or will need to be) worked around. By using +this architecture, each specific field can be worked around +independently depending on the vendor. These workarounds need to be +handled on both the read and write conditions. + +One of the major fallouts from this design is that if an +invalid/illegal configuration exists on the motherboard by default, +some configuration values may not be configurable. For example, +suppose we want to write the following config to the BMC. + +FieldA.1 Value1 +FieldA.2 Value2 +FieldA.3 Value3 +FieldA.4 Value4 + +The architecture of the config tools will read FieldA.1-FieldA.4 from +the BMC, change only FieldA.1, then try to write all the fields back +to the BMC. Then it would be repeated for FieldA.2, etc. + +However, suppose the default setting on the motherboard for FieldA.4 +is illegal. Then each time we attempt to write FieldA.1, FieldA.2, +and FieldA.3, an invalid input error will be returned b/c FieldA.4 is +illegal. Things cannot change until FieldA.4 is modified. + +In a worse scenario, suppose the default setting on the motherboard is +illegal for both FieldA.3 and FieldA.4. That means we will receive an +invalid input error for the config of FieldA.1 through FieldA.4. + +Currently, this has been seen a very small minority of systems and +work arounds have been added for those systems. + +Another similar fallout from this design is that the vendor must allow +"piecemeal" configuration. In other words, the vendor must allow a +subset of the fields to perhaps be configured "incorrectly" while the +other subset may be configured "correctly". Some vendors require that +fields be written "simultaneously", and do not support the ability to +alter configuration one by one. + +Again, this has been seen a very small minority of systems and work +arounds have been added for those systems. + +5) Dealing with workarounds +--------------------------- + +There is an admitted conflict in determining whether vendor compliance +issues should be handled automatically vs. a specified workaround +(e.g. on the commandline or via a flag in a library). + +On one hand, we would like for the tools to operate as simply for the +users as possible without the need to specify strange workarounds or +options on the command line. For example, we could detect vendor +product-IDs early in the protocol, and if necessary for a particular +vendor, turn on the workarounds. + +On the other hand, some workarounds cannot be detected properly all of +the time. For example, the workaround may exist on one firmware +release vs. another firmware release. It may exist between one +product of a vendor vs. another product from the vendor. Another +example, is that while we can make a pretty decent guess what the +vendor intended, ultimately, there's no real way to know if the guess +is correct. + +A number of these workarounds are due to vendor compliance problems +that are sometimes so intrusive (e.g. using a different hashing +algorithm for keys) they must require a workaround on the command line +b/c there is really no other way to handle it. However, some could be +handled seemlessly, but would require altered behavior to handle the +"common case" or "lowest common denominator" of all IPMI protocols. + +The general rule that the FreeIPMI authors have come to is that if the +workaround changes some "normal" or "good" behavior, it must require a +specified workaround. Although it may/will be annoying to a number of +users, I feel it is better for the long term. It can hopefully also +pressure vendors into fixing their implementations. + +As an example, on some motherboards, we found that System Event Log +(SEL) records reported an invalid sensor generator ID. We found that +the reported generator ID was shifted off by one. Thus, as a +workround, if a SDR entry cannot be found for a respective system +event, we will also search for a SDR entry using the generator ID +shifted by one. If the resulting SDR entry is found, we assume the +original generator ID was just off by one and we use the located SDR +record. This workaround is seemless and doesn't involve an option on +the command line. + +In contrast, we found on some other motherboards that some SEL records +report an invalid event record type. Unlike the above situation, +there is no additional information from this record that can tell us +how to parse the record. For the particular motheboard, these illegal +SEL records were normal system event records with improperly coded +record types. Therefore, we implemented a workaround called +"assumesystemevent", which the user can specify to assume a valid +system event record no matter what. + +Admittedly, the area is grey, and at some point, it's a judgement call +:-) + +6) Dealing with OEM extensions +------------------------------ + +Similar to the "Dealing with workarounds" question above, there is a +similar question of how to deal with OEM extensions. Should code +automatically detect the manufacturer and product to determine if OEM +extensions can be handled or should be output? + +We would like the tools to operate as simply for the users without +specifying options on the command line. However, can we trust that a +vendor will implement their extensions consistently across +motherboards, products, or even firmware revisions? + +The general decision is that there will be an option for the user to +specify if they would like OEM interpreted output if available. Many +FreeIPMI tools come with a --interpret-oem-data option for this +situation. If a motherboard is specifically supported by FreeIPMI, +the user is free to use and trust the OEM support. However, if OEM +extensions happen to work for a unlisted motherboard, the user must +take the output with some grain of salt. + + diff --git a/source/freeipmi/usr/share/doc/freeipmi/freeipmi-hostrange.txt b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-hostrange.txt new file mode 100644 index 00000000..77f5175d --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-hostrange.txt @@ -0,0 +1,468 @@ +Using Hostrange Input/Output in HPC environments + +by + +Albert Chu +chu11@llnl.gov +Last Updated: August 27, 2013 + +1) Introduction with Pdsh +------------------------- + +Much of the hostrange input/output in FreeIPMI is modeled off the +input/output in the tool pdsh (http://pdsh.sourceforge.net). Pdsh is +a parallel shell utility which allows you to execute an arbitrary +command across a cluster. Algorithmically, pdsh creates a sliding +window of threads, each which generates a remote shell using an +underlying 'rcmd" functionality (such as rcmd(3) or ssh(1)). As +threads complete, the new threads launch the command on other hosts +until the command has been executed on all hosts specified. + +It is utilized at Lawrence Livermore National Laboratory (LLNL) on +clusters ranging from 4 to 3000 nodes. Commands are capable of being +executed across the entire cluster in the matter of seconds rather +then minutes it would take to execute serially in a shell prompt. + +Here's an example of pdsh at work on a small cluster. + +> pdsh -w "wopr[0-5]" hostname +wopr0: wopr0 +wopr1: wopr1 +wopr2: wopr2 +wopr3: wopr3 +wopr5: wopr5 +wopr4: wopr4 + +Determining the hostname of every node in your cluster isn't too +useful or interesting. However, perhaps you want to determine if +every node of your cluster booted with the same kernel. + +> pdsh -w "wopr[0-5]" uname -r +wopr1: 2.6.9-65 +wopr0: 2.6.9-65 +wopr5: 2.6.9-65 +wopr2: 2.6.9-65 +wopr4: 2.6.9-65 +wopr3: 2.6.9-65 + +Seems pretty useful. However, on larger clusters, this type of output +will get pretty large, especially if the command generates greater +than 1 line of output for each node. Lets say I want to determine if +the same config file has been configured on every node of the cluster. + +> pdsh -w "wopr[0-5]" "cat /tmp/pretend_config" +wopr1: foo=/usr +wopr1: bar=/tmp +wopr1: baz=/etc +wopr1: xyzzy=static +wopr1: +wopr0: foo=/usr +wopr0: bar=/tmp +wopr0: baz=/etc +wopr0: xyzzy=static +wopr0: +wopr2: foo=/usr +wopr2: bar=/tmp +wopr2: baz=/etc +wopr2: xyzzy=dynamic +wopr2: +wopr4: foo=/usr +wopr4: bar=/tmp +wopr4: baz=/etc +wopr4: xyzzy=static +wopr4: +wopr5: foo=/usr +wopr5: bar=/tmp +wopr5: baz=/etc +wopr5: xyzzy=static +wopr5: +wopr3: foo=/usr +wopr3: bar=/tmp +wopr3: baz=/etc +wopr3: xyzzy=static +wopr3: + +As you can see, it's beginning to get pretty long and perhaps a bit +hard to digest. + +Pdsh also comes with a tool called dshbak for buffering this output to +make it more human readable. + +> pdsh -w "wopr[0-5]" "cat /tmp/pretend_config" | dshbak +---------------- +wopr1 +---------------- + foo=/usr + bar=/tmp + baz=/etc + xyzzy=static + +---------------- +wopr3 +---------------- + foo=/usr + bar=/tmp + baz=/etc + xyzzy=static + +---------------- +wopr5 +---------------- + foo=/usr + bar=/tmp + baz=/etc + xyzzy=static + +---------------- +wopr2 +---------------- + foo=/usr + bar=/tmp + baz=/etc + xyzzy=dynamic + +---------------- +wopr4 +---------------- + foo=/usr + bar=/tmp + baz=/etc + xyzzy=static + +This is a much nicer output to read. However, if you have a much +larger cluster (or possibly much larger output), this type of output +will still be quite difficult to handle. Dshbak also comes with a +consolidation function to shorten the output. + +> pdsh -w "wopr[0-5]" "cat /tmp/pretend_config" | dshbak -c +---------------- +wopr[0-1,3-5] +---------------- + foo=/usr + bar=/tmp + baz=/etc + xyzzy=static + +---------------- +wopr2 +---------------- + foo=/usr + bar=/tmp + baz=/etc + xyzzy=dynamic + +We see that for this particular pretend cluster config file, one +node's configuration is different. + +Another problem that often comes up with large clusters is that nodes +are removed from the cluster for servicing or are down due to hardware +problems, hangs, crashes, etc. So tools like pdsh can often sit and +timeout on those nodes that have problems. + +In the cluster used in this example, wopr6 is a node that is currently +down and times out after awhile when you use pdsh. + +> time pdsh -w "wopr[0-6]" hostname +wopr0: wopr0 +wopr1: wopr1 +wopr4: wopr4 +wopr2: wopr2 +wopr5: wopr5 +wopr3: wopr3 +pdsh@wopri: wopr6: mcmd: connect failed: No route to host + +real 0m3.007s +user 0m0.003s +sys 0m0.007s + +However, your average user may not know wopr6 is down, or does not +wish to continually remove problem nodes (in this case wopr6) from the +list of nodes to communicate with. + +The -v option in pdsh is used to selectively eliminate those nodes +that are considered down by whatsup and the libnodeupdown library +(http://whatsup.sourceforge.net). + +Whatsup currently shows that wopr6 is down. + +> whatsup +up: 7: wopr[0-5],wopri +down: 1: wopr6 + +So the -v option will have pdsh skip wopr6 automatically. + +> time pdsh -v -w "wopr[0-6]" hostname +wopr1: wopr1 +wopr0: wopr0 +wopr2: wopr2 +wopr5: wopr5 +wopr4: wopr4 +wopr3: wopr3 + +real 0m0.034s +user 0m0.005s +sys 0m0.012s + +The time differences may not seem like much difference in these +examples. But think of when this is done across an extremeley large +cluster (i.e. thousands of nodes). + +2) Hostrange input/output in FreeIPMI +------------------------------------- + +Much of the hostrange input/output can be handled by running FreeIPMI +tools with pdsh. However, pdsh requires that a shell be executed on +the remote node. This can disrupt the CPU of running jobs on the +cluster and removes the advantage that IPMI over LAN does not +interrupt a CPU. + +Hostrange support has been added into most FreeIPMI tools. More than +one node at a time can be specified on the command line using the +hostrange format similar in pdsh. Using a threaded model similar to +pdsh, each of the tools will create a sliding-window of threads, each +executing out-of-band IPMI in parallel. The number of threads in the +window can be increased or decreased using the fanout -F option. + +The tools now have similar functionality to pdsh, but all of the IPMI +communication is done out-of-band. Ipmipower, which supported +hostranges since 0.1.0, has had some of its options and output +modified to to be consistent with the other tools. + +(Note: On our test cluster, 'pwopr' hostnames have been used instead +of 'wopr' for configuring the IPMI IP addresses. We have also XXXed +out our local usernames and passwords of course :-) + +For example: + +> ipmi-sensors -h "pwopr[0-5]" -u XXX -p YYY --record-ids=10 +pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK' +pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK' +pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK' +pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK' +pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK' +pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK' + +Dshback functionality has been added with the -B (--buffered) and -C +(--consolidated) options. + +> bmc-info -h "pwopr[0-5]" -u XXX -p YYY --get-device-id -B +---------------- +pwopr5 +---------------- +Device ID : 34 +Device Revision : 1 +Device SDRs : unsupported +Firmware Revision : 1.0c +Device Available : yes (normal operation) +IPMI Version : 2.0 +Sensor Device : supported +SDR Repository Device : supported +SEL Device : supported +FRU Inventory Device : supported +IPMB Event Receiver : unsupported +IPMB Event Generator : unsupported +Bridge : unsupported +Chassis Device : supported +Manufacturer ID : Peppercon AG (10437) +Product ID : 4 +Auxiliary Firmware Revision Information : 38420000h + + +> bmc-info -h "pwopr[0-5]" -u XXX -p YYY --get-device-id -C +---------------- +pwopr[0-1,5] +---------------- +Device ID : 34 +Device Revision : 1 +Device SDRs : unsupported +Firmware Revision : 1.0c +Device Available : yes (normal operation) +IPMI Version : 2.0 +Sensor Device : supported +SDR Repository Device : supported +SEL Device : supported +FRU Inventory Device : supported +IPMB Event Receiver : unsupported +IPMB Event Generator : unsupported +Bridge : unsupported +Chassis Device : supported +Manufacturer ID : Peppercon AG (10437) +Product ID : 4 +Auxiliary Firmware Revision Information : 38420000h + + +If you have happened to install pdsh on your system, you may use +dshbak instead of the -B or -C option. The -B and -C options were +added since many users may have not installed pdsh. + +A whatsup-like tool and library have also been developed called +ipmidetect. It performs a similar functionality to whatsup, but +instead detects what IPMI nodes exist in the cluster for faster +hostranged output. The tool requires the ipmidetectd daemon be setup +and configured on the client (see ipmidetectd(8) and +ipmidetectd.conf(5) for more information). The ipmidetectd daemon +regularly ipmipings remote nodes. The ipmidetect tool and library +will determine detected vs. undetected ipmi systems based on the most +recent ipmipings received. [1] + +> /usr/sbin/ipmidetect +detected: 6: pwopr[0-5] +undetected: 1: pwopr6 + +For example, we re-introduce the bad 'pwopr6' node into the hostrange: + +> time ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY --record-ids=10 +pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK' +pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK' +pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK' +pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK' +pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK' +pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK' +pwopr6: ipmi_ctx_open_outofband(): Connection timed out +real 0m25.000s +user 0m0.029s +sys 0m0.003s + +Running with the -E option (and assuming ipmidetectd has been setup +and is running) the -E option quickly eliminates pwopr6. + +> time ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY --record-ids=10 -E +pwopr0: 10 | CPU3 Vcore | Voltage | 1.31 | V | 'OK' +pwopr2: 10 | CPU3 Vcore | Voltage | 1.32 | V | 'OK' +pwopr1: 10 | CPU3 Vcore | Voltage | 1.23 | V | 'OK' +pwopr4: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK' +pwopr5: 10 | CPU3 Vcore | Voltage | 1.25 | V | 'OK' +pwopr3: 10 | CPU3 Vcore | Voltage | 1.26 | V | 'OK' + +real 0m0.113s +user 0m0.030s +sys 0m0.003s + +Notice the large affect this has on the time for the command to +complete. + +3) Suggested use of hostrange input/output in FreeIPMI +------------------------------------------------------ + +Unlike pdsh, where you can run an arbitrary shell command, each +FreeIPMI tool has a relatively fixed type of output or sets of outputs +you can run. Based on the features run or the output of the command, +the hostrange input/output will likely be used differently +dependending with the tool. The following are some suggestions. They +are the ways the author thinks most will use the hostrange +input/output. + +ipmi-sensors: + +Each node of the cluster will likely have slightly different +temperatures, voltages, etc. Therefore you may wish to run +ipmi-sensors with the -q option to make it easier to consolidate +output. + +> ipmi-sensors -h "pwopr[0-6]" -u XXX -p YYY -g temperature -E -C -q +---------------- +pwopr[0-2,4-5] +---------------- +4 | CPU1 Temp | Temperature | 'OK' +5 | CPU2 Temp | Temperature | 'OK' +6 | CPU3 Temp | Temperature | 'OK' +7 | CPU4 Temp | Temperature | 'OK' +8 | Sys Temp | Temperature | 'OK' +---------------- +pwopr3 +---------------- +4 | CPU1 Temp | Temperature | 'OK' +5 | CPU2 Temp | Temperature | 'OK' +6 | CPU3 Temp | Temperature | 'OK' +7 | CPU4 Temp | Temperature | 'OK' +8 | Sys Temp | Temperature | 'At or Below (<=) Lower Non-Recoverable Threshold' + +Based on what you see, you can of course dig deeper on those +individual nodes. I imagine many users will want to run ipmi-sensors +with the default output (each line of output is prepended with +"hostname: "). In this mode, key error messages and the node it came +from can be easily monitored along w/ grep and awk in scripts. + +The --no-header-output and --ignore-not-available-sensors options may +be useful for reducing output across a lot of nodes. The +--sdr-cache-recreate option may be useful to gracefully handle errors. + +Users may wish to use the --output-sensor-state option w/ ipmi-sensors +to also output the current sensor state. This option will output +NOMINAL, WARNING, and CRITICAL states which allow for easy grepping. + +ipmi-sel: + +Each node will likely have drastically different ipmi-sel output and a +massive amount of it. Therefore buffered or consolidated output will +not be very useful. The hostrange input is most useful for gathering +the SEL output of the entire cluster quickly and out-of-band. You can +then grep for some type of error condition you are specifically +looking for or pipe it into a log monitoring utility. + +The hostrange functionality is also very useful to quickly clear the +SEL logs across the entire cluster. + +The --no-header-output option may be useful for reducing output across +a lot of nodes. The --sdr-cache-recreate option may be useful to +gracefully handle errors. + +Users may wish to use the --output-event-state option w/ ipmi-sel to +also output the current sensor state. This option will output +NOMINAL, WARNING, and CRITICAL states which allow for easy grepping. + +bmc-info: + +When using hostranges, you are probably trying to verify the firmware +version or hardware type for each BMC in your cluster. You probably +want to run bmc-info with the consolidated output (-C) set most of the +time. System GUIDs are also different between systems, so in order to +limit the amount of different output, you may want to run with the +--get-device-id option to limit the output. + +ipmi-raw: + +The output of ipmi-raw will likely be only 1 long line. The +consolidated output is likely what you're interested in using. + +ipmi-config: + +The typical use is to run w/ --checkout to checkout a configuration, +modify that file with new configuration information, then run w/ +--commit to write the new configuration. I imagine most users will +only run with hostrange support with the --commit option to configure +multiple machines in parallel. Note that since a significant amount +of configuration must be done in-band before out-of-band communication +can occur (i.e. configuring IP addresses, MAC addresses), most may +elect to not configure a machine out of band at all. The --diff +option may be used across many machines to see if a configuration +differs on any machine within a cluster. + +4) Exceptions to the hostrange support in FreeIPMI +-------------------------------------------------- + +The hostrange input/output is not been supported in a few situations. + +o Each BMC in the cluster must be configured with a different IP +address and MAC address. So the parallelism that the hostrange input +gives you effectively cannot be used when trying to use ipmi-config's +--commit option to configure a cluster using one config file. +Therefore we prohibit hostranged input when trying to configure these +values in ipmi-config. + +o Ipmipower was written with a different architecture than bmc-info, +ipmi-sensors, ipmi-sel, etc. because of need for it to interact with +Powerman, so it cannot use the parallel stdout libraries developed. +It instead emulates the --buffer-output, --consolidate-output, and +--fanout functionality of the other tools. + +Additional Notes +---------------- + +[1] Why doesn't FreeIPMI just use whatsup? Whatsup defines "up" to +typically mean that an OS up running healthily. IPMI can operate +without the OS running, even when the node is "powered off." +Therefore, an alternate tool had to be developed. A plugin for +whatsup could have been developed to determine "up vs. down" using +IPMI, but the authors of FreeIPMI did not want FreeIPMI to become +dependent on whatsup. diff --git a/source/freeipmi/usr/share/doc/freeipmi/freeipmi-libraries.txt b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-libraries.txt new file mode 100644 index 00000000..e95be43a --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-libraries.txt @@ -0,0 +1,134 @@ +FreeIPMI Libraries + +by + +Albert Chu +chu11@llnl.gov +Last Updated: May 18, 2012 + +The following is a short summary of the libraries and APIs available for +use in FreeIPMI. + +Libfreeipmi +----------- + +Libfreeipmi is the primary library that most of the FreeIPMI tools are based +upon. The following describe the sub-sections of the library. + +api - The highest level API provided by libfreeipmi. It abstracts +away the details of inband and outofband protocols from the user. It +also provides useful error codes for the user to easily interpret IPMI +problems. 'api' is used by most FreeIPMI tools and libraries, such as +bmc-info(8), ipmi-sensors(8), and libipmimonitoring(3). + +cmds - Provides fiid templates and 'fill' functions for IPMI +commands. Also provides macros definining common parameters for +IPMI commands. The cmds are used by most other portions of +libfreeipmi including the 'api' sub-section and tools such as +ipmipower(8) and ipmiconsole(8). + +debug - Provides various packet/record dumping utility functions. +Utilized by the 'api' subsection and by tools such as ipmipower(8) and +ipmiconsole(8). + +driver - Provides APIs for in-band IPMI communication. Currently +supported drivers are KCS, SSIF, OpenIPMI, and sunbmc. The 'driver' +subsction is used by tools such as bmc-watchdog(8) and the 'api' +sub-section. + +fiid - The "FreeIPMI Interface Definition" provides an API used for +the construction/deconstruction of packets in libfreeipmi. The API +works around fiid-templates, which are then used to create +fiid-objects. Fiid-templates are used to describe packets through +a string-name to bit-field mapping. The API allows users to +read/write fields in an object using the string to bit-field +mapping. Marshalling, packing, endian, and various other network +issues are handled within 'fiid'. Fiid objects are used throughout +libfreeipmi, including the 'api' sub-section, 'cmds' sub-sections, +and various tools. + +fru - Provides an API for reading and parsing Field Replaceable Unit +(FRU) records. Utilized by tools such as ipmi-fru(8). + +interface - Provides 'assemble' and 'disassemble' functions for +building packets for individual in-band or out-of-band protocols. +Also provides all necessary fiid templates, 'fill' functions, and +other utility functions necessary to communicate on an IPMI +interface. Utilized by the 'api' sub-section and tools such as +ipmipower(8) and ipmiconsole(8). + +interpret - Provides an API for interpreting sensor or SEL events by +mapping them into Nominal, Warning, or Critical states. Utilized by +FreeIPMI tools and libraries, such as ipmi-sensors(8), ipmi-sel(8), +and libipmimonitoring(3). + +locate - Provides an API to probe several standards to find default +values for in-band IPMI communication. Utilized by the 'api' +sub-section and the ipmi-locate(8) tool. + +payload - Provides macros, fiid-templates, and information on paylods +used in IPMI. Used predominantly by ipmiconsole(8) and other +serial-over-LAN (SOL) related code. + +record-format - Provides macros, fiid-templates, and information on +records used in IPMI. Utilized by the 'fru' and 'sdr' subsection and +tools like ipmi-sensors(8) and ipmi-fru(8). + +sdr - Provides an API for creating, caching, reading, and parsing a +sensor data repository (SDR) and the SDR records within it. Utilized +by tools such as ipmi-fru(8) and ipmi-sensors(8). + +sel - Provides an API for reading and parsing System Event Log (SEL) +entries. Utilized by tools such as ipmi-sel(8). + +sensor-read - Provides an API for reading a sensor. Utilized by tools +such as ipmi-sensors(8). + +spec - Provides macros and arrays for various other definitions and +tables in IPMI. Utilized by tools such as ipmi-sensors(8). + +util - Provides various utility functions for the calculation of keys, +sensor readings, etc. Utilized by most of the rest of FreeIPMI. + +Libipmiconsole +-------------- + +Libipmiconsole implements a high level serial-over-lan (SOL) API for +remote console access. It can be used to establish and manage +multiple IPMI 2.0 SOL sessions. The goal of this library is to +abstract away all of the underlying IPMI/SOL details away from the +user into a relatively simple file descriptor interface. + +Libipmimonitoring +----------------- + +Libipmimonitoring implements a high level SEL and sensor monitoring +API. An iterator interface is provided that allows the user to +iterate through sensor values, groups, units, and states. + +Libipmidetect +------------- + +Libipmidetect implements a high level API for determing which nodes in +a cluster do or do-not support IPMI. This library is primarily useful +for detecting when nodes are removed from a cluster for servicing, so +that IPMI applications can avoid unnecessary timeouts. The library +interacts with the ipmidetectd(8) daemon. + +pkg-config support +------------------ + +FreeIPMI provides pkg-config support for all the above libraries. + +You can thus use the standard configure macros: + + PKG_CHECK_MODULES(FREEIPMI, libfreeipmi, HAVE_LIBFREEIPMI="yes", HAVE_LIBFREEIPMI="no") + +Or use direct pkg-config calls: + + CFLAGS += $(shell pkg-config --cflags libfreeipmi) + LIBS += $(shell pkg-config --libs libfreeipmi) + + +For more information, refer to pkg-config documentation: +http://www.freedesktop.org/wiki/Software/pkg-config diff --git a/source/freeipmi/usr/share/doc/freeipmi/freeipmi-oem-documentation-requirements.txt b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-oem-documentation-requirements.txt new file mode 100644 index 00000000..086ce4f2 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-oem-documentation-requirements.txt @@ -0,0 +1,227 @@ +IPMI OEM additions/extensions documentation requirements + +Albert Chu +chu11@llnl.gov +Last Updated: January 3, 2011 + +The following is a list of the common OEM documentation requirements +that are needed for full OEM support in FreeIPMI. + +IPMI OEM Command Extensions/Additions +------------------------------------- + +IPMI OEM command extensions/additions for setting up, controlling, +configuring, monitoring, and managing the system that are not in the +IPMI specification. Many times, this is needed to configure hardware +or gather information for monitoring, gather information to diagnose +problems, etc. Or in more general terms, OEM command +extensions/additions necessary to help manage the system. + +Examples include: + +OEM commands for configuring the hardware for IPMI. For example, +configuring the ethernet port to be shared or dedicated (ipmi-oem's +Inventec's get/set-nic-mode commands are an example of this). + +OEM commands for retrieving motherboard specific information. For +example, OEM commands for reading firmware versions (ipmi-oem's +Supermicro extra-firmware-info command is an example of this). + +OEM commands for retrieving motherboard specific hardware information +necessary for hardware monitoring. For example, retrieving the +current health status of hardware (ipmi-oem's Fujitsu +get-remote-storage-status command is an example of this). + +OEM commands for resetting configuration back to the manufacturer +defaults (ipmi-oem's Dell reset-to-defaults command is an +example of this). + +OEM commands for configuring any additional "features" added to IPMI +by the vendor. For example, how to configure the ports, timeout, +on/off of web server abilities on the BMC (ipmi-oem's Dell +get/set-web-server-config commands are an example of this). + +IPMI OEM Parameter Extensions +----------------------------- + +IPMI OEM parameter extensions to IPMI for setting up, controlling, +configuring, monitoring, and managing the system that are not in the +IPMI specification. For example, IPMI parameter extensions for +reading service tags via the Get System Info Parameters command or +configuring SOL Inactivity Timeouts via the Get/Set SOL Configuration +Parameters command (ipmi-oem's Dell get-system-info and +get/set-sol-inactivity-timeout commands are examples of this). + +The following is a (likely) incomplete list of IPMI commands OEM +parameter extensions may have been added to. + +Get/Set System Info Parameters (22.14a/22.14b) + +Get/Set LAN Configuration Parameters (23.1/23.2) + +Get/Set PEF Configuration Parameters (30.3/30.4) + +Get/Set SOL Configuration Parameters (26.2/26.3) + +Get/Set Serial Modem Configuration Parameters (25.1/25.2) + +Get/Set System Boot Options (28.12/28.13) + +IPMI OEM events offsets and event data +-------------------------------------- + +IPMI OEM event offsets and event data to read sensors and system event +log (SEL) information. The following is a (likely) incomplete list of +areas where IPMI OEM extensions may have been added pertaining to +event offsets and event data. + +OEM Event Type Codes (see Table 42-1) + +OEM Sensor Types and Offsets and Event Data2/3 information (see Table 42-3) + +OEM Entity IDs (see 43.14) + +OEM System Event Data2 and Data3 information for all possible events (see 29.7) + +IPMI OEM Records +---------------- + +IPMI OEM records that store motherboard information or motherboard +event information. The following is a (likely) incomplete list of +areas where IPMI OEM extensions may have been added pertaining to +various records. + +OEM SEL Records (32.2 and 32.3) + +OEM SDR Records (43.12) + +OEM FRU Records (see Platform Management FRU Information Storage Definition v1.0) + +IPMI OEM Misc +------------- + +The following are miscellaneous IPMI commands or areas that may have +OEM options or extensions related to setting up, controlling, +configuring, monitoring, and managing the system that are not in the +IPMI specification. + +Get Device ID Auxiliary Information (see 20.1) + +DCMI Get/Set Power Limit Exception Actions (See DCMI 6.6.2 and 6.6.3) + +Necessary Documentation Details +------------------------------- + +The following is a summary of documentation information detail that is +necessary to add OEM extension support into FreeIPMI. + +A) + +Details on the exact bit/hex and field layout of the packet or record +should be documented. + +For example, sometimes we are given nothing more than a hex string, e.g. + +"0x21 0x33 0x44 0x00 0x00 0x01" + +and told this will do FOO action. This isn't useful because we don't +know what each byte does or what additional options are available. + +A specific packet/record layout similar to what is in the IPMI +spec should be documented. + +B) + +Hex to string/flag mapping information in sensors, system event logs, +configuration fields, etc. should be documented. + +For example, documentation may list: + +"[0:3] - FOO type" + +OR + +"event data 2 holds the FOO type" + +OR + +"event data 2 - FOO error, see FOO error doc." + +with nothing else. + +Details for how to map hex/masks to strings/flags should be +documented. For example, something like: + +0x1 = type 1 +0x2 = type 2 +0x3 = type 3 + +OR + +0x1 = bitmask condition 1 +0x2 = bitmask condition 2 +0x4 = bitmask condition 3 + +OR + +0x80 = error message 1 +0x81 = error message 2 +0x82 = error message 3 + +C) + +Enough detail should be documented to calculate, determine, handle +errors, etc. of various packet or record fields. This is especially +true when bitmasks, bit shifts, bit manipulation, multipliers, +etc. are involved. + +For example, we may be given a code snippet such as: + +if (event_data2 & 0xF) + printf("DIMM bank %d\n", event_data3); + +In the example above, there is a fair amount of detail missing: + +- How do you print DIMM information if "event_data2 & 0xF" isn't true? + +- Or is it an error condition? If so what error conditions are + possible? + +- It seems that event_data2 holds a bitmask, what other bitmask + conditions are possible? + +D) + +The units of packet or record fields should always be documented. + +E) + +The endian of multibyte fields should always be documented. + +F) + +Configuration fields should be documented as read only, write only, or +read/write. + +G) + +Details for mapping between technical information and "real life" +information should be documented. + +For example, documents may show how to map DIMM locations into DIMM 0, +DIMM 1, DIMM2, DIMM 3, etc. However, no algorithm for mapping this +into information physically printed on the motherboard (e.g. DIMM A1, +DIMM A2, DIMM B1, DIMM B2) is not given. Without it, the information +is of very little use to those using FreeIPMI to diagnose problems. + +Other Notes +----------- + +While it is possible that code would be sufficient documentation of +the above, it is typically not sufficient. Code often implements a +subset of the actual data/information for the needs of the particular +software. For example, outputting only the information the software +deems "useful" and ignoring the rest. Code is often not documented +at a level that is sufficient as real documentation. In order to +convert the code into code necessary for another project may require +reverse engineering or guesses. diff --git a/source/freeipmi/usr/share/doc/freeipmi/freeipmi-testing.txt b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-testing.txt new file mode 100644 index 00000000..d37182a6 --- /dev/null +++ b/source/freeipmi/usr/share/doc/freeipmi/freeipmi-testing.txt @@ -0,0 +1,1455 @@ +FreeIPMI Testing + +by + +Albert Chu +chu11@llnl.gov +Last Updated: August 27, 2013 + +The following is a list of tests I've (semi) regularly done to measure +the compliance of a motherboard to IPMI as well as FreeIPMI's +compliance to the motherboard's implementation. It is not 100% +thorough and will not guaranteee full compliance with the IPMI +specification, but it covers a fair amount of the IPMI specification +and tests a significant number of important cases. It should help +uncover many of the most common IPMI compliance issues I've found. + +All users/vendors/manufacturers/etc. are welcome to debate me on the +below as mandatory vs. optional requirements. While some of the below +may technically be optional for IPMI compliance, I consider them to be +practically mandatory for a functioning IPMI system supporting IPMI +1.5, IPMI 2.0, Serial-over-LAN, etc. A few tests may have "**Nice to +have**" listed next to it, which indicate something that would be nice +to have, but ultimately is not an IPMI compliance issue. + +The error messages listed in tests below highlight what I believe to +be the "best" or "most likely" error messages that should be returned +by the tools. It is possible that different IPMI completion codes +returned by commands are acceptable, leading to different error +message output in the tools. If you believe an alternate completion +code (leading to an alternate error message) is acceptable, please let +me know about them. + +Everything below assumes reasonable knowledge of IPMI and knowledge of +FreeIPMI tools. Please see FreeIPMI documentation/manpages for +additional information. + +All tool testing listed below is generally agnostic to execution +in-band vs. out-of-band with obvious exceptions (e.g. testing +ipmipower in-band, configuring the MAC address out-of-band, etc). +Naturally, the testing below assumes the tester is not +configuring/using FreeIPMI workarounds. That defeats the point of +testing for IPMI compliance :-) + +Out of Band Configuration Definitions +------------------------------------- + +A number of test situations below require a particular out-of-band +configuration on the remote machine. The following define a set of +usernames/password combinations that will be referenced in the tests +below. + +USERANONYMOUS - User #1 (i.e. NULL) username *without* a password. + +USERNULL - User #1 (i.e. NULL) username *with* a password. + +USER1 - A non-null username, with a password, and the highest +privilege this user can authenticate at is the "user" privilege. + +OPERATOR1 - A non-null username, with a password, and the highest +privilege this user can authenticate at is the "operator" privilege. + +ADMIN1 - A non-null username, with a password, and the highest +privilege this user can authenticate at is the "admin" privilege. + +SOL1 - A non-null username, with a password, the highest privilege +this user can authenticate with is identical to the SOL privilege +level, and SOL payload access is enabled. + +Ipmi-config Testing +------------------- + +Goal: The goal of the ipmi-config testing is to ensure that all IPMI +configuration values can be read, written, and "stick" after being +written. + +Test) + +Execute ipmi-config with --checkout on a default/unmodified +manufacturered system. + +Using the --commit and --filename options, commit the checked out +configuration file back to the BMC. + +Ensure that the default checked out configuration can be written back. +If it cannot, is there a "default" configuration that is "invalid"? + +Test) + +Execute ipmi-config with --checkout, verify checked out configuration +contains all appropriate configurable fields. At minimum, the fields +listed below should be output: +- For each "User" section: + * Username + * Enable_User + * Password + * Lan_Enable_IPMI_Msgs + * Lan_Privilege_Limit + * SOL_Payload_Access (if IPMI 2.0 is supported) +- For the Lan_Channel section: + * Volatile_Access_Mode + * Volatile_Enable_Per_Message_Auth + * Volatile_Channel_Privilege_Limit + * Non_Volatile_Access_Mode + * Non_Volatile_Enable_Per_Message_Auth + * Non_Volatile_Channel_Privilege_Limit +- For the Lan_Conf section: + * IP_Address_Source + * IP_Address + * MAC_Address + * Subnet_Mask + * Default_Gateway_IP_Address + * Default_Gateway_MAC_Address + * Backup_Gateway_IP_Address + * Backup_Gateway_MAC_Address +- For the Lan_Conf_Auth section: + * Callback_Enable_Auth_Type_None + * Callback_Enable_Auth_Type_MD2 + * Callback_Enable_Auth_Type_MD5 + * Callback_Enable_Auth_Type_Straight_Password + * User_Enable_Auth_Type_None + * User_Enable_Auth_Type_MD2 + * User_Enable_Auth_Type_MD5 + * User_Enable_Auth_Type_Straight_Password + * Operator_Enable_Auth_Type_None + * Operator_Enable_Auth_Type_MD2 + * Operator_Enable_Auth_Type_MD5 + * Operator_Enable_Auth_Type_Straight_Password + * Admin_Enable_Auth_Type_None + * Admin_Enable_Auth_Type_MD2 + * Admin_Enable_Auth_Type_MD5 + * Admin_Enable_Auth_Type_Straight_Password + o If some of these fields are not output, are the appropriate + system "authentication type support" flags set properly? +- For the Lan_Conf_Security_Keys section (if IPMI 2.0 is supported): + * K_G +- For the Lan_Conf_Misc: + * Enable_Gratuitous_ARPs (if gratuitous ARPs supported) + * Enable_ARP_Response (if BMC generated ARPs supported) + * Gratuitous_ARP_Interval (if gratuitous ARPs supported) +- For Rmcpplus_Conf_Privilege section: + * Maximum_Privilege_Cipher_Suite_Id_0 + * Maximum_Privilege_Cipher_Suite_Id_1 + * Maximum_Privilege_Cipher_Suite_Id_2 + * Maximum_Privilege_Cipher_Suite_Id_3 +- For SOL_Conf section (if IPMI 2.0 is supported): + * Enable_SOL + * SOL_Privilege_Level + * Force_SOL_Payload_Authentication + * Force_SOL_Payload_Encryption + * Character_Accumulate_Interval + * Character_Send_Threshold + * SOL_Retry_Count + * SOL_Retry_Interval + * Non_Volatile_Bit_Rate + * Volatile_Bit_Rate + +Test) + +Using a previously checked out configuration file, modify the +configuration file as follows below to try many configuration +possibilities. Then for each configuration change: + +- Using the --diff and --filename options, verify that each field + modified in the configuration file is indeed different than what is + currently stored on the BMC. ipmi-config should output each + difference to stdout. + +- Using the --commit and --filename options, commit the configuration + file to the BMC. + +- Using the --diff and --filename options, verify that each field has + been written to the BMC and there are no longer any differences + ipmi-config should not output anything to stdout. + +- Ensure that fields can be changed once and then changed back. For + example for Yes/No fields, configure a "Yes" to a "No", then back + to a "Yes". + +Configuration changes to try: +- For each "User" section: + * Username + o Change username to something different. + o Ensure username of length 16 can be configured. + * Enable_User + o Can configure both Yes and No + * Password + o Can change username to something different. + o Ensure empty password (no input) can be configured. + o Ensure password of length 16 (20 if IPMI 2.0 supported) can be + configured. + * Lan_Enable_IPMI_Msgs + o Can configure both Yes and No + * Lan_Privilege_Limit + o Can change privilege level to User, Operator, and Administrator + * SOL_Payload_Access + o Can configure both Yes and No +- For the Lan_Channel section: + * Volatile_Access_Mode + o Can configure Disabled and Always_Available + * Volatile_Enable_Per_Message_Auth + o Can configure both Yes and No + * Volatile_Channel_Privilege_Limit + o Can configure User, Operator, and Administrator + * Non_Volatile_Access_Mode + o Can configure Disabled and Always_Available + * Non_Volatile_Enable_Per_Message_Auth + o Can configure both Yes and No + * Non_Volatile_Channel_Privilege_Limit + o Can configure User, Operator, and Administrator +- For the Lan_Conf section: + * IP_Address_Source + o Can configure Static and Use_DHCP + * IP_Address + o Can configure a different IP address + * MAC_Address + o Can configure a different MAC address + * Subnet_Mask + o Can configure a different Subnet address + * Default_Gateway_IP_Address + o Can configure a different IP address + * Default_Gateway_MAC_Address + o Can configure a different MAC address + * Backup_Gateway_IP_Address + o Can configure a different IP address + * Backup_Gateway_MAC_Address + o Can configure a different MAC address +- For the Lan_Conf_Auth section: + * Callback_Enable_Auth_Type_None + o Can configure both Yes and No + * Callback_Enable_Auth_Type_MD2 + o Can configure both Yes and No + * Callback_Enable_Auth_Type_MD5 + o Can configure both Yes and No + * Callback_Enable_Auth_Type_Straight_Password + o Can configure both Yes and No + * User_Enable_Auth_Type_None + o Can configure both Yes and No + * User_Enable_Auth_Type_MD2 + o Can configure both Yes and No + * User_Enable_Auth_Type_MD5 + o Can configure both Yes and No + * User_Enable_Auth_Type_Straight_Password + o Can configure both Yes and No + * Operator_Enable_Auth_Type_None + o Can configure both Yes and No + * Operator_Enable_Auth_Type_MD2 + o Can configure both Yes and No + * Operator_Enable_Auth_Type_MD5 + o Can configure both Yes and No + * Operator_Enable_Auth_Type_Straight_Password + o Can configure both Yes and No + * Admin_Enable_Auth_Type_None + o Can configure both Yes and No + * Admin_Enable_Auth_Type_MD2 + o Can configure both Yes and No + * Admin_Enable_Auth_Type_MD5 + o Can configure both Yes and No + * Admin_Enable_Auth_Type_Straight_Password + o Can configure both Yes and No +- For the Lan_Conf_Security_Keys section (if IPMI 2.0 is supported): + * K_G + o Can configure a different key + o Ensure empty key (no input) can be configured. +- For the Lan_Conf_Misc: + * Enable_Gratuitous_ARPs + o Can configure both Yes and No + * Enable_ARP_Response + o Can configure both Yes and No + * Gratuitous_ARP_Interval + o Can configure a different value (e.g. 5 to 6) +- For Rmcpplus_Conf_Privilege section: + * Maximum_Privilege_Cipher_Suite_Id_0 + o Can configure Unused, User, Operator, and Administrator. + * Maximum_Privilege_Cipher_Suite_Id_1 + o Can configure Unused, User, Operator, and Administrator. + * Maximum_Privilege_Cipher_Suite_Id_2 + o Can configure Unused, User, Operator, and Administrator. + * Maximum_Privilege_Cipher_Suite_Id_3 + o Can configure Unused, User, Operator, and Administrator. +- For SOL_Conf section (if IPMI 2.0 is supported): + * Enable_SOL + o Can configure both Yes and No + * SOL_Privilege_Level + o Can configure User, Operator, and Administrator. + * Force_SOL_Payload_Authentication + o Can configure both Yes and No + * Force_SOL_Payload_Encryption + o Can configure both Yes and No + * Character_Accumulate_Interval + o Can configure a different value (e.g. 5 to 6) + * Character_Send_Threshold + o Can configure a different value (e.g. 5 to 6) + * SOL_Retry_Count + o Can configure a different value (e.g. 5 to 6) + * SOL_Retry_Interval + o Can configure a different value (e.g. 5 to 6) + * Non_Volatile_Bit_Rate + o Can configure a different bit rate (e.g. 57600 to 115200) + * Volatile_Bit_Rate + o Can configure a different bit rate (e.g. 57600 to 115200) + +Test) + +Start from machine where all "Non_Volatile" fields are identical to +the "Volatile" fields. + +Checkout, modify, then commit all "Non_Volatile" fields to something +different but not the "Volatile" fields. + +Using --diff, verify that only the "Non_Volatile" fields have changed +and the "Volatile" fields have not changed. The field pairs should be +different from each other. + +Power off the IPMI machine and power it back on. + +Verify that all "Volatile" fields now hold the new values stored in +the "Non_Volatile" fields. The field pairs should be the same as each +other. + +Test) + +Reboot the machine. Using --checkout, checkout the current +configuration. Configure all fields to be the "opposite" or +"different" of what they currently are (e.g. No to Yes, User to +Administrator, etc.). + +Power off the machine and power it back on. + +Using the --diff option, verify that newly configured fields have been +saved across a reboot. + +Again, configure all fields "opposite" again. + +Power off the machine and power it back on. + +Using the --diff option, verify that newly configured fields have been +saved across a reboot. + +Test) + +If any parameters on the system are read only, does ipmi-config output +"Read Only Field" appropriately? + +If not, is the field returning the proper completion code (typically +0x82)? + +Bmc-info Testing +---------------- + +Goal: Ensure all important values are output and are correct. + +Test) + +Execute bmc-info with no bmc-info specific options, verify tool: +- Executes without errors +- All fields output are correct. Key fields to verify: + * Firmware Revision + * IPMI Version + * Manufacturer ID + o The name of the manufacter outputs + + e.g. "Manufacturer ID : SOME-COMPANY (1234)" + vs. + "Manufacturer ID : 1234" + + If the above is not the case, and the vendor is registered with + IANA, is there a firmware bug? + * Product ID + * GUID + * Channel Information - Medium Type + o If IPMI over LAN is supported, atleast one should be == "802.3 LAN" + * Channel Information - Vendor ID + o Most if not all should be == "Intelligent Platform Management Interface forum (7154)" + +Ipmi-chassis Testing +-------------------- + +Goal: Ensure all important features function properly. + +Test) + +If the remote system supports an IPMI controllable LED: + +Execute ipmi-chassis with --chassis-identify=force, verify remote +system: +- Has LED turned on indefinitely. + +Execute ipmi-chassis with --chassis-identify=turn-off, verify remote +system: +- Has LED turned off. + +Execute ipmi-chassis with --chassis-identify=30, verify remote system: +- Has LED turned on for approximately 30 seconds, then turns itself + off. + +Ipmi-sensors Testing +-------------------- + +Goal: Ensure all important values are output and are correct. + +Test) + +Execute ipmi-sensors with no ipmi-sensors specific options, verify tool: +- Executes without errors +- All threshold and discrete sensor readings that should be output are + output with a reading and/or event. + * If N/A is output instead, is the sensor improperly listed a + software sensor? Is the sensor disabled? Is sensor scanning + disabled? Is the event-reading-type-code of the sensor correct? +- All threshold values (temperature, rpm, voltage, etc.) are + valid/correct values (no invalid numbers, no negative temperatures, + etc.). + * If not, are stored SDR values for this sensor correct? +- All units are valid/correct. + * If not, are stored SDR values for this sensor correct? +- All groups are valid/correct. + * If not, are stored SDR values for this sensor correct? + +Test) + +Execute ipmi-sensors with very verbose output (-vv), verify tool: +- Executes without errors +- All fields output are correct. Key fields to verify: + * Sensor Number + * Sensor Owner ID + o BMC owned sensors should be 0x20. + o The combination of Sensor Owner ID and Sensor Number should + point to a unique sensor. + * Entity ID + o The name of the Entity ID outputs + e.g. "Entity ID: system board (7)" + vs. + "Entity ID: 7" + If the above is not the case, are all the Entity IDs valid? Do they + belong in the proper ranges defined by the IPMI specification? + * Lower Critical Threshold + * Upper Critical Threshold + * Lower Non-Critical Threshold + * Upper Non-Critical Threshold + * Lower Non-Recoverable Threshold + * Upper Non-Recoverable Threshold + o All thresholds listed are correct. Those that are not + readable/relevant are output w/ "N/A". If not output with + "N/A", does the BMC properly label them as readable + vs. unreadable? + * Assertion Event Enabled + * Deassertion Event Enabled + o All supported assertion and deassertion events are listed. If + they are not listed, are they properly labeled as enabled/disabled + in the SDR? + +Test) + +Execute ipmi-sensors in-band with the --bridge-sensors option to +verify that sensors not owned by the BMC are output correctly, verify +tool: +- Executes without errors +- All bridged sensors are output correctly. + +Test) + +Execute ipmi-sensors out-of-band with the --bridge-sensors option to +verify that sensors not owned by the BMC are output correctly, verify +tool: +- Executes without errors +- All bridged sensors are output correctly. + +Test) + +Testing Power Supply Sensors: + +- Use a dual power supply motherboard. +- Verify ipmi-sensors lists the power supply sensors as having an + event of "Presence Detected". +- Unplug one of the power supplies. +- Verify ipmi-sensors now lists the power supply sensor with an + appropriate event message, such as "Power Supply Failure detected" + or "Power Supply input lost (AC/DC)". +- Plug the power supply back in. +- Verify ipmi-sensors not lists the power supply sensors as having an + event of "Presence Detected". + +Test) + +Testing Intrusion Sensors: + +- Verify ipmi-sensors lists the intrusion sensor as "OK". +- Open the case/chassis/motherboard/etc. +- Verify ipmi-sensors now lists the intrusion sensor with an + appropriate event message, such as "General Chassis Intrusion". + +Ipmi-sel Testing +---------------- + +Goal: Ensure all important values are output and are correct. + +Test) + +Execute ipmi-sel with no ipmi-sel specific options, verify tool: +- Executes without errors +- All dates on SEL records are correct + * If not, Is the BMC time set correctly? + * If not, is OS time/timezone set correctly? +- Sensor names are output correctly. + * If not, are the SEL records reporting the correct sensor number + and/or sensor owner id? + +Test) + +Execute ipmi-sel with --display and --display-range, verify tool: +- Executes without errors +- Exact record ids listed in options are output. +- Exact record ids output match record ids listed with default + (i.e. list all records) output. + * If not, are record ids stored incorrectly? + +Test) + +Execute ipmi-sel with --clear, verify tool: +- Executes without errors +- SEL is completely cleared. Subsequent calls to ipmi-sel result in + no output and no errors. + +Test) **Nice to have** + +Execute ipmi-sel with no ipmi-sel specific options, verify tool: +- Executes without errors +- All columns headers and fields align properly + * If not, are there SEL records that indicate events that were not + listed as possible in the SDR? If so, perhaps some entries in the + SDR to indicate those events are possible could be added, thus + allowing the tools to output a cleaner, nicer output for the + users. + +Test) **Nice to have** +Execute ipmi-sel with no ipmi-sel specific options, verify tool: +- Executes without errors +- All events have an identified name in the "Name" column. In other + words, there is no output like "Sensor #1". + * If not, are there SDR records that identify every potential event + that can occur on the motherboard. If not, perhaps some entries + (most likely event-only records) in the SDR could help make the + output of ipmi-sel cleaner, nicer, and better for the end user. + +Ipmi-fru Testing +---------------- + +Goal: Ensure all important values are output and are correct. + +Test) + +Execute ipmi-fru with no ipmi-fru specific options, verify tool: +- Executes without errors +- All FRU entries are output fully +- No outputs of checksum errors + * If checksum errors are output, are checksums valid? +- No error message outputs (keyword "Error" is output). + +Ipmiconsole Testing +------------------- + +Goal: Ensure all important features function properly. + +Configure all BIOS settings and SOL settings to enable SOL. Enable +the remote machine to accept sysrqs (in Linux, this requires +configuration of console=ttySX on the kernel boot line). + +For purpose of this set of tests, consider this set of configuration +options from ipmi-config the "pristine" SOL configuration and the SOL1 +user configuration. + +Section UserX + ## Give Username + Username SOL1 + ## Possible values: Yes/No or blank to not set + Enable_User Yes + ## Give password or blank to clear. MAX 16 chars. + Password somepassword + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit Administrator + ## Possible values: Yes/No + SOL_Payload_Access Yes +EndSection + +Section Rmcpplus_Conf_Privilege + ## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary + Maximum_Privilege_Cipher_Suite_Id_0 Administrator + ## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary + Maximum_Privilege_Cipher_Suite_Id_1 Administrator + ## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary + Maximum_Privilege_Cipher_Suite_Id_2 Administrator + ## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary + Maximum_Privilege_Cipher_Suite_Id_3 Administrator +EndSection + +Section SOL_Conf + ## Possible values: Yes/No + Enable_SOL Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary + SOL_Privilege_Level Administrator + ## Possible values: Yes/No + Force_SOL_Payload_Authentication Yes + ## Possible values: Yes/No + Force_SOL_Payload_Encryption Yes + ## Give a valid integer. Each unit is 5ms + Character_Accumulate_Interval 5 + ## Give a valid number + Character_Send_Threshold 50 + ## Give a valid integer + SOL_Retry_Count 5 + ## Give a valid integer. Interval unit is 10ms + SOL_Retry_Interval 10 + ## Possible values: Serial/9600/19200/38400/57600/115200 + Non_Volatile_Bit_Rate 115200 + ## Possible values: Serial/9600/19200/38400/57600/115200 + Volatile_Bit_Rate 115200 + ## Give a valid port number + ## SOL_Payload_Port_Number 623 +EndSection + +Test) + +Configure "pristine" configuration. + +Execute ipmiconsole, authentication with SOL1, verify tool: +- Establishes a SOL session by outputting "[SOL established]" +- Verify session can be exitted cleanly (by default type &.). + +Test) + +Begin with "pristine" configuration. + +Disable SOL Payload access for user sol1. + +Execute ipmiconsole, authentication with SOL1, verify tool: +- Does not establish an SOL session. Most likely/best error message + "SOL unavailable". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure lan_privilege_limit "user" for sol1. + +Execute ipmiconsole, authentication with SOL1 and privilege level user +(-l user), verify tool: +- Does not establish an SOL session. Most likely/best error message + "privilege level insufficient". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure lan_privilege_limit "user" for sol1. + +Configure sol_privilege_level to "user". + +Execute ipmiconsole, authentication with SOL1 and privilege level user +(-l user), verify tool: +- Establishes a SOL session by outputting "[SOL established]" +- Verify session can be exitted cleanly (by default type '&.'). + +Test) + +Begin with "pristine" configuration. + +Disable SOL (Enable_SOL field). + +Execute ipmiconsole, authentication with SOL1, verify tool: +- Does not establish an SOL session. Most likely/best error message + "SOL unavailable" +* It is most important that the connection not succeed. + +Test) + +Establish a SOL session. + +While in a session, generate a break (by default generated via '&B') +and ensure the remote console has received it. In Linux, if sysrqs +are enabled properly, a '&B?' should output the linux sysrq menu. + +Test) + +Establish a SOL session. + +While in a session, reboot the remote machine, and ensure the BIOS +(or EFI, etc.) can be entered and BIOS settings can be +modified. + +Test) + +Establish a SOL session. + +While a session is currently active, in a different window, execute +ipmiconsole w/ the --dont-steal option, authenticating with SOL1, +verify tool: +- Does not establish an SOL session. Most likely/best error message + "SOL in use". The original SOL session has stayed alive. +* If this does not work, does proper SOL payload activation status + work? + +Test) + +Establish a SOL session. + +While a session is currently active, in a different window, execute +ipmiconsole w/ the --deactivate option, authenticating with SOL1, verify tool: +- Does not establish an SOL session. +- The original SOL session has been terminated. Most likely/best + error message "SOL session stolen". +* If this does not work, does proper SOL payload deactivation work? + +Test) + +Establish a SOL session. + +While a session is currently active, in a different window, execute +ipmiconsole, authenticating with SOL1, verify tool: +- Establishes a SOL session by outputting "[SOL established]" +- The original SOL session has been terminated, and "[SOL session + stolen]" is reported. +* If this does not work, does SOL properly inform "old" sessions that + it is being terminated? does proper SOL payload deactivation work? + +Test) + +Establish a SOL session with SOL payload instance 1 +(--sol-payload-instance=1). + +While a session is currently active, in a different window, execute +ipmiconsole, using a different payload instance +(i.e. --sol-payload-instance=2): + +If multiple SOL instances are support, verify tool: +- Establishes a SOL session by outputting "[SOL established]" in the + second session. +- The original SOL session has not been terminated, and continues to + work. + +If multiple SOL instances are not supported, verify tool: +- Errors out appropriately. Most likely/best error message + "BMC Busy." + +Test) + +Configure "pristine" configuration. + +Execute ipmiconsole, authentication with SOL1, with option -I 0 +Execute ipmiconsole, authentication with SOL1, with option -I 1 +Execute ipmiconsole, authentication with SOL1, with option -I 2 +verify tool: +- Does not establish an SOL session under each test, outputting "SOL + requires encryption". +* It is most important that the connection not succeed. + +Execute ipmiconsole w/ -I 3, authentication with SOL1, verify tool: +- Establishes a SOL session by outputting "[SOL established]" + +Test) + +Begin with "pristine" configuration. + +Configure remote system to *not* require SOL Payload Authentication +and *not* require SOL Payload Encryption. + +Execute ipmiconsole, authentication with SOL1, with option -I 0 +Execute ipmiconsole, authentication with SOL1, with option -I 1 +Execute ipmiconsole, authentication with SOL1, with option -I 2 +Execute ipmiconsole, authentication with SOL1, with option -I 3 +verify tool: +- Establishes a SOL session by outputting "[SOL established]" under + each test. + + +Ipmipower Testing +----------------- + +Goal: Ensure all important features function properly. + +Test) + +Begin with the remote machine currently powered off. + +Execute ipmipower w/ -l user and --stat, authenticating with USER1, +verify tool: +- Executes without errors. +- Properly reports the state of the machine as "off". + +Execute ipmipower w/ --on, authenticating with USER1, verify tool: +- Returns an error of "privilege level cannot be obtained for this user" + +Execute ipmipower w/ --on, authenticating with OPERATOR1, verify tool: +- Returns "ok" and turns on the node. + +Execute ipmipower w/ -l user and --stat, authenticating with USER1, +verify tool: +- Executes without errors. +- Properly reports the state of the machine as "on". + +Execute ipmipower w/ --off, authenticating with USER1, verify tool: +- Returns an error of "privilege level cannot be obtained for this user" + +Execute ipmipower w/ --off, authenticating with OPERATOR1, verify tool: +- Returns "ok" and turns off the node. + +Execute ipmipower w/ -l user and --stat, authenticating with USER1, +verify tool: +- Executes without errors. +- Properly reports the state of the machine as "off". + +Test) + +Begin with the remote machine currently powered off. + +Execute ipmipower w/ -l user and --stat, authenticating with USER1, +verify tool: +- Executes without errors. +- Properly reports the state of the machine as "off". + +Execute ipmipower w/ --on, authenticating with USER1, verify tool: +- Returns an error of "privilege level cannot be obtained for this user" + +Execute ipmipower w/ --on, authenticating with ADMIN1, verify tool: +- Returns "ok" and turns on the node. + +Execute ipmipower w/ -l user and --stat, authenticating with USER1, +verify tool: +- Executes without errors. +- Properly reports the state of the machine as "on". + +Execute ipmipower w/ --off, authenticating with USER1, verify tool: +- Returns an error of "privilege level cannot be obtained for this user" + +Execute ipmipower w/ --off, authenticating with ADMIN1, verify tool: +- Returns "ok" and turns off the node. + +Execute ipmipower w/ -l user and --stat, authenticating with USER1, +verify tool: +- Executes without errors. +- Properly reports the state of the machine as "off". + +In-Band KCS Testing +------------------- + +Goal: Ensure all important features function properly. + +Test) + +Execute bmc-info in-band, verify tool: +- Executes without errors. +- If tool fails to execute, determine: + * A) Are memory-mapped address properly stored in the SMBIOS or + other locations? + * B) Is KCS accessed through the default memory-mapped addresses? + +Out-of-Band IPMI 1.5 Testing +---------------------------- + +Goal: Ensure all important features function properly. + +For purpose of this set of tests, consider this set of configuration +options from ipmi-config the "pristine" BMC configuration and user +configuration. + +Section User1 + ## Give Username + ## Username NULL + ## Possible values: Yes/No or blank to not set + Enable_User No + ## Give password or blank to clear. MAX 16 chars. + Password + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit No_Access +EndSection + +Section UserA + ## Give Username + Username USER1 + ## Possible values: Yes/No or blank to not set + Enable_User Yes + ## Give password or blank to clear. MAX 16 chars. + Password somepassword + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit User +EndSection + +Section UserB + ## Give Username + Username OPERATOR1 + ## Possible values: Yes/No or blank to not set + Enable_User Yes + ## Give password or blank to clear. MAX 16 chars. + Password somepassword + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit Operator +EndSection + +Section UserC + ## Give Username + Username ADMIN1 + ## Possible values: Yes/No or blank to not set + Enable_User Yes + ## Give password or blank to clear. MAX 16 chars. + Password somepassword + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit Administrator +EndSection + +Section Lan_Channel + ## Possible values: Disabled/Pre_Boot_Only/Always_Available/Shared + Volatile_Access_Mode Always_Available + ## Possible values: Yes/No + Volatile_Enable_Per_Message_Auth Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary + Volatile_Channel_Privilege_Limit Administrator + ## Possible values: Disabled/Pre_Boot_Only/Always_Available/Shared + Non_Volatile_Access_Mode Always_Available + ## Possible values: Yes/No + Non_Volatile_Enable_Per_Message_Auth Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary + Non_Volatile_Channel_Privilege_Limit Administrator +EndSection + +Section Lan_Conf_Auth + ## Possible values: Yes/No + Callback_Enable_Auth_Type_None No + ## Possible values: Yes/No + Callback_Enable_Auth_Type_MD2 No + ## Possible values: Yes/No + Callback_Enable_Auth_Type_MD5 No + ## Possible values: Yes/No + Callback_Enable_Auth_Type_Straight_Password No + ## Possible values: Yes/No + User_Enable_Auth_Type_None No + ## Possible values: Yes/No + User_Enable_Auth_Type_MD2 No + ## Possible values: Yes/No + User_Enable_Auth_Type_MD5 Yes + ## Possible values: Yes/No + User_Enable_Auth_Type_Straight_Password No + ## Possible values: Yes/No + Operator_Enable_Auth_Type_None No + ## Possible values: Yes/No + Operator_Enable_Auth_Type_MD2 No + ## Possible values: Yes/No + Operator_Enable_Auth_Type_MD5 Yes + ## Possible values: Yes/No + Operator_Enable_Auth_Type_Straight_Password No + ## Possible values: Yes/No + Admin_Enable_Auth_Type_None No + ## Possible values: Yes/No + Admin_Enable_Auth_Type_MD2 No + ## Possible values: Yes/No + Admin_Enable_Auth_Type_MD5 Yes + ## Possible values: Yes/No + Admin_Enable_Auth_Type_Straight_Password No +EndSection + +Test) + +Configure "pristine" configuration. + +Execute bmc-info, authenticating with USER1, with privilege level user (-l user) +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator) +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin) +verify tool: +- Executes without errors for each test. + +Execute bmc-info, authenticating with USER1, with privilege level operator (-l operator). +Execute bmc-info, authenticating with USER1, with privilege level admin (-l admin). +Execute bmc-info, authenticating with OPERATOR1, with privilege level admin (-l admin). +verify tool: +- Exits with error. Most likely/best error message "privilege level + cannot be obtained for this user". +* It is most important that the connection not succeed. + +Execute bmc-info, authenticating with USERANONYMOUS (i.e. no username +and no password input), verify tool: +- Exits with error. Most likely/best error message "username invalid". +* It is most important that the connection not succeed. + +Execute bmc-info, authenticating with a bogus username (e.g. FOO) +- Exits with error. Most likely/best error message "username invalid". +* It is most important that the connection not succeed. + +Execute bmc-info, authenticating with USER1, with a bad password +- Exits with error. Most likely/best error message "password + verification timeout". +* It is most important that the connection not succeed. + +Execute bmc-info, authenticating with USER1, with option -a md2 +Execute bmc-info, authenticating with USER1, with option -a straight_password_key +Execute bmc-info, authenticating with USER1, with option -a none +verify tool: +- Exits with error. Most likely/best error message "authentication + type unavailable for attempted privilege level" for each test. +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure User1 to be enabled and have a privilege_limit of "user". + +Execute bmc-info, authenticating with USERANONYMOUS (i.e. no username +and no password input), verify tool: +- Executes without errors. + +Test) + +Begin with "pristine" configuration. + +Configure User1 to be enabled, with a password, and have a +privilege_limit of "user". + +Execute bmc-info, authenticating with USERNULL (i.e. no username +and w/ the proper password input), verify tool: +- Executes without errors. + +Test) + +Begin with "pristine" configuration. + +Configure USER1, OPERATOR1, and ADMIN1 users to be off +(i.e. Enable_User = No). + +Execute bmc-info, authenticating with USER1 +Execute bmc-info, authenticating with OPERATOR1 +Execute bmc-info, authenticating with ADMIN1 +verify tool: +- Exits with error. Most likely/best error message "username invalid". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure USER1, OPERATOR1, and ADMIN1 users IPMI messaging to be off +(i.e. Lan_Enable_Ipmi_Msgs = No). + +Execute bmc-info, authenticating with USER1 +Execute bmc-info, authenticating with OPERATOR1 +Execute bmc-info, authenticating with ADMIN1 +verify tool: +- Exits with error. Most likely/best error message "password + verification timeout", "session timeout", or "privilege level + insufficient". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure all "Lan_Conf_Auth" fields to "Yes". + +Execute bmc-info, authenticating with USER1, with option -a md5 +Execute bmc-info, authenticating with USER1, with option -a md2 +Execute bmc-info, authenticating with USER1, with option -a straight_password_key +Execute bmc-info, authenticating with USER1, with option -a none +verify tool: +- Executes without errors for each test. + +Test) + +Begin with "pristine" configuration. + +Disable the LAN Channel (Volatile_Access_Mode = Disabled) + +Execute bmc-info, authenticating with USER1, verify tool: +- Exits with error. Most likely/best error message "connection + timeout". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure LAN Channel Privilege Limit to User. + +Execute bmc-info, authenticating with USER1, verify tool: +- Executes without errors. + +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator) +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin) +- Exits with error. Most likely/best error message "privilege level + cannot be obtained for this user". +* It is most important that the connection not succeed. + +Execute ipmipower, authenticating with OPERATOR1, with --on +Execute ipmipower, authenticating with ADMIN1, with --on +- Exits with error. Most likely/best error message "privilege level + cannot be obtained for this user". +* It is most important that the connection not succeed. + +(achu note: I do not currently possess a motherboard that passes this +last test, however, I am 99% sure I've had atleast one motherboard in +the past that did indeed pass this test.) + +Out-of-Band IPMI 2.0 Testing +---------------------------- + +Goal: Ensure all important features function properly. + +For purpose of this set of tests, consider this set of configuration +options from ipmi-config the "pristine" BMC configuration and user +configuration. + +Section User1 + ## Give Username + ## Username NULL + ## Possible values: Yes/No or blank to not set + Enable_User No + ## Give password or blank to clear. MAX 16 chars. + Password + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit No_Access +EndSection + +Section UserA + ## Give Username + Username USER1 + ## Possible values: Yes/No or blank to not set + Enable_User Yes + ## Give password or blank to clear. MAX 16 chars. + Password somepassword + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit User +EndSection + +Section UserB + ## Give Username + Username OPERATOR1 + ## Possible values: Yes/No or blank to not set + Enable_User Yes + ## Give password or blank to clear. MAX 16 chars. + Password somepassword + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit Operator +EndSection + +Section UserC + ## Give Username + Username ADMIN1 + ## Possible values: Yes/No or blank to not set + Enable_User Yes + ## Give password or blank to clear. MAX 16 chars. + Password somepassword + ## Possible values: Yes/No + Lan_Enable_IPMI_Msgs Yes + ## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access + Lan_Privilege_Limit Administrator +EndSection + +Section Lan_Conf_Security_Keys + ## Give string or blank to clear. Max 20 chars + K_G +EndSection + +Section Rmcpplus_Conf_Privilege + ## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary + Maximum_Privilege_Cipher_Suite_Id_0 Administrator + ## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary + Maximum_Privilege_Cipher_Suite_Id_1 Administrator + ## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary + Maximum_Privilege_Cipher_Suite_Id_2 Administrator + ## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary + Maximum_Privilege_Cipher_Suite_Id_3 Administrator +EndSection + +Test) + +Configure "pristine" configuration. + +Execute all below tests with IPMI 2.0 (-D lan_2_0) + +Execute bmc-info, authenticating with USER1, with privilege level user (-l user) +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator) +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin) +verify tool: +- Executes without errors for each test. + +Execute bmc-info, authenticating with USER1, with -I 0 +Execute bmc-info, authenticating with USER1, with -I 1 +Execute bmc-info, authenticating with USER1, with -I 2 +Execute bmc-info, authenticating with USER1, with -I 3 +verify tool: +- Executes without errors for each test. + +Execute bmc-info, authenticating with USER1, with privilege level operator (-l operator). +Execute bmc-info, authenticating with USER1, with privilege level admin (-l admin). +Execute bmc-info, authenticating with OPERATOR1, with privilege level admin (-l admin). +verify tool: +- Exits with error. Most likely/best error messages are "password invalid" + or "privilege level cannot be obtained for this user". +* It is most important that the connection not succeed. + +Execute bmc-info, authenticating with USERANONYMOUS (i.e. no username +and no password input), verify tool: +- Exits with error. Most likely/best error message "username invalid". +* It is most important that the connection not succeed. + +Execute bmc-info, authenticating with a bogus username (e.g. FOO) +- Exits with error. Most likely/best error message "username invalid". +* It is most important that the connection not succeed. + +Execute bmc-info, authenticating with USER1, with a bad password +- Exits with error. Most likely/best error message "password + invalid". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure User1 to be enabled and have a privilege_limit of "user". + +Execute all below tests with IPMI 2.0 (-D lan_2_0) + +Execute bmc-info, authenticating with USERANONYMOUS (i.e. no username +and no password input), verify tool: +- Executes without errors. + +Test) + +Begin with "pristine" configuration. + +Configure User1 to be enabled, with a password, and have a +privilege_limit of "user". + +Execute all below tests with IPMI 2.0 (-D lan_2_0) + +Execute bmc-info, authenticating with USERNULL (i.e. no username +and w/ the proper password input), verify tool: +- Executes without errors. + +Test) + +Begin with "pristine" configuration. + +Configure USER1, OPERATOR1, and ADMIN1 users to be off +(i.e. Enable_User = No). + +Execute all below tests with IPMI 2.0 (-D lan_2_0) + +Execute bmc-info, authenticating with USER1 +Execute bmc-info, authenticating with OPERATOR1 +Execute bmc-info, authenticating with ADMIN1 +verify tool: +- Exits with error. Most likely/best error message "username invalid". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure USER1, OPERATOR1, and ADMIN1 users IPMI messaging to be off +(i.e. Lan_Enable_Ipmi_Msgs = No). + +Execute bmc-info, authenticating with USER1 +Execute bmc-info, authenticating with OPERATOR1 +Execute bmc-info, authenticating with ADMIN1 +verify tool: +- Exits with error. Most likely/best error message "password + invalid", "session timeout", or "privilege level insufficient". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure a non-null K_G key. + +Execute all below tests with IPMI 2.0 (-D lan_2_0) + +Execute bmc-info, authenticating with USER1, without specify -k +verify tool: +- Exits with error. Most likely/best error message "k_g invalid". +* It is most important that the connection not succeed. + +Execute bmc-info, authenticating with USER1, specify -k key. +verify tool: +- Executes without errors. + +Test) + +Begin with "pristine" configuration. + +Configure each field in Rmcpplus_Conf_Privilege to "User". + +Execute all below tests with IPMI 2.0 (-D lan_2_0) + +Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 0 +Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 1 +Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 2 +Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 3 +verify tool: +- Executes without errors for each test. + +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 0 +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 1 +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 2 +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 3 +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 0 +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 1 +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 2 +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 3 +verify tool: +- Exits with error. Most likely/best error message "privilege level + cannot be obtained for this user". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure each field in Rmcpplus_Conf_Privilege to "Unused". + +Execute all below tests with IPMI 2.0 (-D lan_2_0) + +Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 0 +Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 1 +Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 2 +Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 3 +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 0 +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 1 +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 2 +Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 3 +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 0 +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 1 +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 2 +Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 3 +verify tool: +- Exits with error. Most likely/best error message "cipher suite id unavailable". +* It is most important that the connection not succeed. + +Test) + +Begin with "pristine" configuration. + +Configure each user to have a password > 16 bytes in length. + +Execute all below tests with IPMI 2.0 (-D lan_2_0) + +Execute bmc-info, authenticating with USER1 +Execute bmc-info, authenticating with OPERATOR1 +Execute bmc-info, authenticating with ADMIN1 +verify tool: +- Executes without errors for each test. + +Test) + +Begin with "pristine" configuration. + +Configure each user to have a password > 16 bytes in length. + +Execute all below tests with IPMI 1.5 (-D lan) + +Execute bmc-info, authenticating with USER1 +Execute bmc-info, authenticating with OPERATOR1 +Execute bmc-info, authenticating with ADMIN1 +- Exits with error. Most likely/best error message "password verification timeout". +* It is most important that the connection not succeed. + + +Misc: Bad Password Threshold +---------------------------- + +Goal: Ensure all important features function properly. + +Test) + +If Bad Password Thresholds are supported, configure a non-zero Bad +Password Threshold. Verify that a user is disabled after the number +of bad passwords crosses the threshold. + +Test) + +If Bad Password Thresholds and Attempt Count Reset Interval are +supported, configure a non-zero Bad Password Threshold and non-zero +Attempt Count Reset Interval. Verify that a user is diabled after the +number of bad passwords crosses the threshold occurs with the Attempt +Count Reset Interval. Verify that a user is NOT disabled if the +number of bad passwords crosses the threshold outside of the Attempt +Count Reset Interval. + +Test) + +If Bad Password Thresholds and a User Lockout Interval are supported, +configure a non-zero Bad Password Threshold and non-zero User Lockout +Interval. Verify that a user is diabled after the number of bad +passwords crosses the threshold. Verify that a user is enabled after +the User Lockout Interval has passed. + +Test) + +If a user has been disabled due to excess Bad Passwords, ensure an +event message has been generated to indicate this. + +Misc: ARP +--------- + +Goal: Ensure all important features function properly. + +Test) + +Configure Gratuitous ARPs On. + +Verify (probably with tcpdump or an equivalent network sniffer) that +Gratuitous ARPs are enabled and sending gratuitouts arps on the +network. + +Configure Gratuitous ARPs Off. + +Verify (probably with tcpdump or an equivalent network sniffer) that +Gratuitous ARPs are no longer being sent on the network. + +Test) + +Configure ARP Responses On. + +Verify (probably with tcpdump or an equivalent network sniffer) that +ARP Responses are enabled and sending ARP responses back from requests. + +Configure ARP Responses Off. + +Verify (probably with tcpdump or an equivalent network sniffer) that +ARP Responses are disabled and not responding to ARP requests. + +Test) + +Configure both Gratuitous ARPs and ARP Responses Off + +Verify that IPMI over LAN still functions if you manually insert the +remote MAC address into your local ARP cache. + +In Linux, 'arp -s ' adds the MAC address to the +local ARP cache. diff --git a/source/freeipmi/usr/share/info/freeipmi-faq.info b/source/freeipmi/usr/share/info/freeipmi-faq.info new file mode 100644 index 00000000..0dd3f8e1 --- /dev/null +++ b/source/freeipmi/usr/share/info/freeipmi-faq.info @@ -0,0 +1,1028 @@ +This is freeipmi-faq.info, produced by makeinfo version 4.13 from +freeipmi-faq.texi. + +This manual is for FreeIPMI (version 1.5.1, 13 November 2015). +Copyright (C) 2006-2012 FreeIPMI Core Team + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, + Version 1.2 or any later version published by the Free Software + Foundation; with no Invariant Sections, no Front-Cover Texts, and + no Back-Cover Texts. + +INFO-DIR-SECTION Platform Management +START-INFO-DIR-ENTRY +* FreeIPMI FAQ: (freeipmi-faq). FreeIPMI - Frequently Asked Questions +END-INFO-DIR-ENTRY + + Copyright (C) 2003-2012 FreeIPMI Core Team. + + +File: freeipmi-faq.info, Node: Top, Next: What is IPMI?, Prev: (dir), Up: (dir) + + Frequently Asked Questions on *FreeIPMI* + + This edition of the documentation was last updated on 1 December +2015 for release 1.5.1 of the FreeIPMI. + +* Menu: + +* What is IPMI?:: +* What is FreeIPMI?:: +* How did FreeIPMI start?:: +* What operating systems does FreeIPMI run on?:: +* FreeIPMI vs OpenIPMI vs Ipmitool vs Ipmiutil:: +* What is special about FreeIPMI?:: +* Does my system support IPMI?:: +* How do I compile FreeIPMI?:: +* libgcrypt requirement:: +* x86-64 Compilation:: +* Installing FreeIPMI on FreeBSD:: +* What are some IPMI terminology or acronyms I should be aware of?:: +* What setup is needed for FreeIPMI to communicate over LAN?:: +* What setup is needed for Serial over LAN (SOL) or Ipmiconsole?:: +* Do I need to install or configure a driver to perform IPMI inband?:: +* SSIF Driver Configuration:: +* How do you setup Powerman with ipmipower?:: +* How do you setup Conman with ipmiconsole or libipmiconsole?:: +* How do you setup Ganglia or Nagios to monitor IPMI sensors via FreeIPMI?:: +* Why are times reported by FreeIPMI tools wrong?:: +* Why is the IPMI kernel driver faster than the KCS driver?:: +* Why is the output from FreeIPMI different than another software?:: +* Why are there so many IPMI compliance bugs?:: +* How do I get around an IPMI compliance bug on my motherboard?:: +* Why am I seeing so many 'internal IPMI error' or 'driver busy' messages?:: +* How do I program with the FreeIPMI libraries?:: +* Where can I get additional help or support?:: + + +File: freeipmi-faq.info, Node: What is IPMI?, Next: What is FreeIPMI?, Prev: Top, Up: Top + +0.1 What is IPMI? +================= + +The IPMI specifications define standardized, abstracted interfaces to +the platform management subsystem. IPMI includes the definition of +interfaces for extending platform management between the board within +the main chassis and between multiple chassis. + + The term platform management is used to refer to the monitoring and +control functions that are built in to the platform hardware and +primarily used for the purpose of monitoring the health of the system +hardware. This typically includes monitoring elements such as system +temperatures, voltages, fans, power supplies, bus errors, system +physical security, etc. It includes automatic and manually driven +recovery capabilities such as local or remote system resets and power +on/off operations. It includes the logging of abnormal or out-of-range +conditions for later examination and alerting where the platform issues +the alert without aid of run-time software. Lastly it includes +inventory information that can help identify a failed hardware unit. + + +File: freeipmi-faq.info, Node: What is FreeIPMI?, Next: How did FreeIPMI start?, Prev: What is IPMI?, Up: Top + +0.2 What is FreeIPMI? +===================== + +FreeIPMI is a collection of Intelligent Platform Management IPMI system +software. It provides in-band and out-of-band software and a +development library conforming to the Intelligent Platform Management +Interface (IPMI v1.5 and v2.0) standards. FreeIPMI also supports +IPMI-related specifications such as the Data Center Management Interface +(DCMI) and Intel Node Manager. + + +File: freeipmi-faq.info, Node: How did FreeIPMI start?, Next: What operating systems does FreeIPMI run on?, Prev: What is FreeIPMI?, Up: Top + +0.3 How did FreeIPMI start? +=========================== + +In October 2003, California Digital Corp. (CDC) was contracted by +Lawrence Livermore National Laboratory (LLNL) for the assembly of +Thunder, a 1024 node Itanium2 cluster. This led to software developers +from CDC and LLNL merging the IPMI software developed by both +organizations into FreeIPMI. + + Anand Babu, Balamurugan and Ian Zimmerman at CDC contributed the +in-band KCS driver, `ipmi-sensors', `ipmi-sel', `bmc-info', core +portions of `ipmi-config', and portions of libfreeipmi. Albert Chu and +Jim Garlick at LLNL contributed `ipmipower', `bmc-watchdog', +`ipmiping', `rmcpping', portions of libfreeipmi, and IPMI support in +Powerman. In October 2004, FreeIPMI 0.1.0 was officially released. + + Since the 0.1.0 release, Z Research developers have contributed +`ipmi-chassis', `ipmi-raw', `ipmi-locate', and PEF portions of +`ipmi-config'. LLNL has contributed IPMI 2.0 support, hostrange +support, `ipmiconsole', libipmiconsole, `ipmidetect', `bmc-device', +`ipmi-oem', `ipmi-dcmi', libipmimonitoring, and the chassis and sensor +portions of `ipmi-config'. + + (Note: The original FreeIPMI developers from California Digital +Corp. are now at Zresearch Inc.) + + +File: freeipmi-faq.info, Node: What operating systems does FreeIPMI run on?, Next: FreeIPMI vs OpenIPMI vs Ipmitool vs Ipmiutil, Prev: How did FreeIPMI start?, Up: Top + +0.4 What operating systems does FreeIPMI run on? +================================================ + +FreeIPMI was originally developed on GNU/Linux. It has been confirmed +to be built on most major GNU/Linux distributions such as Redhat, +Fedora, Suse, and Debian. FreeIPMI has been ported and confirmed to +work on atleast FreeBSD, OpenBSD, Solaris, OpenSolaris, and Windows via +Cygwin. We imagine it would build cleanly on other operating systems. +If it doesn't, it should be easily portable to them. Please contact +the maintainers on the mailing lists. + + +File: freeipmi-faq.info, Node: FreeIPMI vs OpenIPMI vs Ipmitool vs Ipmiutil, Next: What is special about FreeIPMI?, Prev: What operating systems does FreeIPMI run on?, Up: Top + +0.5 FreeIPMI vs OpenIPMI vs Ipmitool vs Ipmiutil +================================================ + +There are multiple implementations, APIs, interfaces, end user +requirements, etc. that one can choose when developing IPMI drivers, +libraries, and tools. FreeIPMI has taken some different approaches +than other open-source projects. + + The section below points out a number of the reasons why we feel +FreeIPMI is particularly special compared to the other projects. + + The Ipmiutil project has a good chart describing many of the +differences between the projects: +`http://ipmiutil.sourceforge.net/docs/ipmisw-compare.htm'. + + +File: freeipmi-faq.info, Node: What is special about FreeIPMI?, Next: Does my system support IPMI?, Prev: FreeIPMI vs OpenIPMI vs Ipmitool vs Ipmiutil, Up: Top + +0.6 What is special about FreeIPMI? +=================================== + +In our eyes, there are several reasons why FreeIPMI is particularly +special. + + 1. Support for HPC and large data centers + + A number of features have been added into the tools to support HPC + and/or large data centers. Much of this original support was + added to support the large cluster environments at Lawrence + Livermore National Laboratory (LLNL). + + Scalable parallel execution of many FreeIPMI tools + (`ipmi-sensors', `ipmi-sel', `bmc-info', etc.) across a cluster + is supported through hostranged input and output. For example: + + # > bmc-info -h "pwopr[0-5]" -u XXX -p XXX --get-device-id -C + ---------------- + pwopr[0-1,5] + ---------------- + Device ID : 34 + Device Revision : 1 + Device SDRs : unsupported + Firmware Revision : 1.0c + Device Available : yes (normal operation) + IPMI Version : 2.0 + Sensor Device : supported + SDR Repository Device : supported + SEL Device : supported + FRU Inventory Device : supported + IPMB Event Receiver : unsupported + IPMB Event Generator : unsupported + Bridge : unsupported + Chassis Device : supported + Manufacturer ID : Peppercon AG (10437) + Product ID : 4 + Auxiliary Firmware Revision Information : 38420000h + ---------------- + pwopr[2-4] + ---------------- + Device ID : 34 + Device Revision : 1 + Device SDRs : unsupported + Firmware Revision : 1.17 + Device Available : yes (normal operation) + IPMI Version : 2.0 + Sensor Device : supported + SDR Repository Device : supported + SEL Device : supported + FRU Inventory Device : supported + IPMB Event Receiver : unsupported + IPMB Event Generator : unsupported + Bridge : unsupported + Chassis Device : supported + Manufacturer ID : Peppercon AG (10437) + Product ID : 4 + Auxiliary Firmware Revision Information : 38420000h + + In the above example, its clear to see that pwopr[2-4] have + different firmware than pwopr[0-1,5]. More information about + hostrange support can be found in the document + `freeipmi-hostrange.txt' + (`http://www.gnu.org/software/freeipmi/freeipmi-hostrange.txt'). + + `Ipmipower' is capable of scaling to large nodes for cluster + support and is supported by Powerman + (`https://github.com/chaos/powerman') for scalable power + management. At LLNL, in conjunction with Powerman, ipmipower is + used for power control on clusters ranging from sizes of 4 to + 2000. It has been used to determine power status or power control + LLNL's largest clusters in under a second. + + `libipmiconsole' is currently supported by Conman + (`https://github.com/dun/conman') and Conserver + (`http://www.conserver.com/') for scalable console management. + + `Ipmi-sensors' and libipmimonitoring are capable of interpreting + sensor readings as well as just reporting them. It can be used + for host monitoring IPMI sensor severity on a cluster. By mapping + sensor readings into NOMINAL, WARNING, or CRITICAL states, it + makes monitoring sensors easier across large numbers of nodes. + Skummee (`http://sourceforge.net/projects/skummee') currently uses + libipmimonitoring to monitoring sensors on LLNL clusters of up to + 2000 nodes in size. FreeIPMI sensor monitoring plugins for + Ganglia (`http://ganglia.info/') and Nagios + (`http://www.nagios.org/') have also been developed and made + available for download + (`http://www.gnu.org/software/freeipmi/download.html'). + + `Ipmi-sel' and libipmimonitoring are capable of interpreting + system event log (SEL) entries as well as just reporting them. It + can be used for host monitoring IPMI event severity on a cluster. + By mapping events into NOMINAL, WARNING, or CRITICAL states, it + makes monitoring system events easier across large numbers of + nodes. Skummee (`http://sourceforge.net/projects/skummee') + currently uses libipmimonitoring to monitoring the SEL on LLNL + clusters of up to 2000 nodes in size. + + The `ipmi-config' configuration file and command-line interface + are used to easily copy the BMC configuration from one node to + every other node in a cluster quickly. It has been used to modify + the BMC configuration across large LLNL clusters in a few minutes. + They also have the capability to verify (via the diff option) that + the desired configuration has been properly stored to firmware. + + `Ipmidetect' can be used to enhance the efficiency of the + hostranged input by eliminating those nodes in the cluster that + have been temporarily removed for servicing. + + FreeIPMI is supported within Slurm for energy consumption + monitoring. + + 2. Additional OEM support + + FreeIPMI contains support for a number of OEM extensions and OEM + sensors and/or events. `Ipmi-oem' currently supports OEM command + extensions for motherboards made by Dell, Fujitsu, IBM, Intel, + Inventec, Quanta, Sun Microsystems, Supermicro, and Wistron. + `Ipmi-sensors' and `ipmi-sel' support OEM sensors and/or events + for motherboards made from Dell, Fujitsu, HP, Intel, Inventec, + Quanta, Sun Microsystems, Supermicro, and Wistron. (Some of the + motherboards may have been rebranded by vendors, see manpages for + official list of confirmed supported motherboards.) + + 3. Additional flexibility and features + + By implementing various IPMI sub-sections into multiple tools, + each tool is capable of providing the user with more flexibility + and ultimately more features in addition to those listed above. + It may not be as easy (or architecturally possible) to do in an + all-in-one tool. + + 4. Extra IPMI support + + In addition to the features listed above, FreeIPMI also supports + specifications related to IPMI. The Data Center Management + Interface, or DCMI, is supported via the FreeIPMI tool + `ipmi-dcmi'. Some aspects of the Intel Power Node Manager are + supported in `ipmi-oem'. + + 5. Easy setup + + By implementing drivers in userspace libraries, there is no need to + build/setup/manage any kernel modules/drivers. + + 6. Portability + + Likewise, by implementing everything in userspace libraries and + tools, portability to multiple operating systems and architectures + should be easier. + + + +File: freeipmi-faq.info, Node: Does my system support IPMI?, Next: How do I compile FreeIPMI?, Prev: What is special about FreeIPMI?, Up: Top + +0.7 Does my system support IPMI? +================================ + +Unfortunately, there are no universally defined mechanisms for +determining if a system supports IPMI via Inband communication. +Assuming IPMI is set up correctly for over LAN communication, a fairly +reliable mechanism exists out-of-band. Here are some suggestions. + + 1. FreeIPMI's `ipmi-locate' can be used to determine if IPMI can be + found on your system. Users are cautioned though, the failure to + discover IPMI via `ipmi-locate' is not sufficient to disprove that + IPMI exists on your system. Your system may not publish such + information or may expect clients to communicate at default + locations. + + 2. `dmidecode' may be similarly used to probe for devices that + support IPMI on your system. You may grep for IPMI or specifying + the IPMI DMI type on the command line. + + # > dmidecode --type 38 + # dmidecode 2.10 + SMBIOS 2.5 present. + + Handle 0x0049, DMI type 38, 18 bytes + IPMI Device Information + Interface Type: KCS (Keyboard Control Style) + Specification Version: 2.0 + I2C Slave Address: 0x10 + NV Storage Device: Not Present + Base Address: 0x0000000000000CA2 (I/O) + Register Spacing: Successive Byte Boundaries + + 3. FreeIPMI's `ipmi-ping' can be used to see if a machine has an IPMI + service at a specific host/IP address. For more wide scale IPMI + discovery, the `ipmi-detectd' daemon and `ipmi-detect' tool can be + used. + + + Again, the failure to find an IPMI supported device is not +sufficient to show lack of IPMI support. + + Ultimately, some amount of information from product documents or +trial and error may be necessary to determine if IPMI is supported on +your system. + + +File: freeipmi-faq.info, Node: How do I compile FreeIPMI?, Next: libgcrypt requirement, Prev: Does my system support IPMI?, Up: Top + +0.8 How do I compile FreeIPMI? +============================== + +Please see the README.build instructions provided with FreeIPMI or on +the FreeIPMI website's documentation +(`http://www.gnu.org/software/freeipmi/README.build'). + + +File: freeipmi-faq.info, Node: libgcrypt requirement, Next: x86-64 Compilation, Prev: How do I compile FreeIPMI?, Up: Top + +0.9 libgcrypt requirement +========================= + +FreeIPMI requires the libgcrypt library to be installed for a variety +of encryption requirements in IPMI 2.0. If you are building FreeIPMI +and receive a 'libgcrypt required to build libfreeipmi' error, please +install libgcrypt. For Linux users, this may require the install of +the libgcrypt-devel package as well. For those who do not need IPMI +2.0 encryption, FreeIPMI may be built without it by specifying +`--without-encryption' when executing configure. + + +File: freeipmi-faq.info, Node: x86-64 Compilation, Next: Installing FreeIPMI on FreeBSD, Prev: libgcrypt requirement, Up: Top + +0.10 x86-64 Compilation +======================= + +By default, FreeIPMI's build autotools (e.g. configure) should detect +if you are on a 64 bit system and should build against 64 bit +libraries. However, some multi-architecture installs (e.g. you have 32 +bit and 64 bit libraries installed) may lead to builds and installs of +32 bit instead of 64 bit. For those noticing this, pass libdir +appropriately to the configure script to workaround this problem. (e.g. +`--libdir=/usr/lib64') + + Example: + # ./configure --prefix=/usr --libdir=/usr/lib64 + + +File: freeipmi-faq.info, Node: Installing FreeIPMI on FreeBSD, Next: What are some IPMI terminology or acronyms I should be aware of?, Prev: x86-64 Compilation, Up: Top + +0.11 Installing FreeIPMI on FreeBSD +=================================== + +You can install a binary package of freeipmi or use the port, located +in ports/sysutils/freeipmi, to build it from the source. See ports(7) +and 'Packages and Ports' section +(`http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports.html') +in The FreeBSD Handbook. + + Please contact port maintainer (MAINTAINER line in the port's +Makefile), if you have problems building from the port. + + +File: freeipmi-faq.info, Node: What are some IPMI terminology or acronyms I should be aware of?, Next: What setup is needed for FreeIPMI to communicate over LAN?, Prev: Installing FreeIPMI on FreeBSD, Up: Top + +0.12 What are some IPMI terminology or acronyms I should be aware of? +===================================================================== + +Good question, here are some terms and acronyms with general definition +you might want to know. + +*BMC* + The *Baseboard Management Controller* is the management chip on + the system that is responsible for IPMI. It is common to refer to + configuring the "BMC" as synonymous for configuring IPMI. + +*inband* + *inband* IPMI communication refers to communication on a system + locally (i.e. not over a network). + +*outofband* + *outofband* and *IPMI over LAN* refer to IPMI communication over a + network, typically ethernet. + +*SDR* + The *Sensor Data Repository* is a database of system information + that is needed by many other IPMI functions. It is commonly read + before some IPMI action can be taken. For example, it contains a + list of all sensors on a system, so it must be downloaded before + sensors on a system can be read. In FreeIPMI, the SDR is cached + in a common location and can be used by a number of tools, such as + `ipmi-sensors', `ipmi-sel', and `ipmi-fru'. + +*SEL* + The *System Event Log* is a log of events stored on the system for + later diagnostics. In FreeIPMI, `ipmi-sel' can be used to read + the SEL. + +*FRU* + The *Field Replaceable Unit* is a general computing term refering + to a replaceable unit of electronics. In IPMI it is common to + refer to the "FRU" as the database of all FRU components on a + system. In FreeIPMI, `ipmi-fru' can be used to read the FRU + components on a system. + +*PEF* + *Platform Event Filtering* refers to the rules that determine when + PETs are generated and where they are sent. In FreeIPMI, PEF can + be configured via `ipmi-config'. + +*PET* + *Platform Event Trap* refers to a trap that can be sent by a + system to an SNMP agent to indicate an event has occurred on the + system. In FreeIPMI, a PET trap can be interpreted via `ipmi-pet'. + +*DCMI* + The *Data Center Management Interface* is a management interface + defined by a group of vendors that use IPMI as the backend for + their system management definition. In FreeIPMI, `ipmi-dcmi' can + be used to read/configuring DCMI. + +*SOL* + *Serial over LAN* refers to the forwarding of serial system + traffic over a network, typically an ethernet network. It is + typically used to access a remote system console. In FreeIPMI, + ipmiconsole is used to access a remote console via SOL. + +*RMCP* + The *Remote Management Control Protocol* protocol is another + remote management protocol which IPMI is defined within for + outofband communication. For most IPMI users, you will never need + to know about RMCP. + + + +File: freeipmi-faq.info, Node: What setup is needed for FreeIPMI to communicate over LAN?, Next: What setup is needed for Serial over LAN (SOL) or Ipmiconsole?, Prev: What are some IPMI terminology or acronyms I should be aware of?, Up: Top + +0.13 What setup is needed for FreeIPMI to communicate over LAN? +=============================================================== + +Please see the ipmi-config.conf(5) manpage provided with FreeIPMI for +details, or you can read it on the FreeIPMI website's documentation +(`http://www.gnu.org/software/freeipmi/manpages/man5/ipmi-config.conf.5.html'). + + +File: freeipmi-faq.info, Node: What setup is needed for Serial over LAN (SOL) or Ipmiconsole?, Next: Do I need to install or configure a driver to perform IPMI inband?, Prev: What setup is needed for FreeIPMI to communicate over LAN?, Up: Top + +0.14 What setup is needed for Serial over LAN (SOL) or Ipmiconsole? +=================================================================== + +The setup of Serial-over-LAN (SOL) and/or `Ipmiconsole' is highly +dependent on your system. However, most motherboardss require the +following: + + 1. Adjust the BIOS COM port for serial redirection over SOL instead + of the normal serial port and set the appropriate baud rate. If + you do not know which port is the SOL port, you may need to play + around and guess. It is likely a non-default setting, since many + manufacturers may still assume the default redirection is out of + the normal serial port. If you do not have a serial port on your + motherboard, this part can probably be skipped. + + 2. Configure IPMI on the motherboard to use SOL. Many motherboards + may have this enabled by default, however you may wish to verify + with FreeIPMI's `ipmi-config'. More information can be found in + the ipmi-config.conf(5) manpage on the settings. However, the key + settings are to enable SOL on the system, enable SOL for + individual users, and select the appropriate baud. On many + motherboards, the selected baud must match what is configured in + the BIOS. + + 3. Adjust your operating systems serial console settings to use the + appropriate COM port. For Linux, the following guide + (`http://www.vanemery.com/Linux/Serial/serial-console.html') + provides a pretty good overview of setting of a serial console on + Linux. The only difference for setting up a serial console with + `Ipmiconsole' or SOL, is the ttySX terminal may need to be changed. + + + +File: freeipmi-faq.info, Node: Do I need to install or configure a driver to perform IPMI inband?, Next: SSIF Driver Configuration, Prev: What setup is needed for Serial over LAN (SOL) or Ipmiconsole?, Up: Top + +0.15 Do I need to install or configure a driver to perform IPMI inband? +======================================================================= + +For most people the answer is no. + + FreeIPMI includes a userspace driver that works on most motherboards +without any driver installation, loading, or configuration required. +FreeIPMI also includes support of a Linux SSIF driver through the SSIF +device (i.e. `/dev/i2c-0'), the OpenIPMI Linux kernel driver (i.e. +`/dev/ipmi0'), the Sun/Solaris BMC driver (i.e. `/dev/bmc'), and the +Intel DCMI/MEI driver (i.e. `/dev/dcmi'). If you communicate through +one of these mechanisms, the appropriate drivers for them should be +loaded. Most systems should automatically load the appropriate drivers +you need. + + Under most scenarios, the FreeIPMI tools should automatically +discover which in-band interface to use and the proper settings to use. +Some motherboards may require you to determine alternate configurations +for addresses, paths, etc. on your own and pass them as command line +options to the tools. + + Every system is different and your situation may differ. Please see +your manufacturer and operating system instructions. + + Special note: At the time of this writing the Intel DCMI/MEI Linux +device drivers are not distributed widely. Please work with your +vendor to obtain the Intel MEI and DCMI device drivers. + + There are some additional Linux OpenIPMI kernel driver notes here: +`http://www.gnu.org/software/freeipmi/README.openipmi'. + + +File: freeipmi-faq.info, Node: SSIF Driver Configuration, Next: How do you setup Powerman with ipmipower?, Prev: Do I need to install or configure a driver to perform IPMI inband?, Up: Top + +0.16 SSIF Driver Configuration +============================== + +FreeIPMI's SSIF driver works on top of kernel'2 i2c device interface. + + Under GNU/Linux load these kernel modules: i2c-dev, i2c-i801, +i2c-core before using FreeIPMI. + + To identify SSIF device address: + + Example: + $> lspci (in the output look for this entry) + 00:1f.3 SMBus: Intel Corp. 6300ESB SMBus Controller (rev 01) + Subsystem: Intel Corp.: Unknown device 342f + Flags: medium devsel, IRQ 17 + I/O ports at 0400 [size=32] + ---- + $> cat /proc/bus/i2c + i2c-0 smbus SMBus I801 adapter at 0400 Non-I2C SMBus adapter + ---- + Make sure the "0400" above matches with the "0400" address under + proc. Also make sure "i2c-0" is not different. If it appears + different then grep for "i2c-0" in this code "ipmitool.c" and + change. "i2c-X" is the label assigned to each slave device attached on + the i2c bus. + + BMC address Locator: + Refer to the SM BIOS IPMI Device Information Record + Type 38, record 06h and 08h. Use the value of record + 06h as the IPMBAddress and load the SMBus controller + driver at the address value read from record 08h. + + Usual values for record 06h -> 0x42 + Usual values for record 08h -> 0x400 + + +File: freeipmi-faq.info, Node: How do you setup Powerman with ipmipower?, Next: How do you setup Conman with ipmiconsole or libipmiconsole?, Prev: SSIF Driver Configuration, Up: Top + +0.17 How do you setup Powerman with ipmipower? +============================================== + +There are additional details in the Powerman +(`https://github.com/chaos/powerman') documentation, however here are +the basics. In the powerman.conf file, you want to include the +`ipmipower.dev' device file, setup an ipmipower device in co-process +mode, then configure hosts to use that device. + + include "/etc/powerman/ipmipower.dev" + + device "ipmi0" "ipmipower" "/usr/sbin/ipmipower -h mynodes[0-10] |&" + + node "mynodes[0-10]" "ipmi0" "mynodes[0-10]" + + You may wish to add some additional ipmipower configuration on the +device line: + + device "ipmi0" "ipmipower" "/usr/sbin/ipmipower --wait-until-on --wait-until-off -h mynodes[0-10] -u username -p password |&" + + although you will probably want to do some of this configuration +(especially the username and password) in `freeipmi.conf'. + + If you use an alternate set of hostnames for IPMI from the primary +hostname, that can configured like this: + + device "ipmi0" "ipmipower" "/usr/sbin/ipmipower -h altname[0-10] |&" + + node "primaryname[0-10]" "ipmi0" "altname[0-10]" + + Configuration can be trickier if you want to configure Powerman to +use ipmipower with an OEM extension specified through +`--oem-power-type'. Many OEM extensions in ipmipower must include +additional arguments, which can be passed in via the node argument. In +addition, while `ipmipower' can take a host range as an additional +argument, Powerman may not. + + For example, the following would be suitable to configure OEM +extension support the Dell Poweredge C410x. A specific node identifier +is used to map to a specific node and additional argument (i.e. +mynodes0-1 maps to mynodes0+1). + + include "/etc/powerman/ipmipower.dev" + + device "ipmi0" "ipmipower" "/usr/sbin/ipmipower -h mynodes[0-10]+[1-16] --oem-power-type=c410x -l admin |&" + + node "mynodes[0-10]-1" "ipmi0" "mynodes[0-10]+1" + node "mynodes[0-10]-2" "ipmi0" "mynodes[0-10]+2" + node "mynodes[0-10]-3" "ipmi0" "mynodes[0-10]+3" + node "mynodes[0-10]-4" "ipmi0" "mynodes[0-10]+4" + node "mynodes[0-10]-5" "ipmi0" "mynodes[0-10]+5" + node "mynodes[0-10]-6" "ipmi0" "mynodes[0-10]+6" + node "mynodes[0-10]-7" "ipmi0" "mynodes[0-10]+7" + node "mynodes[0-10]-8" "ipmi0" "mynodes[0-10]+8" + node "mynodes[0-10]-9" "ipmi0" "mynodes[0-10]+9" + node "mynodes[0-10]-10" "ipmi0" "mynodes[0-10]+10" + node "mynodes[0-10]-11" "ipmi0" "mynodes[0-10]+11" + node "mynodes[0-10]-12" "ipmi0" "mynodes[0-10]+12" + node "mynodes[0-10]-13" "ipmi0" "mynodes[0-10]+13" + node "mynodes[0-10]-14" "ipmi0" "mynodes[0-10]+14" + node "mynodes[0-10]-15" "ipmi0" "mynodes[0-10]+15" + node "mynodes[0-10]-16" "ipmi0" "mynodes[0-10]+16" + + As noted in the manpage, the Dell Poweredge C410x appears to have +difficulty handling new slot power control requests until prior ones +have completed. Users may wish to configure `ipmipower' with +`--wait-until-on', `--wait-until-off', and consider using the +`ipmipower-serial.dev' device file instead of `ipmipower.dev'. + + +File: freeipmi-faq.info, Node: How do you setup Conman with ipmiconsole or libipmiconsole?, Next: How do you setup Ganglia or Nagios to monitor IPMI sensors via FreeIPMI?, Prev: How do you setup Powerman with ipmipower?, Up: Top + +0.18 How do you setup Conman with ipmiconsole or libipmiconsole? +================================================================ + +There are additional details in the Conman +(`https://github.com/dun/conman') documentation and manpages, however +here are some basics. + + To configure Conman to connect via the ipmiconsole tool, Conman comes +with an expect script named ipmiconsole.exp, typically installed into +`/usr/lib/conman/exec/ipmiconsole.exp'. Consoles can be setup by +adding lines to `conman.conf' like: + + CONSOLE name="myserver" dev="/usr/lib/conman/exec/ipmiconsole.exp myserver myusername mypassword" + + One of the useful aspects of using the ipmiconsole.exp script is that +the same configuration options you may have already configured into +`freeipmi.conf', may be loaded automatically when ipmiconsole is +executed via this expect script. + + However, as can be expected, scalability may be a problem as you must +launch a process for every node in your cluster. + + Conman is also capable of connecting to servers natively through the +libipmiconsole library, so that no additional processes are launched. +They can be configured as follows: + + CONSOLE name="myserver" IPMIOPTS="U:myusername,P:mypassword" dev="ipmi:myserver" + + on some older versions of Conman, you would instead use + + CONSOLE name="myserver" IPMIOPTS="myusername,mypassword" dev="ipmi:myserver" + + Please see the Conman documentation for current version options and +additional configuration options available. Alternate defaults for +libipmiconsole can also be set via the `libipmiconsole.conf' file. + + One of the additional advantages of configuring Conman to use the +libipmiconsole library natively is that Conman is able to detect and +manage additional IPMI error cases. + + +File: freeipmi-faq.info, Node: How do you setup Ganglia or Nagios to monitor IPMI sensors via FreeIPMI?, Next: Why are times reported by FreeIPMI tools wrong?, Prev: How do you setup Conman with ipmiconsole or libipmiconsole?, Up: Top + +0.19 How do you setup Ganglia or Nagios to monitor IPMI sensors via FreeIPMI? +============================================================================= + +Scripts to monitor IPMI via FreeIPMI in Ganglia and Nagios have been +developed and are downloadable on the FreeIPMI homepage +(`http://www.gnu.org/software/freeipmi/download.html'). Instructions +for setup can be found at the top of the scripts. + + +File: freeipmi-faq.info, Node: Why are times reported by FreeIPMI tools wrong?, Next: Why is the IPMI kernel driver faster than the KCS driver?, Prev: How do you setup Ganglia or Nagios to monitor IPMI sensors via FreeIPMI?, Up: Top + +0.20 Why are times reported by FreeIPMI tools wrong? +==================================================== + +Times reported by various FreeIPMI tools (such as `ipmi-sel') are +reported under the assumption that timestamps are written in localtime. +This is by definition in the IPMI specification. + + Whether or not a system truly stored the timestamps in localtime +varies on many factors, such as the vendor, BIOS, and operating system. + + If the times reported by the tool are off, there is a strong +likelihood the time may be stored in GMT/UTC and needs to be converted +into localtime. In FreeIPMI tools that have time outputs, the +`--utc-to-localtime' option can be specified or the `utc-to-localtime' +option can be specified in `freeipmi.conf'. + + +File: freeipmi-faq.info, Node: Why is the IPMI kernel driver faster than the KCS driver?, Next: Why is the output from FreeIPMI different than another software?, Prev: Why are times reported by FreeIPMI tools wrong?, Up: Top + +0.21 Why is the IPMI kernel driver faster than the KCS driver? +============================================================== + +Internally the IPMI kernel driver chooses to spin while polling for a +response from the base management controller (BMC) while the KCS driver +elects to sleep between poll attempts. An operating system's scheduler +granularity may be larger than the time it takes to perform a IPMI +transaction, thus the wall clock time of the KCS driver is far worse +than the IPMI kernel driver. FreeIPMI's KCS driver implements the +sleep between poll attempts because it is believed to provide better +overall system use. To force the KCS driver to have similar wall clock +response time to the IPMI kernel driver, users can specify the +'spinpoll' workaround. + + +File: freeipmi-faq.info, Node: Why is the output from FreeIPMI different than another software?, Next: Why are there so many IPMI compliance bugs?, Prev: Why is the IPMI kernel driver faster than the KCS driver?, Up: Top + +0.22 Why is the output from FreeIPMI different than another software? +===================================================================== + +Due to minor implementation differences and or incorrect IPMI firmware, +the resulting output from FreeIPMI tools can differ from other +software. Here are some of the more common inconsistencies that have +been seen before. More inconsistencies can be seen/fixed by specifying +a number of the workarounds available to many of the FreeIPMI tools. + + * In FreeIPMI's `ipmi-sel' and `ipmi-sensors' there are options for + FreeIPMI to interpret the SEL or sensor readings and give them a + NOMINAL, WARNING, or CRITICAL status. Other IPMI software may + have different interpretations for their sensors and/or SEL + readings that map to NOMINAL, WARNING, or CRITICAL differently. + These interpretations are configurable in FreeIPMI via the + `freeipmi_interpret_sel.conf' and `freeipmi_interpret_sensor.conf' + configuration files. + + * In some IPMI software, sensor and/or FRU records are bridged by + default and read off satellite controllers. In FreeIPMI they are + not due to the discovery that many vendors do not implement their + bridging correctly or publish invalid slave addresses in the SDR. + In order to bridge sensors the `--bridge-sensors' option must be + specified in `ipmi-sensors'. In order to bridge FRU records, the + `--bridge-fru' must be specified in `ipmi-fru'. + + * In some IPMI software, shared sensors may be read by default. In + FreeIPMI's `ipmi-sensors', they are not read by default due to + discovery that too many systems implement this incorrectly. + Shared sensors can be read by specifying the `--shared-sensors' + option. + + * In vendor provided IPMI software, OEM specific sensors, SEL + records, or FRU records may be output correctly because the vendor + is aware of how to properly read/output OEM specific information. + FreeIPMI may not be able to do this by default. For the + motherboards in which OEM information is known, it can be output + using the `--interpret-oem-data'. This option is available in + `ipmi-sensors', `ipmi-sel', and `ipmi-fru'. + + * In some vendor IPMI software, sensor "names" are constructured + through a combination of the multiple data in the SDR, rather than + just the device name listed in the SDR. This can lead to + different sensor names listed in tools like `ipmi-sensors' and + `ipmi-sel'. In both tools, this can be alleviated through the use + of the `--entity-sensor-names' option. + + * On several HP systems (observed on HP Proliant DL380 G7 and HP + ProLiant ML310 G5), the SDR lists sensors using inconsistent + information. Some analog sensors are listed as discrete sensors + or vice versa. This inconsistency, and implementation differences + between `ipmi-sensors' and other IPMI software lead to different + outputs. For example, this is one such sensor that was seen in + `ipmi-sensors': + + 2 | Power Supply 1 | Power Supply | N/A | N/A | 'Presence detected' + + but this same sensor was see in `ipmitool' as + + Power Supply 1 | 120 Watts | nc + + In this example, `ipmi-sensors' did not output a Watts reading but + outputs the proper "Presence Detected" state. `Ipmitool' outputs + the correct watts reading, but outputs the invalid non-critical + "nc" state. + + In FreeIPMI, this problem can be worked around using the + 'discretereading' workaround flag. + + * In FreeIPMI's `ipmi-fru', all multirecord FRU entries are output + by default. In `ipmitool' and perhaps other software, they are + not. The resulting output from `ipmi-fru' is much larger than + other software. To get similar output in `ipmitool', the `-v' + option must be set. + + * In FreeIPMI's `ipmi-fru', FRU record checksums are automatically + checked and errors are output if a FRU record cannot assumed to be + valid due to a failed checksum check. Other IPMI software has + been shown to ignore the checksums and assume records are valid. + If your system has invalid checksummed FRU entries, the + 'skipchecks' workaround can be used to get around them. + + * In FreeIPMI's `ipmi-sensors', sensors may output an "OK" if no + events are set. In other IPMI software (such as `ipmitool' and + the command "sdr list"), "OK" means that a sensor was simply read + correctly. The "OK" may not mean that the device behind the + sensor is actually functioning properly. For example, here is an + output from an `ipmitool' sdr list entry. + + PSU 1 Status | 0x0b | ok + + The 0x0b indicates that the power supply has errors (you normally + want to see 0x00 or 0x01), however the sensor outputs "ok" because + the sensor reading was read correctly. When using FreeIPMI's + `ipmi-sensors', the 0x0b is properly converted into the event + messages indicating an error. + + 54 | PSU 1 Status | Power Supply | N/A | N/A | 'Presence detected' 'Power Supply Failure detected' 'Power Supply input lost (AC/DC)' + + + +File: freeipmi-faq.info, Node: Why are there so many IPMI compliance bugs?, Next: How do I get around an IPMI compliance bug on my motherboard?, Prev: Why is the output from FreeIPMI different than another software?, Up: Top + +0.23 Why are there so many IPMI compliance bugs? +================================================ + +The IPMI specification is very large. At last check, the IPMI +specification was 601 pages. This does not count the various side +specifications related to IPMI, including DCMI, PET, FRU, and the +various OEM extension specifications (e.g. Intel Node Manager). Many +sections of text can be ambiguous. Many components of IPMI are optional +and aren't required to be implemented. There is some leeway for +implementation interpretation as well. Ultimately, bugs will happen. +In all fairness, FreeIPMI has had bugs too. + + A number of the IPMI compliance bugs found by FreeIPMI are documented +in the freeipmi-bugs-issues-and-workarounds.txt document (you can find +it on the website here: +`http://www.gnu.org/software/freeipmi/freeipmi-bugs-issues-and-workarounds.txt'). + + +File: freeipmi-faq.info, Node: How do I get around an IPMI compliance bug on my motherboard?, Next: Why am I seeing so many 'internal IPMI error' or 'driver busy' messages?, Prev: Why are there so many IPMI compliance bugs?, Up: Top + +0.24 How do I get around an IPMI compliance bug on my motherboard? +================================================================== + +Most of the FreeIPMI tools and libraries have flags to workaround a +large number of IPMI compliance bugs found on motherboards. Please see +the appropriate tool manpages or library header files for details on +the workarounds available and for what motherboards. + + If you believe there is a compliance issue on your motherboard that +has not yet been implemented, please contact the maintainers on the + mailing list. + + +File: freeipmi-faq.info, Node: Why am I seeing so many 'internal IPMI error' or 'driver busy' messages?, Next: How do I program with the FreeIPMI libraries?, Prev: How do I get around an IPMI compliance bug on my motherboard?, Up: Top + +0.25 Why am I seeing so many 'internal IPMI error' or 'driver busy' messages? +============================================================================= + +In some Linux distributions (atleast with Redhat Enterprise Linux 6.4 / +RHEL 6.4 and CentOS 6.4), the distributions began compiling the IPMI +kernel driver (i.e. ipmi_msghandler and ipmi_si modules) into the +kernel instead of as loadable modules. This was apparently due to a +need for the IPMI kernel drivers to work with ACPI. + + Due to compiling the IPMI kernel driver into the kernel, there is the +potential for inband IPMI communication to occur in the kernel w/o any +knowledge of it from outside software in userspace. Normally, the IPMI +service (i.e. /etc/init.d/ipmi) is started to create a device file +(i.e. /dev/ipmi0) so that userspace software will know to communicate +through this device. However, some of these distros disable the ipmi +service so that a device file is never created. + + Because of this, multiple IPMI software can communicate inband to the +BMC simultaneously, subsequently racing with each other. Ultimately, +this can lead to communication problems. In FreeIPMI, this is most +commonly seen through 'internal IPMI error' or 'driver busy' messages. + + There are several possible solutions for this in FreeIPMI. If you +start the ipmi service (i.e. /etc/init.d/ipmi start), a device file +will be created which FreeIPMI will recognize. FreeIPMI will +subsequently communicate via inband IPMI through this device file, thus +eliminating racing with the IPMI occurring in the kernel. + + The other option is to disable the IPMI kernel thread so that +FreeIPMI can perform inband communication with the BMC through its own +mechanisms. The following is from the Linux kernel documentation. + + When compiled into the kernel, the parameters can be specified on the + kernel command line as: + + ipmi_si.type=,... + ipmi_si.ports=,... ipmi_si.addrs=,... + ipmi_si.irqs=,... ipmi_si.trydefaults=[0|1] + ipmi_si.regspacings=,,... + ipmi_si.regsizes=,,... + ipmi_si.regshifts=,,... + ipmi_si.slave_addrs=,,... + ipmi_si.force_kipmid=,,... + ipmi_si.kipmid_max_busy_us=,,... + + ... + + If your IPMI interface does not support interrupts and is a KCS or + SMIC interface, the IPMI driver will start a kernel thread for the + interface to help speed things up. This is a low-priority kernel + thread that constantly polls the IPMI driver while an IPMI operation + is in progress. The force_kipmid module parameter will all the user to + force this thread on or off. If you force it off and don't have + interrupts, the driver will run VERY slowly. + + +File: freeipmi-faq.info, Node: How do I program with the FreeIPMI libraries?, Next: Where can I get additional help or support?, Prev: Why am I seeing so many 'internal IPMI error' or 'driver busy' messages?, Up: Top + +0.26 How do I program with the FreeIPMI libraries? +================================================== + +If you are looking for a high level library to do Serial-over-LAN (SOL) +or IPMI sensor/SEL monitoring, you may wish to look at the +libipmiconsole and libipmimonitoring libraries. These libraries +attempt to abstract a large amount of the underlying IPMI detail from +developers. The majority of the documentation can be found in the +header files. Some examples can be found in the documentation and the +FreeIPMI tools that use them. + + The libfreeipmi library is the core library used by other FreeIPMI +libraries and tools. However, it is quite detailed in regards to the +IPMI specification and many components of the library will be quite +confusing to those unfamiliar with the finer details of the IPMI +specification. It is recommended most use the higher level libraries +described above. + + A more detailed description of the available FreeIPMI libraries can +be found in the `freeipmi-libraries.txt' document (you can find it on +the website here: +`http://www.gnu.org/software/freeipmi/freeipmi-libraries.txt'). + + +File: freeipmi-faq.info, Node: Where can I get additional help or support?, Prev: How do I program with the FreeIPMI libraries?, Up: Top + +0.27 Where can I get additional help or support? +================================================ + +For help, please email the mailing list. + + + +Tag Table: +Node: Top692 +Node: What is IPMI?2252 +Node: What is FreeIPMI?3398 +Node: How did FreeIPMI start?3935 +Node: What operating systems does FreeIPMI run on?5303 +Node: FreeIPMI vs OpenIPMI vs Ipmitool vs Ipmiutil6059 +Node: What is special about FreeIPMI?6867 +Node: Does my system support IPMI?13912 +Node: How do I compile FreeIPMI?15913 +Node: libgcrypt requirement16278 +Node: x86-64 Compilation16921 +Node: Installing FreeIPMI on FreeBSD17607 +Node: What are some IPMI terminology or acronyms I should be aware of?18250 +Node: What setup is needed for FreeIPMI to communicate over LAN?21269 +Node: What setup is needed for Serial over LAN (SOL) or Ipmiconsole?21865 +Node: Do I need to install or configure a driver to perform IPMI inband?23779 +Node: SSIF Driver Configuration25492 +Node: How do you setup Powerman with ipmipower?27092 +Node: How do you setup Conman with ipmiconsole or libipmiconsole?30386 +Node: How do you setup Ganglia or Nagios to monitor IPMI sensors via FreeIPMI?32394 +Node: Why are times reported by FreeIPMI tools wrong?33039 +Node: Why is the IPMI kernel driver faster than the KCS driver?34029 +Node: Why is the output from FreeIPMI different than another software?35033 +Node: Why are there so many IPMI compliance bugs?40439 +Node: How do I get around an IPMI compliance bug on my motherboard?41540 +Node: Why am I seeing so many 'internal IPMI error' or 'driver busy' messages?42357 +Node: How do I program with the FreeIPMI libraries?45484 +Node: Where can I get additional help or support?46831 + +End Tag Table diff --git a/source/freeipmi/usr/share/man/man3/libfreeipmi.3.gz b/source/freeipmi/usr/share/man/man3/libfreeipmi.3.gz new file mode 100644 index 00000000..2149f1eb Binary files /dev/null and b/source/freeipmi/usr/share/man/man3/libfreeipmi.3.gz differ diff --git a/source/freeipmi/usr/share/man/man3/libipmiconsole.3.gz b/source/freeipmi/usr/share/man/man3/libipmiconsole.3.gz new file mode 100644 index 00000000..2982429b Binary files /dev/null and b/source/freeipmi/usr/share/man/man3/libipmiconsole.3.gz differ diff --git a/source/freeipmi/usr/share/man/man3/libipmidetect.3.gz b/source/freeipmi/usr/share/man/man3/libipmidetect.3.gz new file mode 100644 index 00000000..080d8e2f Binary files /dev/null and b/source/freeipmi/usr/share/man/man3/libipmidetect.3.gz differ diff --git a/source/freeipmi/usr/share/man/man3/libipmimonitoring.3.gz b/source/freeipmi/usr/share/man/man3/libipmimonitoring.3.gz new file mode 100644 index 00000000..43915917 Binary files /dev/null and b/source/freeipmi/usr/share/man/man3/libipmimonitoring.3.gz differ diff --git a/source/freeipmi/usr/share/man/man5/bmc-config.conf.5.gz b/source/freeipmi/usr/share/man/man5/bmc-config.conf.5.gz new file mode 100644 index 00000000..6cc0e74f Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/bmc-config.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/freeipmi.conf.5.gz b/source/freeipmi/usr/share/man/man5/freeipmi.conf.5.gz new file mode 100644 index 00000000..3bd7a71a Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/freeipmi.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/freeipmi_interpret_sel.conf.5.gz b/source/freeipmi/usr/share/man/man5/freeipmi_interpret_sel.conf.5.gz new file mode 100644 index 00000000..a417ddcc Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/freeipmi_interpret_sel.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/freeipmi_interpret_sensor.conf.5.gz b/source/freeipmi/usr/share/man/man5/freeipmi_interpret_sensor.conf.5.gz new file mode 100644 index 00000000..bca50ba7 Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/freeipmi_interpret_sensor.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmi-config.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmi-config.conf.5.gz new file mode 100644 index 00000000..1b3727ad Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmi-config.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmi_monitoring_sensors.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmi_monitoring_sensors.conf.5.gz new file mode 100644 index 00000000..c120bce4 Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmi_monitoring_sensors.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmiconsole.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmiconsole.conf.5.gz new file mode 100644 index 00000000..464f47bd Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmiconsole.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmidetect.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmidetect.conf.5.gz new file mode 100644 index 00000000..0e78c0af Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmidetect.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmidetectd.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmidetectd.conf.5.gz new file mode 100644 index 00000000..467a190d Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmidetectd.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmimonitoring.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmimonitoring.conf.5.gz new file mode 100644 index 00000000..19b44565 Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmimonitoring.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmimonitoring_sensors.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmimonitoring_sensors.conf.5.gz new file mode 100644 index 00000000..0d32e2e6 Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmimonitoring_sensors.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmipower.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmipower.conf.5.gz new file mode 100644 index 00000000..07de0912 Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmipower.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/ipmiseld.conf.5.gz b/source/freeipmi/usr/share/man/man5/ipmiseld.conf.5.gz new file mode 100644 index 00000000..866c1215 Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/ipmiseld.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/libipmiconsole.conf.5.gz b/source/freeipmi/usr/share/man/man5/libipmiconsole.conf.5.gz new file mode 100644 index 00000000..edcfdc0a Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/libipmiconsole.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man5/libipmimonitoring.conf.5.gz b/source/freeipmi/usr/share/man/man5/libipmimonitoring.conf.5.gz new file mode 100644 index 00000000..97e9c0d6 Binary files /dev/null and b/source/freeipmi/usr/share/man/man5/libipmimonitoring.conf.5.gz differ diff --git a/source/freeipmi/usr/share/man/man7/freeipmi.7.gz b/source/freeipmi/usr/share/man/man7/freeipmi.7.gz new file mode 100644 index 00000000..2f6c92eb Binary files /dev/null and b/source/freeipmi/usr/share/man/man7/freeipmi.7.gz differ diff --git a/source/freeipmi/usr/share/man/man8/bmc-config.8.gz b/source/freeipmi/usr/share/man/man8/bmc-config.8.gz new file mode 100644 index 00000000..6eaf148a Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/bmc-config.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/bmc-device.8.gz b/source/freeipmi/usr/share/man/man8/bmc-device.8.gz new file mode 100644 index 00000000..f53fe8b0 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/bmc-device.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/bmc-info.8.gz b/source/freeipmi/usr/share/man/man8/bmc-info.8.gz new file mode 100644 index 00000000..abb1a26a Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/bmc-info.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/bmc-watchdog.8.gz b/source/freeipmi/usr/share/man/man8/bmc-watchdog.8.gz new file mode 100644 index 00000000..9e6b9254 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/bmc-watchdog.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-chassis-config.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-chassis-config.8.gz new file mode 100644 index 00000000..ddaebf6d Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-chassis-config.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-chassis.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-chassis.8.gz new file mode 100644 index 00000000..68c3e870 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-chassis.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-config.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-config.8.gz new file mode 100644 index 00000000..00e7d934 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-config.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-console.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-console.8.gz new file mode 100644 index 00000000..aaeffa2c Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-console.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-dcmi.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-dcmi.8.gz new file mode 100644 index 00000000..baee04ac Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-dcmi.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-detect.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-detect.8.gz new file mode 100644 index 00000000..71c8ae0d Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-detect.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-fru.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-fru.8.gz new file mode 100644 index 00000000..7a0979cd Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-fru.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-locate.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-locate.8.gz new file mode 100644 index 00000000..d463e08b Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-locate.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-oem.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-oem.8.gz new file mode 100644 index 00000000..8517966a Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-oem.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-pef-config.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-pef-config.8.gz new file mode 100644 index 00000000..2ca4f73a Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-pef-config.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-pet.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-pet.8.gz new file mode 100644 index 00000000..88e6354d Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-pet.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-ping.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-ping.8.gz new file mode 100644 index 00000000..b99ee491 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-ping.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-power.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-power.8.gz new file mode 100644 index 00000000..b6aa2142 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-power.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-raw.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-raw.8.gz new file mode 100644 index 00000000..d9f4ab21 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-raw.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-sel.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-sel.8.gz new file mode 100644 index 00000000..da15f942 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-sel.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-sensors-config.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-sensors-config.8.gz new file mode 100644 index 00000000..02e46953 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-sensors-config.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmi-sensors.8.gz b/source/freeipmi/usr/share/man/man8/ipmi-sensors.8.gz new file mode 100644 index 00000000..e61b3a11 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmi-sensors.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmiconsole.8.gz b/source/freeipmi/usr/share/man/man8/ipmiconsole.8.gz new file mode 100644 index 00000000..6d35bb04 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmiconsole.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmidetect.8.gz b/source/freeipmi/usr/share/man/man8/ipmidetect.8.gz new file mode 100644 index 00000000..8a4d0178 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmidetect.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmidetectd.8.gz b/source/freeipmi/usr/share/man/man8/ipmidetectd.8.gz new file mode 100644 index 00000000..9da54ffe Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmidetectd.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmimonitoring.8.gz b/source/freeipmi/usr/share/man/man8/ipmimonitoring.8.gz new file mode 100644 index 00000000..7d7e3f44 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmimonitoring.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmiping.8.gz b/source/freeipmi/usr/share/man/man8/ipmiping.8.gz new file mode 100644 index 00000000..09c218eb Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmiping.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmipower.8.gz b/source/freeipmi/usr/share/man/man8/ipmipower.8.gz new file mode 100644 index 00000000..2e748647 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmipower.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/ipmiseld.8.gz b/source/freeipmi/usr/share/man/man8/ipmiseld.8.gz new file mode 100644 index 00000000..e6066bc4 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/ipmiseld.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/pef-config.8.gz b/source/freeipmi/usr/share/man/man8/pef-config.8.gz new file mode 100644 index 00000000..6a5f3d92 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/pef-config.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/rmcp-ping.8.gz b/source/freeipmi/usr/share/man/man8/rmcp-ping.8.gz new file mode 100644 index 00000000..cab4356f Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/rmcp-ping.8.gz differ diff --git a/source/freeipmi/usr/share/man/man8/rmcpping.8.gz b/source/freeipmi/usr/share/man/man8/rmcpping.8.gz new file mode 100644 index 00000000..f4ab6fe0 Binary files /dev/null and b/source/freeipmi/usr/share/man/man8/rmcpping.8.gz differ diff --git a/source/freeipmi/var/lib/freeipmi/ipckey b/source/freeipmi/var/lib/freeipmi/ipckey new file mode 100644 index 00000000..e69de29b