static void read_ipmi_control(zbx_ipmi_host_t *h, zbx_ipmi_control_t *c) { int ret; struct timeval tv; zabbix_log(LOG_LEVEL_DEBUG, "In read_ipmi_control() %s@[%s]:%d", c->c_name, h->ip, h->port); if (0 == ipmi_control_is_readable(c->control)) { h->err = zbx_dsprintf(h->err, "Control is not readable."); h->ret = NOTSUPPORTED; return; } h->ret = SUCCEED; h->done = 0; if (0 != (ret = ipmi_control_get_val(c->control, got_control_reading, h))) { h->err = zbx_dsprintf(h->err, "Cannot read control %s." " ipmi_control_get_val() return error: 0x%x", c->c_name, ret); h->ret = NOTSUPPORTED; return; } tv.tv_sec = 10; tv.tv_usec = 0; while (0 == h->done) os_hnd->perform_one_op(os_hnd, &tv); }
static void read_ipmi_control(zbx_ipmi_host_t *h, zbx_ipmi_control_t *c) { const char *__function_name = "read_ipmi_control"; int ret; struct timeval tv; zabbix_log(LOG_LEVEL_DEBUG, "In %s() control:'%s@[%s]:%d'", __function_name, c->c_name, h->ip, h->port); if (0 == ipmi_control_is_readable(c->control)) { h->err = zbx_dsprintf(h->err, "control is not readable"); h->ret = NOTSUPPORTED; goto out; } h->ret = SUCCEED; h->done = 0; if (0 != (ret = ipmi_control_get_val(c->control, got_control_reading, h))) { h->err = zbx_dsprintf(h->err, "Cannot read control %s. ipmi_control_get_val() return error: 0x%x", c->c_name, ret); h->ret = NOTSUPPORTED; goto out; } tv.tv_sec = 10; tv.tv_usec = 0; while (0 == h->done) os_hnd->perform_one_op(os_hnd, &tv); out: zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __function_name, zbx_result_string(h->ret)); }
static void _get_control_state(ipmi_control_t *control, void *cb_data) { if (ipmi_control_light_set_with_setting(control)) ipmi_control_get_light(control, __get_control_leds_state, cb_data); else ipmi_control_get_val(control, __get_control_state, cb_data); }
static void get_power_state (ipmi_control_t *ipmi_control, void *cb_data) { struct ohoi_power_info *power_state = cb_data; int rv; rv = ipmi_control_get_val(ipmi_control, get_power_control_val, cb_data); if(rv) { dbg("[power]control_get_val failed"); power_state->err = SA_ERR_HPI_INTERNAL_ERROR; power_state->done = 1; } }
static void get_reset_state(ipmi_control_t *control, void *cb_data) { struct ohoi_reset_info *reset_info = cb_data; int rv; rv = ipmi_control_get_val(control, get_reset_control_val, cb_data); if (rv) { dbg("[reset] control_get_val failed. IPMI error = %i", rv); reset_info->err = SA_ERR_HPI_INTERNAL_ERROR; reset_info->done = 1; } }
static void get_reset_state(ipmi_control_t *control, void *cb_data) { struct ohoi_reset_info *reset_info = cb_data; int rv; rv = ipmi_control_get_val(control, get_reset_control_val, cb_data); if (rv) { //dbg("[reset] control_get_val failed. IPMI error = %i", rv); dbg("This IPMI system has a pulse reset, state is always DEASSERT"); /* OpenIPMI will return an error for this call since pulse resets do not support get_state we will return UNSUPPORTED_API */ *reset_info->state = SAHPI_RESET_DEASSERT; reset_info->err = SA_OK; reset_info->done = 1; } }
static void _get_control_state(ipmi_control_t *control, void *cb_data) { ipmi_control_get_val(control, __get_control_state, cb_data); }