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

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

?? print-lwres.c

?? TCPDUMP的C語言源代碼,是在數據鏈路層的應用
?? C
字號:
/* * Copyright (C) 2001 WIDE Project. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the project nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */#ifndef lintstatic const char rcsid[] _U_ =    "@(#) $Header: /tcpdump/master/tcpdump/print-lwres.c,v 1.13 2004-03-24 01:54:29 guy Exp $ (LBL)";#endif#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <tcpdump-stdinc.h>#include "nameser.h"#include <stdio.h>#include <string.h>#include "interface.h"#include "addrtoname.h"#include "extract.h"                    /* must come after interface.h *//* BIND9 lib/lwres/include/lwres */typedef u_int32_t lwres_uint32_t;typedef u_int16_t lwres_uint16_t;typedef u_int8_t lwres_uint8_t;struct lwres_lwpacket {	lwres_uint32_t		length;	lwres_uint16_t		version;	lwres_uint16_t		pktflags;	lwres_uint32_t		serial;	lwres_uint32_t		opcode;	lwres_uint32_t		result;	lwres_uint32_t		recvlength;	lwres_uint16_t		authtype;	lwres_uint16_t		authlength;};#define LWRES_LWPACKETFLAG_RESPONSE	0x0001U	/* if set, pkt is a response */#define LWRES_LWPACKETVERSION_0		0#define LWRES_FLAG_TRUSTNOTREQUIRED	0x00000001U#define LWRES_FLAG_SECUREDATA		0x00000002U/* * no-op */#define LWRES_OPCODE_NOOP		0x00000000Utypedef struct {	/* public */	lwres_uint16_t			datalength;	/* data follows */} lwres_nooprequest_t;typedef struct {	/* public */	lwres_uint16_t			datalength;	/* data follows */} lwres_noopresponse_t;/* * get addresses by name */#define LWRES_OPCODE_GETADDRSBYNAME	0x00010001Utypedef struct lwres_addr lwres_addr_t;struct lwres_addr {	lwres_uint32_t			family;	lwres_uint16_t			length;	/* address folows */};typedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint32_t			addrtypes;	lwres_uint16_t			namelen;	/* name follows */} lwres_gabnrequest_t;typedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint16_t			naliases;	lwres_uint16_t			naddrs;	lwres_uint16_t			realnamelen;	/* aliases follows */	/* addrs follows */	/* realname follows */} lwres_gabnresponse_t;/* * get name by address */#define LWRES_OPCODE_GETNAMEBYADDR	0x00010002Utypedef struct {	/* public */	lwres_uint32_t			flags;	lwres_addr_t			addr;	/* addr body follows */} lwres_gnbarequest_t;typedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint16_t			naliases;	lwres_uint16_t			realnamelen;	/* aliases follows */	/* realname follows */} lwres_gnbaresponse_t;/* * get rdata by name */#define LWRES_OPCODE_GETRDATABYNAME	0x00010003Utypedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint16_t			rdclass;	lwres_uint16_t			rdtype;	lwres_uint16_t			namelen;	/* name follows */} lwres_grbnrequest_t;typedef struct {	/* public */	lwres_uint32_t			flags;	lwres_uint16_t			rdclass;	lwres_uint16_t			rdtype;	lwres_uint32_t			ttl;	lwres_uint16_t			nrdatas;	lwres_uint16_t			nsigs;	/* realname here (len + name) */	/* rdata here (len + name) */	/* signatures here (len + name) */} lwres_grbnresponse_t;#define LWRDATA_VALIDATED	0x00000001#define LWRES_ADDRTYPE_V4		0x00000001U	/* ipv4 */#define LWRES_ADDRTYPE_V6		0x00000002U	/* ipv6 */#define LWRES_MAX_ALIASES		16		/* max # of aliases */#define LWRES_MAX_ADDRS			64		/* max # of addrs */struct tok opcode[] = {	{ LWRES_OPCODE_NOOP,		"noop", },	{ LWRES_OPCODE_GETADDRSBYNAME,	"getaddrsbyname", },	{ LWRES_OPCODE_GETNAMEBYADDR,	"getnamebyaddr", },	{ LWRES_OPCODE_GETRDATABYNAME,	"getrdatabyname", },	{ 0, 				NULL, },};/* print-domain.c */extern struct tok ns_type2str[];extern struct tok ns_class2str[];static int lwres_printname(size_t, const char *);static int lwres_printnamelen(const char *);static int lwres_printbinlen(const char *);static int lwres_printaddr(lwres_addr_t *);static intlwres_printname(size_t l, const char *p0){	const char *p;	size_t i;	p = p0;	/* + 1 for terminating \0 */	if (p + l + 1 > (const char *)snapend)		goto trunc;	printf(" ");	for (i = 0; i < l; i++)		safeputchar(*p++);	p++;	/* skip terminating \0 */	return p - p0;  trunc:	return -1;}static intlwres_printnamelen(const char *p){	u_int16_t l;	int advance;	if (p + 2 > (const char *)snapend)		goto trunc;	l = EXTRACT_16BITS(p);	advance = lwres_printname(l, p + 2);	if (advance < 0)		goto trunc;	return 2 + advance;  trunc:	return -1;}static intlwres_printbinlen(const char *p0){	const char *p;	u_int16_t l;	int i;	p = p0;	if (p + 2 > (const char *)snapend)		goto trunc;	l = EXTRACT_16BITS(p);	if (p + 2 + l > (const char *)snapend)		goto trunc;	p += 2;	for (i = 0; i < l; i++)		printf("%02x", *p++);	return p - p0;  trunc:	return -1;}static intlwres_printaddr(lwres_addr_t *ap){	u_int16_t l;	const char *p;	int i;	TCHECK(ap->length);	l = EXTRACT_16BITS(&ap->length);	/* XXX ap points to packed struct */	p = (const char *)&ap->length + sizeof(ap->length);	TCHECK2(*p, l);	switch (EXTRACT_32BITS(&ap->family)) {	case 1:	/* IPv4 */		if (l < 4)			return -1;		printf(" %s", ipaddr_string(p));		p += sizeof(struct in_addr);		break;#ifdef INET6	case 2:	/* IPv6 */		if (l < 16)			return -1;		printf(" %s", ip6addr_string(p));		p += sizeof(struct in6_addr);		break;#endif	default:		printf(" %u/", EXTRACT_32BITS(&ap->family));		for (i = 0; i < l; i++)			printf("%02x", *p++);	}	return p - (const char *)ap;  trunc:	return -1;}voidlwres_print(register const u_char *bp, u_int length){	const struct lwres_lwpacket *np;	u_int32_t v;	const char *s;	int response;	int advance;	int unsupported = 0;	np = (const struct lwres_lwpacket *)bp;	TCHECK(np->authlength);	printf(" lwres");	v = EXTRACT_16BITS(&np->version);	if (vflag || v != LWRES_LWPACKETVERSION_0)		printf(" v%u", v);	if (v != LWRES_LWPACKETVERSION_0) {		s = (const char *)np + EXTRACT_32BITS(&np->length);		goto tail;	}	response = EXTRACT_16BITS(&np->pktflags) & LWRES_LWPACKETFLAG_RESPONSE;	/* opcode and pktflags */	v = EXTRACT_32BITS(&np->opcode);	s = tok2str(opcode, "#0x%x", v);	printf(" %s%s", s, response ? "" : "?");	/* pktflags */	v = EXTRACT_16BITS(&np->pktflags);	if (v & ~LWRES_LWPACKETFLAG_RESPONSE)		printf("[0x%x]", v);	if (vflag > 1) {		printf(" (");	/*)*/		printf("serial:0x%x", EXTRACT_32BITS(&np->serial));		printf(" result:0x%x", EXTRACT_32BITS(&np->result));		printf(" recvlen:%u", EXTRACT_32BITS(&np->recvlength));		/* BIND910: not used */		if (vflag > 2) {			printf(" authtype:0x%x", EXTRACT_16BITS(&np->authtype));			printf(" authlen:%u", EXTRACT_16BITS(&np->authlength));		}		/*(*/		printf(")");	}	/* per-opcode content */	if (!response) {		/*		 * queries		 */		lwres_gabnrequest_t *gabn;		lwres_gnbarequest_t *gnba;		lwres_grbnrequest_t *grbn;		u_int32_t l;		gabn = NULL;		gnba = NULL;		grbn = NULL;		switch (EXTRACT_32BITS(&np->opcode)) {		case LWRES_OPCODE_NOOP:			break;		case LWRES_OPCODE_GETADDRSBYNAME:			gabn = (lwres_gabnrequest_t *)(np + 1);			TCHECK(gabn->namelen);			/* XXX gabn points to packed struct */			s = (const char *)&gabn->namelen +			    sizeof(gabn->namelen);			l = EXTRACT_16BITS(&gabn->namelen);			/* BIND910: not used */			if (vflag > 2) {				printf(" flags:0x%x",				    EXTRACT_32BITS(&gabn->flags));			}			v = EXTRACT_32BITS(&gabn->addrtypes);			switch (v & (LWRES_ADDRTYPE_V4 | LWRES_ADDRTYPE_V6)) {			case LWRES_ADDRTYPE_V4:				printf(" IPv4");				break;			case LWRES_ADDRTYPE_V6:				printf(" IPv6");				break;			case LWRES_ADDRTYPE_V4 | LWRES_ADDRTYPE_V6:				printf(" IPv4/6");				break;			}			if (v & ~(LWRES_ADDRTYPE_V4 | LWRES_ADDRTYPE_V6))				printf("[0x%x]", v);			advance = lwres_printname(l, s);			if (advance < 0)				goto trunc;			s += advance;			break;		case LWRES_OPCODE_GETNAMEBYADDR:			gnba = (lwres_gnbarequest_t *)(np + 1);			TCHECK(gnba->addr);			/* BIND910: not used */			if (vflag > 2) {				printf(" flags:0x%x",				    EXTRACT_32BITS(&gnba->flags));			}			s = (const char *)&gnba->addr;			advance = lwres_printaddr(&gnba->addr);			if (advance < 0)				goto trunc;			s += advance;			break;		case LWRES_OPCODE_GETRDATABYNAME:			/* XXX no trace, not tested */			grbn = (lwres_grbnrequest_t *)(np + 1);			TCHECK(grbn->namelen);			/* BIND910: not used */			if (vflag > 2) {				printf(" flags:0x%x",				    EXTRACT_32BITS(&grbn->flags));			}			printf(" %s", tok2str(ns_type2str, "Type%d",			    EXTRACT_16BITS(&grbn->rdtype)));			if (EXTRACT_16BITS(&grbn->rdclass) != C_IN) {				printf(" %s", tok2str(ns_class2str, "Class%d",				    EXTRACT_16BITS(&grbn->rdclass)));			}			/* XXX grbn points to packed struct */			s = (const char *)&grbn->namelen +			    sizeof(grbn->namelen);			l = EXTRACT_16BITS(&grbn->namelen);			advance = lwres_printname(l, s);			if (advance < 0)				goto trunc;			s += advance;			break;		default:			unsupported++;			break;		}	} else {		/*		 * responses		 */		lwres_gabnresponse_t *gabn;		lwres_gnbaresponse_t *gnba;		lwres_grbnresponse_t *grbn;		u_int32_t l, na;		u_int32_t i;		gabn = NULL;		gnba = NULL;		grbn = NULL;		switch (EXTRACT_32BITS(&np->opcode)) {		case LWRES_OPCODE_NOOP:			break;		case LWRES_OPCODE_GETADDRSBYNAME:			gabn = (lwres_gabnresponse_t *)(np + 1);			TCHECK(gabn->realnamelen);			/* XXX gabn points to packed struct */			s = (const char *)&gabn->realnamelen +			    sizeof(gabn->realnamelen);			l = EXTRACT_16BITS(&gabn->realnamelen);			/* BIND910: not used */			if (vflag > 2) {				printf(" flags:0x%x",				    EXTRACT_32BITS(&gabn->flags));			}			printf(" %u/%u", EXTRACT_16BITS(&gabn->naliases),			    EXTRACT_16BITS(&gabn->naddrs));			advance = lwres_printname(l, s);			if (advance < 0)				goto trunc;			s += advance;			/* aliases */			na = EXTRACT_16BITS(&gabn->naliases);			for (i = 0; i < na; i++) {				advance = lwres_printnamelen(s);				if (advance < 0)					goto trunc;				s += advance;			}			/* addrs */			na = EXTRACT_16BITS(&gabn->naddrs);			for (i = 0; i < na; i++) {				advance = lwres_printaddr((lwres_addr_t *)s);				if (advance < 0)					goto trunc;				s += advance;			}			break;		case LWRES_OPCODE_GETNAMEBYADDR:			gnba = (lwres_gnbaresponse_t *)(np + 1);			TCHECK(gnba->realnamelen);			/* XXX gnba points to packed struct */			s = (const char *)&gnba->realnamelen +			    sizeof(gnba->realnamelen);			l = EXTRACT_16BITS(&gnba->realnamelen);			/* BIND910: not used */			if (vflag > 2) {				printf(" flags:0x%x",				    EXTRACT_32BITS(&gnba->flags));			}			printf(" %u", EXTRACT_16BITS(&gnba->naliases));			advance = lwres_printname(l, s);			if (advance < 0)				goto trunc;			s += advance;			/* aliases */			na = EXTRACT_16BITS(&gnba->naliases);			for (i = 0; i < na; i++) {				advance = lwres_printnamelen(s);				if (advance < 0)					goto trunc;				s += advance;			}			break;		case LWRES_OPCODE_GETRDATABYNAME:			/* XXX no trace, not tested */			grbn = (lwres_grbnresponse_t *)(np + 1);			TCHECK(grbn->nsigs);			/* BIND910: not used */			if (vflag > 2) {				printf(" flags:0x%x",				    EXTRACT_32BITS(&grbn->flags));			}			printf(" %s", tok2str(ns_type2str, "Type%d",			    EXTRACT_16BITS(&grbn->rdtype)));			if (EXTRACT_16BITS(&grbn->rdclass) != C_IN) {				printf(" %s", tok2str(ns_class2str, "Class%d",				    EXTRACT_16BITS(&grbn->rdclass)));			}			printf(" TTL ");			relts_print(EXTRACT_32BITS(&grbn->ttl));			printf(" %u/%u", EXTRACT_16BITS(&grbn->nrdatas),			    EXTRACT_16BITS(&grbn->nsigs));			/* XXX grbn points to packed struct */			s = (const char *)&grbn->nsigs+ sizeof(grbn->nsigs);			advance = lwres_printnamelen(s);			if (advance < 0)				goto trunc;			s += advance;			/* rdatas */			na = EXTRACT_16BITS(&grbn->nrdatas);			for (i = 0; i < na; i++) {				/* XXX should decode resource data */				advance = lwres_printbinlen(s);				if (advance < 0)					goto trunc;				s += advance;			}			/* sigs */			na = EXTRACT_16BITS(&grbn->nsigs);			for (i = 0; i < na; i++) {				/* XXX how should we print it? */				advance = lwres_printbinlen(s);				if (advance < 0)					goto trunc;				s += advance;			}			break;		default:			unsupported++;			break;		}	}  tail:	/* length mismatch */	if (EXTRACT_32BITS(&np->length) != length) {		printf(" [len: %u != %u]", EXTRACT_32BITS(&np->length),		    length);	}	if (!unsupported && s < (const char *)np + EXTRACT_32BITS(&np->length))		printf("[extra]");	return;  trunc:	printf("[|lwres]");	return;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三区一线天视频| 在线免费观看日韩欧美| 性久久久久久久久| 亚洲国产欧美在线人成| 一区二区三区精品| 一区二区三区日本| 午夜天堂影视香蕉久久| 天天免费综合色| 日本成人在线看| 国产一区二区福利视频| 国产成人自拍高清视频在线免费播放| 国精产品一区一区三区mba视频| 黄网站免费久久| 国产91精品露脸国语对白| 成人app网站| 欧美色图一区二区三区| 91精品欧美久久久久久动漫| 欧美r级在线观看| 欧美精品一区二区三区高清aⅴ| 国产夜色精品一区二区av| 国产精品电影院| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲永久精品国产| 另类人妖一区二区av| 国产寡妇亲子伦一区二区| 成人性生交大合| 色屁屁一区二区| 91精品国产麻豆| 国产精品福利在线播放| 日韩有码一区二区三区| 成人免费三级在线| 欧美日韩国产系列| 国产亚洲欧美日韩在线一区| 尤物视频一区二区| 国产一级精品在线| 欧美色男人天堂| 欧美国产精品久久| 亚洲成av人片www| 国产成人8x视频一区二区| 欧美三级蜜桃2在线观看| 久久免费偷拍视频| 亚洲成人av一区二区三区| 国产美女在线观看一区| 欧美久久久久久蜜桃| 国产精品你懂的在线| 日韩高清在线一区| 91美女精品福利| 久久精品视频免费| 青青草国产精品亚洲专区无| 日本乱码高清不卡字幕| 国产日产欧产精品推荐色| 天天影视涩香欲综合网| 色婷婷精品久久二区二区蜜臂av| 精品久久久久99| 首页国产欧美日韩丝袜| 91高清视频在线| 日韩毛片在线免费观看| 国产成a人亚洲| 久久众筹精品私拍模特| 日本不卡123| 7777精品伊人久久久大香线蕉完整版 | 色婷婷精品久久二区二区蜜臀av| 久久久亚洲高清| 免费观看成人鲁鲁鲁鲁鲁视频| 色视频欧美一区二区三区| 国产精品对白交换视频| 成人精品免费看| 亚洲国产精品成人综合| 国产99精品国产| 久久嫩草精品久久久精品一| 精品一区二区三区在线观看国产 | 精品夜夜嗨av一区二区三区| 欧美日韩国产综合草草| 亚洲一区在线免费观看| 日本韩国一区二区三区视频| 国产精品久久久久久亚洲毛片 | 亚洲国产cao| 欧美伊人精品成人久久综合97| 亚洲男同性恋视频| 色香蕉久久蜜桃| 亚洲一区二区精品3399| 337p亚洲精品色噜噜噜| 另类调教123区| 久久久久久久免费视频了| 国产精品影视在线| 中文字幕制服丝袜成人av| 99久久久久久| 性做久久久久久免费观看| 91精品久久久久久久99蜜桃| 激情文学综合丁香| 国产精品美女久久久久久| 91丨九色丨国产丨porny| 亚洲一区日韩精品中文字幕| 91精品国产免费久久综合| 国产在线精品一区二区不卡了 | 美女网站一区二区| 中文一区二区在线观看| 色综合欧美在线视频区| 日韩av中文在线观看| 久久综合九色综合欧美就去吻 | 高清av一区二区| 亚洲视频一区在线观看| 欧美一级二级三级蜜桃| 国产高清一区日本| 亚洲永久精品国产| 久久亚洲综合色| 欧美综合一区二区| 国产精品一区二区果冻传媒| 亚洲激情图片qvod| 久久奇米777| 欧美在线不卡视频| 国产一区久久久| 亚洲国产精品高清| 欧美精三区欧美精三区| 成人一区二区三区在线观看| 亚洲第一二三四区| 国产欧美一区二区精品秋霞影院| 91九色最新地址| 国产成人午夜精品5599| 日韩电影网1区2区| 亚洲欧美日韩人成在线播放| 精品理论电影在线| 欧美日韩成人综合天天影院 | 一区二区免费看| 国产欧美日韩不卡免费| 日韩欧美国产午夜精品| 91电影在线观看| 成人免费高清视频| 国产精品一区二区三区99| 青娱乐精品视频| 亚洲一区二区三区视频在线播放 | 婷婷成人综合网| 中文字幕不卡在线| 久久你懂得1024| 日韩精品一区二区三区在线播放| 在线看不卡av| 在线亚洲免费视频| 99亚偷拍自图区亚洲| 国产一区二区伦理片| 久久精品国产澳门| 美女在线视频一区| 免费成人在线网站| 日本在线不卡视频| 视频一区在线视频| 三级成人在线视频| 一区二区成人在线视频| 亚洲精品国产a久久久久久 | 欧洲一区二区三区在线| 色婷婷国产精品| 色综合久久九月婷婷色综合| 91影院在线观看| 91亚洲精品久久久蜜桃| 9i看片成人免费高清| 91麻豆蜜桃一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 一道本成人在线| 欧美视频日韩视频| 欧美一区二区三区视频| 欧美成人a在线| 久久无码av三级| 国产精品色在线| 亚洲天堂2016| 五月婷婷激情综合| 美女mm1313爽爽久久久蜜臀| 国产中文字幕精品| av亚洲产国偷v产偷v自拍| 91免费在线视频观看| 在线免费观看日本一区| 日韩一级片网址| 国产网红主播福利一区二区| 国产精品视频看| 一区二区三区久久久| 亚洲v精品v日韩v欧美v专区| 日本欧美一区二区在线观看| 国产高清不卡一区二区| 91老师国产黑色丝袜在线| 91精彩视频在线| 日韩视频一区在线观看| 欧美国产精品专区| 午夜日韩在线电影| 国产黄色成人av| 欧美色大人视频| 久久久99精品久久| 亚洲图片欧美一区| 国产精品亚洲专一区二区三区| 色综合久久综合中文综合网| 欧美一级xxx| 中文字幕一区三区| 日本欧洲一区二区| 99久久久精品| 精品不卡在线视频| 伊人色综合久久天天| 狠狠色丁香九九婷婷综合五月| 97久久精品人人做人人爽| 日韩免费观看高清完整版在线观看| 国产精品不卡在线| 国产一区二区毛片| 欧美一区二区三区系列电影| 中文字幕第一区二区| 精一区二区三区|