⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcl_config.c

📁 网络数据管理协议的开发
💻 C
📖 第 1 页 / 共 2 页
字号:
configGetFsInfoCmd(void*		clientData,				   Tcl_Interp*	interp,				   int			argc,				   char*		argv[] __attribute__ ((unused))){	NdmpConnection						connection = (NdmpConnection)clientData;	ndmp_config_get_fs_info_reply*	reply = 0;	int 							r;	u_long							i, j;	Tcl_DString						list;	char							buf[32];	ndmp_fs_info*					fsinfo;	ndmp_pval*						pval;		if (argc != 1)	{		Tcl_SetResult(interp, "usage: config_get_fs_info",					  TCL_STATIC);		return(TCL_ERROR);	}	r = ndmpSendRequest(connection, NDMP_CONFIG_GET_FS_INFO, NDMP_NO_ERR,						0, (void*)&reply);	if (ndmpcCheckNdmpSend(interp, r,						   reply ? reply->error : 0))	{		ndmpFreeMessage(connection);		return(r < 0 ? TCL_ERROR : TCL_OK);	}	for (i = 0; i < reply->fs_info.fs_info_len; i++)	{		fsinfo = &reply->fs_info.fs_info_val[i];				sprintf(buf, "%lx", fsinfo->invalid);		ndmpcTclAddToResult(interp, "invalid", buf);		ndmpcTclAddToResult(interp, "fs_type", fsinfo->fs_type);		ndmpcTclAddToResult(interp, "fs_logical_device", fsinfo->fs_logical_device);		ndmpcTclAddToResult(interp, "fs_physical_device", fsinfo->fs_physical_device);		sprintf(buf, "%lld", quadToLongLong(fsinfo->total_size));		ndmpcTclAddToResult(interp, "total_size", buf);		sprintf(buf, "%lld", quadToLongLong(fsinfo->used_size));		ndmpcTclAddToResult(interp, "used_size", buf);			sprintf(buf, "%lld", quadToLongLong(fsinfo->avail_size));		ndmpcTclAddToResult(interp, "avail_size", buf);			sprintf(buf, "%lld", quadToLongLong(fsinfo->total_inodes));		ndmpcTclAddToResult(interp, "total_inodes", buf);		sprintf(buf, "%lld", quadToLongLong(fsinfo->used_inodes));		ndmpcTclAddToResult(interp, "used_inodes", buf);		Tcl_DStringInit(&list);		for (j = 0; j < fsinfo->fs_env.fs_env_len; j++)		{			pval = &fsinfo->fs_env.fs_env_val[j];			Tcl_DStringStartSublist(&list);			Tcl_DStringAppend(&list, pval->name, -1);			Tcl_DStringAppendElement(&list, pval->value);			Tcl_DStringEndSublist(&list);		}			ndmpcTclAddToResult(interp, "fs_env", Tcl_DStringValue(&list));		Tcl_DStringFree(&list);	}		ndmpFreeMessage(connection);	return(TCL_OK);}/* * configGetTapeInfoCmd *   Sends a ndmp_config_get_tape_info_request to the NDMP server. *   usage: config_get_tape_info * * Parameters: *   clientData (input) - connection handle. *   interp     (input) - Tcl interpreter. *   argc       (input) - argument count. *   argv       (input) - argument array. * * Returns: *   Tcl error code. */intconfigGetTapeInfoCmd(void*			clientData,					 Tcl_Interp*	interp,					 int			argc,					 char*			argv[] __attribute__ ((unused))){	NdmpConnection						connection = (NdmpConnection)clientData;	ndmp_config_get_tape_info_reply*	reply = 0;	int 								r;	ndmp_device_info*					info;	ndmp_device_capability*				cap;	ndmp_pval*							pval;	u_long								i;	u_long								j;	u_long								k;	Tcl_DString							list;	if (argc != 1)	{		Tcl_SetResult(interp, "usage: config_get_tape_info",					  TCL_STATIC);		return(TCL_ERROR);	}	r = ndmpSendRequest(connection, NDMP_CONFIG_GET_TAPE_INFO, NDMP_NO_ERR,						0, (void*)&reply);	if (ndmpcCheckNdmpSend(interp, r,						   reply ? reply->error : 0))	{		ndmpFreeMessage(connection);		return(r < 0 ? TCL_ERROR : TCL_OK);	}	for (i = 0; i < reply->tape_info.tape_info_len; i++)	{		info = &reply->tape_info.tape_info_val[i];				ndmpcTclAddToResult(interp, "model", info->model);		for (j = 0; j < info->caplist.caplist_len; j++)		{			char	attrStr[32];						cap = &info->caplist.caplist_val[j];			ndmpcTclAddToResult(interp, "device", cap->device);			sprintf(attrStr, "0x%lx", cap->attr);			ndmpcTclAddToResult(interp, "attr", attrStr);						Tcl_DStringInit(&list);						for (k = 0; k < cap->capability.capability_len; k++)			{				pval = &cap->capability.capability_val[k];							Tcl_DStringStartSublist(&list);				Tcl_DStringAppend(&list, pval->name, -1);				Tcl_DStringAppendElement(&list, pval->value);				Tcl_DStringEndSublist(&list);			}			ndmpcTclAddToResult(interp, "capability", Tcl_DStringValue(&list));			Tcl_DStringFree(&list);		}	}		ndmpFreeMessage(connection);	return(TCL_OK);}/* * configGetScsiInfoCmd *   Sends a ndmp_config_get_scsi_info_request to the NDMP server. *   usage: config_get_scsi_info * * Parameters: *   clientData (input) - connection handle. *   interp     (input) - Tcl interpreter. *   argc       (input) - argument count. *   argv       (input) - argument array. * * Returns: *   Tcl error code. */intconfigGetScsiInfoCmd(void*			clientData,					 Tcl_Interp*	interp,					 int			argc,					 char*			argv[] __attribute__ ((unused))){	NdmpConnection						connection = (NdmpConnection)clientData;	ndmp_config_get_scsi_info_reply*	reply = 0;	int 								r;	ndmp_device_info*					info;	ndmp_device_capability*				cap;	ndmp_pval*							pval;	u_long								i;	u_long								j;	u_long								k;	Tcl_DString							list;		if (argc != 1)	{		Tcl_SetResult(interp, "usage: config_get_scsi_info",					  TCL_STATIC);		return(TCL_ERROR);	}	r = ndmpSendRequest(connection, NDMP_CONFIG_GET_SCSI_INFO, NDMP_NO_ERR,						0, (void*)&reply);	if (ndmpcCheckNdmpSend(interp, r,						   reply ? reply->error : 0))	{		ndmpFreeMessage(connection);		return(r < 0 ? TCL_ERROR : TCL_OK);	}	for (i = 0; i < reply->scsi_info.scsi_info_len; i++)	{		info = &reply->scsi_info.scsi_info_val[i];				ndmpcTclAddToResult(interp, "model", info->model);		for (j = 0; j < info->caplist.caplist_len; j++)		{			char	attrStr[32];			cap = &info->caplist.caplist_val[j];			ndmpcTclAddToResult(interp, "device", cap->device);			sprintf(attrStr, "0x%lx", cap->attr);			ndmpcTclAddToResult(interp, "attr", attrStr);						Tcl_DStringInit(&list);						for (k = 0; k < cap->capability.capability_len; k++)			{				pval = &cap->capability.capability_val[k];							Tcl_DStringStartSublist(&list);				Tcl_DStringAppend(&list, pval->name, -1);				Tcl_DStringAppendElement(&list, pval->value);				Tcl_DStringEndSublist(&list);			}			ndmpcTclAddToResult(interp, "capability", Tcl_DStringValue(&list));			Tcl_DStringFree(&list);		}	}		ndmpFreeMessage(connection);	return(TCL_OK);}/* * configGetServerInfoCmd *   Sends a ndmp_config_get_server_info request to the NDMP server. *   usage: config_get_server_info  * * Parameters: *   clientData (input) - connection handle. *   interp     (input) - Tcl interpreter. *   argc       (input) - argument count. *   argv       (input) - argument array. * * Returns: *   Tcl error code. */intconfigGetServerInfoCmd(void*			clientData,					   Tcl_Interp*	interp,					   int			argc,					   char*			argv[] __attribute__ ((unused))){	NdmpConnection						connection = (NdmpConnection)clientData;	ndmp_config_get_server_info_reply*	reply = 0;	int 								r;	u_long								i;	Tcl_DString							list;		if (argc != 1)	{		Tcl_SetResult(interp, "usage: config_get_server_info",					  TCL_STATIC);		return(TCL_ERROR);	}	r = ndmpSendRequest(connection, NDMP_CONFIG_GET_SERVER_INFO, NDMP_NO_ERR,						0, (void*)&reply);	if (ndmpcCheckNdmpSend(interp, r,						   reply ? reply->error : 0))	{		ndmpFreeMessage(connection);		return(r < 0 ? TCL_ERROR : TCL_OK);	}	ndmpcTclAddToResult(interp, "vendor_name", reply->vendor_name);	ndmpcTclAddToResult(interp, "product_name", reply->product_name);	ndmpcTclAddToResult(interp, "revision_number", reply->revision_number);	Tcl_DStringInit(&list);	for (i = 0; i < reply->auth_type.auth_type_len; i++)	{		char		*type;		switch (reply->auth_type.auth_type_val[i])		{			case NDMP_AUTH_NONE:				type = "None ";				break;			case NDMP_AUTH_TEXT:				type = "Text ";				break;			case NDMP_AUTH_MD5:				type = "MD5 ";				break;			default:				type = "Unsupported ";				break;		}				Tcl_DStringAppend(&list, type, -1);	}		ndmpcTclAddToResult(interp, "auth_types", Tcl_DStringValue(&list));	Tcl_DStringFree(&list);	ndmpFreeMessage(connection);	return(TCL_OK);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -