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

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

?? ibmhmc.c

?? linux集群服務器軟件代碼包
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Stonith module for IBM pSeries Hardware Management Console (HMC) * * Author: Huang Zhen <zhenh@cn.ibm.com> * * Copyright (c) 2004 International Business Machines * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * *//* * * This code has been test in following environment * *	p630 7028-6C4 two LPAR partitions *	p650 7038-6M2 one LPAR partition and FullSystemPartition * *	Hardware Management Console (HMC): Release 3, Version 2.4 * *	Both FullSystemPartition and LPAR Partition are tested. * *	Note:  Only SSH access to the HMC devices are supported. * * * This is a nice start on this STONITH plugin, but it's not quite done yet ;-) * * Current deficiencies: * *	- The user has to provide a list of partitions and/or system names *		on the command line, when we should grab this information *		from the HMC ourselves... * *	- The user has to tell us whether the system is partitioned or not * *	- All systems either have to be partitioned or none can be * *	- We don't have a "status" command that will verify that we're *		configured correctly. * *	- I don't think the on/off/reset commands are done quite right yet... * *	- We don't capture the firmware version of the HMC itself. *		We'll probably eventually need that... * * * This command would make a nice status command: * *	lshmc -r -F ssh * * The following command will get the list of systems we control and their mode * *	lssyscfg -r sys -F name:mode --all * *		0 indicates full system partition *	      255 indicates the system is partitioned * * The following command will get the list of partitions for a given * managed system running partitioned: * *	lssyscfg -m managed-system-name -r lpar -F name:boot_mode --all * *b	Note that we should probably only consider partitions whose boot mode is  *	normal (1).  (that's my guess, anyway...) * * * ON/OFF/RESET COMMANDS: * *	FULL SYSTEM: *	  reset:	chsysstate -m managedsystem -r sys -o reset *	  on:	chsysstate -m managedsystem -r sys -o on *	  off:	chsysstate -m managedsystem -r sys -o off * *	Partitioned SYSTEM: *	  on:	chsysstate -m managedsystem -r lpar -p partition-name -o on *				(or maybe reset_partition -t hard) *	  off:	chsysstate -m managedsystem -r lpar -p partition-name -o off *				(or maybe start_partition) *	  reset:	do off action above, followed by "on" action... * * * Of course, to do all this, we need to track which partition name goes with which * managed system's name, and which systems on the HMC are partitioned and which * ones aren't... * * Note that the commands above are just reasonable guesses at the right commands. * */#define DEVICE "IBM HMC Device"#include "stonith_plugin_common.h"#ifndef	SSH_CMD#	define SSH_CMD	"ssh"#endif#ifndef	HMCROOT#	define HMCROOT	"hscroot"#endif#define PIL_PLUGIN              ibmhmc#define PIL_PLUGIN_S            "ibmhmc"#define PIL_PLUGINLICENSE 	LICENSE_LGPL#define PIL_PLUGINLICENSEURL 	URL_LGPL#include <pils/plugin.h>#define MAX_HOST_NAME_LEN	(256*4)#define MAX_CMD_LEN		1024#define FULLSYSTEMPARTITION	"FullSystemPartition"#define MAX_POWERON_RETRY	10#define MAX_SYS_NUM		64#define MAX_LPAR_NUM		256#define MAX_HMC_NAME_LEN	256#define HMCURL	"http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts"\		"/SG247038.html"static StonithPlugin *	ibmhmc_new(void);static void		ibmhmc_destroy(StonithPlugin *);static const char *	ibmhmc_getinfo(StonithPlugin * s, int InfoType);static const char**	ibmhmc_get_confignames(StonithPlugin* p);static int		ibmhmc_status(StonithPlugin * );static int		ibmhmc_reset_req(StonithPlugin * s,int request,const char* host);static char **		ibmhmc_hostlist(StonithPlugin  *);static int		ibmhmc_set_config(StonithPlugin *, StonithNVpair*);static char* do_shell_cmd(const char* cmd, int* status);static int check_hmc_status(const char* hmc);/* static char* do_shell_cmd_fake(const char* cmd, int* status); */static struct stonith_ops ibmhmcOps = {	ibmhmc_new,		/* Create new STONITH object	*/	ibmhmc_destroy,		/* Destroy STONITH object	*/	ibmhmc_getinfo,		/* Return STONITH info string	*/	ibmhmc_get_confignames,	/* Return configuration parameters */	ibmhmc_set_config,      /* Set configuration            */	ibmhmc_status,		/* Return STONITH device status	*/	ibmhmc_reset_req,	/* Request a reset */	ibmhmc_hostlist,	/* Return list of supported hosts */};PIL_PLUGIN_BOILERPLATE2("1.0", Debug)static const PILPluginImports*  PluginImports;static PILPlugin*               OurPlugin;static PILInterface*		OurInterface;static StonithImports*		OurImports;static void*			interfprivate;PIL_rcPIL_PLUGIN_INIT(PILPlugin*us, const PILPluginImports* imports);PIL_rcPIL_PLUGIN_INIT(PILPlugin*us, const PILPluginImports* imports){	/* Force the compiler to do a little type checking */	(void)(PILPluginInitFun)PIL_PLUGIN_INIT;	PluginImports = imports;	OurPlugin = us;	/* Register ourself as a plugin */	imports->register_plugin(us, &OurPIExports);  	/*  Register our interface implementation */ 	return imports->register_interface(us, PIL_PLUGINTYPE_S	,	PIL_PLUGIN_S	,	&ibmhmcOps	,	NULL		/*close */	,	&OurInterface	,	(void*)&OurImports	,	&interfprivate); }struct pluginDevice {		StonithPlugin		sp;	const char *		pluginid;	char *			hmc;	GList*		 	hostlist;};static const char * pluginid = 	"pluginDevice-Stonith";static const char * NOTpluginID = "This has been destroyed (HMC Dev)";static intibmhmc_status(StonithPlugin  *s){	struct pluginDevice* dev = NULL;		if(Debug){		LOG(PIL_DEBUG , "%s : called\n" , __FUNCTION__);	}	ERRIFWRONGDEV(s,S_OOPS);	dev = (struct pluginDevice*) s;		return check_hmc_status(dev->hmc);}/* *	Return the list of hosts configured for this HMC device */static char **ibmhmc_hostlist(StonithPlugin  *s){	int j;	struct pluginDevice* dev;	int numnames = 0;	char** ret = NULL;	GList* node = NULL;	if(Debug){		LOG(PIL_DEBUG, "%s : called\n" , __FUNCTION__);	}	ERRIFWRONGDEV(s,NULL);	dev = (struct pluginDevice*) s;	numnames = g_list_length(dev->hostlist);	if (numnames<0) {		LOG( PIL_CRIT		,	"unconfigured stonith object in ibmhmc_list_hosts");		return(NULL);	}	ret = (char **)MALLOC((numnames+1)*sizeof(char*));	if (ret == NULL) {		LOG( PIL_CRIT, "out of memory");		return ret;	}	memset(ret, 0, (numnames+1)*sizeof(char*));	for (node=g_list_first(dev->hostlist), j=0	;	NULL != node	;	j++, node = g_list_next(node))	{		char* host = (char*)node->data;		ret[j] = STRDUP(host);	}	return ret;}/* *	Parse the config information, and stash it away... */static intibmhmc_parse_config_info(struct pluginDevice* dev, const char* info){	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){		LOG(PIL_DEBUG , "%s called,info=%s\n" , __FUNCTION__,info);	}	if ( info == NULL || strlen(info) == 0 ){		return S_BADCONFIG;	}		/*check whether the HMC is enable ssh command */	if (check_hmc_status(info) != S_OK) {		return S_BADCONFIG;	}			/*get the managed system's names of the hmc */	snprintf(get_syslist, MAX_CMD_LEN,		 SSH_CMD " -l " HMCROOT		 " %s lssyscfg -r sys -F name:mode --all", info);	if(Debug){		LOG(PIL_DEBUG , "%s: get_syslist=%s" , __FUNCTION__ , 		    get_syslist);	}	output = do_shell_cmd(get_syslist, &status);	syslist = g_strsplit(output, "\n", MAX_SYS_NUM);	FREE(output);	/* for each managed system */	for (i = 0; i < MAX_SYS_NUM; i++) {		if (syslist[i] == NULL) {			break;		}		name_mode = g_strsplit(syslist[i],":",2);		if(Debug){			LOG(PIL_DEBUG , "%s: name_mode0 = %s,name_mode1=%s\n"			    , __FUNCTION__ , name_mode[0] , name_mode[1]);		}		/* 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 it is in lpar */		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",				 info, name_mode[0]);			if(Debug){				LOG(PIL_DEBUG, "%s: get_lpar = %s\n"				    , __FUNCTION__ , get_lpar);			}			output = do_shell_cmd(get_lpar,&status);			lparlist = g_strsplit(output, "\n",MAX_LPAR_NUM);			FREE(output);			/* for each lpar */			for (j=0; j<MAX_LPAR_NUM; j++) {				if (NULL==lparlist[j]) {					break;				}				/* 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);	}	g_strfreev(syslist);	dev->hmc = STRDUP(info);		return S_OK;}static const char**     ibmhmc_get_confignames(StonithPlugin* p){	static const char * names[] =  { ST_HOSTLIST, NULL};	if (Debug) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文精品| 亚洲精品国产无套在线观| 国产日产亚洲精品系列| 依依成人精品视频| 国产精品1024久久| 9191成人精品久久| 亚洲精品久久久蜜桃| 国产一区在线不卡| 欧美一区二区三区免费观看视频 | 91亚洲午夜精品久久久久久| 欧美久久久影院| 亚洲视频电影在线| 高清不卡在线观看| 日韩一二在线观看| 亚洲成人免费观看| 欧美伊人久久久久久久久影院 | 欧美欧美午夜aⅴ在线观看| 国产亚洲精品福利| 精品一区二区在线观看| 欧美精品九九99久久| 夜夜嗨av一区二区三区中文字幕| 国内久久精品视频| 精品剧情v国产在线观看在线| 亚洲一卡二卡三卡四卡五卡| 99久久精品国产麻豆演员表| 中文av一区二区| 精品在线亚洲视频| 精品入口麻豆88视频| 青青草伊人久久| 欧美一级搡bbbb搡bbbb| 日韩中文字幕一区二区三区| 欧美做爰猛烈大尺度电影无法无天| 国产精品视频在线看| 丰满放荡岳乱妇91ww| 国产日韩欧美精品一区| 成人午夜免费av| 午夜久久久久久久久久一区二区| 97精品久久久久中文字幕| 国产精品麻豆99久久久久久| 成人黄色av电影| 国产精品国产三级国产aⅴ原创| 粉嫩嫩av羞羞动漫久久久| 国产欧美一区视频| 成人午夜看片网址| 亚洲欧美日韩国产中文在线| 91福利在线观看| 亚洲.国产.中文慕字在线| 制服丝袜一区二区三区| 国产永久精品大片wwwapp| 欧美韩国日本一区| av爱爱亚洲一区| 亚洲永久免费av| 91麻豆精品国产91久久久资源速度| 蜜桃av一区二区三区| 精品久久国产字幕高潮| 福利电影一区二区| 亚洲欧美日韩中文播放| 欧美日韩一区小说| 久热成人在线视频| 国产女主播在线一区二区| 99久久久精品| 日韩中文字幕亚洲一区二区va在线 | 欧美日韩一区二区在线视频| 久久国产精品72免费观看| 国产精品乱码人人做人人爱 | 亚洲天堂av老司机| 精品视频全国免费看| 麻豆91免费观看| 亚洲人妖av一区二区| 日韩欧美一区中文| 99精品视频在线观看| 日本免费新一区视频| 中文在线资源观看网站视频免费不卡| 欧美自拍丝袜亚洲| 国内精品免费在线观看| 亚洲一区二区三区爽爽爽爽爽| 精品国产一区二区三区av性色| 波多野结衣视频一区| 日日噜噜夜夜狠狠视频欧美人| 国产亚洲一区二区在线观看| 91精品1区2区| 成人永久免费视频| 久久99精品国产麻豆不卡| 一区二区三区蜜桃网| 日本一区二区三级电影在线观看 | jizzjizzjizz欧美| 激情综合色综合久久| 亚洲最快最全在线视频| 国产精品视频yy9299一区| 正在播放亚洲一区| 91国产精品成人| 国产馆精品极品| 老司机免费视频一区二区三区| 亚洲精品国产精华液| 国产精品视频九色porn| 精品国产乱码久久| 欧美日韩成人一区| 久久综合九色综合97_久久久| 97se狠狠狠综合亚洲狠狠| 国产一区二三区好的| 日本视频中文字幕一区二区三区| 亚洲日本韩国一区| 亚洲欧洲在线观看av| 久久色在线视频| 精品福利二区三区| 日韩欧美色综合网站| 在线不卡中文字幕播放| 欧美日韩一区二区不卡| 一本色道久久综合亚洲aⅴ蜜桃| 国产成人精品亚洲午夜麻豆| 国产真实乱偷精品视频免| 蜜桃视频在线观看一区| 久久精品国产99国产| 视频一区二区三区在线| 天天影视涩香欲综合网| 一区二区三区在线视频观看| 亚洲欧洲综合另类在线| 亚洲欧美一区二区久久| 一区二区三区美女| 亚洲国产综合91精品麻豆| 亚洲一区免费在线观看| 亚洲国产精品人人做人人爽| 亚洲国产视频直播| 日本最新不卡在线| 精品午夜久久福利影院| 国产夫妻精品视频| heyzo一本久久综合| 欧美综合亚洲图片综合区| 欧美日韩高清一区二区不卡| 欧美老女人在线| 精品国精品国产尤物美女| 国产片一区二区三区| 成人欧美一区二区三区小说| 亚洲黄色尤物视频| 肉色丝袜一区二区| 国产一区二区调教| 99久久伊人网影院| 欧美日韩国产一级二级| 精品免费一区二区三区| 中文文精品字幕一区二区| 一区二区高清在线| 蜜桃精品视频在线| 成人免费黄色在线| 欧美四级电影网| 久久综合久久鬼色| 一区二区三区日本| 捆绑调教美女网站视频一区| 成人性生交大片免费看在线播放| 97se亚洲国产综合自在线观| 欧美美女视频在线观看| 久久中文娱乐网| 一区二区三区免费看视频| 日韩av一二三| 91日韩精品一区| 欧美一级高清片在线观看| 国产精品你懂的| 日韩av一二三| 日本高清成人免费播放| 精品免费国产一区二区三区四区| 中文字幕中文字幕一区| 日韩中文字幕区一区有砖一区 | 国产精品美女久久久久久久久久久 | 岛国精品在线观看| 欧美日韩色一区| 国产欧美日韩中文久久| 午夜精品久久久久久久99水蜜桃| 国产成人h网站| 欧美一区永久视频免费观看| 国产精品久久一级| 美女高潮久久久| 日本丰满少妇一区二区三区| 欧美不卡一区二区三区四区| 伊人婷婷欧美激情| 国产91精品久久久久久久网曝门| 欧美日韩精品一区二区三区四区 | av一区二区三区在线| 精品欧美久久久| 日韩中文字幕不卡| 欧美亚洲高清一区二区三区不卡| 久久精品日产第一区二区三区高清版| 日韩精品五月天| 欧美性大战久久久| 自拍偷拍欧美精品| 粉嫩av一区二区三区在线播放 | 欧美日韩极品在线观看一区| 国产精品久久三| 国产98色在线|日韩| 欧美电视剧在线观看完整版| 亚洲午夜精品17c| 色婷婷久久久综合中文字幕| 中国色在线观看另类| 极品美女销魂一区二区三区| 日韩一级片在线播放| 视频一区中文字幕| 欧美午夜精品一区二区蜜桃| 一区二区在线观看免费视频播放| 99久久精品国产导航| 亚洲欧洲日韩在线| 99久久精品99国产精品| 自拍偷拍国产亚洲|