📄 res_debug.c
字号:
{S_ADDT, "ADDITIONAL", (char *)0}, {0, (char *)0, (char *)0}};const struct res_sym __p_key_syms[] = { {NS_ALG_MD5RSA, "RSA", "RSA KEY with MD5 hash"}, {NS_ALG_DH, "DH", "Diffie Hellman"}, {NS_ALG_DSA, "DSA", "Digital Signature Algorithm"}, {NS_ALG_EXPIRE_ONLY, "EXPIREONLY", "No algorithm"}, {NS_ALG_PRIVATE_OID, "PRIVATE", "Algorithm obtained from OID"}, {0, NULL, NULL}};const struct res_sym __p_cert_syms[] = { {cert_t_pkix, "PKIX", "PKIX (X.509v3) Certificate"}, {cert_t_spki, "SPKI", "SPKI certificate"}, {cert_t_pgp, "PGP", "PGP certificate"}, {cert_t_url, "URL", "URL Private"}, {cert_t_oid, "OID", "OID Private"}, {0, NULL, NULL}};/* * Names of RR types and qtypes. Types and qtypes are the same, except * that T_ANY is a qtype but not a type. (You can ask for records of type * T_ANY, but you can't have any records of that type in the database.) */const struct res_sym __p_type_syms[] = { {ns_t_a, "A", "address"}, {ns_t_ns, "NS", "name server"}, {ns_t_md, "MD", "mail destination (deprecated)"}, {ns_t_mf, "MF", "mail forwarder (deprecated)"}, {ns_t_cname, "CNAME", "canonical name"}, {ns_t_soa, "SOA", "start of authority"}, {ns_t_mb, "MB", "mailbox"}, {ns_t_mg, "MG", "mail group member"}, {ns_t_mr, "MR", "mail rename"}, {ns_t_null, "NULL", "null"}, {ns_t_wks, "WKS", "well-known service (deprecated)"}, {ns_t_ptr, "PTR", "domain name pointer"}, {ns_t_hinfo, "HINFO", "host information"}, {ns_t_minfo, "MINFO", "mailbox information"}, {ns_t_mx, "MX", "mail exchanger"}, {ns_t_txt, "TXT", "text"}, {ns_t_rp, "RP", "responsible person"}, {ns_t_afsdb, "AFSDB", "DCE or AFS server"}, {ns_t_x25, "X25", "X25 address"}, {ns_t_isdn, "ISDN", "ISDN address"}, {ns_t_rt, "RT", "router"}, {ns_t_nsap, "NSAP", "nsap address"}, {ns_t_nsap_ptr, "NSAP_PTR", "domain name pointer"}, {ns_t_sig, "SIG", "signature"}, {ns_t_key, "KEY", "key"}, {ns_t_px, "PX", "mapping information"}, {ns_t_gpos, "GPOS", "geographical position (withdrawn)"}, {ns_t_aaaa, "AAAA", "IPv6 address"}, {ns_t_loc, "LOC", "location"}, {ns_t_nxt, "NXT", "next valid name (unimplemented)"}, {ns_t_eid, "EID", "endpoint identifier (unimplemented)"}, {ns_t_nimloc, "NIMLOC", "NIMROD locator (unimplemented)"}, {ns_t_srv, "SRV", "server selection"}, {ns_t_atma, "ATMA", "ATM address (unimplemented)"}, {ns_t_tkey, "TKEY", "tkey"}, {ns_t_tsig, "TSIG", "transaction signature"}, {ns_t_ixfr, "IXFR", "incremental zone transfer"}, {ns_t_axfr, "AXFR", "zone transfer"}, {ns_t_zxfr, "ZXFR", "compressed zone transfer"}, {ns_t_mailb, "MAILB", "mailbox-related data (deprecated)"}, {ns_t_maila, "MAILA", "mail agent (deprecated)"}, {ns_t_naptr, "NAPTR", "URN Naming Authority"}, {ns_t_kx, "KX", "Key Exchange"}, {ns_t_cert, "CERT", "Certificate"}, {ns_t_a6, "A6", "IPv6 Address"}, {ns_t_dname, "DNAME", "dname"}, {ns_t_sink, "SINK", "Kitchen Sink (experimental)"}, {ns_t_opt, "OPT", "EDNS Options"}, {ns_t_any, "ANY", "\"any\""}, {0, NULL, NULL}};/* * Names of DNS rcodes. */const struct res_sym __p_rcode_syms[] = { {ns_r_noerror, "NOERROR", "no error"}, {ns_r_formerr, "FORMERR", "format error"}, {ns_r_servfail, "SERVFAIL", "server failed"}, {ns_r_nxdomain, "NXDOMAIN", "no such domain name"}, {ns_r_notimpl, "NOTIMP", "not implemented"}, {ns_r_refused, "REFUSED", "refused"}, {ns_r_yxdomain, "YXDOMAIN", "domain name exists"}, {ns_r_yxrrset, "YXRRSET", "rrset exists"}, {ns_r_nxrrset, "NXRRSET", "rrset doesn't exist"}, {ns_r_notauth, "NOTAUTH", "not authoritative"}, {ns_r_notzone, "NOTZONE", "Not in zone"}, {ns_r_max, "", ""}, {ns_r_badsig, "BADSIG", "bad signature"}, {ns_r_badkey, "BADKEY", "bad key"}, {ns_r_badtime, "BADTIME", "bad time"}, {0, NULL, NULL}};intsym_ston(const struct res_sym *syms, const char *name, int *success) { for ((void)NULL; syms->name != 0; syms++) { if (strcasecmp (name, syms->name) == 0) { if (success) *success = 1; return (syms->number); } } if (success) *success = 0; return (syms->number); /* The default value. */}const char *sym_ntos(const struct res_sym *syms, int number, int *success) { static char unname[20]; for ((void)NULL; syms->name != 0; syms++) { if (number == syms->number) { if (success) *success = 1; return (syms->name); } } sprintf(unname, "%d", number); /* XXX nonreentrant */ if (success) *success = 0; return (unname);}const char *sym_ntop(const struct res_sym *syms, int number, int *success) { static char unname[20]; for ((void)NULL; syms->name != 0; syms++) { if (number == syms->number) { if (success) *success = 1; return (syms->humanname); } } sprintf(unname, "%d", number); /* XXX nonreentrant */ if (success) *success = 0; return (unname);}/* * Return a string for the type. */const char *p_type(int type) { int success; const char *result; static char typebuf[20]; result = sym_ntos(__p_type_syms, type, &success); if (success) return (result); if (type < 0 || type > 0xffff) return ("BADTYPE"); sprintf(typebuf, "TYPE%d", type); return (typebuf);}/* * Return a string for the type. */const char *p_section(int section, int opcode) { const struct res_sym *symbols; switch (opcode) { case ns_o_update: symbols = __p_update_section_syms; break; default: symbols = __p_default_section_syms; break; } return (sym_ntos(symbols, section, (int *)0));}/* * Return a mnemonic for class. */const char *p_class(int class) { int success; const char *result; static char classbuf[20]; result = sym_ntos(__p_class_syms, class, &success); if (success) return (result); if (class < 0 || class > 0xffff) return ("BADCLASS"); sprintf(classbuf, "CLASS%d", class); return (classbuf);}/* * Return a mnemonic for an option */const char *p_option(u_long option) { static char nbuf[40]; switch (option) { case RES_INIT: return "init"; case RES_DEBUG: return "debug"; case RES_AAONLY: return "aaonly(unimpl)"; case RES_USEVC: return "usevc"; case RES_PRIMARY: return "primry(unimpl)"; 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"; case RES_INSECURE1: return "insecure1"; case RES_INSECURE2: return "insecure2"; case RES_NOALIASES: return "noaliases"; case RES_USE_INET6: return "inet6";#ifdef RES_USE_EDNS0 /* KAME extension */ case RES_USE_EDNS0: return "edns0";#endif#ifdef RES_USE_DNAME case RES_USE_DNAME: return "dname";#endif#ifdef RES_USE_DNSSEC case RES_USE_DNSSEC: return "dnssec";#endif#ifdef RES_NOTLDQUERY case RES_NOTLDQUERY: return "no-tld-query";#endif#ifdef RES_NO_NIBBLE2 case RES_NO_NIBBLE2: return "no-nibble2";#endif /* XXX nonreentrant */ default: sprintf(nbuf, "?0x%lx?", (u_long)option); return (nbuf); }}/* * Return a mnemonic for a time to live. */const char *p_time(u_int32_t value) { static char nbuf[40]; /* XXX nonreentrant */ if (ns_format_ttl(value, nbuf, sizeof nbuf) < 0) sprintf(nbuf, "%u", value); return (nbuf);}/* * Return a string for the rcode. */const char *p_rcode(int rcode) { return (sym_ntos(__p_rcode_syms, rcode, (int *)0));}/* * Return a string for a res_sockaddr_union. */const char *p_sockun(union res_sockaddr_union u, char *buf, size_t size) { char ret[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:123.123.123.123"]; switch (u.sin.sin_family) { case AF_INET: inet_ntop(AF_INET, &u.sin.sin_addr, ret, sizeof ret); break;#ifdef HAS_INET6_STRUCTS case AF_INET6: inet_ntop(AF_INET6, &u.sin6.sin6_addr, ret, sizeof ret); break;#endif default: sprintf(ret, "[af%d]", u.sin.sin_family); break; } if (size > 0U) { strncpy(buf, ret, size - 1); buf[size - 1] = '0'; } return (buf);}/* * routines to convert between on-the-wire RR format and zone file format. * Does not contain conversion to/from decimal degrees; divide or multiply * by 60*60*1000 for that. */static unsigned int poweroften[10] = {1, 10, 100, 1000, 10000, 100000, 1000000,10000000,100000000,1000000000};/* takes an XeY precision/size value, returns a string representation. */static const char *precsize_ntoa(prec) u_int8_t prec;{ static char retbuf[sizeof "90000000.00"]; /* XXX nonreentrant */ unsigned long val; int mantissa, exponent; mantissa = (int)((prec >> 4) & 0x0f) % 10; exponent = (int)((prec >> 0) & 0x0f) % 10; val = mantissa * poweroften[exponent]; (void) sprintf(retbuf, "%lu.%.2lu", val/100, val%100); return (retbuf);}/* converts ascii size/precision X * 10**Y(cm) to 0xXY. moves pointer. */static u_int8_tprecsize_aton(const char **strptr) { unsigned int mval = 0, cmval = 0; u_int8_t retval = 0; const char *cp; int exponent; int mantissa; cp = *strptr; while (isdigit((unsigned char)*cp)) mval = mval * 10 + (*cp++ - '0'); if (*cp == '.') { /* centimeters */ cp++; if (isdigit((unsigned char)*cp)) { cmval = (*cp++ - '0') * 10; if (isdigit((unsigned char)*cp)) { cmval += (*cp++ - '0'); } } } cmval = (mval * 100) + cmval; for (exponent = 0; exponent < 9; exponent++) if (cmval < poweroften[exponent+1]) break; mantissa = cmval / poweroften[exponent]; if (mantissa > 9) mantissa = 9; retval = (mantissa << 4) | exponent; *strptr = cp; return (retval);}/* converts ascii lat/lon to unsigned encoded 32-bit number. moves pointer. */static u_int32_tlatlon2ul(const char **latlonstrptr, int *which) { const char *cp; u_int32_t retval; int deg = 0, min = 0, secs = 0, secsfrac = 0; cp = *latlonstrptr; while (isdigit((unsigned char)*cp)) deg = deg * 10 + (*cp++ - '0'); while (isspace((unsigned char)*cp)) cp++; if (!(isdigit((unsigned char)*cp))) goto fndhemi; while (isdigit((unsigned char)*cp)) min = min * 10 + (*cp++ - '0'); while (isspace((unsigned char)*cp)) cp++; if (!(isdigit((unsigned char)*cp))) goto fndhemi;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -