亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ipmilan_command.c

?? linux集群服務器軟件代碼包
?? C
字號:
/* $Id: ipmilan_command.c,v 1.8 2005/01/31 09:45:31 sunjd Exp $ *//* * This program is largely based on the ipmicmd.c program that's part of OpenIPMI package. *  * Copyright Intel Corp.  * Yixiong.Zou@intel.com */#include <stdio.h>#include <stdlib.h> /* malloc() */#include <unistd.h> /* getopt() */#include <string.h> /* strerror() */#include <netdb.h> /* gethostbyname() */#include <sys/types.h>#include <sys/socket.h>#include <OpenIPMI/selector.h>#include <OpenIPMI/ipmi_conn.h>#include <OpenIPMI/ipmi_lan.h>#include <OpenIPMI/ipmi_smi.h>#include <OpenIPMI/ipmi_auth.h>#include <OpenIPMI/ipmi_msgbits.h>#include <OpenIPMI/ipmi_posix.h>#include "ipmilan.h"#include <stonith/stonith.h>#include <clplumbing/cl_log.h>#include <pils/plugin.h>extern const PILPluginImports*  PluginImports;/* #define DUMP_MSG 0 */#define OPERATION_TIME_OUT 10os_handler_t *os_hnd;selector_t *os_sel;extern os_handler_t ipmi_os_cb_handlers;typedef enum ipmi_status {	/*	IPMI_CONNECTION_FAILURE,	IPMI_SEND_FAILURE,	IPMI_BAD_REQUEST,	IPMI_REQUEST_FAILED,	IPMI_TIME_OUT,	*/	IPMI_RUNNING = 99,} ipmi_status_t;static ipmi_status_t gstatus;typedef enum chassis_control_request {	POWER_DOWN = 0X00,	POWER_UP = 0X01,	POWER_CYCLE = 0X02,	HARD_RESET = 0X03,	PULSE_DIAGNOSTIC_INTERRUPT = 0X04,	SOFT_SHUTDOWN = 0X05} chassis_control_request_t;void dump_msg_data(ipmi_msg_t *msg, ipmi_addr_t *addr, char *type);int rsp_handler(ipmi_con_t *ipmi, ipmi_msgi_t *rsp);void send_ipmi_cmd(ipmi_con_t *con, int request);void timed_out(selector_t *sel, sel_timer_t *timer, void *data);void timed_out(selector_t  *sel, sel_timer_t *timer, void *data){	PILCallLog(PluginImports->log,PIL_CRIT, "IPMI operation timed out... :(\n");	gstatus = S_TIMEOUT;}voiddump_msg_data(ipmi_msg_t *msg, ipmi_addr_t *addr, char *type){	ipmi_system_interface_addr_t *smi_addr = NULL;	int i;	ipmi_ipmb_addr_t *ipmb_addr = NULL;	if (addr->addr_type == IPMI_SYSTEM_INTERFACE_ADDR_TYPE) {		smi_addr = (struct ipmi_system_interface_addr *) addr;	} else if ((addr->addr_type == IPMI_IPMB_ADDR_TYPE) 			|| (addr->addr_type == IPMI_IPMB_BROADCAST_ADDR_TYPE)) {		ipmb_addr = (struct ipmi_ipmb_addr *) addr;	}	if (smi_addr) {		fprintf(stderr, "%2.2x %2.2x %2.2x %2.2x ", 			addr->channel,			msg->netfn,			smi_addr->lun,			msg->cmd);	} else {		fprintf(stderr, "%2.2x %2.2x %2.2x %2.2x ", 			addr->channel,			msg->netfn,			ipmb_addr->lun,			msg->cmd);	}	for (i = 0; i < msg->data_len; i++) {		if (((i%16) == 0) && (i != 0)) {			printf("\n            ");		}		fprintf(stderr, "%2.2x ", msg->data[i]);	}	fprintf(stderr, "\n");}/* * This function gets called after the response comes back * from the IPMI device.  *  * Some IPMI device does not return success, 0x00, to the  * remote node when the power-reset was issued. *  * The host who sent the ipmi cmd might get a 0xc3, * a timeout instead.  This creates problems for  * STONITH operation, where status is critical. :(  *  * Right now I am only checking 0xc3 as the return. * If your IPMI device returns some wired code after  * reset, you might want to add it in this code block. * */intrsp_handler(ipmi_con_t *ipmi, ipmi_msgi_t *rsp){	int rv;	int * request;	request = (int *) rsp->data1;#if 0	dump_msg_data(rsp, addr, NULL);#endif	rv = rsp->data[0];  	/* some IPMI device might not issue 0x00, success, for reset command.	   instead, a 0xc3, timeout, is returned. */	if (rv == 0x00 || 		(rv == 0xc3 && *request <= ST_POWEROFF && *request >= ST_GENERIC_RESET ) ) {		gstatus = S_OK;	} else {		gstatus = S_RESETFAIL;	}	free(request);	return gstatus;}voidsend_ipmi_cmd(ipmi_con_t *con, int request){	ipmi_addr_t addr;	unsigned int addr_len;	ipmi_msg_t msg;	struct ipmi_system_interface_addr *si;	int rv;	ipmi_msgi_t msgi;	/* chassis control command request is only 1 byte long */	unsigned char cc_data = POWER_CYCLE; 	si = (void *) &addr;	si->lun = 0x00;	si->channel = IPMI_BMC_CHANNEL;	si->addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;	addr_len = sizeof(*si);	msg.netfn = IPMI_CHASSIS_NETFN;	msg.cmd = IPMI_CHASSIS_CONTROL_CMD;	msg.data = &cc_data;	msg.data_len = 1;	switch (request) {		case ST_POWERON:			cc_data = POWER_DOWN;			break;		case ST_POWEROFF:			cc_data = POWER_UP;			break;		case ST_GENERIC_RESET:			cc_data = POWER_CYCLE;			break;		case ST_IPMI_STATUS:			msg.netfn = IPMI_APP_NETFN;			msg.cmd = IPMI_GET_DEVICE_ID_CMD;			msg.data = NULL;			msg.data_len = 0;			break;		default:			gstatus = S_INVAL;			return;	}	msgi.data1 = (int *) malloc(sizeof(int));	*((int *)msgi.data1) = request;	rv = con->send_command(con, &addr, addr_len, &msg, rsp_handler, &msgi);	if (rv == -1) {		PILCallLog(PluginImports->log,PIL_CRIT, "Error sending IPMI command: %x\n", rv);		gstatus = S_ACCESS;	}	return;}static voidcon_changed_handler(ipmi_con_t *ipmi,			int err,			unsigned int port_num,			int still_connected,			void *cb_data){	int * request;	if (err) {		PILCallLog(PluginImports->log,PIL_CRIT, "Unable to setup connection: %x\n", err);		return;	}	request = (int *) cb_data;	send_ipmi_cmd(ipmi, *request);}static intsetup_ipmi_conn(struct ipmilanHostInfo * host, int request){	int rv;	struct hostent *ent;	struct in_addr lan_addr[2];	int lan_port[2];	int num_addr = 1;	int authtype = 0;	int privilege = 0;	char username[17];	char password[17];	static ipmi_con_t *con;	sel_timer_t * timer;	struct timeval timeout;	os_hnd = ipmi_posix_get_os_handler();	if (!os_hnd) {	    	PILCallLog(PluginImports->log,PIL_CRIT, "ipmi_smi_setup_con: Unable to allocate os handler");		return 1;	}	rv = sel_alloc_selector(os_hnd, &os_sel);	if (rv) {		PILCallLog(PluginImports->log,PIL_CRIT, "Could not alloctate selector\n");		return rv;	}    	ipmi_posix_os_handler_set_sel(os_hnd, os_sel);	rv = ipmi_init(os_hnd);	if (rv) {		PILCallLog(PluginImports->log,PIL_CRIT, "ipmi_init erro: %d ", rv);		return rv;	}	ent = gethostbyname(host->ipaddr);	if (!ent) {		PILCallLog(PluginImports->log,PIL_CRIT, "gethostbyname failed: %s\n", strerror(h_errno));		return 1;	}	memcpy(&lan_addr[0], ent->h_addr_list[0], ent->h_length);	lan_port[0] = host->portnumber;	lan_port[1] = 0;	authtype = host->authtype;	privilege = host->privilege;	memcpy(username, host->username, sizeof(username));	memcpy(password, host->password, sizeof(password));	rv = ipmi_lan_setup_con(lan_addr, lan_port, num_addr, 				authtype, privilege,				username, strlen(username),				password, strlen(password),				os_hnd, os_sel,				&con);	if (rv) {		PILCallLog(PluginImports->log,PIL_CRIT, "ipmi_lan_setup_con: %s\n", strerror(rv));		return S_ACCESS;	}	con->set_con_change_handler(con, con_changed_handler, &request);	gstatus = IPMI_RUNNING;	rv = con->start_con(con);	if (rv) {		PILCallLog(PluginImports->log,PIL_CRIT, "Could not start IPMI connection: %x\n", rv);		gstatus = S_BADCONFIG;		return rv;	}	gettimeofday(&timeout, NULL);	timeout.tv_sec += OPERATION_TIME_OUT;	timeout.tv_usec += 0;	sel_alloc_timer(os_sel, timed_out, NULL, &timer);	sel_start_timer(timer, &timeout);        while (1) {                rv = sel_select(os_sel, NULL, 0, NULL, NULL);		if (gstatus != IPMI_RUNNING) {			break;		}        }	sel_free_timer(timer);	con->close_connection(con);	ipmi_shutdown();	return gstatus;}intdo_ipmi_cmd(struct ipmilanHostInfo * host, int request){	return setup_ipmi_conn(host, request);}voidposix_vlog(char *format, enum ipmi_log_type_e log_type, va_list ap){    int do_nl = 1;     switch(log_type)    {        case IPMI_LOG_INFO:            PILCallLog(PluginImports->log,PIL_INFO, "INFO: ");            break;                                                                                                                                                                     case IPMI_LOG_WARNING:            PILCallLog(PluginImports->log,PIL_INFO, "WARN: ");            break;                                                                                                                                                                     case IPMI_LOG_SEVERE:            PILCallLog(PluginImports->log,PIL_INFO, "SEVR: ");            break;                                                                                                                                                                     case IPMI_LOG_FATAL:            PILCallLog(PluginImports->log,PIL_INFO, "FATL: ");            break;                                                                                                                                                                     case IPMI_LOG_ERR_INFO:            PILCallLog(PluginImports->log,PIL_INFO, "EINF: ");            break;                                                                                                                                                                     case IPMI_LOG_DEBUG_START:            do_nl = 0;            /* FALLTHROUGH */        case IPMI_LOG_DEBUG:            PILCallLog(PluginImports->log,PIL_INFO, "DEBG: ");            break;                                                                                                                                                                     case IPMI_LOG_DEBUG_CONT:            do_nl = 0;            /* FALLTHROUGH */        case IPMI_LOG_DEBUG_END:            break;    }                                                                                                                                                             }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区av电影| www.综合网.com| 国产精品白丝jk黑袜喷水| 色素色在线综合| 久久精品一区二区三区四区| 亚洲精品国产精品乱码不99| 韩国欧美一区二区| 884aa四虎影成人精品一区| 亚洲国产成人私人影院tom| 日本一区中文字幕 | 亚洲国产成人高清精品| 国产高清精品网站| 欧美一区二区美女| 午夜婷婷国产麻豆精品| 不卡视频一二三| 国产日韩精品一区二区三区在线| 水野朝阳av一区二区三区| 99视频有精品| 中文字幕乱码久久午夜不卡 | 日本不卡不码高清免费观看| 91在线观看下载| 国产欧美视频一区二区| 久久精品久久99精品久久| 欧美亚洲动漫精品| 一区二区视频免费在线观看| 国v精品久久久网| 国产视频一区在线播放| 久色婷婷小香蕉久久| 日韩一区二区影院| 五月婷婷激情综合| 欧美精品电影在线播放| 亚洲成av人片在线观看无码| 在线视频国内自拍亚洲视频| 国产精品久久99| 91尤物视频在线观看| 亚洲欧洲国产日韩| 色婷婷综合视频在线观看| 中文字幕视频一区| 色88888久久久久久影院按摩| 亚洲情趣在线观看| 在线日韩国产精品| 亚洲国产视频一区| 欧美一区二区大片| 裸体歌舞表演一区二区| 久久久久九九视频| 成人黄色软件下载| 亚洲与欧洲av电影| 日韩三级精品电影久久久 | 日韩午夜中文字幕| 国产一区二区成人久久免费影院| 久久久久国色av免费看影院| 成人一区二区三区在线观看| 中文字幕在线免费不卡| 欧美在线观看18| 久久精品国产久精国产| 国产欧美精品日韩区二区麻豆天美| 国产成a人亚洲精品| ㊣最新国产の精品bt伙计久久| 色先锋aa成人| 久久se精品一区精品二区| 久久精品一区八戒影视| 色哦色哦哦色天天综合| 日本中文字幕一区二区视频| 久久五月婷婷丁香社区| 色综合中文字幕| 日本v片在线高清不卡在线观看| 久久久久久久久久久99999| 色www精品视频在线观看| 美腿丝袜在线亚洲一区| 国产精品家庭影院| 日韩视频一区二区| 在线影视一区二区三区| 韩国毛片一区二区三区| 亚洲免费观看高清完整版在线| 欧美高清hd18日本| 99综合影院在线| 美女性感视频久久| 国产精品久久久久久亚洲毛片| 91久久精品国产91性色tv| 久久99久久久久久久久久久| 亚洲精品视频在线| 国产亚洲精品aa午夜观看| 欧美天堂亚洲电影院在线播放| 国产剧情av麻豆香蕉精品| 午夜精品福利一区二区蜜股av| 国产欧美精品一区二区色综合 | 成人午夜av电影| 五月激情综合网| 亚洲美女屁股眼交| 国产日韩欧美精品一区| 日韩欧美一区二区不卡| 91成人在线免费观看| 国产91对白在线观看九色| 久久99精品久久久久久动态图| 国产在线视频一区二区| 日本中文一区二区三区| 亚洲视频一区在线观看| 欧美国产综合色视频| www成人在线观看| 日韩精品一区国产麻豆| 在线播放91灌醉迷j高跟美女| 在线精品视频一区二区| 99re6这里只有精品视频在线观看| 国产精品亚洲综合一区在线观看| 美脚の诱脚舐め脚责91| 日韩在线一区二区| 视频一区二区三区入口| 亚洲最大成人网4388xx| 一区二区三区精品在线观看| 国产精品国产三级国产普通话99 | 亚洲午夜日本在线观看| 一区二区三区精品| 一区二区三区在线观看动漫| 中文字幕一区三区| 亚洲人成影院在线观看| 亚洲视频在线一区观看| 一区二区三区欧美激情| 亚洲欧美日韩国产综合| 一区二区三区在线不卡| 亚洲综合免费观看高清完整版在线| 亚洲人精品一区| 亚洲第一av色| 蜜桃视频一区二区三区| 色综合咪咪久久| 亚洲综合一区二区| 欧美精品一区二区久久婷婷| 欧美一级一区二区| 日韩欧美国产成人一区二区| 欧美v亚洲v综合ⅴ国产v| 精品国偷自产国产一区| 国产亚洲精品超碰| 亚洲欧洲av色图| 亚洲第一在线综合网站| 日韩精品电影在线| 国产一区二区三区在线观看免费 | 99精品久久只有精品| 99re热这里只有精品视频| 色综合天天在线| 欧美日韩国产不卡| 久久色视频免费观看| 国产精品久久久久久亚洲伦| 一区二区三区免费在线观看| 日韩av电影天堂| 国产精品亚洲а∨天堂免在线| 93久久精品日日躁夜夜躁欧美| 欧美婷婷六月丁香综合色| 精品人在线二区三区| 中文成人综合网| 天天综合色天天| 国产成a人亚洲| 欧美午夜宅男影院| 国产亚洲一区二区三区四区 | 日韩欧美国产一区二区三区| 日本一区二区三区dvd视频在线| 一区二区三区中文字幕在线观看| 奇米影视在线99精品| 国产69精品久久久久777| 欧美日韩大陆一区二区| 国产精品女主播在线观看| 天天射综合影视| 成人性视频免费网站| 91麻豆精品国产91| 亚洲色图丝袜美腿| 久草这里只有精品视频| 欧美在线观看18| 中文无字幕一区二区三区| 视频一区二区三区中文字幕| 成+人+亚洲+综合天堂| 91精品国产91热久久久做人人 | 国产不卡视频一区二区三区| 911精品国产一区二区在线| 国产精品美女久久久久高潮| 蜜臀av性久久久久蜜臀aⅴ| 色香蕉久久蜜桃| 欧美高清在线视频| 极品美女销魂一区二区三区 | 日韩欧美高清dvd碟片| 亚洲一级二级在线| 成人av手机在线观看| 欧美tk丨vk视频| 日韩黄色一级片| 在线观看精品一区| 亚洲欧洲日韩在线| 99视频在线精品| 国产精品视频一二三| 国产一区二区三区在线看麻豆| 欧美一区二区三区电影| 亚洲成人av福利| 欧美视频在线一区| 亚洲欧美激情插 | 日本电影欧美片| 亚洲欧美综合另类在线卡通| 国产福利精品一区| 久久精品人人做人人综合| 精品在线一区二区三区| 日韩午夜在线影院| 精品一区精品二区高清| 日韩视频在线一区二区| 免费一级欧美片在线观看| 日韩午夜小视频|