mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-05 01:00:14 +00:00
* resolv: Code updated from BIND-4.9.3P2C3.
This commit is contained in:
parent
782e865067
commit
5570726557
@ -1,5 +1,7 @@
|
|||||||
Thu May 9 09:17:46 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
|
Thu May 9 09:17:46 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* resolv: Code updated from BIND-4.9.3P2C3.
|
||||||
|
|
||||||
* Rules (static-only-routines rule): Use dummy.o, not dummy.so.
|
* Rules (static-only-routines rule): Use dummy.o, not dummy.so.
|
||||||
|
|
||||||
Wed May 8 20:04:29 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
|
Wed May 8 20:04:29 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
|
||||||
|
@ -158,10 +158,21 @@ getanswer(answer, anslen, qname, qclass, qtype)
|
|||||||
int toobig = 0;
|
int toobig = 0;
|
||||||
char tbuf[MAXDNAME+1];
|
char tbuf[MAXDNAME+1];
|
||||||
const char *tname;
|
const char *tname;
|
||||||
|
int (*name_ok) __P((const char *));
|
||||||
|
|
||||||
tname = qname;
|
tname = qname;
|
||||||
host.h_name = NULL;
|
host.h_name = NULL;
|
||||||
eom = answer->buf + anslen;
|
eom = answer->buf + anslen;
|
||||||
|
switch (qtype) {
|
||||||
|
case T_A:
|
||||||
|
name_ok = res_hnok;
|
||||||
|
break;
|
||||||
|
case T_PTR:
|
||||||
|
name_ok = dn_isvalid;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
abort();
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* find first satisfactory answer
|
* find first satisfactory answer
|
||||||
*/
|
*/
|
||||||
@ -175,7 +186,8 @@ getanswer(answer, anslen, qname, qclass, qtype)
|
|||||||
h_errno = NO_RECOVERY;
|
h_errno = NO_RECOVERY;
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
if ((n = dn_expand(answer->buf, eom, cp, bp, buflen)) < 0) {
|
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
||||||
|
if ((n < 0) || !(*name_ok)(bp)) {
|
||||||
h_errno = NO_RECOVERY;
|
h_errno = NO_RECOVERY;
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
@ -204,7 +216,7 @@ getanswer(answer, anslen, qname, qclass, qtype)
|
|||||||
had_error = 0;
|
had_error = 0;
|
||||||
while (ancount-- > 0 && cp < eom && !had_error) {
|
while (ancount-- > 0 && cp < eom && !had_error) {
|
||||||
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
||||||
if (n < 0) {
|
if ((n < 0) || !(*name_ok)(bp)) {
|
||||||
had_error++;
|
had_error++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -224,7 +236,7 @@ getanswer(answer, anslen, qname, qclass, qtype)
|
|||||||
if (ap >= &host_aliases[MAXALIASES-1])
|
if (ap >= &host_aliases[MAXALIASES-1])
|
||||||
continue;
|
continue;
|
||||||
n = dn_expand(answer->buf, eom, cp, tbuf, sizeof tbuf);
|
n = dn_expand(answer->buf, eom, cp, tbuf, sizeof tbuf);
|
||||||
if (n < 0) {
|
if ((n < 0) || !(*name_ok)(tbuf)) {
|
||||||
had_error++;
|
had_error++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -254,7 +266,7 @@ getanswer(answer, anslen, qname, qclass, qtype)
|
|||||||
}
|
}
|
||||||
if (qtype == T_PTR && type == T_CNAME) {
|
if (qtype == T_PTR && type == T_CNAME) {
|
||||||
n = dn_expand(answer->buf, eom, cp, tbuf, sizeof tbuf);
|
n = dn_expand(answer->buf, eom, cp, tbuf, sizeof tbuf);
|
||||||
if (n < 0) {
|
if ((n < 0) || !res_hnok(tbuf)) {
|
||||||
had_error++;
|
had_error++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -288,7 +300,7 @@ getanswer(answer, anslen, qname, qclass, qtype)
|
|||||||
continue; /* XXX - had_error++ ? */
|
continue; /* XXX - had_error++ ? */
|
||||||
}
|
}
|
||||||
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
||||||
if (n < 0) {
|
if ((n < 0) || !res_hnok(bp)) {
|
||||||
had_error++;
|
had_error++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -517,7 +529,7 @@ gethostbyaddr(addr, len, type)
|
|||||||
h_errno = NETDB_INTERNAL;
|
h_errno = NETDB_INTERNAL;
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
if (type != AF_INET) {
|
if (type != AF_INET || len != INADDRSZ) {
|
||||||
errno = EAFNOSUPPORT;
|
errno = EAFNOSUPPORT;
|
||||||
h_errno = NETDB_INTERNAL;
|
h_errno = NETDB_INTERNAL;
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
@ -42,7 +42,7 @@ extern int _net_stayopen;
|
|||||||
|
|
||||||
struct netent *
|
struct netent *
|
||||||
_getnetbyaddr(net, type)
|
_getnetbyaddr(net, type)
|
||||||
register long net;
|
register unsigned long net;
|
||||||
register int type;
|
register int type;
|
||||||
{
|
{
|
||||||
register struct netent *p;
|
register struct netent *p;
|
||||||
|
@ -143,7 +143,7 @@ again:
|
|||||||
net.n_net = inet_network(cp);
|
net.n_net = inet_network(cp);
|
||||||
net.n_addrtype = AF_INET;
|
net.n_addrtype = AF_INET;
|
||||||
q = net.n_aliases = net_aliases;
|
q = net.n_aliases = net_aliases;
|
||||||
if (p != NULL)
|
if (p != NULL) {
|
||||||
cp = p;
|
cp = p;
|
||||||
while (cp && *cp) {
|
while (cp && *cp) {
|
||||||
if (*cp == ' ' || *cp == '\t') {
|
if (*cp == ' ' || *cp == '\t') {
|
||||||
@ -156,6 +156,7 @@ again:
|
|||||||
if (cp != NULL)
|
if (cp != NULL)
|
||||||
*cp++ = '\0';
|
*cp++ = '\0';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
*q = NULL;
|
*q = NULL;
|
||||||
return (&net);
|
return (&net);
|
||||||
}
|
}
|
||||||
|
@ -139,7 +139,7 @@ static char *net_aliases[MAXALIASES], netbuf[BUFSIZ+1];
|
|||||||
haveanswer = 0;
|
haveanswer = 0;
|
||||||
while (--ancount >= 0 && cp < eom) {
|
while (--ancount >= 0 && cp < eom) {
|
||||||
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
||||||
if (n < 0)
|
if ((n < 0) || !dn_isvalid(bp))
|
||||||
break;
|
break;
|
||||||
cp += n;
|
cp += n;
|
||||||
ans[0] = '\0';
|
ans[0] = '\0';
|
||||||
@ -150,7 +150,7 @@ static char *net_aliases[MAXALIASES], netbuf[BUFSIZ+1];
|
|||||||
GETSHORT(n, cp);
|
GETSHORT(n, cp);
|
||||||
if (class == C_IN && type == T_PTR) {
|
if (class == C_IN && type == T_PTR) {
|
||||||
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
n = dn_expand(answer->buf, eom, cp, bp, buflen);
|
||||||
if (n < 0) {
|
if ((n < 0) || !res_hnok(bp)) {
|
||||||
cp += n;
|
cp += n;
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
@ -202,7 +202,7 @@ static char *net_aliases[MAXALIASES], netbuf[BUFSIZ+1];
|
|||||||
|
|
||||||
struct netent *
|
struct netent *
|
||||||
getnetbyaddr(net, net_type)
|
getnetbyaddr(net, net_type)
|
||||||
register long net;
|
register u_long net;
|
||||||
register int net_type;
|
register int net_type;
|
||||||
{
|
{
|
||||||
unsigned int netbr[4];
|
unsigned int netbr[4];
|
||||||
|
@ -135,7 +135,7 @@ struct hostent *gethostbyaddr __P((const char *, int, int));
|
|||||||
struct hostent *gethostbyname __P((const char *));
|
struct hostent *gethostbyname __P((const char *));
|
||||||
struct hostent *gethostbyname2 __P((const char *, int));
|
struct hostent *gethostbyname2 __P((const char *, int));
|
||||||
struct hostent *gethostent __P((void));
|
struct hostent *gethostent __P((void));
|
||||||
struct netent *getnetbyaddr __P((long, int)); /* u_long? */
|
struct netent *getnetbyaddr __P((unsigned long, int));
|
||||||
struct netent *getnetbyname __P((const char *));
|
struct netent *getnetbyname __P((const char *));
|
||||||
struct netent *getnetent __P((void));
|
struct netent *getnetent __P((void));
|
||||||
struct protoent *getprotobyname __P((const char *));
|
struct protoent *getprotobyname __P((const char *));
|
||||||
|
@ -148,9 +148,6 @@ dn_expand(msg, eomorig, comp_dn, exp_dn, length)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
*dn = '\0';
|
*dn = '\0';
|
||||||
for (dn = exp_dn; (c = *dn) != '\0'; dn++)
|
|
||||||
if (isascii(c) && isspace(c))
|
|
||||||
return (-1);
|
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
len = cp - comp_dn;
|
len = cp - comp_dn;
|
||||||
return (len);
|
return (len);
|
||||||
@ -339,6 +336,88 @@ dn_find(exp_dn, msg, dnptrs, lastdnptr)
|
|||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify that a domain name uses an acceptable character set.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/****
|
||||||
|
To: "Lawrence R. Rogers" <lrr@cert.org>
|
||||||
|
cc: cert@cert.org, pvm@home.net
|
||||||
|
Subject: Re: VU#14542
|
||||||
|
In-reply-to: Your message of "Mon, 19 Feb 1996 17:16:27 PST."
|
||||||
|
Date: Tue, 20 Feb 1996 22:37:21 -0800
|
||||||
|
From: Paul A Vixie <vixie@wisdom.home.vix.com>
|
||||||
|
|
||||||
|
in retrospect,
|
||||||
|
|
||||||
|
hostname = firstlabel ( "." otherlabel )+
|
||||||
|
firstchar = [a-zA-Z0-9_]
|
||||||
|
otherchar = [a-zA-Z0-9_-/]
|
||||||
|
firstlabel = firstchar otherchar*
|
||||||
|
otherlabel = otherchar+
|
||||||
|
|
||||||
|
should have been
|
||||||
|
|
||||||
|
hostname = label ( "." label )+
|
||||||
|
firstchar = [a-zA-Z0-9_]
|
||||||
|
otherchar = [a-zA-Z0-9_-]
|
||||||
|
label = firstchar otherchar*
|
||||||
|
|
||||||
|
i know of no example of a real host name that needs the looser rule i sent
|
||||||
|
earlier. since i'm only trying to bend the spec to fit actual known uses,
|
||||||
|
i should not have widened the rules as far as i did earlier.
|
||||||
|
****/
|
||||||
|
|
||||||
|
#define firstchar(c) ((isascii(c) && isalnum(c)) || (c) == '_')
|
||||||
|
#define otherchar(c) (firstchar(c) || (c) == '-')
|
||||||
|
#define wildlabel(firstlabel, ch, nch) \
|
||||||
|
((firstlabel) && (ch) == '*' && ((nch) == '.' || (nch) == '\0'))
|
||||||
|
|
||||||
|
int
|
||||||
|
res_hnok(dn)
|
||||||
|
const char *dn;
|
||||||
|
{
|
||||||
|
int ppch = '\0', pch = '.', ch = *dn++, firstlabel = 1;
|
||||||
|
|
||||||
|
while (ch != '\0') {
|
||||||
|
int nch = *dn++;
|
||||||
|
|
||||||
|
if (ch == '.' || (ch == '\\' && nch == '.')) {
|
||||||
|
NULL;
|
||||||
|
} else if (pch == '.' && ppch != '\\') {
|
||||||
|
if (!firstchar(ch) && !wildlabel(firstlabel, ch, nch))
|
||||||
|
return (0);
|
||||||
|
} else {
|
||||||
|
if (!otherchar(ch))
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
ppch = pch, pch = ch, ch = nch;
|
||||||
|
firstlabel = 0;
|
||||||
|
}
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is quite liberal, since RFC 1034's character sets are only
|
||||||
|
* recommendations.
|
||||||
|
*
|
||||||
|
* Note that some char's are signed, so we have to cast to unsigned.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
dn_isvalid(dn)
|
||||||
|
const char *dn;
|
||||||
|
{
|
||||||
|
unsigned char *t = (unsigned char *)dn;
|
||||||
|
int ch;
|
||||||
|
|
||||||
|
while ((ch = *t++) != '\0')
|
||||||
|
if (ch <= 0x1f || ch >= 0x7f) {
|
||||||
|
/* Unprintable in ASCII. */
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Routines to insert/extract short/long's.
|
* Routines to insert/extract short/long's.
|
||||||
*/
|
*/
|
||||||
|
@ -502,16 +502,28 @@ __p_rr(cp, msg, file)
|
|||||||
|
|
||||||
case T_HINFO:
|
case T_HINFO:
|
||||||
case T_ISDN:
|
case T_ISDN:
|
||||||
|
(void) fputs("\t\"", file);
|
||||||
cp2 = cp + dlen;
|
cp2 = cp + dlen;
|
||||||
if (n = *cp++) {
|
if ((n = (unsigned char) *cp++) != 0) {
|
||||||
fprintf(file, "\t%.*s", n, cp);
|
for (c = n; c > 0 && cp < cp2; c--) {
|
||||||
cp += n;
|
if (strchr("\n\"\\", *cp))
|
||||||
|
(void) putc('\\', file);
|
||||||
|
(void) putc(*cp++, file);
|
||||||
}
|
}
|
||||||
if ((cp < cp2) && (n = *cp++)) {
|
putc('"', file);
|
||||||
fprintf(file, "\t%.*s", n, cp);
|
}
|
||||||
cp += n;
|
if (cp < cp2 && (n = (unsigned char) *cp++) != 0) {
|
||||||
} else if (type == T_HINFO)
|
(void) fputs ("\t\"", file);
|
||||||
|
for (c = n; c > 0 && cp < cp2; c--) {
|
||||||
|
if (strchr("\n\"\\", *cp))
|
||||||
|
(void) putc('\\', file);
|
||||||
|
(void) putc(*cp++, file);
|
||||||
|
}
|
||||||
|
putc('"', file);
|
||||||
|
} else if (type == T_HINFO) {
|
||||||
|
(void) fputs("\"?\"", file);
|
||||||
fprintf(file, "\n;; *** Warning *** OS-type missing");
|
fprintf(file, "\n;; *** Warning *** OS-type missing");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_SOA:
|
case T_SOA:
|
||||||
@ -563,12 +575,11 @@ __p_rr(cp, msg, file)
|
|||||||
cp2 = cp1 + dlen;
|
cp2 = cp1 + dlen;
|
||||||
while (cp < cp2) {
|
while (cp < cp2) {
|
||||||
if (n = (unsigned char) *cp++) {
|
if (n = (unsigned char) *cp++) {
|
||||||
for (c = n; c > 0 && cp < cp2; c--)
|
for (c = n; c > 0 && cp < cp2; c--) {
|
||||||
if ((*cp == '\n') || (*cp == '"')) {
|
if (strchr("\n\"\\", *cp))
|
||||||
(void) putc('\\', file);
|
(void) putc('\\', file);
|
||||||
(void) putc(*cp++, file);
|
(void) putc(*cp++, file);
|
||||||
} else
|
}
|
||||||
(void) putc(*cp++, file);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
putc('"', file);
|
putc('"', file);
|
||||||
|
@ -409,6 +409,7 @@ res_send(buf, buflen, ans, anssiz)
|
|||||||
/*
|
/*
|
||||||
* Receive length & response
|
* Receive length & response
|
||||||
*/
|
*/
|
||||||
|
read_len:
|
||||||
cp = ans;
|
cp = ans;
|
||||||
len = INT16SZ;
|
len = INT16SZ;
|
||||||
while ((n = read(s, (char *)cp, (int)len)) > 0) {
|
while ((n = read(s, (char *)cp, (int)len)) > 0) {
|
||||||
@ -477,6 +478,20 @@ res_send(buf, buflen, ans, anssiz)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* The calling applicating has bailed out of
|
||||||
|
* a previous call and failed to arrange to have
|
||||||
|
* the circuit closed or the server has got
|
||||||
|
* itself confused. Anyway drop the packet and
|
||||||
|
* wait for the correct one.
|
||||||
|
*/
|
||||||
|
if (hp->id != anhp->id) {
|
||||||
|
DprintQ((_res.options & RES_DEBUG) ||
|
||||||
|
(_res.pfcode & RES_PRF_REPLY),
|
||||||
|
(stdout, ";; old answer (unexpected):\n"),
|
||||||
|
ans, (resplen>anssiz)?anssiz:resplen);
|
||||||
|
goto read_len;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* Use datagrams.
|
* Use datagrams.
|
||||||
@ -593,6 +608,8 @@ res_send(buf, buflen, ans, anssiz)
|
|||||||
n = select(s+1, &dsmask, (fd_set *)NULL,
|
n = select(s+1, &dsmask, (fd_set *)NULL,
|
||||||
(fd_set *)NULL, &timeout);
|
(fd_set *)NULL, &timeout);
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
|
if (errno == EINTR)
|
||||||
|
goto wait;
|
||||||
Perror(stderr, "select", errno);
|
Perror(stderr, "select", errno);
|
||||||
_res_close();
|
_res_close();
|
||||||
goto next_ns;
|
goto next_ns;
|
||||||
@ -626,7 +643,7 @@ res_send(buf, buflen, ans, anssiz)
|
|||||||
DprintQ((_res.options & RES_DEBUG) ||
|
DprintQ((_res.options & RES_DEBUG) ||
|
||||||
(_res.pfcode & RES_PRF_REPLY),
|
(_res.pfcode & RES_PRF_REPLY),
|
||||||
(stdout, ";; old answer:\n"),
|
(stdout, ";; old answer:\n"),
|
||||||
ans, resplen);
|
ans, (resplen>anssiz)?anssiz:resplen);
|
||||||
goto wait;
|
goto wait;
|
||||||
}
|
}
|
||||||
#if CHECK_SRVR_ADDR
|
#if CHECK_SRVR_ADDR
|
||||||
@ -640,7 +657,7 @@ res_send(buf, buflen, ans, anssiz)
|
|||||||
DprintQ((_res.options & RES_DEBUG) ||
|
DprintQ((_res.options & RES_DEBUG) ||
|
||||||
(_res.pfcode & RES_PRF_REPLY),
|
(_res.pfcode & RES_PRF_REPLY),
|
||||||
(stdout, ";; not our server:\n"),
|
(stdout, ";; not our server:\n"),
|
||||||
ans, resplen);
|
ans, (resplen>anssiz)?anssiz:resplen);
|
||||||
goto wait;
|
goto wait;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -655,7 +672,7 @@ res_send(buf, buflen, ans, anssiz)
|
|||||||
DprintQ((_res.options & RES_DEBUG) ||
|
DprintQ((_res.options & RES_DEBUG) ||
|
||||||
(_res.pfcode & RES_PRF_REPLY),
|
(_res.pfcode & RES_PRF_REPLY),
|
||||||
(stdout, ";; wrong query name:\n"),
|
(stdout, ";; wrong query name:\n"),
|
||||||
ans, resplen);
|
ans, (resplen>anssiz)?anssiz:resplen);
|
||||||
goto wait;
|
goto wait;
|
||||||
}
|
}
|
||||||
if (anhp->rcode == SERVFAIL ||
|
if (anhp->rcode == SERVFAIL ||
|
||||||
@ -663,7 +680,7 @@ res_send(buf, buflen, ans, anssiz)
|
|||||||
anhp->rcode == REFUSED) {
|
anhp->rcode == REFUSED) {
|
||||||
DprintQ(_res.options & RES_DEBUG,
|
DprintQ(_res.options & RES_DEBUG,
|
||||||
(stdout, "server rejected query:\n"),
|
(stdout, "server rejected query:\n"),
|
||||||
ans, resplen);
|
ans, (resplen>anssiz)?anssiz:resplen);
|
||||||
badns |= (1 << ns);
|
badns |= (1 << ns);
|
||||||
_res_close();
|
_res_close();
|
||||||
/* don't retry if called from dig */
|
/* don't retry if called from dig */
|
||||||
@ -689,7 +706,7 @@ res_send(buf, buflen, ans, anssiz)
|
|||||||
DprintQ((_res.options & RES_DEBUG) ||
|
DprintQ((_res.options & RES_DEBUG) ||
|
||||||
(_res.pfcode & RES_PRF_REPLY),
|
(_res.pfcode & RES_PRF_REPLY),
|
||||||
(stdout, ""),
|
(stdout, ""),
|
||||||
ans, resplen);
|
ans, (resplen>anssiz)?anssiz:resplen);
|
||||||
/*
|
/*
|
||||||
* If using virtual circuits, we assume that the first server
|
* If using virtual circuits, we assume that the first server
|
||||||
* is preferred over the rest (i.e. it is on the local
|
* is preferred over the rest (i.e. it is on the local
|
||||||
|
@ -78,7 +78,7 @@
|
|||||||
* is new enough to contain a certain feature.
|
* is new enough to contain a certain feature.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __RES 19951031
|
#define __RES 19960229
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Resolver configuration file.
|
* Resolver configuration file.
|
||||||
@ -184,6 +184,8 @@ typedef res_sendhookact (*res_send_rhook)__P((const struct sockaddr_in *ns,
|
|||||||
extern struct __res_state _res;
|
extern struct __res_state _res;
|
||||||
|
|
||||||
/* Private routines shared between libc/net, named, nslookup and others. */
|
/* Private routines shared between libc/net, named, nslookup and others. */
|
||||||
|
#define res_hnok __res_hnok
|
||||||
|
#define dn_isvalid __dn_isvalid
|
||||||
#define dn_skipname __dn_skipname
|
#define dn_skipname __dn_skipname
|
||||||
#define fp_query __fp_query
|
#define fp_query __fp_query
|
||||||
#define fp_nquery __fp_nquery
|
#define fp_nquery __fp_nquery
|
||||||
@ -203,6 +205,8 @@ extern struct __res_state _res;
|
|||||||
#define res_nameinquery __res_nameinquery
|
#define res_nameinquery __res_nameinquery
|
||||||
#define res_queriesmatch __res_queriesmatch
|
#define res_queriesmatch __res_queriesmatch
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
int __res_hnok __P((const char *));
|
||||||
|
int __dn_isvalid __P((const char *));
|
||||||
int __dn_skipname __P((const u_char *, const u_char *));
|
int __dn_skipname __P((const u_char *, const u_char *));
|
||||||
void __fp_resstat __P((struct __res_state *, FILE *));
|
void __fp_resstat __P((struct __res_state *, FILE *));
|
||||||
void __fp_query __P((const u_char *, FILE *));
|
void __fp_query __P((const u_char *, FILE *));
|
||||||
|
Loading…
Reference in New Issue
Block a user