Beispiel #1
0
static int	close_inactive_host(zbx_ipmi_host_t *h)
{
	const char	*__function_name = "close_inactive_host";

	char		domain_name[11];	/* max int length */
	struct timeval	tv;
	int		ret = FAIL;

	zabbix_log(LOG_LEVEL_DEBUG, "In %s(): %s", __function_name, h->ip);

	zbx_snprintf(domain_name, sizeof(domain_name), "%d", h->domain_id);

	ipmi_domain_iterate_domains(domains_iterate_cb, domain_name);

	h->done = 0;
	domain_close_ok = 0;
	ipmi_domain_pointer_cb(domain_id_ptr, domain_close_cb, h);

	if (1 == domain_close_ok)
	{
		tv.tv_sec = 10;
		tv.tv_usec = 0;

		while (0 == h->done)
			os_hnd->perform_one_op(os_hnd, &tv);

		free_ipmi_connection(h);

		ret = SUCCEED;
	}

	zabbix_log(LOG_LEVEL_DEBUG, "End of %s():%s", __function_name, zbx_result_string(ret));

	return ret;
}
Beispiel #2
0
void ohoi_close_connection(ipmi_domain_id_t domain_id, void *user_data)
{
	int rv, close_flag = 0;

	dbg("ohoi_close_connection");

	rv = ipmi_domain_pointer_cb(domain_id, close_connection, &close_flag);
	
	if (rv) {
		dbg("ipmi_domain_pointer_cb failed!");
		return;
	}

	/* Removed while(!close_flag)/sel_select loop, fix for bug 1029028. */
	sleep(1);   
}
Beispiel #3
0
void ohoi_close_connection(ipmi_domain_id_t domain_id, void *user_data)
{
	struct oh_handler_state *handler = (struct oh_handler_state *)user_data;
	struct ohoi_handler *ipmi_handler = (struct ohoi_handler *)handler->data;
	int rv;

	trace_ipmi("ohoi_close_connection");

	rv = ipmi_domain_pointer_cb(domain_id, close_connection, ipmi_handler);
	
	if (rv) {
		err("ipmi_domain_pointer_cb failed!");
		return;
	}

	while (ipmi_handler->fully_up != 0) {
		sel_select(ipmi_handler->ohoi_sel, NULL, 0, NULL, NULL);
	}
}
Beispiel #4
0
int ipmicmd_mv(struct ohoi_handler *ipmi_handler,
               uchar cmd,
	       uchar netfn,
	       uchar lun,
	       uchar *pdata,
	       uchar sdata, 
	       uchar *presp,
	       int sresp,
	       int *rlen)
{
	ipmicmd_mv_arg_t info;
	int rv;
	
	info.cmd = cmd;
	info.netfn = netfn;
	info.lun = lun;
	info.pdata = pdata;
	info.sdata = sdata;
	info.presp = presp;
	info.sresp = sresp;
	info.rlen = rlen;
	info.rv = 0;
	info.done = 0;
	
	rv = ipmi_domain_pointer_cb(ipmi_handler->domain_id,
					ipmicmd_mv_cb, &info);
	if (rv != 0) {
		dbg("ipmi_domain_pointer_cb = %d", rv);
		return SA_ERR_HPI_BUSY;
	}
	rv = ohoi_loop(&info.done, ipmi_handler);
	if (rv != SA_OK) {
		dbg("ohoi_loop = %d", rv);
		return rv;
	}
	return info.rv;
}