📄 lib-libc-net
字号:
! 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 + -