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

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

?? ibmhmc.c

?? 在LINUX下實現HA的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
	}else if (strcmp(output, "Not Available") == 0	|| strcmp(output, "Error") == 0) {		state = STATE_INVALID;	}	FREE(output);	output = NULL;	if (state == STATE_INVALID) {		PILCallLog(LOG, PIL_CRIT, "host %s in invalid state", host);		return S_OOPS;	}	switch (request) {	case ST_GENERIC_RESET:		if (dev->hmcver < 4) {			if (is_lpar) {				if (state == STATE_ON) {					output = do_shell_cmd(off_cmd, &status);					if (0 != status) {						PILCallLog(LOG, PIL_CRIT						,	"command %s failed"						,	off_cmd);						return S_OOPS;					}				}				for (i = 0; i < MAX_POWERON_RETRY; i++) {					char *output2;					output2 = do_shell_cmd(on_cmd, &status);					if (output2 != NULL) {						FREE(output2);					}					if (0 != status) {						sleep(1);					}else{						break;					}				}				if (MAX_POWERON_RETRY == i) {					PILCallLog(LOG, PIL_CRIT					,	"command %s failed"					,	on_cmd);					return S_OOPS;				}			}else{				output = do_shell_cmd(reset_cmd, &status);				if (0 != status) {					PILCallLog(LOG, PIL_CRIT					,	"command %s failed"					,	reset_cmd);					return S_OOPS;				}				break;			}		}else{			if (state == STATE_ON) {				output = do_shell_cmd(reset_cmd, &status);			}else{				output = do_shell_cmd(on_cmd, &status);			}			if (0 != status) {				PILCallLog(LOG, PIL_CRIT				,	"command %s failed", reset_cmd);				return S_OOPS;			}		}		break;	default:		return S_INVAL;	}	if (output != NULL) {		FREE(output);	}	PILCallLog(LOG, PIL_INFO, "Host %s %s %d."	,	host, __FUNCTION__, request);	return S_OK;}/* *	Parse the information in the given configuration file, *	and stash it away... */static intibmhmc_set_config_file(Stonith* s, const char * configname){	FILE* cfgfile = NULL;	struct HMCDevice* dev = NULL;	char hostline[MAX_HOST_NAME_LEN];		if (!ISHMCDEV(s)) {		PILCallLog(LOG, PIL_CRIT, "invalid argument to %s"		,	__FUNCTION__);		return(S_OOPS);	}	dev = (struct HMCDevice*) s->pinfo;	cfgfile = fopen(configname, "r");	if (cfgfile == NULL)  {		PILCallLog(LOG, PIL_CRIT, "Cannot open %s", configname);		return(S_BADCONFIG);	}	while (fgets(hostline, sizeof(hostline), cfgfile) != NULL){		if (*hostline == '#' || *hostline == '\n' || *hostline == EOS){			continue;		}		return ibmhmc_parse_config_info(dev, hostline);	}	return S_BADCONFIG;}/* *	Parse the config information in the given string, and stash it away... */static intibmhmc_set_config_info(Stonith* s, const char * info){	struct HMCDevice* dev;	if (!ISHMCDEV(s)) {		PILCallLog(LOG, PIL_CRIT, "%s: invalid argument", __FUNCTION__);		return(S_OOPS);	}	dev = (struct HMCDevice *)s->pinfo;	return(ibmhmc_parse_config_info(dev, info));}static const char*ibmhmc_getinfo(Stonith* s, int reqtype){	struct HMCDevice* dev;	const char* ret;	if (!ISHMCDEV(s)) {		PILCallLog(LOG, PIL_CRIT, "HMC_idinfo: invalid argument");		return NULL;	}	dev = (struct HMCDevice *)s->pinfo;	switch (reqtype) {		case ST_DEVICEID:			ret = _("IBM HMC Device");			break;		case ST_CONF_INFO_SYNTAX:			ret = _("ipaddr [managedsyspat]...");			break;		case ST_CONF_FILE_SYNTAX:			ret = _("ipaddr [managedsyspat]...\n"			"All items must be on one line. "			"Blank lines and lines beginning with # are ignored");			break;		case ST_DEVICEDESCR:			ret = _("IBM Hardware Management Console (HMC)\n"			"Use for IBM i5, p5, pSeries and OpenPower systems "			"managed by HMC\n"			"Optional parameter(s) after ipaddr is/are a "			"white-space delimited list of patterns used to match "			"managed system names; if last character is '*', all "			"names that begin with the pattern are matched\n"			" See " HMCURL " for more information.");			break;		default:			ret = NULL;			break;	}	return ret;}/* *	HMC Stonith destructor... */static voidibmhmc_destroy(Stonith *s){	struct HMCDevice* dev;	if (!ISHMCDEV(s)) {		PILCallLog(LOG, PIL_CRIT, "%s: invalid argument", __FUNCTION__);		return;	}	dev = (struct HMCDevice *)s->pinfo;	dev->HMCid = NOTibmhmcID;	if (dev->hmc) {		FREE(dev->hmc);		dev->hmc = NULL;	}	free_hmc_hostlist(dev);	free_hmc_mansyspats(dev);	FREE(dev);}static void *ibmhmc_new(void){	struct HMCDevice* dev = MALLOCT(struct HMCDevice);	if (dev == NULL) {		PILCallLog(LOG, PIL_CRIT, "out of memory");		return(NULL);	}	memset(dev, 0, sizeof(*dev));	dev->HMCid = HMCid;	dev->hostlist = NULL;	dev->hmc = NULL;	dev->mansyspats = NULL;	dev->hmcver = -1;	return((void *)dev);}static intget_hmc_hostlist(struct HMCDevice* dev){	int i, j, status;	char* output = NULL;	char get_syslist[MAX_CMD_LEN];	char host[MAX_HOST_NAME_LEN];	gchar** syslist = NULL;	gchar** name_mode = NULL;	char get_lpar[MAX_CMD_LEN];	gchar** lparlist = NULL;	if(Debug){		PILCallLog(LOG, PIL_DEBUG, "%s: called, dev->hmc=%s\n"		,	__FUNCTION__, dev->hmc);	}	if (dev->hmc == NULL || *dev->hmc == 0){		return S_BADCONFIG;	}		/* get the managed system's names of the hmc */	if (dev->hmcver < 4) {		snprintf(get_syslist, MAX_CMD_LEN, SSH_CMD " -l " HMCROOT			" %s lssyscfg -r sys -F name:mode --all", dev->hmc);	}else{		snprintf(get_syslist, MAX_CMD_LEN, SSH_CMD 			" -l " HMCROOT " %s lssyscfg -r sys -F name", dev->hmc);	}	if(Debug){		PILCallLog(LOG, PIL_DEBUG, "%s: get_syslist=%s"		,	__FUNCTION__, get_syslist);	}	output = do_shell_cmd(get_syslist, &status);	if (output == NULL) {		return S_BADCONFIG;	}			syslist = g_strsplit(output, "\n", 0);	FREE(output);	/* for each managed system */	for (i = 0; syslist[i] != NULL && syslist[i][0] != 0; i++) {		if (dev->hmcver < 4) {			name_mode = g_strsplit(syslist[i], ":", 2);			if(Debug){			PILCallLog(LOG, PIL_DEBUG			,	"%s: name_mode0=%s, name_mode1=%s\n"			,	__FUNCTION__, name_mode[0], name_mode[1]);			}			if (dev->mansyspats != NULL			&& !pattern_match(dev->mansyspats, name_mode[0])) {				continue;			}			/* if it is in fullsystempartition */			if (NULL != name_mode[1]			&& 0 == strncmp(name_mode[1], "0", 1)) {				/* add the FullSystemPartition */				snprintf(host, MAX_HOST_NAME_LEN				,	"%s/FullSystemPartition", name_mode[0]);				dev->hostlist = g_list_append(dev->hostlist 				,	STRDUP(host));			}else if (NULL != name_mode[1]			&& 0 == strncmp(name_mode[1], "255", 3)){				/* get its lpars */				snprintf(get_lpar, MAX_CMD_LEN				,	SSH_CMD " -l " HMCROOT				" %s lssyscfg -m %s -r lpar -F name --all"				,	dev->hmc, name_mode[0]);				if(Debug){					PILCallLog(LOG, PIL_DEBUG					,	"%s: get_lpar=%s\n"					,	__FUNCTION__, get_lpar);				}				output = do_shell_cmd(get_lpar, &status);				if (output == NULL) {					g_strfreev(name_mode);					g_strfreev(syslist);					return S_BADCONFIG;				}						lparlist = g_strsplit(output, "\n", 0);				FREE(output);					/* for each lpar */				for (j = 0				; NULL != lparlist[j] && 0 != lparlist[j][0]				; j++) {					/* skip the full system partition */					if (0 == strncmp(lparlist[j]					,	FULLSYSTEMPARTITION					,	strlen(FULLSYSTEMPARTITION))) {						continue;					}					/* add the lpar */					snprintf(host, MAX_HOST_NAME_LEN					,	"%s/%s", name_mode[0]					,	lparlist[j]);					dev->hostlist = 						g_list_append(dev->hostlist						,	STRDUP(host));				}				g_strfreev(lparlist);			}			g_strfreev(name_mode);		}else{			if (dev->mansyspats != NULL			&& !pattern_match(dev->mansyspats, syslist[i])) {				continue;			}			/* get its lpars */			snprintf(get_lpar, MAX_CMD_LEN			,	SSH_CMD " -l " HMCROOT				 " %s lssyscfg -m %s -r lpar -F name"			,	dev->hmc, syslist[i]);			if(Debug){				PILCallLog(LOG, PIL_DEBUG, "%s: get_lpar=%s\n"				,	__FUNCTION__, get_lpar);			}			output = do_shell_cmd(get_lpar, &status);			if (output == NULL) {				g_strfreev(syslist);				return S_BADCONFIG;			}					lparlist = g_strsplit(output, "\n", 0);			FREE(output);			/* for each lpar */			for (j = 0			; NULL != lparlist[j] && 0 != lparlist[j][0]			; j++) {				/* add the lpar */				snprintf(host, MAX_HOST_NAME_LEN				,	"%s/%s", syslist[i],lparlist[j]);				dev->hostlist = g_list_append(dev->hostlist						,	STRDUP(host));			}			g_strfreev(lparlist);		}	}	g_strfreev(syslist);		return S_OK;}static voidfree_hmc_hostlist(struct HMCDevice* dev){	if (dev->hostlist) {		GList* node;		while (NULL != (node=g_list_first(dev->hostlist))) {			dev->hostlist = g_list_remove_link(dev->hostlist, node);			FREE(node->data);			g_list_free(node);		}		dev->hostlist = NULL;	}}static intget_hmc_mansyspats(struct HMCDevice * dev, const char *mansyspats){	char *patscopy;	int numpats;		int i;	char *tmp;	if(Debug){		PILCallLog(LOG, PIL_DEBUG, "%s: called, mansyspats=%s\n"		,	__FUNCTION__, mansyspats);	}		patscopy = STRDUP(mansyspats);	if (patscopy == NULL) {		PILCallLog(LOG, PIL_CRIT, "%s: out of memory", __FUNCTION__);		return S_OOPS;	}	numpats = get_num_tokens(patscopy);		if (numpats > 0) {		dev->mansyspats = MALLOC((numpats+1)*sizeof(char *));		if (dev->mansyspats == NULL) {			PILCallLog(LOG, PIL_CRIT, "%s: out of memory"			,	__FUNCTION__);			FREE(patscopy);			return S_OOPS;		}		memset(dev->mansyspats, 0, (numpats+1)*sizeof(char *));		/* White-space split the output here */		i = 0;		tmp = strtok(patscopy, WHITESPACE);		while (tmp != NULL) {			dev->mansyspats[i] = STRDUP(tmp);			if (dev->mansyspats[i] == NULL) {				PILCallLog(LOG, PIL_CRIT, "%s: out of memory"				,	__FUNCTION__);				free_hmc_mansyspats(dev);				dev->mansyspats = NULL;				FREE(patscopy);				return S_OOPS;			}				if(Debug){				PILCallLog(LOG, PIL_DEBUG				,	"%s: adding pattern %s\n"				,	__FUNCTION__, dev->mansyspats[i]);			}			/* no patterns necessary if all specified */			if (strcmp(dev->mansyspats[i], "*") == 0) {				ibmhmc_free_hostlist(dev->mansyspats);				dev->mansyspats = NULL;				break;			}			i++;			tmp = strtok(NULL, WHITESPACE);		}	}	FREE(patscopy);	return S_OK;}static voidfree_hmc_mansyspats(struct HMCDevice* dev){	if (dev->mansyspats) {		ibmhmc_free_hostlist(dev->mansyspats);		dev->mansyspats = NULL;	}}static char*do_shell_cmd(const char* cmd, int* status){	const int BUFF_LEN=4096;	int read_len = 0;	char buff[BUFF_LEN];	char* data = NULL;	GString* g_str_tmp = NULL;	FILE* file = popen(cmd, "r");	if (NULL == file) {		return NULL;	}	g_str_tmp = g_string_new("");	while(!feof(file)) {		memset(buff, 0, BUFF_LEN);		read_len = fread(buff, 1, BUFF_LEN, file);		if (0 < read_len) {			g_string_append(g_str_tmp, buff);		}else{			sleep(1);		}	}	data = (char*)MALLOC(g_str_tmp->len+1);	data[0] = data[g_str_tmp->len] = 0;	strncpy(data, g_str_tmp->str, g_str_tmp->len);	g_string_free(g_str_tmp, TRUE);	*status = pclose(file);	return data;}static intcheck_hmc_status(const char* hmc){	int status;	char check_status[MAX_CMD_LEN];	char* output = NULL;	int rc = S_OK;	if(Debug){		PILCallLog(LOG, PIL_DEBUG, "%s: called, hmc=%s\n"		,	__FUNCTION__, hmc);	}	snprintf(check_status, MAX_CMD_LEN	,	SSH_CMD " -l " HMCROOT " %s lshmc -r -F ssh", hmc);	if(Debug){		PILCallLog(LOG, PIL_DEBUG, "%s: check_status %s\n"		,	__FUNCTION__, check_status);	}	output = do_shell_cmd(check_status, &status);	if (Debug) {		PILCallLog(LOG, PIL_DEBUG, "%s: status=%d, output=%s\n"		,	__FUNCTION__, status, output ? output : "(nil)");	}	if (NULL == output || strncmp(output, "enable", 6) != 0) {		rc = S_BADCONFIG;	}	if (NULL != output) {		FREE(output);	}	return rc;}static intget_num_tokens(char *str){	int namecount = 0;	while (*str != EOS) {		str += strspn(str, WHITESPACE);		if (*str == EOS)			break;		str += strcspn(str, WHITESPACE);		namecount++;	}	return namecount;}static gbooleanpattern_match(char **patterns, char *string){	char **pattern;	if(Debug){		PILCallLog(LOG, PIL_DEBUG, "%s: called, string=%s\n"		,	__FUNCTION__, string);	}	for (pattern = patterns; *pattern; pattern++) {		int patlen = strlen(*pattern);		if (pattern[0][patlen-1] == '*') {			/* prefix match */			if (strncmp(string, *pattern, patlen-1) == 0) {				return TRUE;			}		}else{			/* exact match */			if (strcmp(string, *pattern) == 0) {				return TRUE;			}		}	}	return FALSE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内成人自拍视频| 欧美视频在线一区二区三区| 欧美最猛黑人xxxxx猛交| 日韩欧美另类在线| 一区二区三区在线观看动漫| 国产一区二三区| 欧美日本在线看| 亚洲精品视频在线观看网站| 精品一区二区三区不卡 | 亚洲精品乱码久久久久久日本蜜臀| 日韩高清在线观看| 91日韩精品一区| 久久精品亚洲一区二区三区浴池| 偷拍自拍另类欧美| 欧美日韩国产天堂| ...xxx性欧美| 国产成a人亚洲| 久久久久久99精品| 久久99深爱久久99精品| 欧美日韩aaaaaa| 亚洲精品国产无套在线观| 成人性生交大片| 日韩精品中文字幕一区二区三区| 夜夜嗨av一区二区三区| av电影在线观看一区| 久久精品视频在线看| 国产酒店精品激情| 久久久久久**毛片大全| 麻豆精品在线播放| 欧美r级在线观看| 美女性感视频久久| 欧美一区二区三区视频在线| 亚洲成人在线免费| 欧美剧情电影在线观看完整版免费励志电影 | 亚洲国产精品久久人人爱| 色综合中文字幕国产 | 性感美女极品91精品| 国产欧美一区二区精品仙草咪| 欧美中文字幕不卡| 国模娜娜一区二区三区| 欧美一区二区三区免费在线看| 污片在线观看一区二区| 欧美高清视频不卡网| 天天综合色天天| 亚洲精品在线网站| 成人一区二区三区视频在线观看| 久久精品在这里| av一区二区三区在线| 国产精品久久免费看| 91久久人澡人人添人人爽欧美| 一级中文字幕一区二区| 欧美精品视频www在线观看| 日日夜夜精品视频天天综合网| 欧美一卡2卡三卡4卡5免费| 久久精品国产**网站演员| 久久久久久久久久看片| 99re热这里只有精品视频| 亚洲精品国久久99热| 欧美精品日日鲁夜夜添| 激情欧美一区二区| 18成人在线观看| 这里只有精品免费| 国产河南妇女毛片精品久久久| 综合欧美一区二区三区| 欧美日韩一二区| 黄网站免费久久| 一区二区三区在线免费播放| 日韩女优制服丝袜电影| av成人老司机| 六月丁香婷婷久久| 一区二区三区四区激情| 欧美大黄免费观看| 91免费版在线| 久久99精品国产91久久来源| 亚洲另类中文字| 久久久久久免费毛片精品| 91久久一区二区| 国产一区二区精品久久| 亚洲午夜激情av| 国产精品剧情在线亚洲| 欧美伦理视频网站| 91麻豆产精品久久久久久| 麻豆国产一区二区| 亚洲午夜久久久久久久久电影院 | xfplay精品久久| 日本韩国一区二区三区视频| 国产久卡久卡久卡久卡视频精品| 亚洲综合在线电影| 中文在线免费一区三区高中清不卡| 欧美日韩国产综合一区二区三区| 国产不卡在线一区| 国产一区二区网址| 天堂va蜜桃一区二区三区| 亚洲人成网站色在线观看| 日本一区二区免费在线| 欧美tickling网站挠脚心| 欧美日韩精品一区二区在线播放| 成人精品国产福利| 国产真实精品久久二三区| 亚洲地区一二三色| 亚洲色图一区二区三区| 国产精品理伦片| 久久久精品天堂| 精品国产百合女同互慰| 日韩一区二区麻豆国产| 欧美日产在线观看| 欧美性生活久久| 91传媒视频在线播放| 91在线无精精品入口| 成人h精品动漫一区二区三区| 精品一区二区三区免费| 精油按摩中文字幕久久| 麻豆专区一区二区三区四区五区| 日韩av中文在线观看| 丝袜亚洲另类欧美| 日本欧美加勒比视频| 奇米在线7777在线精品| 久久精品国产免费| 激情久久五月天| 成人爽a毛片一区二区免费| 成人性生交大片| 91丨porny丨蝌蚪视频| 一本大道久久a久久综合| 色综合 综合色| 欧美精品久久久久久久久老牛影院| 在线观看视频欧美| 欧美日韩不卡一区| 精品少妇一区二区三区在线播放 | 国产综合久久久久影院| 成人av在线资源| av爱爱亚洲一区| 欧洲另类一二三四区| 69精品人人人人| 2024国产精品| 中文字幕永久在线不卡| 午夜成人免费视频| 国产精品影音先锋| heyzo一本久久综合| 欧日韩精品视频| 精品国产乱码久久久久久夜甘婷婷| 久久精品一区二区三区四区| 中文字幕一区免费在线观看| 亚洲五码中文字幕| 国产一区亚洲一区| 色综合av在线| 日韩欧美美女一区二区三区| 国产精品久久久久影视| 午夜视频在线观看一区二区| 韩国三级中文字幕hd久久精品| 9久草视频在线视频精品| 欧美丰满嫩嫩电影| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美中文字幕一二三区视频| 日韩欧美国产一二三区| 国产精品久久久久影院| 免费观看在线综合| 一本大道久久a久久精二百| 日韩手机在线导航| 自拍偷拍欧美激情| 国产一区二区影院| 欧美绝品在线观看成人午夜影视| 国产精品美女一区二区| 青青草伊人久久| 色视频一区二区| 中文字幕成人av| 日本欧美一区二区| 色婷婷精品大视频在线蜜桃视频| 精品91自产拍在线观看一区| 亚洲午夜电影在线| 99久久er热在这里只有精品66| 日韩精品资源二区在线| 亚洲一区二区三区自拍| 国产盗摄视频一区二区三区| 欧美日韩一区二区三区四区五区| 国产精品电影一区二区| 精品一区二区三区免费播放| 欧美精品色综合| 亚洲在线视频一区| 99久久夜色精品国产网站| 精品国产123| 日韩国产在线一| 欧美做爰猛烈大尺度电影无法无天| 欧美激情一区在线观看| 久久99久久99精品免视看婷婷 | 不卡av免费在线观看| 精品久久人人做人人爰| 日韩国产在线观看| 欧美日韩久久不卡| 亚洲一区二区三区中文字幕在线| 成人黄色在线视频| 中文字幕精品—区二区四季| 极品少妇xxxx精品少妇偷拍| 日韩精品中文字幕在线一区| 偷拍自拍另类欧美| 91麻豆精品国产| 香港成人在线视频| 欧美日韩国产综合一区二区三区| 亚洲国产视频直播| 欧美日韩高清不卡| 亚洲综合在线五月|