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

📄 lib-libc-net

📁 被广泛使用的域名服务(DNS)软件
💻
📖 第 1 页 / 共 5 页
字号:
! static char *X  dewks(wks)X  	int wks;X  {X  	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);X  	}X  }X  ! static char *X  deproto(protonum)X  	int protonum;X  {X  	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);X  	}X  }X  ! static char *X  do_rrset(msg, cp, cnt, pflag, file, hs)X  	int cnt, pflag;! 	char *cp,*msg, *hs;X  	FILE *file;X  {--- 112,196 ----X  static char retbuf[16];X  ! static const char *X  dewks(wks)X  	int wks;X  {X  	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);X  	}X  }X  ! static const char *X  deproto(protonum)X  	int protonum;X  {X  	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);X  	}X  }X  ! static const u_char *X  do_rrset(msg, cp, cnt, pflag, file, hs)X  	int cnt, pflag;! 	const u_char *cp, *msg;! 	const char *hs;X  	FILE *file;X  {****************** 201,216 ****X  X  	/*! 	 * Print answer recordsX  	 */! 	sflag = _res.pfcode & pflag;X  	if (n = ntohs(cnt)) {! 		if (!_res.pfcode || sflag && _res.pfcode & RES_PRF_HEAD1)X  			fprintf(file, hs);X  		while (--n >= 0) {! 			cp = p_rr(cp, msg, file);! 			if ((cp-msg) > PACKETSZ)X  				return (NULL);X  		}! 		if (!_res.pfcode || sflag && _res.pfcode & RES_PRF_HEAD1)X  			putc('\n', file);X  	}--- 199,227 ----X  X  	/*! 	 * Print answer records.X  	 */! 	sflag = (_res.pfcode & pflag);X  	if (n = ntohs(cnt)) {! 		if ((!_res.pfcode) ||! 		    ((sflag) && (_res.pfcode & RES_PRF_HEAD1)))X  			fprintf(file, hs);X  		while (--n >= 0) {! 			if ((!_res.pfcode) || sflag) {! 				cp = p_rr(cp, msg, file);! 			} else {! 				unsigned int dlen;! 				cp += __dn_skipname(cp, cp + MAXCDNAME);! 				cp += INT16SZ;! 				cp += INT16SZ;! 				cp += INT32SZ;! 				dlen = _getshort((u_char*)cp);! 				cp += INT16SZ;! 				cp += dlen;! 			}! 			if ((cp - msg) > PACKETSZ)X  				return (NULL);X  		}! 		if ((!_res.pfcode) ||! 		    ((sflag) && (_res.pfcode & RES_PRF_HEAD1)))X  			putc('\n', file);X  	}****************** 218,223 ****X  }X  X  __p_query(msg)! 	char *msg;X  {X  	__fp_query(msg, stdout);--- 229,235 ----X  }X  + voidX  __p_query(msg)! 	const u_char *msg;X  {X  	__fp_query(msg, stdout);****************** 233,245 ****X  	FILE *file;X  {! 	int bit;X  X  	fprintf(file, ";; res options:");X  	if (!statp)X  		statp = &_res;! 	for (bit = 0; bit < 32; bit++) {	/* XXX 32 - bad assumption! */! 		if (statp->options & 1 << bit)! 			fprintf(file, " %s", p_option(1 << bit));! 	}X  	putc('\n', file);X  }--- 245,256 ----X  	FILE *file;X  {! 	register u_long mask;X  X  	fprintf(file, ";; res options:");X  	if (!statp)X  		statp = &_res;! 	for (mask = 1;  mask != 0;  mask <<= 1)! 		if (statp->options & mask)! 			fprintf(file, " %s", p_option(mask));X  	putc('\n', file);X  }****************** 250,274 ****X   */X  void! __fp_query(msg,file)! 	char *msg;X  	FILE *file;X  {! 	register char *cp;! 	register HEADER *hp;X  	register int n;X  X  	/*X  	 * Print header fields.X  	 */X  	hp = (HEADER *)msg;! 	cp = msg + sizeof(HEADER);! 	if (!_res.pfcode || _res.pfcode & RES_PRF_HEADX || hp->rcode) {X  		fprintf(file, ";; ->>HEADER<<- opcode: %s, status: %s, id: %d",! 		    _res_opcodes[hp->opcode], _res_resultcodes[hp->rcode],! 		    ntohs(hp->id));X  		putc('\n', file);X  	}X  	putc(';', file);! 	if (!_res.pfcode || _res.pfcode & RES_PRF_HEAD2) {X  		fprintf(file, "; flags:");X  		if (hp->qr)--- 261,291 ----X   */X  void! __fp_nquery(msg, len, file)! 	const u_char *msg;! 	int len;X  	FILE *file;X  {! 	register const u_char *cp, *endMark;! 	register const HEADER *hp;X  	register int n;X  + #define TruncTest(x) if (x >= endMark) goto trunc+ #define	ErrorTest(x) if (x == NULL) goto error+ X  	/*X  	 * Print header fields.X  	 */X  	hp = (HEADER *)msg;! 	cp = msg + HFIXEDSZ;! 	endMark = cp + len;! 	if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEADX) || hp->rcode) {X  		fprintf(file, ";; ->>HEADER<<- opcode: %s, status: %s, id: %d",! 			_res_opcodes[hp->opcode],! 			_res_resultcodes[hp->rcode],! 			ntohs(hp->id));X  		putc('\n', file);X  	}X  	putc(';', file);! 	if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEAD2)) {X  		fprintf(file, "; flags:");X  		if (hp->qr)****************** 285,289 ****X  			fprintf(file, " pr");X  	}! 	if (!_res.pfcode || _res.pfcode & RES_PRF_HEAD1) {X  		fprintf(file, "; Ques: %d", ntohs(hp->qdcount));X  		fprintf(file, ", Ans: %d", ntohs(hp->ancount));--- 302,306 ----X  			fprintf(file, " pr");X  	}! 	if ((!_res.pfcode) || (_res.pfcode & RES_PRF_HEAD1)) {X  		fprintf(file, "; Ques: %d", ntohs(hp->qdcount));X  		fprintf(file, ", Ans: %d", ntohs(hp->ancount));****************** 291,318 ****X  		fprintf(file, ", Addit: %d", ntohs(hp->arcount));X  	}! #if 1! 	if (!_res.pfcode || _res.pfcode & ! 	    (RES_PRF_HEADX | RES_PRF_HEAD2 | RES_PRF_HEAD1))X  		putc('\n',file);! #endifX  	/*X  	 * Print question records.X  	 */X  	if (n = ntohs(hp->qdcount)) {! 		if (!_res.pfcode || _res.pfcode & RES_PRF_QUES)X  			fprintf(file, ";; QUESTIONS:\n");X  		while (--n >= 0) {X  			fprintf(file, ";;\t");X  			cp = p_cdname(cp, msg, file);! 			if (cp == NULL)! 				return;! 			if (!_res.pfcode || _res.pfcode & RES_PRF_QUES)X  				fprintf(file, ", type = %s",! 				    __p_type(_getshort(cp)));! 			cp += sizeof(u_int16_t);! 			if (!_res.pfcode || _res.pfcode & RES_PRF_QUES)X  				fprintf(file, ", class = %s\n",! 				    __p_class(_getshort(cp)));! 			cp += sizeof(u_int16_t);X  			putc('\n', file);X  		}--- 308,336 ----X  		fprintf(file, ", Addit: %d", ntohs(hp->arcount));X  	}! 	if ((!_res.pfcode) || (_res.pfcode & ! 		(RES_PRF_HEADX | RES_PRF_HEAD2 | RES_PRF_HEAD1))) {X  		putc('\n',file);! 	}X  	/*X  	 * Print question records.X  	 */X  	if (n = ntohs(hp->qdcount)) {! 		if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))X  			fprintf(file, ";; QUESTIONS:\n");X  		while (--n >= 0) {X  			fprintf(file, ";;\t");+ 			TruncTest(cp);X  			cp = p_cdname(cp, msg, file);! 			ErrorTest(cp);! 			TruncTest(cp);! 			if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))X  				fprintf(file, ", type = %s",! 					__p_type(_getshort((u_char*)cp)));! 			cp += INT16SZ;! 			TruncTest(cp);! 			if ((!_res.pfcode) || (_res.pfcode & RES_PRF_QUES))X  				fprintf(file, ", class = %s\n",! 					__p_class(_getshort((u_char*)cp)));! 			cp += INT16SZ;X  			putc('\n', file);X  		}****************** 321,346 ****X  	 * Print authoritative answer recordsX  	 */! 	cp = do_rrset(msg, cp, hp->ancount, RES_PRF_ANS, file, ";; ANSWERS:\n");! 	if (cp == NULL)! 		return;X  X  	/*X  	 * print name server recordsX  	 */X  	cp = do_rrset(msg, cp, hp->nscount, RES_PRF_AUTH, file,! 	    ";; AUTHORITY RECORDS:\n");! 	if (!cp)! 		return;X  X  	/*X  	 * print additional recordsX  	 */X  	cp = do_rrset(msg, cp, hp->arcount, RES_PRF_ADD, file,! 	    ";; ADDITIONAL RECORDS:\n");X  }X  ! char *! p_cdname(cp, msg, file)! 	char *cp, *msg;X  	FILE *file;X  {--- 339,382 ----X  	 * Print authoritative answer recordsX  	 */! 	TruncTest(cp);! 	cp = do_rrset(msg, cp, hp->ancount, RES_PRF_ANS, file,! 		      ";; ANSWERS:\n");! 	ErrorTest(cp);X  X  	/*X  	 * print name server recordsX  	 */+ 	TruncTest(cp);X  	cp = do_rrset(msg, cp, hp->nscount, RES_PRF_AUTH, file,! 		      ";; AUTHORITY RECORDS:\n");! 	ErrorTest(cp);X  + 	TruncTest(cp);X  	/*X  	 * print additional recordsX  	 */X  	cp = do_rrset(msg, cp, hp->arcount, RES_PRF_ADD, file,! 		      ";; ADDITIONAL RECORDS:\n");! 	ErrorTest(cp);! 	return;!  trunc:! 	fprintf(file, "\n;; ...truncated\n");! 	return;!  error:! 	fprintf(file, "\n;; ...malformed\n");X  }X  ! void! __fp_query(msg, file)! 	const u_char *msg;! 	FILE *file;! {! 	fp_nquery(msg, PACKETSZ, file);! }! ! const u_char *! __p_cdnname(cp, msg, len, file)! 	const u_char *cp, *msg;! 	int len;X  	FILE *file;X  {****************** 348,353 ****X  	int n;X  ! 	if ((n = dn_expand((u_char *)msg, (u_char *)cp + MAXCDNAME,! 	    (u_char *)cp, (u_char *)name, sizeof(name))) < 0)X  		return (NULL);X  	if (name[0] == '\0')--- 384,388 ----X  	int n;X  ! 	if ((n = dn_expand(msg, msg + len, cp, name, sizeof name)) < 0)X  		return (NULL);X  	if (name[0] == '\0')****************** 358,364 ****X  }X  ! char *! p_fqname(cp, msg, file)! 	char *cp, *msg;X  	FILE *file;X  {--- 393,410 ----X  }X  ! const u_char *! __p_cdname(cp, msg, file)! 	const u_char *cp, *msg;! 	FILE *file;! {! 	return (p_cdnname(cp, msg, PACKETSZ, file));! }! ! /* XXX:	the rest of these functions need to become length-limited, too. (vix)!  */! ! const u_char *! __p_fqname(cp, msg, file)! 	const u_char *cp, *msg;X  	FILE *file;X  {****************** 366,371 ****X  	int n, len;X  ! 	if ((n = dn_expand((u_char *)msg, (u_char *)cp + MAXCDNAME,! 	    (u_char *)cp, (u_char *)name, sizeof(name))) < 0)X  		return (NULL);X  	if (name[0] == '\0') {--- 412,416 ----X  	int n, len;X  

⌨️ 快捷键说明

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