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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? apcsmart.c

?? linux集群服務(wù)器軟件代碼包
?? C
?? 第 1 頁 / 共 2 頁
字號:
intAPC_set_ups_var(int upsfd, const char *cmd, char *newval){	char resp[MAX_STRING];	char orig[MAX_STRING];	int rc;	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	if (((rc = APC_enter_smartmode(upsfd)) != S_OK)	||	((rc = APC_send_cmd(upsfd, cmd)) != S_OK)	||	((rc = APC_recv_rsp(upsfd, orig)) != S_OK)) {			return (rc);	}	if (strcmp(orig, newval) == 0) {		return (S_OK);		/* already set */	}	*resp = '\0';	while (strcmp(resp, orig) != 0) {		if (((rc = APC_send_cmd(upsfd, SWITCH_TO_NEXT_VAL)) != S_OK)		||	((rc = APC_recv_rsp(upsfd, resp)) != S_OK)) {	    			return (rc);		}		if (((rc = APC_enter_smartmode(upsfd)) != S_OK)		||	((rc = APC_send_cmd(upsfd, cmd)) != S_OK)		||	((rc = APC_recv_rsp(upsfd, resp)) != S_OK)) {	    			return (rc);		}		if (strcmp(resp, newval) == 0) {			strcpy(newval, orig);	/* return the old value */			return (S_OK);		/* got it */		}	}	LOG(PIL_CRIT, "%s(): Could not set variable '%s' to %s!"	,	__FUNCTION__, cmd, newval);	LOG(PIL_CRIT, "%s(): This UPS may not support STONITH :-("	,	 __FUNCTION__);	return (S_OOPS);}/* * Initialize the ups */intAPC_init(struct pluginDevice *ad){	int upsfd;	char value[MAX_STRING];	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	/* if ad->upsfd == -1 -> dev configured! */	if(ad->upsfd >= 0 ) {		 return S_OK;	}	/* open serial port and store the fd in ad->upsfd */	if ((upsfd = APC_open_serialport(ad->upsdev, B2400)) == -1) {		return -1;	}	/* switch into smart mode */	if (APC_enter_smartmode(upsfd) != S_OK) {		return -1;	}	/* get the old settings and store them */	strcpy(value, SHUTDOWN_DELAY);	if (APC_set_ups_var(upsfd, CMD_SHUTDOWN_DELAY, value) != S_OK) {		return -1;	}	strcpy(old_shutdown_delay, value);	strcpy(value, WAKEUP_DELAY);	if (APC_set_ups_var(upsfd, CMD_WAKEUP_DELAY, value) != S_OK) {		return (-1);	}	strcpy(old_wakeup_delay, value);	ad->upsfd = upsfd;	return S_OK;}/* * Restore original settings and close the port */voidAPC_deinit( int upsfd ){	APC_enter_smartmode( upsfd );	APC_set_ups_var(upsfd, CMD_SHUTDOWN_DELAY, old_shutdown_delay);	APC_set_ups_var(upsfd, CMD_WAKEUP_DELAY, old_wakeup_delay);	/* close serial port */	APC_close_serialport(upsfd);}static const char**apcsmart_get_confignames(StonithPlugin* sp){	static const char * names[] =  {ST_TTYDEV, ST_HOSTLIST, NULL};	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	return names;}/* * Stash away the config info we've been given... */static intapcsmart_set_config(StonithPlugin * s, StonithNVpair* list){	struct pluginDevice *	ad = (struct pluginDevice*)s;	StonithNamesToGet	namestoget [] =	{	{ST_TTYDEV,	NULL}	,	{ST_HOSTLIST,	NULL}	,	{NULL,		NULL}	};	int			rc;	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	ERRIFWRONGDEV(s, S_OOPS);	if ((rc=OurImports->GetAllValues(namestoget, list)) != S_OK) {		return rc;	}	ad->hostlist =	OurImports->StringToHostList(namestoget[1].s_value);	if (ad->hostlist == NULL) {		LOG(PIL_CRIT,"StringToHostList() failed");		return S_OOPS;	}	for (ad->hostcount = 0; ad->hostlist[ad->hostcount]	;	ad->hostcount++) {		/* Just count */	}	if (access(namestoget[0].s_value, R_OK|W_OK|F_OK) < 0) {		LOG(PIL_CRIT,"Cannot access tty [%s]"		,	namestoget[0].s_value);		return S_BADCONFIG;	}	ad->upsdev = namestoget[0].s_value;	return ad->hostcount ? S_OK : S_BADCONFIG;}/* * return the status for this device  */static intapcsmart_status(StonithPlugin * s){	struct pluginDevice *ad = (struct pluginDevice *) s;	char resp[MAX_STRING];	int rc;	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	ERRIFNOTCONFIGED(s,S_OOPS);	/* get status */	if (((rc = APC_init( ad ) == S_OK)	&&	((rc = APC_send_cmd(ad->upsfd, CMD_GET_STATUS)) == S_OK)	&&	((rc = APC_recv_rsp(ad->upsfd, resp)) == S_OK))) {		return (S_OK);		/* everything ok. */	}	if (Debug) {		LOG(PIL_DEBUG, "%s: failed.", __FUNCTION__);	}	return (rc);}/* * return the list of hosts configured for this device  */static char **apcsmart_hostlist(StonithPlugin * s){	struct pluginDevice *ad = (struct pluginDevice *) s;	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	ERRIFNOTCONFIGED(s,NULL);	return OurImports->CopyHostList((const char **)ad->hostlist);}static gbooleanapcsmart_RegisterBitsSet(struct pluginDevice * ad, int nreg, unsigned bits,	gboolean* waserr){	const char*	reqregs[4] = {"?", "~", "'", "8"};	unsigned	regval;	char		resp[MAX_STRING];	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	if (APC_enter_smartmode(ad->upsfd) != S_OK	||	APC_send_cmd(ad->upsfd, reqregs[nreg]) != S_OK	||	APC_recv_rsp(ad->upsfd, resp) != S_OK	||	(sscanf(resp, "%02x", &regval) != 1)) {		if (waserr){			*waserr = TRUE;		}		return FALSE;	}	if (waserr){		*waserr = FALSE;	}	return ((regval & bits) == bits);}#define	apcsmart_IsPoweredOff(ad, err) apcsmart_RegisterBitsSet(ad,1,0x40,err)#define	apcsmart_ResetHappening(ad,err) apcsmart_RegisterBitsSet(ad,3,0x08,err)static intapcsmart_ReqOnOff(struct pluginDevice * ad, int request){	const char *	cmdstr;	int		rc;	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	cmdstr = (request == ST_POWEROFF ? CMD_OFF : CMD_ON);	/* enter smartmode, send on/off command */	if ((rc =APC_enter_smartmode(ad->upsfd)) != S_OK	||	(rc = APC_send_cmd(ad->upsfd, cmdstr)) != S_OK) {		return rc;	}	sleep(2);	if ((rc = APC_send_cmd(ad->upsfd, cmdstr)) == S_OK) {		gboolean ison;		gboolean waserr;		sleep(1);		ison = !apcsmart_IsPoweredOff(ad, &waserr);		if (waserr) {			return S_RESETFAIL;		}		if (request == ST_POWEROFF) {			return ison ?  S_RESETFAIL : S_OK;		}else{			return ison ?  S_OK : S_RESETFAIL;		}	}	return rc;}/* * reset the host  */static intapcsmart_ReqGenericReset(struct pluginDevice *ad){	char		resp[MAX_STRING];	int		rc = S_RESETFAIL;	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	/* enter smartmode, send reset command */	if (((rc = APC_init(ad)) == S_OK)		&& ((rc = APC_send_cmd(ad->upsfd, CMD_RESET)) == S_OK)		&& ((rc = APC_recv_rsp(ad->upsfd, resp)) == S_OK)		&& (	strcmp(resp, RSP_RESET)  == 0		||	strcmp(resp, RSP_RESET2) == 0)) {		int	maxdelay = atoi(SHUTDOWN_DELAY)+5;		int	j;		for (j=0; j < maxdelay; ++j) {			gboolean	err;			if (apcsmart_ResetHappening(ad, &err)) {				return err ? S_RESETFAIL : S_OK;			}			sleep(1);		}		return S_RESETFAIL;	}else{		LOG(PIL_DEBUG, "APC: rc = %d resp[%s]"		,	rc, resp);		if (rc == S_OK && strcmp(resp, RSP_NA) == 0){			gboolean iserr;			/* This means it's currently powered off */			/* or busy on a previous command... */			if (apcsmart_IsPoweredOff(ad, &iserr)) {				if (iserr) {					return S_RESETFAIL;				}				return apcsmart_ReqOnOff(ad, ST_POWERON);			}		}	}	strcpy(resp, "?");	/* reset failed */	return S_RESETFAIL;}static intapcsmart_req_reset(StonithPlugin * s, int request, const char *host){	char **			hl;	int			b_found=FALSE;	struct pluginDevice *	ad = (struct pluginDevice *) s;	int			rc;	ERRIFNOTCONFIGED(s, S_OOPS);	if (host == NULL) {		LOG(PIL_CRIT, "%s: invalid hostname argument.", __FUNCTION__);		return (S_INVAL);	}    	/* look through the hostlist */	hl = ad->hostlist;	while (*hl && !b_found ) {		if( strcmp( *hl, host ) == 0 ) {			b_found = TRUE;			break;		}else{        		++hl;		}	}    	/* host not found in hostlist */	if( !b_found ) {		LOG(PIL_CRIT, "%s: host '%s' not in hostlist."		,	__FUNCTION__, host);		return S_BADHOST;	}	if ((rc = APC_init(ad)) != S_OK) {		return rc;	}	if (request == ST_POWERON || request == ST_POWEROFF) {		return apcsmart_ReqOnOff(ad, request);	}	return apcsmart_ReqGenericReset(ad);}/* * get info about the stonith device  */static const char *apcsmart_get_info(StonithPlugin * s, int reqtype){	struct pluginDevice *ad = (struct pluginDevice *) s;	const char *ret;	if (Debug) {    		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	ERRIFWRONGDEV(s,NULL);   	switch (reqtype) {    		case ST_DEVICEID:		ret = ad->pluginid;		break;		case ST_DEVICEDESCR:		ret = "APC Smart UPS"			" (via serial port - NOT USB!). "			" Works with higher-end APC UPSes, like"			" Back-UPS Pro, Smart-UPS, Matrix-UPS, etc. "			" (Smart-UPS may have to be >= Smart-UPS 700?)\n"		" See http://us1.networkupstools.org/protocols/apcsmart.html"			" for protocol compatibility details.";			break;		case ST_DEVICEURL:			ret = "http://www.apc.com/";			break;		default:			ret = NULL;			break;	}	return (ret);}/* * APC Stonith destructor...  */static voidapcsmart_destroy(StonithPlugin * s){    struct pluginDevice *ad = (struct pluginDevice *) s;	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);    	}	VOIDERRIFWRONGDEV(s);	APC_deinit( ad->upsfd );	ad->pluginid = NOTpluginID;	if (ad->hostlist) {		stonith_free_hostlist(ad->hostlist);		ad->hostlist = NULL;	}	ad->hostcount = -1;	ad->upsfd = -1;	FREE(ad);}/* * Create a new APC Stonith device.  Too bad this function can't be * static  */static StonithPlugin *apcsmart_new(void){    struct pluginDevice *ad = MALLOCT(struct pluginDevice);	if (Debug) {		LOG(PIL_DEBUG, "%s: called.", __FUNCTION__);	}	if (ad == NULL) {		LOG(PIL_CRIT, "%s: out of memory.", __FUNCTION__);		return (NULL);	}	memset(ad, 0, sizeof(*ad));	ad->pluginid = pluginid;	ad->hostlist = NULL;	ad->hostcount = -1;	ad->upsfd = -1;	ad->sp.s_ops = &apcsmartOps;	if (Debug) {		LOG(PIL_DEBUG, "%s: returning successfully.", __FUNCTION__);	}	return &(ad->sp);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产a久久久久久 | 6080国产精品一区二区| 欧美日韩一区二区在线视频| 欧美一二三区在线| 国产精品久久久久四虎| 日本美女一区二区三区| 色综合视频在线观看| 亚洲精品免费在线观看| av一区二区久久| 国产精品一区不卡| 欧美人妖巨大在线| 中文字幕一区二区日韩精品绯色| 日韩福利电影在线| 日本久久电影网| 国产欧美一区二区精品婷婷 | 亚洲123区在线观看| 国产精品综合视频| 777a∨成人精品桃花网| 亚洲男人的天堂av| 99久久夜色精品国产网站| 久久久夜色精品亚洲| 奇米精品一区二区三区在线观看一| 91啪亚洲精品| 国产精品蜜臀av| 国产白丝精品91爽爽久久| 欧美成人精精品一区二区频| 日本成人在线电影网| 成人欧美一区二区三区在线播放| 国产老女人精品毛片久久| 久久色在线观看| 欧美日韩亚洲国产综合| 中文在线免费一区三区高中清不卡| 日本美女一区二区| 欧美日韩在线播放一区| 亚洲综合在线五月| 欧美最猛黑人xxxxx猛交| 亚洲天堂精品在线观看| 99精品久久99久久久久| √…a在线天堂一区| 91无套直看片红桃| 自拍偷拍国产精品| 欧洲中文字幕精品| 日韩电影一二三区| 精品国精品国产| 国产高清视频一区| 中文欧美字幕免费| 色爱区综合激月婷婷| 亚洲成a人片综合在线| 久久久久久久久久美女| 亚洲天堂a在线| 色综合色综合色综合色综合色综合| 中文乱码免费一区二区| 91视频在线观看免费| 亚洲在线视频免费观看| 欧美精品日韩精品| 国内精品国产成人| 亚洲同性gay激情无套| 色88888久久久久久影院按摩| 午夜欧美电影在线观看| 精品国产一区二区三区不卡| 国产精品1区2区3区在线观看| 亚洲欧洲日韩在线| 欧美日韩黄视频| 黑人巨大精品欧美黑白配亚洲| 欧美韩国一区二区| 欧美日韩一区二区三区不卡| 九色|91porny| 亚洲精品伦理在线| 精品国产污网站| 91麻豆国产在线观看| 久久精品国产在热久久| 555www色欧美视频| 日韩国产高清在线| www.欧美日韩国产在线| 亚洲一区在线观看免费观看电影高清| 3751色影院一区二区三区| 91色九色蝌蚪| 日韩vs国产vs欧美| 亚洲婷婷国产精品电影人久久| 日韩三级在线观看| 91丨porny丨首页| 国产乱码字幕精品高清av| 一区二区视频免费在线观看| 久久综合成人精品亚洲另类欧美| 一本大道av伊人久久综合| 麻豆精品国产传媒mv男同| 亚洲精品免费电影| 欧美国产成人在线| 日韩欧美国产一区二区在线播放| 99久久久无码国产精品| 国产精品一区一区| 麻豆成人久久精品二区三区红| 亚洲同性gay激情无套| 久久久精品免费网站| 欧美一区二区在线看| 欧美中文字幕一二三区视频| 国产成人精品www牛牛影视| 蜜桃视频在线观看一区| 亚洲成精国产精品女| 亚洲免费观看高清完整版在线观看熊| 欧美成人r级一区二区三区| 欧美麻豆精品久久久久久| 欧美午夜精品一区二区蜜桃| jizz一区二区| 豆国产96在线|亚洲| 国产一区二区三区黄视频| 日本亚洲视频在线| 视频一区在线播放| 亚洲成人资源网| 午夜精品福利视频网站| 一区二区在线观看免费视频播放| 中文字幕一区在线观看视频| 久久久www成人免费无遮挡大片| 欧美一卡2卡3卡4卡| 欧美精选一区二区| 欧美精品一二三四| 7777精品久久久大香线蕉| 欧美三级欧美一级| 欧美日韩在线亚洲一区蜜芽| 91高清在线观看| 欧美三区在线观看| 欧美日韩国产综合草草| 欧美精选在线播放| 日韩欧美中文字幕公布| 日韩美女一区二区三区四区| 精品成人免费观看| 久久久噜噜噜久噜久久综合| 久久精品一区二区三区不卡| 国产性做久久久久久| 国产精品久久久久久亚洲伦| 综合色中文字幕| 国产一区91精品张津瑜| 国内精品久久久久影院薰衣草| 国产精品污www在线观看| 欧美日韩三级一区| 国产高清久久久久| 99久久久免费精品国产一区二区| 99re热这里只有精品免费视频 | 国产精品每日更新| 一区二区在线免费观看| 亚洲444eee在线观看| 久久黄色级2电影| 成人动漫在线一区| 在线精品视频一区二区三四| 欧美一区二区三区男人的天堂| 2024国产精品| 自拍偷拍欧美精品| 日韩电影免费一区| 高清国产一区二区三区| 欧美亚洲一区二区在线| 精品三级在线看| 亚洲欧洲综合另类在线| 日韩av在线播放中文字幕| 国产99久久久国产精品| 欧美自拍偷拍午夜视频| 久久久影院官网| 亚洲综合色丁香婷婷六月图片| 精品在线播放午夜| 91免费视频网| 久久午夜色播影院免费高清| 一区在线观看免费| 在线观看三级视频欧美| 精品欧美乱码久久久久久1区2区| 国产精品美女久久久久aⅴ | 欧洲亚洲精品在线| 日韩欧美国产成人一区二区| 国产精品国产三级国产三级人妇| 日韩精品高清不卡| 成人av午夜电影| 精品88久久久久88久久久| 亚洲制服欧美中文字幕中文字幕| 国产伦精品一区二区三区免费迷| 欧洲在线/亚洲| 国产精品丝袜91| 精品无码三级在线观看视频| 欧美亚洲综合另类| 中文字幕乱码久久午夜不卡| 麻豆国产精品一区二区三区| 欧美亚洲高清一区| 中文字幕一区二区不卡| 国产精品一区二区久久不卡| 欧美一区二区三区小说| 亚洲午夜影视影院在线观看| 91小视频在线免费看| www.在线欧美| 亚洲国产精品一区二区www在线| 欧美日韩国产小视频在线观看| xnxx国产精品| 男男成人高潮片免费网站| 日本高清视频一区二区| 日韩久久一区二区| 成人av小说网| 国产精品久久久久四虎| 国产精品一区久久久久| 久久久久久9999| 国产综合久久久久久久久久久久| 日韩一区二区三区在线视频| 亚洲电影一级黄| 欧美日韩精品综合在线| 亚洲一区二区在线视频|