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

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

?? print-nfs.c

?? 網卡驅動相關實例 這是和網卡NT KMD驅動程序有關的一些資料和例子。主要是以下三方面內容: 3.1 article 一些有用的文檔 3.2 Canberra 網絡診聽工具Ethern
?? C
?? 第 1 頁 / 共 2 頁
字號:
	u_int32_t		proc;		/* call proc number (host order) */};/* * Map entries are kept in an array that we manage as a ring; * new entries are always added at the tail of the ring.  Initially, * all the entries are zero and hence don't match anything. */#define	XIDMAPSIZE	64struct xid_map_entry xid_map[XIDMAPSIZE];int	xid_map_next = 0;int	xid_map_hint = 0;static voidxid_map_enter(const struct rpc_msg *rp, const struct ip *ip){	struct xid_map_entry *xmep;	xmep = &xid_map[xid_map_next];	if (++xid_map_next >= XIDMAPSIZE)		xid_map_next = 0;	xmep->xid = rp->rm_xid;	xmep->client = ip->ip_src;	xmep->server = ip->ip_dst;	xmep->proc = ntohl(rp->rm_call.cb_proc);}/* Returns true and sets proc success or false on failure */static u_int32_txid_map_find(const struct rpc_msg *rp, const struct ip *ip, u_int32_t *proc){	int i;	struct xid_map_entry *xmep;	u_int32_t xid = rp->rm_xid;	u_int32_t clip = ip->ip_dst.s_addr;	u_int32_t sip = ip->ip_src.s_addr;	/* Start searching from where we last left off */	i = xid_map_hint;	do {		xmep = &xid_map[i];		if (xmep->xid == xid && xmep->client.s_addr == clip &&		    xmep->server.s_addr == sip) {			/* match */			xid_map_hint = i;			*proc = xmep->proc;			return (1);		}		if (++i >= XIDMAPSIZE)			i = 0;	} while (i != xid_map_hint);	/* search failed */	return (0);}/* * Routines for parsing reply packets *//* * Return a pointer to the beginning of the actual results. * If the packet was truncated, return 0. */static const u_int32_t *parserep(register const struct rpc_msg *rp, register u_int length){	register const u_int32_t *dp;	u_int len;	enum accept_stat astat;	/*	 * Portability note:	 * Here we find the address of the ar_verf credentials.	 * Originally, this calculation was	 *	dp = (u_int32_t *)&rp->rm_reply.rp_acpt.ar_verf	 * On the wire, the rp_acpt field starts immediately after	 * the (32 bit) rp_stat field.  However, rp_acpt (which is a	 * "struct accepted_reply") contains a "struct opaque_auth",	 * whose internal representation contains a pointer, so on a	 * 64-bit machine the compiler inserts 32 bits of padding	 * before rp->rm_reply.rp_acpt.ar_verf.  So, we cannot use	 * the internal representation to parse the on-the-wire	 * representation.  Instead, we skip past the rp_stat field,	 * which is an "enum" and so occupies one 32-bit word.	 */	dp = ((const u_int32_t *)&rp->rm_reply) + 1;	TCHECK2(dp[0], 1);	len = ntohl(dp[1]);	if (len >= length)		return (NULL);	/*	 * skip past the ar_verf credentials.	 */	dp += (len + (2*sizeof(u_int32_t) + 3)) / sizeof(u_int32_t);	TCHECK2(dp[0], 0);	/*	 * now we can check the ar_stat field	 */	astat = ntohl(*(enum accept_stat *)dp);	switch (astat) {	case SUCCESS:		break;	case PROG_UNAVAIL:		printf(" PROG_UNAVAIL");		nfserr = 1;		/* suppress trunc string */		return (NULL);	case PROG_MISMATCH:		printf(" PROG_MISMATCH");		nfserr = 1;		/* suppress trunc string */		return (NULL);	case PROC_UNAVAIL:		printf(" PROC_UNAVAIL");		nfserr = 1;		/* suppress trunc string */		return (NULL);	case GARBAGE_ARGS:		printf(" GARBAGE_ARGS");		nfserr = 1;		/* suppress trunc string */		return (NULL);	case SYSTEM_ERR:		printf(" SYSTEM_ERR");		nfserr = 1;		/* suppress trunc string */		return (NULL);	default:		printf(" ar_stat %d", astat);		nfserr = 1;		/* suppress trunc string */		return (NULL);	}	/* successful return */	if ((sizeof(astat) + ((u_char *)dp)) < snapend)		return ((u_int32_t *) (sizeof(astat) + ((char *)dp)));trunc:	return (NULL);}static const u_int32_t *parsestatus(const u_int32_t *dp){	register int errnum;	TCHECK(dp[0]);	errnum = ntohl(dp[0]);	if (errnum != 0) {		if (!qflag)			printf(" ERROR: %s", pcap_strerror(errnum));		nfserr = 1;		/* suppress trunc string */		return (NULL);	}	return (dp + 1);trunc:	return (NULL);}static struct tok type2str[] = {	{ NFNON,	"NON" },	{ NFREG,	"REG" },	{ NFDIR,	"DIR" },	{ NFBLK,	"BLK" },	{ NFCHR,	"CHR" },	{ NFLNK,	"LNK" },	{ 0,		NULL }};static const u_int32_t *parsefattr(const u_int32_t *dp, int verbose){	const struct nfsv2_fattr *fap;	fap = (const struct nfsv2_fattr *)dp;	if (verbose) {		TCHECK(fap->fa_nfssize);		printf(" %s %o ids %u/%u sz %u ",		    tok2str(type2str, "unk-ft %d ",		    (u_int32_t)ntohl(fap->fa_type)),		    (u_int32_t)ntohl(fap->fa_mode),		    (u_int32_t)ntohl(fap->fa_uid),		    (u_int32_t)ntohl(fap->fa_gid),		    (u_int32_t)ntohl(fap->fa_nfssize));	}	/* print lots more stuff */	if (verbose > 1) {		TCHECK(fap->fa_nfsfileid);		printf("nlink %u rdev %x fsid %x nodeid %x a/m/ctime ",		    (u_int32_t)ntohl(fap->fa_nlink),		    (u_int32_t)ntohl(fap->fa_nfsrdev),		    (u_int32_t)ntohl(fap->fa_nfsfsid),		    (u_int32_t)ntohl(fap->fa_nfsfileid));		TCHECK(fap->fa_nfsatime);		printf("%u.%06u ",		    (u_int32_t)ntohl(fap->fa_nfsatime.nfs_sec),		    (u_int32_t)ntohl(fap->fa_nfsatime.nfs_usec));		TCHECK(fap->fa_nfsmtime);		printf("%u.%06u ",		    (u_int32_t)ntohl(fap->fa_nfsmtime.nfs_sec),		    (u_int32_t)ntohl(fap->fa_nfsmtime.nfs_usec));		TCHECK(fap->fa_nfsctime);		printf("%u.%06u ",		    (u_int32_t)ntohl(fap->fa_nfsctime.nfs_sec),		    (u_int32_t)ntohl(fap->fa_nfsctime.nfs_usec));	}	return ((const u_int32_t *)&fap[1]);trunc:	return (NULL);}static intparseattrstat(const u_int32_t *dp, int verbose){	dp = parsestatus(dp);	if (dp == NULL)		return (0);	return (parsefattr(dp, verbose) != NULL);}static intparsediropres(const u_int32_t *dp){	dp = parsestatus(dp);	if (dp == NULL)		return (0);	dp = parsefh(dp);	if (dp == NULL)		return (0);	return (parsefattr(dp, vflag) != NULL);}static intparselinkres(const u_int32_t *dp){	dp = parsestatus(dp);	if (dp == NULL)		return (0);	putchar(' ');	return (parsefn(dp) != NULL);}static intparsestatfs(const u_int32_t *dp){	const struct nfsv2_statfs *sfsp;	dp = parsestatus(dp);	if (dp == NULL)		return (0);	if (!qflag) {		sfsp = (const struct nfsv2_statfs *)dp;		TCHECK(sfsp->sf_bavail);		printf(" tsize %u bsize %u blocks %u bfree %u bavail %u",		    (u_int32_t)ntohl(sfsp->sf_tsize),		    (u_int32_t)ntohl(sfsp->sf_bsize),		    (u_int32_t)ntohl(sfsp->sf_blocks),		    (u_int32_t)ntohl(sfsp->sf_bfree),		    (u_int32_t)ntohl(sfsp->sf_bavail));	}	return (1);trunc:	return (0);}static intparserddires(const u_int32_t *dp){	dp = parsestatus(dp);	if (dp == NULL)		return (0);	if (!qflag) {		TCHECK(dp[0]);		printf(" offset %x", (u_int32_t)ntohl(dp[0]));		TCHECK(dp[1]);		printf(" size %u", (u_int32_t)ntohl(dp[1]));		TCHECK(dp[2]);		if (dp[2] != 0)			printf(" eof");	}	return (1);trunc:	return (0);}static voidinterp_reply(const struct rpc_msg *rp, u_int32_t proc, u_int length){	register const u_int32_t *dp;	switch (proc) {#ifdef NFSPROC_NOOP	case NFSPROC_NOOP:		printf(" nop");		return;#else#define NFSPROC_NOOP -1#endif	case NFSPROC_NULL:		printf(" null");		return;	case NFSPROC_GETATTR:		printf(" getattr");		dp = parserep(rp, length);		if (dp != NULL && parseattrstat(dp, !qflag) != 0)			return;		break;	case NFSPROC_SETATTR:		printf(" setattr");		dp = parserep(rp, length);		if (dp != NULL && parseattrstat(dp, !qflag) != 0)			return;		break;#if NFSPROC_ROOT != NFSPROC_NOOP	case NFSPROC_ROOT:		printf(" root");		break;#endif	case NFSPROC_LOOKUP:		printf(" lookup");		dp = parserep(rp, length);		if (dp != NULL && parsediropres(dp) != 0)			return;		break;	case NFSPROC_READLINK:		printf(" readlink");		dp = parserep(rp, length);		if (dp != NULL && parselinkres(dp) != 0)			return;		break;	case NFSPROC_READ:		printf(" read");		dp = parserep(rp, length);		if (dp != NULL && parseattrstat(dp, vflag) != 0)			return;		break;#if NFSPROC_WRITECACHE != NFSPROC_NOOP	case NFSPROC_WRITECACHE:		printf(" writecache");		break;#endif	case NFSPROC_WRITE:		printf(" write");		dp = parserep(rp, length);		if (dp != NULL && parseattrstat(dp, vflag) != 0)			return;		break;	case NFSPROC_CREATE:		printf(" create");		dp = parserep(rp, length);		if (dp != NULL && parsediropres(dp) != 0)			return;		break;	case NFSPROC_REMOVE:		printf(" remove");		dp = parserep(rp, length);		if (dp != NULL && parsestatus(dp) != 0)			return;		break;	case NFSPROC_RENAME:		printf(" rename");		dp = parserep(rp, length);		if (dp != NULL && parsestatus(dp) != 0)			return;		break;	case NFSPROC_LINK:		printf(" link");		dp = parserep(rp, length);		if (dp != NULL && parsestatus(dp) != 0)			return;		break;	case NFSPROC_SYMLINK:		printf(" symlink");		dp = parserep(rp, length);		if (dp != NULL && parsestatus(dp) != 0)			return;		break;	case NFSPROC_MKDIR:		printf(" mkdir");		dp = parserep(rp, length);		if (dp != NULL && parsediropres(dp) != 0)			return;		break;	case NFSPROC_RMDIR:		printf(" rmdir");		dp = parserep(rp, length);		if (dp != NULL && parsestatus(dp) != 0)			return;		break;	case NFSPROC_READDIR:		printf(" readdir");		dp = parserep(rp, length);		if (dp != NULL && parserddires(dp) != 0)			return;		break;	case NFSPROC_STATFS:		printf(" statfs");		dp = parserep(rp, length);		if (dp != NULL && parsestatfs(dp) != 0)			return;		break;	default:		printf(" proc-%u", proc);		return;	}	if (!nfserr)		fputs(" [|nfs]", stdout);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品亚洲精品国产欧美| 亚洲地区一二三色| 亚洲精品在线一区二区| 久久精品一区四区| 亚洲日本在线a| 免费的国产精品| www.亚洲国产| 91精品国产综合久久福利软件 | 久久精品国产99国产| 国产二区国产一区在线观看| 色综合色狠狠综合色| 欧美精品色一区二区三区| 久久综合给合久久狠狠狠97色69| 国产精品成人免费| 香蕉久久夜色精品国产使用方法| 韩国女主播成人在线| 91捆绑美女网站| 日韩精品一区二区三区视频| 亚洲老妇xxxxxx| 国产一区久久久| 欧美性猛片xxxx免费看久爱| 精品久久一区二区三区| 一区二区欧美国产| 国产成人av电影在线| 欧美一区二区三区在线观看视频| 国产精品视频九色porn| 美女脱光内衣内裤视频久久网站 | 国产很黄免费观看久久| 99riav久久精品riav| 精品精品国产高清a毛片牛牛| 亚洲国产精品欧美一二99| 成人免费福利片| 久久久青草青青国产亚洲免观| 午夜精品爽啪视频| 色综合中文字幕国产| 国产三级精品三级在线专区| 美日韩一级片在线观看| 欧美系列在线观看| 亚洲人成在线播放网站岛国| 丁香桃色午夜亚洲一区二区三区 | 成人av片在线观看| 久久精品一区四区| 精品一区二区在线观看| 制服丝袜中文字幕一区| 亚洲电影视频在线| 欧美在线你懂的| 亚洲精品乱码久久久久久久久 | 久久久久久久久久电影| 久久99国产精品麻豆| 精品福利在线导航| 日韩精品欧美成人高清一区二区| 在线精品观看国产| 一区二区三国产精华液| 欧美艳星brazzers| 性感美女极品91精品| 欧美亚洲高清一区二区三区不卡| 专区另类欧美日韩| 97se亚洲国产综合自在线不卡 | 日韩精品成人一区二区三区| 欧美性xxxxxx少妇| 日日摸夜夜添夜夜添精品视频 | 日韩电影免费在线| 日韩一本二本av| 久久99国产精品麻豆| 久久美女艺术照精彩视频福利播放| 婷婷久久综合九色综合绿巨人| 欧美日韩另类国产亚洲欧美一级| 五月婷婷综合网| 欧美成人一区二区三区在线观看 | 成人综合激情网| 国产午夜精品久久久久久久| 成人午夜免费av| 亚洲精品videosex极品| 欧美日韩一区三区四区| 人人爽香蕉精品| 国产片一区二区三区| 色婷婷精品大视频在线蜜桃视频| 亚洲成a人片在线不卡一二三区 | 在线观看一区日韩| 午夜精品免费在线| 久久久久久久久一| 99视频精品在线| 婷婷久久综合九色国产成人| 久久欧美一区二区| 色菇凉天天综合网| 精品一区二区三区影院在线午夜 | 91久久精品一区二区三区| 日本中文一区二区三区| 色哟哟精品一区| 美女爽到高潮91| 亚洲成人第一页| 亚洲私人黄色宅男| 欧美激情在线一区二区三区| 日韩一区二区电影网| 欧美三区在线视频| 色哟哟国产精品免费观看| 成人av免费观看| 丁香婷婷综合五月| 成人一道本在线| 国产一区激情在线| 国内精品嫩模私拍在线| 久久精品av麻豆的观看方式| 五月婷婷久久综合| 日韩高清不卡一区| 日韩中文字幕不卡| 婷婷亚洲久悠悠色悠在线播放| 亚洲激情中文1区| 亚洲人快播电影网| 亚洲欧美日韩国产手机在线| 国产精品久久久久一区二区三区| 久久精品日韩一区二区三区| 26uuu精品一区二区| 久久男人中文字幕资源站| 国产精品996| 欧美成人性战久久| 欧美无砖砖区免费| 欧美丝袜丝nylons| 欧美日韩dvd在线观看| 3atv一区二区三区| 欧美mv日韩mv国产网站app| 欧美成人一区二区三区片免费| 欧美一区二区三区小说| 日韩欧美视频一区| 久久精品亚洲一区二区三区浴池| 精品伦理精品一区| 国产午夜精品福利| 成人欧美一区二区三区小说| 亚洲黄色免费网站| 日韩av不卡在线观看| 激情综合色综合久久| 国产酒店精品激情| zzijzzij亚洲日本少妇熟睡| 色国产精品一区在线观看| 制服丝袜激情欧洲亚洲| 久久综合九色欧美综合狠狠| 国产亚洲人成网站| 亚洲人成在线观看一区二区| 午夜精品免费在线| 国产高清精品网站| 色婷婷久久久综合中文字幕| 欧美一级理论片| 国产精品网站在线观看| 香港成人在线视频| 国产在线观看免费一区| 91色九色蝌蚪| 日韩一区二区三区高清免费看看| 国产婷婷色一区二区三区| 一区二区三区自拍| 久久成人免费网| 成人午夜av在线| 精品视频在线看| 久久品道一品道久久精品| 亚洲一区免费在线观看| 国产伦精品一区二区三区免费 | 国产一区二区三区香蕉| 91国内精品野花午夜精品| 欧美日韩国产首页在线观看| 欧美mv日韩mv国产| 一区二区三区久久| 国产呦萝稀缺另类资源| 欧美日韩免费不卡视频一区二区三区| 国产亚洲欧美日韩在线一区| 丝袜美腿高跟呻吟高潮一区| 成人毛片视频在线观看| 日韩免费一区二区| 亚洲午夜精品网| 色综合久久久久| 欧美国产一区在线| 美女视频免费一区| 欧美日韩亚洲丝袜制服| 国产精品免费观看视频| 久久99久国产精品黄毛片色诱| 欧美性猛交xxxxxxxx| 国产精品久久久久影院| 国产高清一区日本| 精品福利视频一区二区三区| 天天色综合成人网| 欧洲色大大久久| 亚洲天堂av一区| 不卡视频在线看| 国产精品视频看| 成人在线一区二区三区| 国产日韩欧美高清| 国产精品99久久久久| 日韩精品一区二区三区中文精品| 亚洲一区二区三区爽爽爽爽爽| 91偷拍与自偷拍精品| 亚洲欧洲国产日韩| 成人性生交大片免费看视频在线| 久久精品一级爱片| 国产69精品久久久久毛片| 国产欧美在线观看一区| 国产精品996| 亚洲国产成人私人影院tom| 国产另类ts人妖一区二区| 2024国产精品| 国产大片一区二区| 国产调教视频一区| 成人午夜精品在线| 亚洲欧美欧美一区二区三区|