예제 #1
0
/* 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));
}
예제 #2
0
/* 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;
    }
}
예제 #3
0
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;
	
}
예제 #4
0
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);
}
예제 #5
0
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);
	
}