BIND 8.3.0-T1A sync
This commit is contained in:
@@ -13,7 +13,7 @@
|
||||
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: Makefile.in,v 1.5 2001/05/31 05:53:57 marka Exp $
|
||||
# $Id: Makefile.in,v 1.6 2001/06/21 08:25:56 marka Exp $
|
||||
|
||||
DAEMON_OBJS=bsd/daemon.@O@
|
||||
STRSEP_OBJS=bsd/strsep.@O@
|
||||
@@ -66,8 +66,8 @@ WANT_IRS_THREADSGR_OBJS=irs/getgrent_r.@O@
|
||||
ISCOBJS= isc/assertions.@O@ isc/base64.@O@ isc/bitncmp.@O@ isc/ctl_clnt.@O@ \
|
||||
isc/ctl_p.@O@ isc/ctl_srvr.@O@ isc/ev_connects.@O@ isc/ev_files.@O@ \
|
||||
isc/ev_streams.@O@ isc/ev_timers.@O@ isc/ev_waits.@O@ \
|
||||
isc/eventlib.@O@ isc/heap.@O@ isc/logging.@O@ \
|
||||
isc/memcluster.@O@ isc/movefile.@O@ isc/tree.@O@ isc/ip6.@O@
|
||||
isc/eventlib.@O@ isc/heap.@O@ isc/hex.@O@ isc/logging.@O@ \
|
||||
isc/memcluster.@O@ isc/movefile.@O@ isc/tree.@O@
|
||||
|
||||
NAMESEROBJS= nameser/ns_date.@O@ nameser/ns_name.@O@ nameser/ns_netint.@O@ \
|
||||
nameser/ns_parse.@O@ nameser/ns_print.@O@ nameser/ns_samedomain.@O@ \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static const char sccsid[] = "@(#)strerror.c 8.1 (Berkeley) 6/4/93";
|
||||
static const char rcsid[] = "$Id: strerror.c,v 1.2 2001/05/08 07:06:01 marka Exp $";
|
||||
static const char rcsid[] = "$Id: strerror.c,v 1.3 2001/06/21 08:25:59 marka Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
/*
|
||||
@@ -49,21 +49,21 @@ static const char rcsid[] = "$Id: strerror.c,v 1.2 2001/05/08 07:06:01 marka Exp
|
||||
int __strerror_unneeded__;
|
||||
#else
|
||||
|
||||
extern int sys_nerr;
|
||||
extern char *sys_errlist[];
|
||||
|
||||
const char *
|
||||
strerror(int num) {
|
||||
isc_strerror(int num) {
|
||||
#define UPREFIX "Unknown error: "
|
||||
static char ebuf[40] = UPREFIX; /* 64-bit number + slop */
|
||||
u_int errnum;
|
||||
char *p, *t;
|
||||
const char *ret;
|
||||
char tmp[40];
|
||||
|
||||
#undef strerror
|
||||
ret = strerror(num); /* call strerror() in libc */
|
||||
if (ret != NULL)
|
||||
return(ret);
|
||||
|
||||
errnum = num; /* convert to unsigned */
|
||||
if (errnum < sys_nerr)
|
||||
return (sys_errlist[errnum]);
|
||||
|
||||
/* Do this by hand, so we don't include stdio(3). */
|
||||
t = tmp;
|
||||
do {
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: nameser.h,v 1.1 2001/03/29 06:31:35 marka Exp $
|
||||
* $Id: nameser.h,v 1.2 2001/06/21 08:26:03 marka Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ARPA_NAMESER_H_
|
||||
@@ -119,7 +119,7 @@ typedef struct __ns_msg {
|
||||
const u_char *_sections[ns_s_max];
|
||||
ns_sect _sect;
|
||||
int _rrnum;
|
||||
const u_char *_ptr;
|
||||
const u_char *_msg_ptr;
|
||||
} ns_msg;
|
||||
|
||||
/* Private data structure - do not use from outside library. */
|
||||
@@ -429,7 +429,7 @@ typedef enum __ns_cert_types {
|
||||
* Inline versions of get/put short/long. Pointer is advanced.
|
||||
*/
|
||||
#define NS_GET16(s, cp) do { \
|
||||
register const u_char *t_cp = (cp); \
|
||||
register const u_char *t_cp = (const u_char *)(cp); \
|
||||
(s) = ((u_int16_t)t_cp[0] << 8) \
|
||||
| ((u_int16_t)t_cp[1]) \
|
||||
; \
|
||||
@@ -437,7 +437,7 @@ typedef enum __ns_cert_types {
|
||||
} while (0)
|
||||
|
||||
#define NS_GET32(l, cp) do { \
|
||||
register const u_char *t_cp = (cp); \
|
||||
register const u_char *t_cp = (const 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) \
|
||||
|
||||
@@ -90,7 +90,7 @@ int log_remove_channel(log_context, int, log_channel);
|
||||
int log_option(log_context, int, int);
|
||||
int log_category_is_active(log_context, int);
|
||||
log_channel log_new_syslog_channel(unsigned int, int, int);
|
||||
log_channel log_new_file_channel(unsigned int, int, char *,
|
||||
log_channel log_new_file_channel(unsigned int, int, const char *,
|
||||
FILE *, unsigned int,
|
||||
unsigned long);
|
||||
int log_set_file_owner(log_channel, uid_t, gid_t);
|
||||
|
||||
@@ -16,16 +16,24 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* $Id: misc.h,v 1.1 2001/03/29 06:31:36 marka Exp $
|
||||
* $Id: misc.h,v 1.2 2001/06/21 08:26:05 marka Exp $
|
||||
*/
|
||||
|
||||
#ifndef _ISC_MISC_H
|
||||
#define _ISC_MISC_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define bitncmp __bitncmp
|
||||
/*#define isc_movefile __isc_movefile */
|
||||
|
||||
extern int bitncmp(const void *l, const void *r, int n);
|
||||
extern int isc_movefile(const char *, const char *);
|
||||
|
||||
extern int isc_gethexstring(unsigned char *, size_t, int, FILE *,
|
||||
int *);
|
||||
extern void isc_puthexstring(FILE *, const unsigned char *, size_t,
|
||||
size_t, size_t, const char *);
|
||||
extern void isc_tohex(const unsigned char *, size_t, char *);
|
||||
|
||||
#endif /*_ISC_MISC_H*/
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
/*
|
||||
* @(#)netdb.h 8.1 (Berkeley) 6/2/93
|
||||
* $Id: netdb.h,v 1.4 2001/05/10 07:33:30 marka Exp $
|
||||
* $Id: netdb.h,v 1.5 2001/06/21 08:26:00 marka Exp $
|
||||
*/
|
||||
|
||||
#ifndef _NETDB_H_
|
||||
@@ -118,10 +118,10 @@
|
||||
#define _PATH_SERVICES "/etc/services"
|
||||
#endif
|
||||
|
||||
#ifdef _REENTRANT
|
||||
__BEGIN_DECLS
|
||||
extern int * __h_errno __P((void));
|
||||
__END_DECLS
|
||||
#ifdef _REENTRANT
|
||||
#define h_errno (*__h_errno())
|
||||
#else
|
||||
extern int h_errno;
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
/*
|
||||
* @(#)resolv.h 8.1 (Berkeley) 6/2/93
|
||||
* $Id: resolv.h,v 1.5 2001/05/28 08:38:20 marka Exp $
|
||||
* $Id: resolv.h,v 1.6 2001/06/21 08:26:01 marka Exp $
|
||||
*/
|
||||
|
||||
#ifndef _RESOLV_H_
|
||||
@@ -190,6 +190,15 @@ struct __res_state {
|
||||
|
||||
typedef struct __res_state *res_state;
|
||||
|
||||
union res_sockaddr_union {
|
||||
struct sockaddr_in sin;
|
||||
#ifdef IN6ADDR_ANY_INIT
|
||||
struct sockaddr_in6 sin6;
|
||||
#endif
|
||||
int64_t __align; /* 64bit alignment */
|
||||
char __space[128]; /* max size */
|
||||
};
|
||||
|
||||
/*
|
||||
* Resolver flags (used to be discrete per-module statics ints).
|
||||
*/
|
||||
@@ -358,6 +367,10 @@ extern const struct res_sym __p_rcode_syms[];
|
||||
#define sym_ston __sym_ston
|
||||
#define res_nopt __res_nopt
|
||||
#define res_ndestroy __res_ndestroy
|
||||
#define res_nametoclass __res_nametoclass
|
||||
#define res_nametotype __res_nametotype
|
||||
#define res_setservers __res_setservers
|
||||
#define res_getservers __res_getservers
|
||||
__BEGIN_DECLS
|
||||
int res_hnok __P((const char *));
|
||||
int res_ownok __P((const char *));
|
||||
@@ -435,6 +448,12 @@ void res_buildprotolist __P((void));
|
||||
const char * res_get_nibblesuffix __P((res_state));
|
||||
const char * res_get_bitstringsuffix __P((res_state));
|
||||
void res_ndestroy __P((res_state));
|
||||
u_int16_t res_nametoclass __P((const char *buf, int *success));
|
||||
u_int16_t res_nametotype __P((const char *buf, int *success));
|
||||
void res_setservers __P((res_state,
|
||||
const union res_sockaddr_union *, int));
|
||||
int res_getservers __P((res_state,
|
||||
union res_sockaddr_union *, int));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_RESOLV_H_ */
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$Id: inet_data.c,v 1.1 2001/03/29 06:31:37 marka Exp $";
|
||||
static char rcsid[] = "$Id: inet_data.c,v 1.2 2001/06/21 08:26:06 marka Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "port_before.h"
|
||||
@@ -40,15 +40,5 @@ static char rcsid[] = "$Id: inet_data.c,v 1.1 2001/03/29 06:31:37 marka Exp $";
|
||||
|
||||
#include "port_after.h"
|
||||
|
||||
#ifndef IN6ADDR_ANY_INIT
|
||||
#define IN6ADDR_ANY_INIT {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}
|
||||
#endif
|
||||
#ifndef IN6ADDR_LOOPBACK_INIT
|
||||
#define IN6ADDR_LOOPBACK_INIT {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef HAS_INET6_STRUCTS
|
||||
const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
|
||||
const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
|
||||
#endif
|
||||
const struct in6_addr isc_in6addr_any = IN6ADDR_ANY_INIT;
|
||||
const struct in6_addr isc_in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
/* BIND Id: gethnamaddr.c,v 8.15 1996/05/22 04:56:30 vixie Exp $ */
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static const char rcsid[] = "$Id: dns_ho.c,v 1.3 2001/05/22 22:53:24 marka Exp $";
|
||||
static const char rcsid[] = "$Id: dns_ho.c,v 1.4 2001/06/21 08:26:08 marka Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
/* Imports. */
|
||||
@@ -662,7 +662,7 @@ ar_head(cp, count, msg, eom, pvt, name_ok)
|
||||
int (*name_ok)(const char *);
|
||||
{
|
||||
int n;
|
||||
u_char buf[1024]; /* XXX */
|
||||
char buf[1024]; /* XXX */
|
||||
|
||||
while (count-- > 0 && cp < eom) {
|
||||
n = dn_expand(msg, eom, cp, buf, sizeof(buf));
|
||||
@@ -693,7 +693,7 @@ a6_expand(const u_char *ansbuf, const u_char *a6p,
|
||||
int n, pbyte, plen1, pbyte1, error = 0;
|
||||
const u_char *cp;
|
||||
struct addrinfo sentinel, *cur;
|
||||
u_char pname[1024], buf[1024]; /* XXX */
|
||||
char pname[1024], buf[1024]; /* XXX */
|
||||
|
||||
*errorp = NETDB_SUCCESS;
|
||||
memset(&sentinel, 0, sizeof(sentinel));
|
||||
@@ -1382,7 +1382,9 @@ gethostans(struct irs_ho *this,
|
||||
/* make addrinfo. don't overwrite constant PAI */
|
||||
ai = *pai;
|
||||
ai.ai_family = (type == T_AAAA) ? AF_INET6 : AF_INET;
|
||||
cur->ai_next = addr2addrinfo((const struct addrinfo *)&ai, cp);
|
||||
cur->ai_next = addr2addrinfo(
|
||||
(const struct addrinfo *)&ai,
|
||||
(const char *)cp);
|
||||
if (cur->ai_next == NULL)
|
||||
had_error++;
|
||||
|
||||
|
||||
@@ -81,7 +81,9 @@ struct sockinet {
|
||||
|
||||
static int ip6_parsenumeric __P((const struct sockaddr *, const char *, char *,
|
||||
size_t, int));
|
||||
#ifdef HAVE_SIN6_SCOPE_ID
|
||||
static int ip6_sa2str __P((const struct sockaddr_in6 *, char *, size_t, int));
|
||||
#endif
|
||||
|
||||
int
|
||||
getnameinfo(sa, salen, host, hostlen, serv, servlen, flags)
|
||||
@@ -135,7 +137,7 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags)
|
||||
* the caller does not want the result.
|
||||
*/
|
||||
} else if (flags & NI_NUMERICSERV) {
|
||||
snprintf(numserv, sizeof(numserv), "%d", ntohs(port));
|
||||
sprintf(numserv, "%d", ntohs(port));
|
||||
if (strlen(numserv) > servlen)
|
||||
return EAI_MEMORY;
|
||||
strcpy(serv, numserv);
|
||||
@@ -208,16 +210,17 @@ getnameinfo(sa, salen, host, hostlen, serv, servlen, flags)
|
||||
}
|
||||
|
||||
static int
|
||||
ip6_parsenumeric(sa, addr, host, hostlen, flags)
|
||||
const struct sockaddr *sa;
|
||||
const char *addr;
|
||||
char *host;
|
||||
size_t hostlen;
|
||||
int flags;
|
||||
ip6_parsenumeric(const struct sockaddr *sa, const char *addr, char *host,
|
||||
size_t hostlen, int flags)
|
||||
{
|
||||
size_t numaddrlen;
|
||||
char numaddr[512];
|
||||
|
||||
#ifndef HAVE_SIN6_SCOPE_ID
|
||||
UNUSED(sa);
|
||||
UNUSED(flags);
|
||||
#endif
|
||||
|
||||
if (inet_ntop(AF_INET6, addr, numaddr, sizeof(numaddr))
|
||||
== NULL)
|
||||
return EAI_SYSTEM;
|
||||
@@ -250,26 +253,28 @@ ip6_parsenumeric(sa, addr, host, hostlen, flags)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_SIN6_SCOPE_ID
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
ip6_sa2str(sa6, buf, bufsiz, flags)
|
||||
const struct sockaddr_in6 *sa6;
|
||||
char *buf;
|
||||
size_t bufsiz;
|
||||
int flags;
|
||||
ip6_sa2str(const struct sockaddr_in6 *sa6, char *buf,
|
||||
size_t bufsiz, int flags)
|
||||
{
|
||||
#ifdef USE_IFNAMELINKID
|
||||
unsigned int ifindex = (unsigned int)sa6->sin6_scope_id;
|
||||
const struct in6_addr *a6 = &sa6->sin6_addr;
|
||||
#endif
|
||||
char tmp[64];
|
||||
|
||||
#ifdef HAVE_SIN6_SCOPE_ID
|
||||
#ifdef NI_NUMERICSCOPE
|
||||
if (flags & NI_NUMERICSCOPE) {
|
||||
return(snprintf(buf, bufsiz, "%d", sa6->sin6_scope_id));
|
||||
sprintf(tmp, "%u", sa6->sin6_scope_id);
|
||||
if (bufsiz != 0) {
|
||||
strncpy(buf, tmp, bufsiz - 1);
|
||||
buf[bufsiz - 1] = '\0';
|
||||
}
|
||||
return(strlen(tmp));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef USE_IFNAMELINKID
|
||||
/*
|
||||
@@ -292,9 +297,11 @@ ip6_sa2str(sa6, buf, bufsiz, flags)
|
||||
#endif
|
||||
|
||||
/* last resort */
|
||||
#ifdef HAVE_SIN6_SCOPE_ID
|
||||
return(snprintf(buf, bufsiz, "%u", sa6->sin6_scope_id));
|
||||
#else
|
||||
return(snprintf(buf, bufsiz, "0")); /* no scope */
|
||||
#endif
|
||||
sprintf(tmp, "%u", sa6->sin6_scope_id);
|
||||
if (bufsiz != 0) {
|
||||
strncpy(buf, tmp, bufsiz - 1);
|
||||
buf[bufsiz - 1] = '\0';
|
||||
}
|
||||
return(strlen(tmp));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#if !defined(LINT) && !defined(CODECENTER)
|
||||
static const char rcsid[] = "$Id: irs_data.c,v 1.1 2001/03/29 06:31:50 marka Exp $";
|
||||
static const char rcsid[] = "$Id: irs_data.c,v 1.2 2001/06/21 08:26:10 marka Exp $";
|
||||
#endif
|
||||
|
||||
#include "port_before.h"
|
||||
@@ -30,6 +30,7 @@ static const char rcsid[] = "$Id: irs_data.c,v 1.1 2001/03/29 06:31:50 marka Exp
|
||||
|
||||
#include <resolv.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <isc/memcluster.h>
|
||||
|
||||
#ifdef DO_PTHREADS
|
||||
@@ -165,6 +166,7 @@ net_data_minimize(struct net_data *net_data) {
|
||||
res_nclose(net_data->res);
|
||||
}
|
||||
|
||||
#ifdef _REENTRANT
|
||||
struct __res_state *
|
||||
__res_state(void) {
|
||||
/* NULL param here means use the default config file. */
|
||||
@@ -174,6 +176,7 @@ __res_state(void) {
|
||||
|
||||
return (&_res);
|
||||
}
|
||||
#endif
|
||||
|
||||
int *
|
||||
__h_errno(void) {
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
*/
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static const char rcsid[] = "$Id: lcl_sv.c,v 1.1 2001/03/29 06:31:51 marka Exp $";
|
||||
static const char rcsid[] = "$Id: lcl_sv.c,v 1.2 2001/06/21 08:26:12 marka Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
/* extern */
|
||||
@@ -394,7 +394,7 @@ sv_db_rec(struct lcl_sv *sv, DBT *key, DBT *data) {
|
||||
return (NULL);
|
||||
sv->serv.s_port = ((u_short *)key->data)[1];
|
||||
n = strlen(p) + 1;
|
||||
if (n > sizeof(sv->line)) {
|
||||
if ((size_t)n > sizeof(sv->line)) {
|
||||
n = sizeof(sv->line);
|
||||
}
|
||||
memcpy(sv->line, p, n);
|
||||
|
||||
@@ -13,17 +13,17 @@
|
||||
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
# $Id: Makefile.in,v 1.4 2001/05/31 05:54:04 marka Exp $
|
||||
# $Id: Makefile.in,v 1.5 2001/06/21 08:26:13 marka Exp $
|
||||
|
||||
OBJS= assertions.@O@ base64.@O@ bitncmp.@O@ ctl_clnt.@O@ ctl_p.@O@ \
|
||||
ctl_srvr.@O@ ev_connects.@O@ ev_files.@O@ ev_streams.@O@ \
|
||||
ev_timers.@O@ ev_waits.@O@ eventlib.@O@ heap.@O@ logging.@O@ \
|
||||
memcluster.@O@ movefile.@O@ tree.@O@ ip6.@O@
|
||||
ev_timers.@O@ ev_waits.@O@ eventlib.@O@ heap.@O@ hex.@O@ \
|
||||
logging.@O@ memcluster.@O@ movefile.@O@ tree.@O@
|
||||
|
||||
SRCS= assertions.c base64.c bitncmp.c ctl_clnt.c ctl_p.c \
|
||||
ctl_srvr.c ev_connects.c ev_files.c ev_streams.c \
|
||||
ev_timers.c ev_waits.c eventlib.c heap.c logging.c \
|
||||
memcluster.c movefile.c tree.c ip6.c
|
||||
ev_timers.c ev_waits.c eventlib.c heap.c hex.c logging.c \
|
||||
memcluster.c movefile.c tree.c
|
||||
|
||||
TARGETS= ${OBJS}
|
||||
|
||||
|
||||
116
lib/bind/isc/hex.c
Normal file
116
lib/bind/isc/hex.c
Normal file
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
* Copyright (c) 2001 by Internet Software Consortium.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
|
||||
* ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
|
||||
* CONSORTIUM 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.
|
||||
*/
|
||||
|
||||
#include <port_before.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <isc/misc.h>
|
||||
#include <port_after.h>
|
||||
|
||||
static const char hex[17] = "0123456789abcdef";
|
||||
|
||||
int
|
||||
isc_gethexstring(unsigned char *buf, size_t len, int count, FILE *fp,
|
||||
int *multiline)
|
||||
{
|
||||
int c, n;
|
||||
unsigned char x;
|
||||
char *s;
|
||||
int result = count;
|
||||
|
||||
x = 0; /* silence compiler */
|
||||
n = 0;
|
||||
while (count > 0) {
|
||||
c = fgetc(fp);
|
||||
|
||||
if ((c == EOF) ||
|
||||
(c == '\n' && !*multiline) ||
|
||||
(c == '(' && *multiline) ||
|
||||
(c == ')' && !*multiline))
|
||||
goto formerr;
|
||||
/* comment */
|
||||
if (c == ';') {
|
||||
while ((c = fgetc(fp)) != EOF && c != '\n')
|
||||
/* empty */
|
||||
if (c == '\n' && *multiline)
|
||||
continue;
|
||||
goto formerr;
|
||||
}
|
||||
/* white space */
|
||||
if (c == ' ' || c == '\t' || c == '\n' || c == '\r')
|
||||
continue;
|
||||
/* multiline */
|
||||
if ('(' == c || c == ')') {
|
||||
*multiline = (c == '(' /*)*/);
|
||||
continue;
|
||||
}
|
||||
if ((s = strchr(hex, tolower(c))) == NULL)
|
||||
goto formerr;
|
||||
x = (x<<4) | (s - hex);
|
||||
if (++n == 2) {
|
||||
if (len > 0) {
|
||||
*buf++ = x;
|
||||
len--;
|
||||
} else
|
||||
result = -1;
|
||||
count--;
|
||||
n = 0;
|
||||
}
|
||||
}
|
||||
return (result);
|
||||
|
||||
formerr:
|
||||
if (c == '\n')
|
||||
ungetc(c, fp);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
void
|
||||
isc_puthexstring(FILE *fp, const unsigned char *buf, size_t buflen,
|
||||
size_t len1, size_t len2, const char *sep)
|
||||
{
|
||||
size_t i = 0;
|
||||
|
||||
if (len1 < 4)
|
||||
len1 = 4;
|
||||
if (len2 < 4)
|
||||
len2 = 4;
|
||||
while (buflen > 0) {
|
||||
fputc(hex[(buf[0]>>4)&0xf], fp);
|
||||
fputc(hex[buf[0]&0xf], fp);
|
||||
i += 2;
|
||||
buflen--;
|
||||
buf++;
|
||||
if (i >= len1 && sep != NULL) {
|
||||
fputs(sep, fp);
|
||||
i = 0;
|
||||
len1 = len2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
isc_tohex(const unsigned char *buf, size_t buflen, char *t) {
|
||||
while (buflen > 0) {
|
||||
*t++ = hex[(buf[0]>>4)&0xf];
|
||||
*t++ = hex[buf[0]&0xf];
|
||||
buf++;
|
||||
buflen--;
|
||||
}
|
||||
*t = '\0';
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
#include <port_before.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
#if (!defined(BSD)) || (BSD < 199306)
|
||||
#include <sys/bitypes.h>
|
||||
#endif
|
||||
#include <netinet/in.h>
|
||||
#include <port_after.h>
|
||||
|
||||
/*
|
||||
* Make sure we don't cause linkage problems.
|
||||
*/
|
||||
const struct in6_addr isc_in6addr_any = IN6ADDR_ANY_INIT;
|
||||
#if 0
|
||||
const struct in6_addr isc_in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
|
||||
#endif
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#if !defined(LINT) && !defined(CODECENTER)
|
||||
static const char rcsid[] = "$Id: logging.c,v 1.2 2001/05/28 08:38:28 marka Exp $";
|
||||
static const char rcsid[] = "$Id: logging.c,v 1.3 2001/06/21 08:26:15 marka Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include "port_before.h"
|
||||
@@ -596,7 +596,7 @@ log_new_syslog_channel(unsigned int flags, int level, int facility) {
|
||||
|
||||
log_channel
|
||||
log_new_file_channel(unsigned int flags, int level,
|
||||
char *name, FILE *stream, unsigned int versions,
|
||||
const char *name, FILE *stream, unsigned int versions,
|
||||
unsigned long max_size) {
|
||||
log_channel chan;
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
|
||||
#if !defined(LINT) && !defined(CODECENTER)
|
||||
static const char rcsid[] = "$Id: memcluster.c,v 1.2 2001/05/28 08:38:29 marka Exp $";
|
||||
static const char rcsid[] = "$Id: memcluster.c,v 1.3 2001/06/21 08:26:16 marka Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
#include "port_before.h"
|
||||
@@ -67,7 +67,7 @@ typedef struct {
|
||||
const char * file;
|
||||
int line;
|
||||
#endif
|
||||
int size;
|
||||
size_t size;
|
||||
fence_t fencepost;
|
||||
#endif
|
||||
} memcluster_element;
|
||||
@@ -343,7 +343,7 @@ __memput_record(void *mem, size_t size, const char *file, int line) {
|
||||
#ifdef MEMCLUSTER_RECORD
|
||||
memcluster_element *prev;
|
||||
#endif
|
||||
int fp;
|
||||
fence_t fp;
|
||||
char *p;
|
||||
#endif
|
||||
|
||||
@@ -484,7 +484,7 @@ memstats(FILE *out) {
|
||||
for (i = 1; i <= max_size; i++) {
|
||||
if ((e = activelists[i]) != NULL)
|
||||
while (e != NULL) {
|
||||
fprintf(out, "%s:%d %#p:%d\n",
|
||||
fprintf(out, "%s:%d %p:%d\n",
|
||||
e->file != NULL ? e->file :
|
||||
"<UNKNOWN>", e->line,
|
||||
(char *)e + sizeof *e, e->size);
|
||||
@@ -538,7 +538,7 @@ quantize(size_t size) {
|
||||
#if defined(DEBUGGING_MEMCLUSTER)
|
||||
static void
|
||||
check(unsigned char *a, int value, size_t len) {
|
||||
int i;
|
||||
size_t i;
|
||||
for (i = 0; i < len; i++)
|
||||
INSIST(a[i] == value);
|
||||
}
|
||||
|
||||
@@ -16,20 +16,13 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static const char rcsid[] = "$Id: ns_parse.c,v 1.2 2001/04/11 08:13:11 marka Exp $";
|
||||
static const char rcsid[] = "$Id: ns_parse.c,v 1.3 2001/06/21 08:26:18 marka Exp $";
|
||||
#endif
|
||||
|
||||
/* Import. */
|
||||
|
||||
#include "port_before.h"
|
||||
|
||||
/*
|
||||
* force stdio.h to be included before arpa/nameser.h as it
|
||||
* #defines _ptr __ptr on HPUX
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <netinet/in.h>
|
||||
@@ -154,38 +147,38 @@ ns_parserr(ns_msg *handle, ns_sect section, int rrnum, ns_rr *rr) {
|
||||
if (rrnum < handle->_rrnum)
|
||||
setsection(handle, section);
|
||||
if (rrnum > handle->_rrnum) {
|
||||
b = ns_skiprr(handle->_ptr, handle->_eom, section,
|
||||
b = ns_skiprr(handle->_msg_ptr, handle->_eom, section,
|
||||
rrnum - handle->_rrnum);
|
||||
|
||||
if (b < 0)
|
||||
return (-1);
|
||||
handle->_ptr += b;
|
||||
handle->_msg_ptr += b;
|
||||
handle->_rrnum = rrnum;
|
||||
}
|
||||
|
||||
/* Do the parse. */
|
||||
b = dn_expand(handle->_msg, handle->_eom,
|
||||
handle->_ptr, rr->name, NS_MAXDNAME);
|
||||
handle->_msg_ptr, rr->name, NS_MAXDNAME);
|
||||
if (b < 0)
|
||||
return (-1);
|
||||
handle->_ptr += b;
|
||||
if (handle->_ptr + NS_INT16SZ + NS_INT16SZ > handle->_eom)
|
||||
handle->_msg_ptr += b;
|
||||
if (handle->_msg_ptr + NS_INT16SZ + NS_INT16SZ > handle->_eom)
|
||||
RETERR(EMSGSIZE);
|
||||
NS_GET16(rr->type, handle->_ptr);
|
||||
NS_GET16(rr->rr_class, handle->_ptr);
|
||||
NS_GET16(rr->type, handle->_msg_ptr);
|
||||
NS_GET16(rr->rr_class, handle->_msg_ptr);
|
||||
if (section == ns_s_qd) {
|
||||
rr->ttl = 0;
|
||||
rr->rdlength = 0;
|
||||
rr->rdata = NULL;
|
||||
} else {
|
||||
if (handle->_ptr + NS_INT32SZ + NS_INT16SZ > handle->_eom)
|
||||
if (handle->_msg_ptr + NS_INT32SZ + NS_INT16SZ > handle->_eom)
|
||||
RETERR(EMSGSIZE);
|
||||
NS_GET32(rr->ttl, handle->_ptr);
|
||||
NS_GET16(rr->rdlength, handle->_ptr);
|
||||
if (handle->_ptr + rr->rdlength > handle->_eom)
|
||||
NS_GET32(rr->ttl, handle->_msg_ptr);
|
||||
NS_GET16(rr->rdlength, handle->_msg_ptr);
|
||||
if (handle->_msg_ptr + rr->rdlength > handle->_eom)
|
||||
RETERR(EMSGSIZE);
|
||||
rr->rdata = handle->_ptr;
|
||||
handle->_ptr += rr->rdlength;
|
||||
rr->rdata = handle->_msg_ptr;
|
||||
handle->_msg_ptr += rr->rdlength;
|
||||
}
|
||||
if (++handle->_rrnum > handle->_counts[(int)section])
|
||||
setsection(handle, (ns_sect)((int)section + 1));
|
||||
@@ -201,9 +194,9 @@ setsection(ns_msg *msg, ns_sect sect) {
|
||||
msg->_sect = sect;
|
||||
if (sect == ns_s_max) {
|
||||
msg->_rrnum = -1;
|
||||
msg->_ptr = NULL;
|
||||
msg->_msg_ptr = NULL;
|
||||
} else {
|
||||
msg->_rrnum = 0;
|
||||
msg->_ptr = msg->_sections[(int)sect];
|
||||
msg->_msg_ptr = msg->_sections[(int)sect];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static const char rcsid[] = "$Id: ns_print.c,v 1.2 2001/05/28 08:38:30 marka Exp $";
|
||||
static const char rcsid[] = "$Id: ns_print.c,v 1.3 2001/06/21 08:26:19 marka Exp $";
|
||||
#endif
|
||||
|
||||
/* Import. */
|
||||
@@ -709,7 +709,7 @@ ns_sprintrrf(const u_char *msg, size_t msglen,
|
||||
int n, m;
|
||||
char *p;
|
||||
|
||||
len = SPRINTF((tmp, "\\#(\t\t; %s", comment));
|
||||
len = SPRINTF((tmp, "\\# %u (\t; %s", edata - rdata, comment));
|
||||
T(addstr(tmp, len, &buf, &buflen));
|
||||
while (rdata < edata) {
|
||||
p = tmp;
|
||||
|
||||
@@ -291,4 +291,6 @@ void endpwent_r(void);
|
||||
int setpassent(int stayopen);
|
||||
#endif
|
||||
|
||||
int isc__gettimeofday(struct timeval *tp, struct timezone *tzp);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static const char sccsid[] = "@(#)herror.c 8.1 (Berkeley) 6/4/93";
|
||||
static const char rcsid[] = "$Id: herror.c,v 1.1 2001/03/29 06:31:58 marka Exp $";
|
||||
static const char rcsid[] = "$Id: herror.c,v 1.2 2001/06/21 08:26:21 marka Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "port_before.h"
|
||||
@@ -89,7 +89,6 @@ int h_errno;
|
||||
void
|
||||
herror(const char *s) {
|
||||
struct iovec iov[4], *v = iov;
|
||||
extern int * __h_errno();
|
||||
char *t;
|
||||
|
||||
if (s != NULL && *s != '\0') {
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static const char sccsid[] = "@(#)res_debug.c 8.1 (Berkeley) 6/4/93";
|
||||
static const char rcsid[] = "$Id: res_debug.c,v 1.2 2001/04/03 13:46:25 marka Exp $";
|
||||
static const char rcsid[] = "$Id: res_debug.c,v 1.3 2001/06/21 08:26:22 marka Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "port_before.h"
|
||||
@@ -536,7 +536,17 @@ sym_ntop(const struct res_sym *syms, int number, int *success) {
|
||||
*/
|
||||
const char *
|
||||
p_type(int type) {
|
||||
return (sym_ntos(__p_type_syms, type, (int *)0));
|
||||
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 > 0xfff)
|
||||
return ("BADTYPE");
|
||||
sprintf(typebuf, "TYPE%d", type);
|
||||
return (typebuf);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -562,7 +572,17 @@ p_section(int section, int opcode) {
|
||||
*/
|
||||
const char *
|
||||
p_class(int class) {
|
||||
return (sym_ntos(__p_class_syms, class, (int *)0));
|
||||
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 > 0xfff)
|
||||
return ("BADCLASS");
|
||||
sprintf(classbuf, "CLASS%d", class);
|
||||
return (classbuf);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1061,3 +1081,39 @@ p_secstodate (u_long secs) {
|
||||
time->tm_hour, time->tm_min, time->tm_sec);
|
||||
return (output);
|
||||
}
|
||||
|
||||
u_int16_t
|
||||
res_nametoclass(const char *buf, int *success) {
|
||||
unsigned long result;
|
||||
char *endptr;
|
||||
|
||||
result = sym_ston(__p_class_syms, buf, success);
|
||||
if (success)
|
||||
return (result);
|
||||
|
||||
if (strncasecmp(buf, "CLASS", 5) != 0 ||
|
||||
!isdigit((unsigned char)buf[5]))
|
||||
return (result);
|
||||
result = strtoul(buf, &endptr, 10);
|
||||
if (*endptr == '\0' && result <= 0xffff)
|
||||
*success = 1;
|
||||
return (result);
|
||||
}
|
||||
|
||||
u_int16_t
|
||||
res_nametotype(const char *buf, int *success) {
|
||||
unsigned long result;
|
||||
char *endptr;
|
||||
|
||||
result = sym_ston(__p_type_syms, buf, success);
|
||||
if (success)
|
||||
return (result);
|
||||
|
||||
if (strncasecmp(buf, "type", 4) != 0 ||
|
||||
!isdigit((unsigned char)buf[4]))
|
||||
return (result);
|
||||
result = strtoul(buf, &endptr, 10);
|
||||
if (*endptr == '\0' && result <= 0xffff)
|
||||
*success = 1;
|
||||
return (result);
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static const char sccsid[] = "@(#)res_init.c 8.1 (Berkeley) 6/7/93";
|
||||
static const char rcsid[] = "$Id: res_init.c,v 1.6 2001/05/28 08:38:32 marka Exp $";
|
||||
static const char rcsid[] = "$Id: res_init.c,v 1.7 2001/06/21 08:26:23 marka Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "port_before.h"
|
||||
@@ -85,7 +85,6 @@ static const char rcsid[] = "$Id: res_init.c,v 1.6 2001/05/28 08:38:32 marka Exp
|
||||
#include <arpa/nameser.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <resolv.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -93,6 +92,10 @@ static const char rcsid[] = "$Id: res_init.c,v 1.6 2001/05/28 08:38:32 marka Exp
|
||||
#include <netdb.h>
|
||||
|
||||
#include "port_after.h"
|
||||
|
||||
/* ensure that sockaddr_in6 and IN6ADDR_ANY_INIT are declared / defined */
|
||||
#include <resolv.h>
|
||||
|
||||
#include "res_private.h"
|
||||
|
||||
/* Options. Should all be left alone. */
|
||||
@@ -314,7 +317,7 @@ __res_vinit(res_state statp, int preinit) {
|
||||
hints.ai_family = PF_UNSPEC;
|
||||
hints.ai_socktype = SOCK_DGRAM; /*dummy*/
|
||||
hints.ai_flags = AI_NUMERICHOST;
|
||||
snprintf(sbuf, sizeof(sbuf), "%u", NAMESERVER_PORT);
|
||||
sprintf(sbuf, "%u", NAMESERVER_PORT);
|
||||
if (getaddrinfo(cp, sbuf, &hints, &ai) == 0 &&
|
||||
ai->ai_addrlen <= minsiz) {
|
||||
if (statp->_u._ext.ext != NULL) {
|
||||
@@ -382,8 +385,7 @@ __res_vinit(res_state statp, int preinit) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (nserv > 1)
|
||||
if (nserv > 1)
|
||||
statp->nscount = nserv;
|
||||
#ifdef RESOLVSORT
|
||||
statp->nsort = nsort;
|
||||
@@ -617,3 +619,96 @@ res_get_bitstringsuffix(res_state statp) {
|
||||
return (statp->_u._ext.ext->bsuffix);
|
||||
return ("ip6.arpa");
|
||||
}
|
||||
|
||||
void
|
||||
res_setservers(res_state statp, const union res_sockaddr_union *set, int cnt) {
|
||||
int i, nserv;
|
||||
size_t size;
|
||||
|
||||
/* close open servers */
|
||||
res_nclose(statp);
|
||||
|
||||
/* cause rtt times to be forgotten */
|
||||
statp->_u._ext.nscount = 0;
|
||||
|
||||
nserv = 0;
|
||||
for (i = 0; i < cnt && nserv < MAXNS; i++) {
|
||||
switch (set->sin.sin_family) {
|
||||
case AF_INET:
|
||||
size = sizeof(set->sin);
|
||||
if (statp->_u._ext.ext)
|
||||
memcpy(&statp->_u._ext.ext->nsaddrs[nserv],
|
||||
&set->sin, size);
|
||||
if (size <= sizeof(statp->nsaddr_list[nserv]))
|
||||
memcpy(&statp->nsaddr_list[nserv],
|
||||
&set->sin, size);
|
||||
else
|
||||
statp->nsaddr_list[nserv].sin_family = 0;
|
||||
nserv++;
|
||||
break;
|
||||
|
||||
case AF_INET6:
|
||||
size = sizeof(set->sin6);
|
||||
if (statp->_u._ext.ext)
|
||||
memcpy(&statp->_u._ext.ext->nsaddrs[nserv],
|
||||
&set->sin6, size);
|
||||
if (size <= sizeof(statp->nsaddr_list[nserv]))
|
||||
memcpy(&statp->nsaddr_list[nserv],
|
||||
&set->sin6, size);
|
||||
else
|
||||
statp->nsaddr_list[nserv].sin_family = 0;
|
||||
nserv++;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
set++;
|
||||
}
|
||||
statp->nscount = nserv;
|
||||
|
||||
}
|
||||
|
||||
int
|
||||
res_getservers(res_state statp, union res_sockaddr_union *set, int cnt) {
|
||||
int i;
|
||||
size_t size;
|
||||
u_int16_t family;
|
||||
|
||||
for (i = 0; i < statp->nscount && i < cnt; i++) {
|
||||
if (statp->_u._ext.ext)
|
||||
family = statp->_u._ext.ext->nsaddrs[i].sin.sin_family;
|
||||
else
|
||||
family = statp->nsaddr_list[i].sin_family;
|
||||
|
||||
switch (family) {
|
||||
case AF_INET:
|
||||
size = sizeof(set->sin);
|
||||
if (statp->_u._ext.ext)
|
||||
memcpy(&set->sin,
|
||||
&statp->_u._ext.ext->nsaddrs[i],
|
||||
size);
|
||||
else
|
||||
memcpy(&set->sin, &statp->nsaddr_list[i],
|
||||
size);
|
||||
break;
|
||||
|
||||
case AF_INET6:
|
||||
size = sizeof(set->sin6);
|
||||
if (statp->_u._ext.ext)
|
||||
memcpy(&set->sin6,
|
||||
&statp->_u._ext.ext->nsaddrs[i],
|
||||
size);
|
||||
else
|
||||
memcpy(&set->sin6, &statp->nsaddr_list[i],
|
||||
size);
|
||||
break;
|
||||
|
||||
default:
|
||||
set->sin.sin_family = 0;
|
||||
break;
|
||||
}
|
||||
set++;
|
||||
}
|
||||
return (statp->nscount);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,8 @@
|
||||
#ifndef res_private_h
|
||||
#define res_private_h
|
||||
|
||||
union __res_sockaddr_union {
|
||||
struct sockaddr_in sin;
|
||||
struct sockaddr_in6 sin6;
|
||||
int64_t __align; /* 64bit alignment */
|
||||
char __space[128]; /* max size */
|
||||
};
|
||||
|
||||
struct __res_state_ext {
|
||||
union __res_sockaddr_union nsaddrs[MAXNS];
|
||||
union res_sockaddr_union nsaddrs[MAXNS];
|
||||
struct sort_list {
|
||||
int af;
|
||||
union {
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static const char sccsid[] = "@(#)res_send.c 8.1 (Berkeley) 6/4/93";
|
||||
static const char rcsid[] = "$Id: res_send.c,v 1.3 2001/05/14 07:59:46 marka Exp $";
|
||||
static const char rcsid[] = "$Id: res_send.c,v 1.4 2001/06/21 08:26:26 marka Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
/*
|
||||
@@ -132,9 +132,7 @@ static int pselect(int, void *, void *, void *,
|
||||
#endif
|
||||
void res_pquery(const res_state, const u_char *, int, FILE *);
|
||||
|
||||
#ifdef INET6
|
||||
static const int niflags = NI_NUMERICHOST | NI_NUMERICSERV;
|
||||
#endif
|
||||
|
||||
/* Public. */
|
||||
|
||||
@@ -276,9 +274,7 @@ res_nsend(res_state statp,
|
||||
const u_char *buf, int buflen, u_char *ans, int anssiz)
|
||||
{
|
||||
int gotsomewhere, terrno, try, v_circuit, resplen, ns, n;
|
||||
#ifdef INET6
|
||||
char abuf[NI_MAXHOST];
|
||||
#endif
|
||||
|
||||
if (statp->nscount == 0) {
|
||||
errno = ESRCH;
|
||||
@@ -300,11 +296,7 @@ res_nsend(res_state statp,
|
||||
*/
|
||||
if (EXT(statp).nscount != 0) {
|
||||
int needclose = 0;
|
||||
#ifdef INET6
|
||||
struct sockaddr_storage peer;
|
||||
#else
|
||||
struct sockaddr peer;
|
||||
#endif
|
||||
int peerlen;
|
||||
|
||||
if (EXT(statp).nscount != statp->nscount)
|
||||
@@ -359,35 +351,27 @@ res_nsend(res_state statp,
|
||||
*/
|
||||
if ((statp->options & RES_ROTATE) != 0 &&
|
||||
(statp->options & RES_BLAST) == 0) {
|
||||
#ifdef INET6
|
||||
union __res_sockaddr_union inu;
|
||||
#endif
|
||||
union res_sockaddr_union inu;
|
||||
struct sockaddr_in ina;
|
||||
int lastns = statp->nscount - 1;
|
||||
int fd;
|
||||
u_int16_t nstime;
|
||||
|
||||
#ifdef INET6
|
||||
if (EXT(statp).ext != NULL)
|
||||
inu = EXT(statp).ext->nsaddrs[0];
|
||||
#endif
|
||||
ina = statp->nsaddr_list[0];
|
||||
fd = EXT(statp).nssocks[0];
|
||||
nstime = EXT(statp).nstimes[0];
|
||||
for (ns = 0; ns < lastns; ns++) {
|
||||
#ifdef INET6
|
||||
if (EXT(statp).ext != NULL)
|
||||
EXT(statp).ext->nsaddrs[ns] =
|
||||
EXT(statp).ext->nsaddrs[ns + 1];
|
||||
#endif
|
||||
statp->nsaddr_list[ns] = statp->nsaddr_list[ns + 1];
|
||||
EXT(statp).nssocks[ns] = EXT(statp).nssocks[ns + 1];
|
||||
EXT(statp).nstimes[ns] = EXT(statp).nstimes[ns + 1];
|
||||
}
|
||||
#ifdef INET6
|
||||
if (EXT(statp).ext != NULL)
|
||||
EXT(statp).ext->nsaddrs[lastns] = inu;
|
||||
#endif
|
||||
statp->nsaddr_list[lastns] = ina;
|
||||
EXT(statp).nssocks[lastns] = fd;
|
||||
EXT(statp).nstimes[lastns] = nstime;
|
||||
@@ -433,18 +417,11 @@ res_nsend(res_state statp,
|
||||
} while (!done);
|
||||
}
|
||||
|
||||
#ifdef INET6
|
||||
Dprint(((statp->options & RES_DEBUG) &&
|
||||
getnameinfo(nsap, nsaplen, abuf, sizeof(abuf),
|
||||
NULL, 0, niflags) == 0),
|
||||
(stdout, ";; Querying server (# %d) address = %s\n",
|
||||
ns + 1, abuf));
|
||||
#else
|
||||
Dprint(statp->options & RES_DEBUG,
|
||||
(stdout, ";; Querying server (# %d) address = %s\n",
|
||||
ns + 1,
|
||||
inet_ntoa(((struct sockaddr_in *)nsap)->sin_addr)));
|
||||
#endif
|
||||
|
||||
|
||||
if (v_circuit) {
|
||||
@@ -477,7 +454,7 @@ res_nsend(res_state statp,
|
||||
|
||||
DprintQ((statp->options & RES_DEBUG) ||
|
||||
(statp->pfcode & RES_PRF_REPLY),
|
||||
(stdout, ""),
|
||||
(stdout, "%s", ""),
|
||||
ans, (resplen > anssiz) ? anssiz : resplen);
|
||||
|
||||
/*
|
||||
@@ -551,10 +528,8 @@ get_salen(sa)
|
||||
|
||||
if (sa->sa_family == AF_INET)
|
||||
return sizeof(struct sockaddr_in);
|
||||
#ifdef INET6
|
||||
else if (sa->sa_family == AF_INET)
|
||||
return sizeof(struct sockaddr_in6);
|
||||
#endif
|
||||
else
|
||||
return 0; /* unknown, die on connect */
|
||||
}
|
||||
@@ -568,7 +543,6 @@ get_nsaddr(statp, n)
|
||||
size_t n;
|
||||
{
|
||||
|
||||
#ifdef INET6
|
||||
if (!statp->nsaddr_list[n].sin_family && EXT(statp).ext) {
|
||||
/*
|
||||
* - EXT(statp).ext->nsaddrs[n] holds an address that is larger
|
||||
@@ -584,9 +558,6 @@ get_nsaddr(statp, n)
|
||||
*/
|
||||
return (struct sockaddr *)(void *)&statp->nsaddr_list[n];
|
||||
}
|
||||
#else
|
||||
return (struct sockaddr *)(void *)&statp->nsaddr_list[n];
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -613,11 +584,7 @@ send_vc(res_state statp,
|
||||
|
||||
/* Are we still talking to whom we want to talk to? */
|
||||
if (statp->_vcsock >= 0 && (statp->_flags & RES_F_VC) != 0) {
|
||||
#ifdef INET6
|
||||
struct sockaddr_storage peer;
|
||||
#else
|
||||
struct sockaddr_in peer;
|
||||
#endif
|
||||
int size = sizeof peer;
|
||||
|
||||
if (getpeername(statp->_vcsock,
|
||||
@@ -778,11 +745,7 @@ send_dg(res_state statp,
|
||||
int nsaplen;
|
||||
struct timespec now, timeout, finish;
|
||||
fd_set dsmask;
|
||||
#ifdef INET6
|
||||
struct sockaddr_storage from;
|
||||
#else
|
||||
struct sockaddr_in from;
|
||||
#endif
|
||||
int fromlen, resplen, seconds, n, s;
|
||||
|
||||
nsap = get_nsaddr(statp, ns);
|
||||
@@ -980,18 +943,12 @@ Aerror(const res_state statp, FILE *file, const char *string, int error,
|
||||
const struct sockaddr *address, int alen)
|
||||
{
|
||||
int save = errno;
|
||||
#ifdef INET6
|
||||
char hbuf[NI_MAXHOST];
|
||||
char sbuf[NI_MAXSERV];
|
||||
#else
|
||||
char hbuf[sizeof "255.255.255.255"];
|
||||
char sbuf[sizeof "65535"];
|
||||
#endif
|
||||
|
||||
alen = alen;
|
||||
|
||||
if ((statp->options & RES_DEBUG) != 0) {
|
||||
#ifdef INET6
|
||||
if (getnameinfo(address, alen, hbuf, sizeof(hbuf),
|
||||
sbuf, sizeof(sbuf), niflags)) {
|
||||
strncpy(hbuf, "?", sizeof(hbuf) - 1);
|
||||
@@ -999,13 +956,6 @@ Aerror(const res_state statp, FILE *file, const char *string, int error,
|
||||
strncpy(sbuf, "?", sizeof(sbuf) - 1);
|
||||
sbuf[sizeof(sbuf) - 1] = '\0';
|
||||
}
|
||||
#else
|
||||
inet_ntop(AF_INET,
|
||||
&((const struct sockaddr_in *)address)->sin_addr,
|
||||
hbuf, sizeof hbuf),
|
||||
snprintf(sbuf, sizeof(sbuf), "%u",
|
||||
ntohs(((const struct sockaddr_in *)address)->sin_port));
|
||||
#endif
|
||||
fprintf(file, "res_send: %s ([%s].%s): %s\n",
|
||||
string, hbuf, sbuf, strerror(error));
|
||||
}
|
||||
@@ -1025,9 +975,7 @@ Perror(const res_state statp, FILE *file, const char *string, int error) {
|
||||
static int
|
||||
sock_eq(struct sockaddr *a, struct sockaddr *b) {
|
||||
struct sockaddr_in *a4, *b4;
|
||||
#ifdef INET6
|
||||
struct sockaddr_in6 *a6, *b6;
|
||||
#endif
|
||||
|
||||
if (a->sa_family != b->sa_family)
|
||||
return 0;
|
||||
@@ -1037,7 +985,6 @@ sock_eq(struct sockaddr *a, struct sockaddr *b) {
|
||||
b4 = (struct sockaddr_in *)b;
|
||||
return a4->sin_port == b4->sin_port &&
|
||||
a4->sin_addr.s_addr == b4->sin_addr.s_addr;
|
||||
#ifdef INET6
|
||||
case AF_INET6:
|
||||
a6 = (struct sockaddr_in6 *)a;
|
||||
b6 = (struct sockaddr_in6 *)b;
|
||||
@@ -1046,7 +993,6 @@ sock_eq(struct sockaddr *a, struct sockaddr *b) {
|
||||
a6->sin6_scope_id == b6->sin6_scope_id &&
|
||||
#endif
|
||||
IN6_ARE_ADDR_EQUAL(&a6->sin6_addr, &b6->sin6_addr);
|
||||
#endif
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#if !defined(lint) && !defined(SABER)
|
||||
static const char rcsid[] = "$Id: res_update.c,v 1.3 2001/05/28 06:25:42 marka Exp $";
|
||||
static const char rcsid[] = "$Id: res_update.c,v 1.4 2001/06/21 08:26:27 marka Exp $";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@@ -37,7 +37,6 @@ static const char rcsid[] = "$Id: res_update.c,v 1.3 2001/05/28 06:25:42 marka E
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <netdb.h>
|
||||
#include <resolv.h>
|
||||
#include <res_update.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
@@ -45,6 +44,7 @@ static const char rcsid[] = "$Id: res_update.c,v 1.3 2001/05/28 06:25:42 marka E
|
||||
#include <string.h>
|
||||
|
||||
#include <isc/list.h>
|
||||
#include <resolv.h>
|
||||
|
||||
#include "port_after.h"
|
||||
#include "res_private.h"
|
||||
@@ -66,7 +66,7 @@ static const char rcsid[] = "$Id: res_update.c,v 1.3 2001/05/28 06:25:42 marka E
|
||||
struct zonegrp {
|
||||
char z_origin[MAXDNAME];
|
||||
ns_class z_class;
|
||||
union __res_sockaddr_union z_nsaddrs[MAXNS];
|
||||
union res_sockaddr_union z_nsaddrs[MAXNS];
|
||||
int z_nscount;
|
||||
int z_flags;
|
||||
LIST(ns_updrec) z_rrlist;
|
||||
@@ -77,9 +77,9 @@ struct zonegrp {
|
||||
|
||||
/* Forward. */
|
||||
|
||||
static int nscopy(union __res_sockaddr_union *,
|
||||
const union __res_sockaddr_union *, int);
|
||||
static int nsprom(union __res_sockaddr_union *, const struct in_addr *, int);
|
||||
static int nscopy(union res_sockaddr_union *,
|
||||
const union res_sockaddr_union *, int);
|
||||
static int nsprom(union res_sockaddr_union *, const struct in_addr *, int);
|
||||
static void dprintf(const char *, ...);
|
||||
|
||||
/* Macros. */
|
||||
@@ -99,7 +99,7 @@ res_nupdate(res_state statp, ns_updrec *rrecp_in, ns_tsig_key *key) {
|
||||
struct zonegrp *zptr, tgrp;
|
||||
LIST(struct zonegrp) zgrps;
|
||||
int nzones = 0, nscount = 0, n;
|
||||
union __res_sockaddr_union nsaddrs[MAXNS];
|
||||
union res_sockaddr_union nsaddrs[MAXNS];
|
||||
|
||||
/* Thread all of the updates onto a list of groups. */
|
||||
INIT_LIST(zgrps);
|
||||
@@ -206,7 +206,9 @@ res_nupdate(res_state statp, ns_updrec *rrecp_in, ns_tsig_key *key) {
|
||||
/* Private. */
|
||||
|
||||
static int
|
||||
nscopy(union __res_sockaddr_union *dst, const union __res_sockaddr_union *src, int n) {
|
||||
nscopy(union res_sockaddr_union *dst, const union res_sockaddr_union *src,
|
||||
int n)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
@@ -215,7 +217,7 @@ nscopy(union __res_sockaddr_union *dst, const union __res_sockaddr_union *src, i
|
||||
}
|
||||
|
||||
static int
|
||||
nsprom(union __res_sockaddr_union *dst, const struct in_addr *src, int n) {
|
||||
nsprom(union res_sockaddr_union *dst, const struct in_addr *src, int n) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
|
||||
Reference in New Issue
Block a user