Exemple #1
0
static zbx_ipmi_control_t	*allocate_ipmi_control(zbx_ipmi_host_t *h, ipmi_control_t *control)
{
	size_t			sz;
	zbx_ipmi_control_t	*c;
	char			*c_name = NULL;

	sz = (size_t)ipmi_control_get_id_length(control);
	c_name = zbx_malloc(c_name, sz + 1);
	ipmi_control_get_id(control, c_name, sz);

	zabbix_log(LOG_LEVEL_DEBUG, "In allocate_ipmi_control() %s@[%s]:%d",
			c_name, h->ip, h->port);

	h->control_count++;
	sz = h->control_count * sizeof(zbx_ipmi_control_t);

	if (NULL == h->controls)
		h->controls = zbx_malloc(h->controls, sz);
	else
		h->controls = zbx_realloc(h->controls, sz);

	c = &h->controls[h->control_count - 1];

	memset(c, 0, sizeof(zbx_ipmi_control_t));

	c->control = control;
	c->c_name = c_name;
	c->num_values = ipmi_control_get_num_vals(control);
	sz = sizeof(int) * c->num_values;
	c->val = zbx_malloc(c->val, sz);
	memset(c->val, 0, sz);

	return c;
}
static void set_idstring(ipmi_control_t *control,
                         SaHpiRdrT		*rdr)
{
    char		name[SAHPI_MAX_TEXT_BUFFER_LENGTH];
    SaHpiTextTypeT	data_type;
    int		name_len;

    memset(name, '\0' ,SAHPI_MAX_TEXT_BUFFER_LENGTH);
    ipmi_control_get_id(control, name, SAHPI_MAX_TEXT_BUFFER_LENGTH);
    name_len = ipmi_control_get_id_length(control);
    if (name_len >= SAHPI_MAX_TEXT_BUFFER_LENGTH)
        name_len = SAHPI_MAX_TEXT_BUFFER_LENGTH - 1;
    data_type = convert_to_hpi_data_type(ipmi_control_get_id_type(control));
    rdr->IdString.DataType = data_type;
    rdr->IdString.Language = SAHPI_LANG_ENGLISH;
    rdr->IdString.DataLength = name_len;

    memset(rdr->IdString.Data, 0, SAHPI_MAX_TEXT_BUFFER_LENGTH);
    memcpy(rdr->IdString.Data, name, name_len);
}
static void add_control_event_rdr(ipmi_control_t		*control, 
				 SaHpiRdrT		*rdr,
				 SaHpiEntityPathT	parent_ep,
				 SaHpiResourceIdT	res_id)
{
	char		name[SAHPI_MAX_TEXT_BUFFER_LENGTH];
	SaHpiTextTypeT	data_type;
	int		name_len;

	memset(name, '\0' ,SAHPI_MAX_TEXT_BUFFER_LENGTH);
	rdr->RecordId = 0;
	rdr->RdrType = SAHPI_CTRL_RDR;
	//rdr->Entity.Entry[0].EntityType = (SaHpiEntityTypeT)id;
	//rdr->Entity.Entry[0].EntityLocation = (SaHpiEntityLocationT)instance;
	//rdr->Entity.Entry[1].EntityType = 0;
	//rdr->Entity.Entry[1].EntityLocation = 0;
	rdr->Entity = parent_ep;

	/* append ep */
	//oh_encode_entitypath(entity_root, &rdr_ep);

	//oh_concat_ep (&rdr->Entity, &rdr_ep);

	add_control_event_control_rec(control, &rdr->RdrTypeUnion.CtrlRec);

	ipmi_control_get_id(control, name, SAHPI_MAX_TEXT_BUFFER_LENGTH);
	name_len = ipmi_control_get_id_length(control);
	if (name_len >= SAHPI_MAX_TEXT_BUFFER_LENGTH)
		name_len = SAHPI_MAX_TEXT_BUFFER_LENGTH - 1;
	data_type = convert_to_hpi_data_type(ipmi_control_get_id_type(control));
	rdr->IdString.DataType = data_type;
	rdr->IdString.Language = SAHPI_LANG_ENGLISH;
	rdr->IdString.DataLength = name_len;

	memset(rdr->IdString.Data, 0, SAHPI_MAX_TEXT_BUFFER_LENGTH);
	memcpy(rdr->IdString.Data, name, name_len);
}