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

📄 res_debug.c

📁 vxworks source code, used for develop vxworks system.
💻 C
📖 第 1 页 / 共 2 页
字号:
		return (NULL);	if (name[0] == '\0') {		putc('.', file);	} else {		fputs(name, file);		if (name[strlen(name) - 1] != '.')			putc('.', file);	}	return (cp + n);}/* * Print resource record fields in human readable form. */char *p_rr(cp, msg, file)	char *cp, *msg;	FILE *file;{	int type, class, dlen, n, c;	struct in_addr inaddr;	char *cp1, *cp2;	uint32_t tmpttl, t;	int lcnt;	if ((cp = p_fqname(cp, msg, file)) == NULL)		return (NULL);			/* compression error */	type = _getshort(cp);	cp += sizeof(uint16_t);	class = _getshort(cp);	cp += sizeof(uint16_t);	tmpttl = _getlong(cp);	cp += sizeof(uint32_t);	dlen = _getshort(cp);	cp += sizeof(uint16_t);	cp1 = cp;	if ((!_res.pfcode) || (_res.pfcode & RES_PRF_TTLID))		fprintf(file, "\t%lu", tmpttl);	if ((!_res.pfcode) || (_res.pfcode & RES_PRF_CLASS))		fprintf(file, "\t%s", __p_class(class));	fprintf(file, "\t%s", __p_type(type));	/*	 * Print type specific data, if appropriate	 */	switch (type) {	case T_A:		switch (class) {		case C_IN:		case C_HS:			bcopy(cp, (char *)&inaddr, sizeof(inaddr));			if (dlen == 4) {				fprintf(file,"\t%s", inet_ntoa(inaddr));				cp += dlen;			} else if (dlen == 7) {				char *address;				u_char protocol;				u_short port;				address = inet_ntoa(inaddr);				cp += sizeof(inaddr);				protocol = *(u_char*)cp;				cp += sizeof(u_char);				port = _getshort(cp);				cp += sizeof(uint16_t);				fprintf(file, "\t%s\t; proto %d, port %d",					address, protocol, port);			}			break;		default:			cp += dlen;		}		break;	case T_CNAME:	case T_MB:	case T_MG:	case T_MR:	case T_NS:	case T_PTR:		putc('\t', file);		cp = p_fqname(cp, msg, file);		break;	case T_HINFO:		if ((n = *cp++)) {			fprintf(file,"\t%.*s", n, cp);			cp += n;		}		if ((n = *cp++)) {			fprintf(file,"\t%.*s", n, cp);			cp += n;		}		break;	case T_SOA:		putc('\t', file);		cp = p_fqname(cp, msg, file);	/* origin */		putc(' ', file);		cp = p_fqname(cp, msg, file);	/* mail addr */		fputs(" (\n", file);		t = _getlong(cp);  cp += sizeof(uint32_t);		fprintf(file,"\t\t\t%lu\t; serial\n", t);		t = _getlong(cp);  cp += sizeof(uint32_t);		fprintf(file,"\t\t\t%lu\t; refresh (%s)\n", t, __p_time(t));		t = _getlong(cp);  cp += sizeof(uint32_t);		fprintf(file,"\t\t\t%lu\t; retry (%s)\n", t, __p_time(t));		t = _getlong(cp);  cp += sizeof(uint32_t);		fprintf(file,"\t\t\t%lu\t; expire (%s)\n", t, __p_time(t));		t = _getlong(cp);  cp += sizeof(uint32_t);		fprintf(file,"\t\t\t%lu )\t; minimum (%s)", t, __p_time(t));		break;	case T_MX:	case T_AFSDB:		fprintf(file,"\t%d ", _getshort(cp));		cp += sizeof(uint16_t);		cp = p_fqname(cp, msg, file);		break;  	case T_TXT:		(void) fputs("\t\"", file);		cp2 = cp1 + dlen;		while (cp < cp2) {			if ((n = (unsigned char) *cp++)) {				for (c = n; c > 0 && cp < cp2; c--)					if (*cp == '\n') {					    (void) putc('\\', file);					    (void) putc(*cp++, file);					} else					    (void) putc(*cp++, file);			}		}		putc('"', file);  		break;	case T_MINFO:	case T_RP:		putc('\t', file);		cp = p_fqname(cp, msg, file);		putc(' ', file);		cp = p_fqname(cp, msg, file);		break;	case T_UINFO:		putc('\t', file);		fputs(cp, file);		cp += dlen;		break;	case T_UID:	case T_GID:		if (dlen == 4) {			fprintf(file,"\t%lu", _getlong(cp));			cp += sizeof(uint32_t);		}		break;	case T_WKS:		if (dlen < sizeof(uint32_t) + 1)			break;		bcopy(cp, (char *)&inaddr, sizeof(inaddr));		cp += sizeof(uint32_t);		fprintf(file, "\t%s %s ( ",			inet_ntoa(inaddr),			deproto((int) *cp));		cp += sizeof(u_char);		n = 0;		lcnt = 0;		while (cp < cp1 + dlen) {			c = *cp++;			do { 				if (c & 0200) {					if (lcnt == 0) {						fputs("\n\t\t\t", file);						lcnt = 5;					}					fputs(dewks(n), file);					putc(' ', file);					lcnt--;				} 				c <<= 1;			} while (++n & 07);		}		putc(')', file);		break;#ifdef ALLOW_T_UNSPEC	case T_UNSPEC:		{			int NumBytes = 8;			char *DataPtr;			int i;			if (dlen < NumBytes) NumBytes = dlen;			fprintf(file, "\tFirst %d bytes of hex data:",				NumBytes);			for (i = 0, DataPtr = cp; i < NumBytes; i++, DataPtr++)				fprintf(file, " %x", *DataPtr);			cp += dlen;		}		break;#endif /* ALLOW_T_UNSPEC */	default:		fprintf(file,"\t?%d?", type);		cp += dlen;	}#if 0	fprintf(file, "\t; dlen=%d, ttl %s\n", dlen, __p_time(tmpttl));#else	putc('\n', file);#endif	if (cp - cp1 != dlen) {		fprintf(file,";; packet size error (found %d, dlen was %d)\n",			(int) (cp - cp1), dlen);		cp = NULL;	}	return (cp);}static	char nbuf[40];/* * Return a string for the type */char *__p_type(type)	int type;{	switch (type) {	case T_A:		return("A");	case T_NS:		/* authoritative server */		return("NS");	case T_CNAME:		/* canonical name */		return("CNAME");	case T_SOA:		/* start of authority zone */		return("SOA");	case T_MB:		/* mailbox domain name */		return("MB");	case T_MG:		/* mail group member */		return("MG");	case T_MR:		/* mail rename name */		return("MR");	case T_NULL_RR:		/* null resource record */		return("NULL");	case T_WKS:		/* well known service */		return("WKS");	case T_PTR:		/* domain name pointer */		return("PTR");	case T_HINFO:		/* host information */		return("HINFO");	case T_MINFO:		/* mailbox information */		return("MINFO");	case T_MX:		/* mail routing info */		return("MX");	case T_TXT:		/* text */		return("TXT");	case T_RP:		/* responsible person */		return("RP");	case T_AFSDB:		/* AFS cell database */		return("AFSDB");	case T_AXFR:		/* zone transfer */		return("AXFR");	case T_MAILB:		/* mail box */		return("MAILB");	case T_MAILA:		/* mail address */		return("MAILA");	case T_ANY:		/* matches any type */		return("ANY");	case T_UINFO:		return("UINFO");	case T_UID:		return("UID");	case T_GID:		return("GID");#ifdef ALLOW_T_UNSPEC	case T_UNSPEC:		return("UNSPEC");#endif /* ALLOW_T_UNSPEC */	default:		(void)sprintf(nbuf, "%d", type);		return(nbuf);	}}/* * Return a mnemonic for class */char *__p_class(class)	int class;{	switch (class) {	case C_IN:		/* internet class */		return("IN");	case C_HS:		/* hesiod class */		return("HS");	case C_ANY:		/* matches any class */		return("ANY");	default:		(void)sprintf(nbuf, "%d", class);		return(nbuf);	}}/* * Return a mnemonic for an option */#ifdef ORG_RESOLVER /* used only if ORG_RESOLVER defined */static char *p_option(option)	u_long option;{	switch (option) {	case RES_INIT:		return "init";	case RES_DEBUG:		return "debug";	case RES_AAONLY:	return "aaonly";	case RES_USEVC:		return "usevc";	case RES_PRIMARY:	return "primry";	case RES_IGNTC:		return "igntc";	case RES_RECURSE:	return "recurs";	case RES_DEFNAMES:	return "defnam";	case RES_STAYOPEN:	return "styopn";	case RES_DNSRCH:	return "dnsrch";	default:		sprintf(nbuf, "?0x%lx?", option); return nbuf;	}}#endif/* * Return a mnemonic for a time to live */char *__p_time(value)	uint32_t value;{	int secs, mins, hours, days;	register char *p;	if (value == 0) {		strcpy(nbuf, "0 secs");		return(nbuf);	}	secs = value % 60;	value /= 60;	mins = value % 60;	value /= 60;	hours = value % 24;	value /= 24;	days = value;	value = 0;#define	PLURALIZE(x)	x, (x == 1) ? "" : "s"	p = nbuf;	if (days) {		(void)sprintf(p, "%d day%s", PLURALIZE(days));		while (*++p);	}	if (hours) {		if (days)			*p++ = ' ';		(void)sprintf(p, "%d hour%s", PLURALIZE(hours));		while (*++p);	}	if (mins) {		if (days || hours)			*p++ = ' ';		(void)sprintf(p, "%d min%s", PLURALIZE(mins));		while (*++p);	}	if (secs || ! (days || hours || mins)) {		if (days || hours || mins)			*p++ = ' ';		(void)sprintf(p, "%d sec%s", PLURALIZE(secs));	}	return(nbuf);}

⌨️ 快捷键说明

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