/*
- * Copyright (c) 1983, 1990 Regents of the University of California.
+ * ++Copyright++
+ * -
+ * Copyright (c) Regents of the University of California.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)inet_addr.c 5.10 (Berkeley) 2/24/91";
+static char sccsid[] = "@(#)inet_addr.c 5.11 (Berkeley) 12/9/91";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <ctype.h>
+#include "../conf/portability.h"
+#if !defined(BSD) || (BSD <= 199006)
/*
* Ascii internet address interpretation routine.
* The value returned is in network order.
*/
-u_long
+u_int32_t
inet_addr(cp)
register const char *cp;
{
* This replaces inet_addr, the return value from which
* cannot distinguish between failure and a local broadcast address.
*/
-
+int
inet_aton(cp, addr)
- register char *cp;
+ register const char *cp;
struct in_addr *addr;
{
- register u_long val, base, n;
+ register u_int32_t val;
+ register int base, n;
register char c;
- u_long parts[4], *pp = parts;
+ u_int parts[4];
+ register u_int *pp = parts;
for (;;) {
/*
addr->s_addr = htonl(val);
return (1);
}
+#endif /*BSD*/
/*
+ * @(#)nameser.h 5.25 (Berkeley) 4/3/91
+ * $Id$
+ */
+
+/*
+ * ++Copyright++ 1983, 1989
+ * -
* Copyright (c) 1983, 1989 Regents of the University of California.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * @(#)nameser.h 5.25 (Berkeley) 4/3/91
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
*/
#ifndef _NAMESER_H_
#define _NAMESER_H_
+#include <sys/param.h>
+#if (!defined(BSD)) || (BSD < 199306)
+# include <sys/bitypes.h>
+#else
+# include <sys/types.h>
+#endif
+#include <sys/cdefs.h>
+
/*
* Define constants based on rfc883
*/
#define IQUERY 0x1 /* inverse query */
#define STATUS 0x2 /* nameserver status query */
/*#define xxx 0x3 /* 0x3 reserved */
- /* non standard */
+ /* non standard - supports ALLOW_UPDATES stuff from Mike Schwartz */
#define UPDATEA 0x9 /* add resource record */
#define UPDATED 0xa /* delete a specific resource record */
-#define UPDATEDA 0xb /* delete all nemed resource record */
+#define UPDATEDA 0xb /* delete all named resource record */
#define UPDATEM 0xc /* modify a specific resource record */
#define UPDATEMA 0xd /* modify all named resource record */
#define T_MINFO 14 /* mailbox information */
#define T_MX 15 /* mail routing information */
#define T_TXT 16 /* text strings */
+#define T_RP 17 /* responsible person */
/* non standard */
#define T_UINFO 100 /* user (finger) information */
#define T_UID 101 /* user ID */
*/
#define C_IN 1 /* the arpa internet */
-#define C_CHAOS 3 /* for chaos net at MIT */
-#define C_HS 4 /* for Hesiod name server at MIT */
+#define C_CHAOS 3 /* for chaos net (MIT) */
+#define C_HS 4 /* for Hesiod name server (MIT) */
/* Query class values which do not appear in resource records */
#define C_ANY 255 /* wildcard match */
#define CONV_BADCKSUM -3
#define CONV_BADBUFLEN -4
-/* Hacked for GNU: The BSD code has #ifdef's here to set BYTE_ORDER. */
-#include <endian.h>
+#ifndef BYTE_ORDER
+#define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */
+#define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
+#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp)*/
+#if defined(vax) || defined(ns32000) || defined(sun386) || defined(i386) || \
+ defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \
+ defined(__alpha__) || defined(__alpha)
+#define BYTE_ORDER LITTLE_ENDIAN
+#endif
+
+#if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \
+ defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \
+ defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || \
+ defined(apollo) || defined(hp9000) || defined(hp9000s300) || \
+ defined (BIT_ZERO_ON_LEFT)
+#define BYTE_ORDER BIG_ENDIAN
+#endif
+#endif /* BYTE_ORDER */
+
+#if !defined(BYTE_ORDER) || \
+ (BYTE_ORDER != BIG_ENDIAN && BYTE_ORDER != LITTLE_ENDIAN && \
+ BYTE_ORDER != PDP_ENDIAN)
+ /* you must determine what the correct bit order is for
+ * your compiler - the next line is an intentional error
+ * which will force your compiles to bomb until you fix
+ * the above macros.
+ */
+ #error "Undefined or invalid BYTE_ORDER";
+#endif
/*
* Structure for query header, the order of the fields is machine and
* compiler dependent, in our case, the bits within a byte are assignd
u_short id; /* query identification number */
#if BYTE_ORDER == BIG_ENDIAN
/* fields in third byte */
- u_char qr:1; /* response flag */
- u_char opcode:4; /* purpose of message */
- u_char aa:1; /* authoritive answer */
- u_char tc:1; /* truncated message */
- u_char rd:1; /* recursion desired */
+ u_int qr:1; /* response flag */
+ u_int opcode:4; /* purpose of message */
+ u_int aa:1; /* authoritive answer */
+ u_int tc:1; /* truncated message */
+ u_int rd:1; /* recursion desired */
/* fields in fourth byte */
- u_char ra:1; /* recursion available */
- u_char pr:1; /* primary server required (non standard) */
- u_char unused:2; /* unused bits */
- u_char rcode:4; /* response code */
+ u_int ra:1; /* recursion available */
+ u_int pr:1; /* primary server required (non standard) */
+ u_int unused:2; /* unused bits */
+ u_int rcode:4; /* response code */
#endif
#if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN
/* fields in third byte */
- u_char rd:1; /* recursion desired */
- u_char tc:1; /* truncated message */
- u_char aa:1; /* authoritive answer */
- u_char opcode:4; /* purpose of message */
- u_char qr:1; /* response flag */
+ u_int rd:1; /* recursion desired */
+ u_int tc:1; /* truncated message */
+ u_int aa:1; /* authoritive answer */
+ u_int opcode:4; /* purpose of message */
+ u_int qr:1; /* response flag */
/* fields in fourth byte */
- u_char rcode:4; /* response code */
- u_char unused:2; /* unused bits */
- u_char pr:1; /* primary server required (non standard) */
- u_char ra:1; /* recursion available */
+ u_int rcode:4; /* response code */
+ u_int unused:2; /* unused bits */
+ u_int pr:1; /* primary server required (non standard) */
+ u_int ra:1; /* recursion available */
#endif
/* remaining bytes */
u_short qdcount; /* number of question entries */
short r_zone; /* zone number */
short r_class; /* class number */
short r_type; /* type number */
- u_long r_ttl; /* time to live */
+ u_int32_t r_ttl; /* time to live */
int r_size; /* size of data area */
char *r_data; /* pointer to data */
};
extern u_short _getshort();
-extern u_long _getlong();
+extern u_int32_t _getlong();
/*
- * Inline versions of get/put short/long.
- * Pointer is advanced; we assume that both arguments
- * are lvalues and will already be in registers.
- * cp MUST be u_char *.
+ * Inline versions of get/put short/long. Pointer is advanced.
+ * We also assume that a "u_short" holds 2 "chars"
+ * and that a "u_int32_t" holds 4 "chars".
+ *
+ * These macros demonstrate the property of C whereby it can be
+ * portable or it can be elegant but never both.
*/
#define GETSHORT(s, cp) { \
- (s) = *(cp)++ << 8; \
- (s) |= *(cp)++; \
+ register u_char *t_cp = (u_char*)(cp); \
+ (s) = (((u_short)t_cp[0]) << 8) \
+ | (((u_short)t_cp[1])) \
+ ; \
+ (cp) += 2; \
}
#define GETLONG(l, cp) { \
- (l) = *(cp)++ << 8; \
- (l) |= *(cp)++; (l) <<= 8; \
- (l) |= *(cp)++; (l) <<= 8; \
- (l) |= *(cp)++; \
+ register u_char *t_cp = (u_char*)(cp); \
+ (l) = (((u_int32_t)t_cp[0]) << 24) \
+ | (((u_int32_t)t_cp[1]) << 16) \
+ | (((u_int32_t)t_cp[2]) << 8) \
+ | (((u_int32_t)t_cp[3])) \
+ ; \
+ (cp) += 4; \
}
-
#define PUTSHORT(s, cp) { \
- *(cp)++ = (s) >> 8; \
- *(cp)++ = (s); \
+ register u_short t_s = (u_short)(s); \
+ register u_char *t_cp = (u_char*)(cp); \
+ *t_cp++ = t_s >> 8; \
+ *t_cp = t_s; \
+ (cp) += 2; \
}
/*
- * Warning: PUTLONG destroys its first argument.
+ * Warning: PUTLONG --no-longer-- destroys its first argument. if you
+ * were depending on this "feature", you will lose.
*/
#define PUTLONG(l, cp) { \
- (cp)[3] = l; \
- (cp)[2] = (l >>= 8); \
- (cp)[1] = (l >>= 8); \
- (cp)[0] = l >> 8; \
- (cp) += sizeof(u_long); \
+ register u_int32_t t_l = (u_int32_t)(l); \
+ register u_char *t_cp = (u_char*)(cp); \
+ *t_cp++ = t_l >> 24; \
+ *t_cp++ = t_l >> 16; \
+ *t_cp++ = t_l >> 8; \
+ *t_cp = t_l; \
+ (cp) += 4; \
}
#endif /* !_NAMESER_H_ */
/*
+ * ++Copyright++ 1985, 1988
+ * -
* Copyright (c) 1985, 1988 Regents of the University of California.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)gethostnamadr.c 6.45 (Berkeley) 2/24/91";
+static char sccsid[] = "@(#)gethostnamadr.c 6.47 (Berkeley) 6/18/92";
+static char rcsid[] = "$Id$";
#endif /* LIBC_SCCS and not lint */
#include <sys/param.h>
#include <stdio.h>
#include <ctype.h>
#include <errno.h>
-#include <string.h>
+#include "../conf/portability.h"
#define MAXALIASES 35
#define MAXADDRS 35
} querybuf;
typedef union {
- long al;
+ int32_t al;
char ac;
} align;
-int h_errno;
+extern int h_errno;
static struct hostent *
getanswer(answer, anslen, iquery)
type = _getshort(cp);
cp += sizeof(u_short);
class = _getshort(cp);
- cp += sizeof(u_short) + sizeof(u_long);
+ cp += sizeof(u_short) + sizeof(u_int32_t);
n = _getshort(cp);
cp += sizeof(u_short);
if (type == T_CNAME) {
}
}
- bp += sizeof(align) - ((u_long)bp % sizeof(align));
+ bp += sizeof(align) - ((u_int32_t)bp % sizeof(align));
if (bp + n >= &hostbuf[sizeof(hostbuf)]) {
#ifdef DEBUG
struct hostent *
gethostbyname(name)
- char *name;
+ const char *name;
{
querybuf buf;
- register char *cp;
+ register const char *cp;
int n;
extern struct hostent *_gethtbyname();
/*
* All-numeric, no dot at the end.
* Fake up a hostent as if we'd actually
- * done a lookup. What if someone types
- * 255.255.255.255? The test below will
- * succeed spuriously... ???
+ * done a lookup.
*/
- if ((host_addr.s_addr = inet_addr(name)) == -1) {
+ if (!inet_aton(name, &host_addr)) {
h_errno = HOST_NOT_FOUND;
return((struct hostent *) NULL);
}
- host.h_name = name;
+ host.h_name = (char *)name;
host.h_aliases = host_aliases;
host_aliases[0] = NULL;
host.h_addrtype = AF_INET;
- host.h_length = sizeof(u_long);
+ host.h_length = sizeof(u_int32_t);
h_addr_ptrs[0] = (char *)&host_addr;
h_addr_ptrs[1] = (char *)0;
#if BSD >= 43 || defined(h_addr) /* new-style hostent structure */
return(hp);
}
+void
_sethtent(f)
int f;
{
stayopen |= f;
}
+void
_endhtent()
{
if (hostf && !stayopen) {
host.h_addr_list = host_addrs;
#endif
host.h_addr = hostaddr;
- *((u_long *)host.h_addr) = inet_addr(p);
- host.h_length = sizeof (u_long);
+ *((u_int32_t *)host.h_addr) = inet_addr(p);
+ host.h_length = sizeof (u_int32_t);
host.h_addrtype = AF_INET;
while (*cp == ' ' || *cp == '\t')
cp++;
_endhtent();
return (p);
}
+
+#if defined(BSD43_BSD43_NFS) || defined(sun)
+/* some libc's out there are bound internally to these names (UMIPS) */
+void
+ht_sethostent(stayopen)
+ int stayopen;
+{
+ _sethtent(stayopen);
+}
+
+void
+ht_endhostent()
+{
+ _endhtent();
+}
+
+struct hostent *
+ht_gethostbyname(name)
+ char *name;
+{
+ return _gethtbyname(name);
+}
+
+struct hostent *
+ht_gethostbyaddr(addr, len, type)
+ const char *addr;
+ int len, type;
+{
+ return _gethtbyaddr(addr, len, type);
+}
+
+struct hostent *
+gethostent()
+{
+ return _gethtent();
+}
+
+void
+dns_service()
+{
+ return;
+}
+
+#undef dn_skipname
+dn_skipname(comp_dn, eom)
+ const u_char *comp_dn, *eom;
+{
+ return __dn_skipname(comp_dn, eom);
+}
+#endif /*old-style libc with yp junk in it*/
/*
+ * ++Copyright++ 1987
+ * -
* Copyright (c) 1987 Regents of the University of California.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)herror.c 6.6 (Berkeley) 2/24/91";
+static char rcsid[] = "$Id$";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
#include <sys/uio.h>
#include <netdb.h>
-#include <unistd.h>
-#include <string.h>
+#include "../conf/portability.h"
char *h_errlist[] = {
"Error 0",
v->iov_len = 1;
writev(STDERR_FILENO, iov, (v - iov) + 1);
}
+
+char *
+hstrerror(err)
+ int err;
+{
+ return (u_int)err < h_nerr ? h_errlist[err] : "Unknown resolver error";
+}
/*
- * Copyright (c) 1983, 1987, 1989 The Regents of the University of California.
+ * @(#)resolv.h 5.15 (Berkeley) 4/3/91
+ * $Id$
+ */
+
+/*
+ * ++Copyright++ 1983, 1987, 1989
+ * -
+ * Copyright (c) 1983, 1987, 1989 Regents of the University of California.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * @(#)resolv.h 5.15 (Berkeley) 4/3/91
+ * -
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ * -
+ * --Copyright--
*/
#ifndef _RESOLV_H_
#define _RESOLV_H_
+#include <sys/param.h>
+#if (!defined(BSD)) || (BSD < 199306)
+# include <sys/bitypes.h>
+#else
+# include <sys/types.h>
+#endif
+#include <sys/cdefs.h>
+#include <stdio.h>
+
/*
* Resolver configuration file.
* Normally not present, but may contain the address of the
#define RES_TIMEOUT 5 /* min. seconds between retries */
-struct state {
+/* this was "struct state" until 4.9 */
+struct __res_state {
int retrans; /* retransmition time interval */
int retry; /* number of times to retransmit */
- long options; /* option flags - see below. */
+ u_int32_t options; /* option flags - see below. */
int nscount; /* number of name servers */
struct sockaddr_in nsaddr_list[MAXNS]; /* address of name server */
#define nsaddr nsaddr_list[0] /* for backward compatibility */
u_short id; /* current packet id */
- char defdname[MAXDNAME]; /* default domain */
char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */
+ char defdname[MAXDNAME]; /* default domain */
+ u_int32_t pfcode; /* RES_PRF_ flags - see below. */
};
/*
- * Resolver options
+ * Resolver options (keep these in synch with res_debug.c, please)
*/
#define RES_INIT 0x0001 /* address initialized */
#define RES_DEBUG 0x0002 /* print debug messages */
#define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH)
-extern struct state _res;
+/*
+ * Resolver "pfcode" values. Used by dig.
+ */
+#define RES_PRF_STATS 0x0001
+/* 0x0002 */
+#define RES_PRF_CLASS 0x0004
+#define RES_PRF_CMD 0x0008
+#define RES_PRF_QUES 0x0010
+#define RES_PRF_ANS 0x0020
+#define RES_PRF_AUTH 0x0040
+#define RES_PRF_ADD 0x0080
+#define RES_PRF_HEAD1 0x0100
+#define RES_PRF_HEAD2 0x0200
+#define RES_PRF_TTLID 0x0400
+#define RES_PRF_HEADX 0x0800
+#define RES_PRF_QUERY 0x1000
+#define RES_PRF_REPLY 0x2000
+#define RES_PRF_INIT 0x4000
+/* 0x8000 */
-#include <sys/cdefs.h>
-#include <stdio.h>
+extern struct __res_state _res;
/* Private routines shared between libc/net, named, nslookup and others. */
#define dn_skipname __dn_skipname
#define p_type __p_type
__BEGIN_DECLS
int __dn_skipname __P((const u_char *, const u_char *));
+void __fp_resstat __P((struct __res_state *, FILE *));
void __fp_query __P((char *, FILE *));
char *__hostalias __P((const char *));
-void __putlong __P((u_long, u_char *));
+void __putlong __P((u_int32_t, u_char *));
void __putshort __P((u_short, u_char *));
char *__p_class __P((int));
-char *__p_time __P((u_long));
+char *__p_time __P((u_int32_t));
char *__p_type __P((int));
int dn_comp __P((const u_char *, u_char *, int, u_char **, u_char **));
int dn_expand __P((const u_char *, const u_char *, const u_char *,
- u_char *, int));
+ u_char *, int));
int res_init __P((void));
int res_mkquery __P((int, const char *, int, int, const char *, int,
- const struct rrec *, char *, int));
+ const char *, char *, int));
int res_send __P((const char *, int, char *, int));
__END_DECLS