Ejemplo n.º 1
0
/*
 * add_alarm_rdrs
 */
static int add_alarm_rdrs(
    struct oh_handler_state *handler,
    SaHpiRptEntryT *rpt,
    ipmi_control_t     *control)
{
    SaHpiResourceIdT   	rid;
    SaHpiEntityPathT        ent;
    SaHpiCtrlDefaultModeT default_mode;
    SaHpiBoolT wo;
    static ipmi_control_id_t   alarm_control_id;  /*save this */
    static int alarms_done = 0;


    if (alarms_done) return 0;  /* only do alarms the first time */
    rid = rpt->ResourceId;
    ent = rpt->ResourceEntity;

    alarm_control_id = ipmi_control_convert_to_id(control);
    wo = (ipmi_control_is_readable(control) == 0);
    default_mode.ReadOnly = (ipmi_control_is_settable(control) != 0);
    default_mode.Mode = SAHPI_CTRL_MODE_AUTO;
    rpt->ResourceCapabilities |=  SAHPI_CAPABILITY_RDR;
    rpt->ResourceCapabilities |=  SAHPI_CAPABILITY_CONTROL;

    add_alarm_rdr("Power Alarm LED", 0, rid, ent,
                  &default_mode, wo, &alarm_control_id, handler);
    add_alarm_rdr("Critical Alarm LED", 1, rid, ent,
                  &default_mode, wo, &alarm_control_id, handler);
    add_alarm_rdr("Major Alarm LED", 2, rid, ent,
                  &default_mode, wo, &alarm_control_id, handler);
    add_alarm_rdr("Minor Alarm LED",   3, rid, ent,
                  &default_mode, wo, &alarm_control_id, handler);
    alarms_done = 1;
    return 0;
}
Ejemplo n.º 2
0
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));
}
Ejemplo n.º 3
0
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);
}