📄 res_debu.c
字号:
cp += INT16SZ;
tmpttl = _getlong ((u_char*)cp);
cp += INT32SZ;
dlen = _getshort ((u_char*)cp);
cp += INT16SZ;
cp1 = cp;
if (!_res.pfcode || (_res.pfcode & RES_PRF_TTLID))
fprintf (file, "\t%lu", (u_long)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:
memcpy (&inaddr,cp,INADDRSZ);
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 += INADDRSZ;
protocol = *(u_char*)cp;
cp += sizeof(u_char);
port = _getshort((u_char*)cp);
cp += INT16SZ;
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);
if ((cp = p_fqname(cp, msg, file)) == NULL)
return (NULL);
break;
case T_HINFO:
case T_ISDN:
cp2 = cp + dlen;
if ((n = *cp++) != 0)
{
fprintf (file, "\t%.*s", n, cp);
cp += n;
}
if ((cp < cp2) && (n = *cp++) != 0)
{
fprintf (file, "\t%.*s", n, cp);
cp += n;
}
else if (type == T_HINFO)
fprintf (file, "\n;; *** Warning *** OS-type missing");
break;
case T_SOA:
putc ('\t', file);
if ((cp = p_fqname(cp, msg, file)) == NULL)
return (NULL);
putc (' ', file);
if ((cp = p_fqname(cp, msg, file)) == NULL)
return (NULL);
fputs (" (\n", file);
t = _getlong ((u_char*)cp);
cp += INT32SZ;
fprintf (file, "\t\t\t%lu\t; serial\n", (u_long)t);
t = _getlong ((u_char*)cp);
cp += INT32SZ;
fprintf (file, "\t\t\t%lu\t; refresh (%s)\n", (u_long)t, __p_time(t));
t = _getlong ((u_char*)cp);
cp += INT32SZ;
fprintf (file, "\t\t\t%lu\t; retry (%s)\n", (u_long)t, __p_time(t));
t = _getlong ((u_char*)cp);
cp += INT32SZ;
fprintf (file, "\t\t\t%lu\t; expire (%s)\n", (u_long)t, __p_time(t));
t = _getlong ((u_char*)cp);
cp += INT32SZ;
fprintf (file, "\t\t\t%lu )\t; minimum (%s)", (u_long)t, __p_time(t));
break;
case T_MX:
case T_AFSDB:
case T_RT:
fprintf (file, "\t%d ", _getshort((u_char*)cp));
cp += INT16SZ;
if ((cp = p_fqname(cp, msg, file)) == NULL)
return (NULL);
break;
case T_PX:
fprintf (file, "\t%d ", _getshort((u_char*)cp));
cp += INT16SZ;
if ((cp = p_fqname(cp, msg, file)) == NULL)
return (NULL);
putc (' ', file);
if ((cp = p_fqname(cp, msg, file)) == NULL)
return (NULL);
break;
case T_TXT:
case T_X25:
fputs ("\t\"", file);
cp2 = cp1 + dlen;
while (cp < cp2)
{
if ((n = (unsigned char)*cp++) != 0)
{
for (c = n; c > 0 && cp < cp2; c--)
if (*cp == '\n' || *cp == '"')
{
putc ('\\', file);
putc (*cp++, file);
}
else
putc (*cp++, file);
}
}
putc ('"', file);
break;
case T_NSAP:
fprintf (file, "\t%s", inet_nsap_ntoa(dlen, cp, NULL));
cp += dlen;
break;
case T_MINFO:
case T_RP:
putc ('\t', file);
if ((cp = p_fqname(cp, msg, file)) == NULL)
return (NULL);
putc (' ', file);
if ((cp = p_fqname(cp, msg, file)) == NULL)
return (NULL);
break;
case T_UINFO:
putc ('\t', file);
fputs ((char *)cp, file);
cp += dlen;
break;
case T_UID:
case T_GID:
if (dlen == 4)
{
fprintf (file, "\t%u", (unsigned int) _getlong((u_char*)cp));
cp += INT32SZ;
}
break;
case T_WKS:
if (dlen < INT32SZ + 1)
break;
memcpy (&inaddr,cp,INADDRSZ);
cp += INT32SZ;
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;
#if ALLOW_T_UNSPEC
case T_UNSPEC:
{
int NumBytes = 8;
u_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
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);
}
/*
* Return a string for the type
*/
const char *__p_type (int type)
{
static char buf[20];
switch (type)
{
case T_A: return "A";
case T_NS: return "NS";
case T_CNAME: return "CNAME";
case T_SOA: return "SOA";
case T_MB: return "MB";
case T_MG: return "MG";
case T_MR: return "MR";
case T_NULL: return "NULL";
case T_WKS: return "WKS";
case T_PTR: return "PTR";
case T_HINFO: return "HINFO";
case T_MINFO: return "MINFO";
case T_MX: return "MX";
case T_TXT: return "TXT";
case T_RP: return "RP";
case T_AFSDB: return "AFSDB";
case T_X25: return "X25";
case T_ISDN: return "ISDN";
case T_RT: return "RT";
case T_NSAP: return "NSAP";
case T_NSAP_PTR: return "NSAP_PTR";
case T_SIG: return "SIG";
case T_KEY: return "KEY";
case T_PX: return "PX";
case T_GPOS: return "GPOS";
case T_AAAA: return "AAAA";
case T_LOC: return "LOC";
case T_AXFR: return "AXFR";
case T_MAILB: return "MAILB";
case T_MAILA: return "MAILA";
case T_ANY: return "ANY";
case T_UINFO: return "UINFO";
case T_UID: return "UID";
case T_GID: return "GID";
#if ALLOW_T_UNSPEC
case T_UNSPEC: return "UNSPEC";
#endif
}
sprintf (buf, "%d", type);
return (buf);
}
/*
* Return a mnemonic for class
*/
const char *__p_class (int class)
{
static char buf[20];
switch (class)
{
case C_IN: return "IN";
case C_HS: return "HS";
case C_ANY: return "ANY";
}
sprintf (buf, "%d", class);
return (buf);
}
/*
* Return a mnemonic for an option
*/
const char * __p_option (u_long option)
{
static char buf[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";
}
sprintf (buf, "?0x%lx?",option);
return (buf);
}
/*
* Return a mnemonic for a time to live
*/
char * __p_time (u_long value)
{
static char buf[120];
int secs, mins, hours, days;
char *p;
if (value == 0)
{
strcpy (buf, "0 secs");
return (buf);
}
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 = buf;
if (days)
{
sprintf (p, "%d day%s", PLURALIZE(days));
while (*++p) ;
}
if (hours)
{
if (days)
*p++ = ' ';
sprintf (p, "%d hour%s", PLURALIZE(hours));
while (*++p) ;
}
if (mins)
{
if (days || hours)
*p++ = ' ';
sprintf (p, "%d min%s", PLURALIZE(mins));
while (*++p) ;
}
if (secs || ! (days || hours || mins))
{
if (days || hours || mins)
*p++ = ' ';
sprintf (p, "%d sec%s", PLURALIZE(secs));
}
return (buf);
}
#endif /* USE_BIND */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -