/* callback function invoked from OpenIPMI */ static void setup_done(ipmi_domain_t *domain, int err, unsigned int conn_num, unsigned int port_num, int still_connected, void *cb_data) { const char *__function_name = "setup_done"; int ret; zbx_ipmi_host_t *h = cb_data; zabbix_log(LOG_LEVEL_DEBUG, "In %s() phost:%p host:'[%s]:%d'", __function_name, h, h->ip, h->port); if (0 != err) { zabbix_log(LOG_LEVEL_DEBUG, "%s() fail: %s", __function_name, zbx_strerror(err)); h->err = zbx_dsprintf(h->err, "cannot connect to IPMI host: %s", zbx_strerror(err)); h->ret = NETWORK_ERROR; if (0 != (ret = ipmi_domain_close(domain, domain_closed, h))) zabbix_log(LOG_LEVEL_DEBUG, "cannot close IPMI domain: [0x%x]", ret); goto out; } if (0 != (ret = ipmi_domain_add_entity_update_handler(domain, entity_change, h))) zabbix_log(LOG_LEVEL_DEBUG, "ipmi_domain_add_entity_update_handler() return error: [0x%x]", ret); out: zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __function_name, zbx_result_string(h->ret)); }
/* After we have established connection to domain, this function get called At this time, we can do whatever things we want to do. Herr we want to search all entities in the system */ void setup_done(ipmi_domain_t *domain, int err, unsigned int conn_num, unsigned int port_num, int still_connected, void *user_data) { int rv; /* Register a callback functin entity_change. When a new entities is created, entity_change is called */ rv = ipmi_domain_add_entity_update_handler(domain, entity_change, domain); if (rv) { printf("ipmi_domain_add_entity_update_handler return error: %d\n", rv); return; } }
static int init_domain_handlers(ipmi_domain_t *domain, void *user_data) { struct oh_handler_state *handler = user_data; char dmn_name[IPMI_DOMAIN_NAME_LEN]; int rv; int ret = 0; rv = ipmi_domain_enable_events(domain); if (rv) { fprintf(stderr, "ipmi_domain_enable_events return error %d\n", rv); if (ret == 0) { ret = rv; } } rv = ipmi_domain_add_entity_update_handler(domain, ohoi_entity_event, handler); if (rv) { fprintf(stderr, "ipmi_domain_add_entity_update_handler error %d\n", rv); if (ret == 0) { ret = rv; } } rv = ipmi_domain_add_mc_updated_handler(domain, ohoi_mc_event, handler); if (rv) { fprintf(stderr, "ipmi_domain_register_mc_update_handler return error: %d\n", rv); if (ret == 0) { ret = rv; } } if (ret) { ipmi_domain_get_name(domain, dmn_name, IPMI_DOMAIN_NAME_LEN); fprintf(stderr, "Could not initialize ipmi domain %s\n", dmn_name); } return ret; }
static void setup_done(ipmi_domain_t *domain, int err, unsigned int conn_num, unsigned int port_num, int still_connected, void *cb_data) { int ret; zbx_ipmi_host_t *h = cb_data; zabbix_log(LOG_LEVEL_DEBUG, "In setup_done() [%s]:%d", h->ip, h->port); if (err) { h->err = zbx_dsprintf(h->err, "Cannot connect to IPMI host. Error 0x%x %s", err, strerror(err)); h->ret = NETWORK_ERROR; if (0 != (ret = ipmi_domain_close(domain, domain_closed, h))) zabbix_log(LOG_LEVEL_DEBUG, "Cannot close IPMI domain. Error 0x%x", ret); return; } if (0 != (ret = ipmi_domain_add_entity_update_handler(domain, entity_change, h))) zabbix_log(LOG_LEVEL_DEBUG, "ipmi_domain_add_entity_update_handler() return error: 0x%x", ret); }
void ohoi_setup_done(ipmi_domain_t *domain, void *user_data) { struct oh_handler_state *handler = user_data; struct ohoi_handler *ipmi_handler = handler->data; int rv; rv = ipmi_domain_enable_events(domain); if (rv) { err("ipmi_domain_enable_events return error %d", rv); } rv = ipmi_domain_add_entity_update_handler(domain, ohoi_entity_event, handler); if (rv) err("ipmi_bmc_iterate_entities return error"); rv = ipmi_domain_set_main_SDRs_read_handler(domain, SDRs_read_done, &ipmi_handler->SDRs_read_done); if (rv) err("ipmi_domain_set_main_SDRs_read_handler return error: %d\n", rv); rv = ipmi_domain_set_bus_scan_handler(domain, bus_scan_done, ipmi_handler); if (rv) err("ipmi_domain_set_bus_scan_handler return error: %d\n", rv); rv = ipmi_domain_add_mc_updated_handler(domain, ohoi_mc_event, handler); if (rv) err("ipmi_domain_register_mc_update_handler return error: %d\n", rv); }