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

📄 res_debug.c

📁 vxworks source code, used for develop vxworks system.
💻 C
📖 第 1 页 / 共 2 页
字号:
/* res_debug.c - outputs to the console resolver debug messages *//* Copyright 1984-2003 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * Copyright (c) 1985, 1990, 1993 *    The Regents of the University of California.  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. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: * 	This product includes software developed by the University of * 	California, Berkeley and its contributors. * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. * * Portions Copyright (c) 1993 by Digital Equipment Corporation. *  * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies, and that * the name of Digital Equipment Corporation not be used in advertising or * publicity pertaining to distribution of the document or software without * specific, written prior permission. *  * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. *//*modification history--------------------01d,14jan03,rae  Merged from velocecp branch01c,17sep01,vvv fixed compilation warnings01b,29apr97,jag Changed T_NULL to T_NULL_RR to fix conflict with loadCoffLib.h01a,02feb97,jag Changed _p_query to dnsDebug.*/#include <resolvLib.h>#include <stdio.h>#include <string.h>void __fp_query();char *__p_class(), *__p_time(), *__p_type();char *p_cdname(), *p_fqname(), *p_rr();char *_res_opcodes[] = {	"QUERY",	"IQUERY",	"CQUERYM",	"CQUERYU",	"4",	"5",	"6",	"7",	"8",	"UPDATEA",	"UPDATED",	"UPDATEDA",	"UPDATEM",	"UPDATEMA",	"ZONEINIT",	"ZONEREF",};char *_res_resultcodes[] = {	"NOERROR",	"FORMERR",	"SERVFAIL",	"NXDOMAIN",	"NOTIMP",	"REFUSED",	"6",	"7",	"8",	"9",	"10",	"11",	"12",	"13",	"14",	"NOCHANGE",};static char retbuf[16];static char *dewks(wks)	int wks;{	switch (wks) {	case 5: return("rje");	case 7: return("echo");	case 9: return("discard");	case 11: return("systat");	case 13: return("daytime");	case 15: return("netstat");	case 17: return("qotd");	case 19: return("chargen");	case 20: return("ftp-data");	case 21: return("ftp");	case 23: return("telnet");	case 25: return("smtp");	case 37: return("time");	case 39: return("rlp");	case 42: return("name");	case 43: return("whois");	case 53: return("domain");	case 57: return("apts");	case 59: return("apfs");	case 67: return("bootps");	case 68: return("bootpc");	case 69: return("tftp");	case 77: return("rje");	case 79: return("finger");	case 87: return("link");	case 95: return("supdup");	case 100: return("newacct");	case 101: return("hostnames");	case 102: return("iso-tsap");	case 103: return("x400");	case 104: return("x400-snd");	case 105: return("csnet-ns");	case 109: return("pop-2");	case 111: return("sunrpc");	case 113: return("auth");	case 115: return("sftp");	case 117: return("uucp-path");	case 119: return("nntp");	case 121: return("erpc");	case 123: return("ntp");	case 133: return("statsrv");	case 136: return("profile");	case 144: return("NeWS");	case 161: return("snmp");	case 162: return("snmp-trap");	case 170: return("print-srv");	default: (void) sprintf(retbuf, "%d", wks); return(retbuf);	}}static char *deproto(protonum)	int protonum;{	switch (protonum) {	case 1: return("icmp");	case 2: return("igmp");	case 3: return("ggp");	case 5: return("st");	case 6: return("tcp");	case 7: return("ucl");	case 8: return("egp");	case 9: return("igp");	case 11: return("nvp-II");	case 12: return("pup");	case 16: return("chaos");	case 17: return("udp");	default: (void) sprintf(retbuf, "%d", protonum); return(retbuf);	}}static char *do_rrset(msg, cp, cnt, pflag, file, hs)	int cnt, pflag;	char *cp,*msg, *hs;	FILE *file;{	int n;	int sflag;	/*	 * Print  answer records	 */	sflag = (_res.pfcode & pflag);	if ((n = ntohs(cnt))) {		if ((!_res.pfcode) || ((sflag) && (_res.pfcode & RES_PRF_HEAD1)))			fprintf(file, hs);		while (--n >= 0) {			cp = p_rr(cp, msg, file);			if ((cp-msg) > PACKETSZ)				return (NULL);		}		if ((!_res.pfcode) || ((sflag) && (_res.pfcode & RES_PRF_HEAD1)))			putc('\n', file);	}	return(cp);}#ifdef ORG_RESOLVER__p_query(msg)	char *msg;#elsevoid dnsDebug     (    char *msg    )#endif /* ORG_RESOLVER */{	__fp_query(msg, stdout);}#ifdef ORG_RESOLVER/* * Print the current options. * This is intended to be primarily a debugging routine. */void__fp_resstat(statp, file)	struct __res_state *statp;	FILE *file;{	int bit;	fprintf(file, ";; res options:");	if (!statp)		statp = &_res;	for (bit = 0;  bit < 32;  bit++) {	/* XXX 32 - bad assumption! */		if (statp->options & (1<<bit))			fprintf(file, " %s", p_option(1<<bit));	}	putc('\n', file);}#endif /* ORG_RESOLVER *//* * Print the contents of a query. * This is intended to be primarily a debugging routine. */void__fp_query(msg,file)	char *msg;	FILE *file;{	register char *cp;	register HEADER *hp;	register int n;	/*	 * Print header fields.	 */	hp = (HEADER *)msg;	cp = msg + sizeof(HEADER);	if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEADX) || hp->rcode) {		fprintf(file,";; ->>HEADER<<- opcode: %s, status: %s, id: %d",			_res_opcodes[hp->opcode],			_res_resultcodes[hp->rcode],			ntohs(hp->id));		putc('\n', file);	}	putc(';', file);	if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEAD2)) {		fprintf(file,"; flags:");		if (hp->qr)			fprintf(file," qr");		if (hp->aa)			fprintf(file," aa");		if (hp->tc)			fprintf(file," tc");		if (hp->rd)			fprintf(file," rd");		if (hp->ra)			fprintf(file," ra");		if (hp->pr)			fprintf(file," pr");	}	if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEAD1)) {		fprintf(file,"; Ques: %d", ntohs(hp->qdcount));		fprintf(file,", Ans: %d", ntohs(hp->ancount));		fprintf(file,", Auth: %d", ntohs(hp->nscount));		fprintf(file,", Addit: %d", ntohs(hp->arcount));	}#if 1	if ((!_res.pfcode) || (_res.pfcode & 		(RES_PRF_HEADX | RES_PRF_HEAD2 | RES_PRF_HEAD1))) {		putc('\n',file);	}#endif	/*	 * Print question records.	 */	if ((n = ntohs(hp->qdcount))) {		if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))			fprintf(file,";; QUESTIONS:\n");		while (--n >= 0) {			fprintf(file,";;\t");			cp = p_cdname(cp, msg, file);			if (cp == NULL)				return;			if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))				fprintf(file, ", type = %s",					__p_type(_getshort(cp)));			cp += sizeof(uint16_t);			if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))				fprintf(file, ", class = %s\n",					__p_class(_getshort(cp)));			cp += sizeof(uint16_t);			putc('\n', file);		}	}	/*	 * Print authoritative answer records	 */	cp = do_rrset(msg, cp, hp->ancount, RES_PRF_ANS, file,		      ";; ANSWERS:\n");	if (cp == NULL)		return;	/*	 * print name server records	 */	cp = do_rrset(msg, cp, hp->nscount, RES_PRF_AUTH, file,		      ";; AUTHORITY RECORDS:\n");	if (!cp)		return;	/*	 * print additional records	 */	cp = do_rrset(msg, cp, hp->arcount, RES_PRF_ADD, file,		      ";; ADDITIONAL RECORDS:\n");	if (!cp)		return;}char *p_cdname(cp, msg, file)	char *cp, *msg;	FILE *file;{	char name[MAXDNAME];	int n;	if ((n = resolvDNExpand((u_char *)msg, (u_char *)cp + MAXCDNAME,			   (u_char *)cp, (u_char *)name, sizeof(name))) < 0)		return (NULL);	if (name[0] == '\0')		putc('.', file);	else		fputs(name, file);	return (cp + n);}char *p_fqname(cp, msg, file)	char *cp, *msg;	FILE *file;{	char name[MAXDNAME];	int n;	if ((n = resolvDNExpand((u_char *)msg, (u_char *)cp + MAXCDNAME,			   (u_char *)cp, (u_char *)name, sizeof(name))) < 0)

⌨️ 快捷键说明

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