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); }