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

📄 cdb.c

📁 网络数据管理协议的开发
💻 C
字号:
/*                               -*- Mode: C -*-  * cdb.c *  * Description     : Predefined CDBs that may be sent via the *                   tape_execute_cdb and ndmp_execute_cdb commands. *  * Copyright (c) 1996,1997 PDC, Network Appliance. All Rights Reserved. * * $Id: cdb.c,v 1.4 1997/02/10 07:13:26 tim Exp $ */#if !defined(lint) && !defined(SABER)static char rcsId[] __attribute__ ((unused)) = "@(#) $Id: cdb.c,v 1.4 1997/02/10 07:13:26 tim Exp $";#endif#include <sys/types.h>#include <stdio.h>#include "ndmp_common.h"struct Cdb{	int		cdb_len;	char	cdb[12];	int		data_len;	char	data[256];} Cdbs[] =  {	  {		  /* 0 Test Unit Ready */		  6,		  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},		  0,		  {0}	  },	  {		  /* 1 Request Sense */		  6,		  {3, 0, 0, 0, 0, 0, 0, 0, 0, 0},		  0,		  {0}	  },	  {		  /* 2 Read Element Status */		  12,		  {0xB8, 0, 0, 1, 0, 7, 0, 0, 0, 0xff, 0, 0},		  0,		  {0}	  },	  {		  /* 3 Move Medium (slot 1 to drive) */		  12,		  {0xA5, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0},		  0,		  {0}	  },	  {		  /* 4 Move Medium (drive to slot 1) */		  12,		  {0xA5, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0},		  0,		  {0}	  },	  {		  /* 5 Mode select to diagnose filer panic bug */		  10,		  {0x15, 0x10, 0, 0, 0x15, 0, 0x15, 0, 0, 0x10},		  0,		  {0}	  }  };#define N_CDBS	(sizeof(Cdbs)/sizeof(struct Cdb))	  static voidhex_dump(char	*data,		 int	len);		  intgetCdb(u_long	num,	   char		**cdb,	   u_long	*cdb_len,	   char		**data,	   u_long	*data_len){	if (num >= N_CDBS)		return(-1);	*cdb      = Cdbs[num].cdb;	*cdb_len  = Cdbs[num].cdb_len;	*data     = Cdbs[num].data;	*data_len = Cdbs[num].data_len;	return(0);}voiddisplayCdbReply(char	status,				u_long	dataout_len,				char	*data,				int		data_len,				char	*sense,				int		sense_len){	Log("SCSI status: 0x%x\n", (u_int)status);	Log("Dataout len: %d\n", dataout_len);		if (sense_len)	{		Log("Sense data:");		hex_dump(sense, sense_len);		return;	}	if (data_len)	{		Log("Data:");		hex_dump(data, data_len);	}}static voidhex_dump(char	*data,		 int	len){	int		i, j;	for (i = 0; i < len; i += 16)	{		char	buf[128];		char	*p;				sprintf(buf, "  0x%04x: ", i);		p = buf+10;				for (j = 0; j < 16 && i+j < len; j++)		{			sprintf(p, "%02x ", (unsigned int)data[i+j] & 0x0ff);			p += 3;			if (j+1 % 2 == 0)				*p++ = ' ';		}		*p = '\0';		Log("%s\n", buf);	}}

⌨️ 快捷键说明

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