From 845dcb57b1de1b8c2ea88cd101d6e5a80181ee4e Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 22 Sep 1996 03:06:42 +0000 Subject: update from main archive 960921 Sun Sep 22 03:40:52 1996 Ulrich Drepper * resolv/resolv.h: Update to bind-4.9.5-T4B. * resolv/base64.c: Likewise. * resolv/res_debug.c: Likewise. * resolv/res_query.c: Likewise. * resolv/gethnamaddr.c: Likewise. * nss/nss_dns/dns-host.c: Likewise. * resolv/res_comp.c: Likewise. * resolv/res_send.c: Likewise. * resolv/arpa/nameser.h: Likewise. Attention: MAXDNAME is much higher now. * resolv/Banner: New file. * resolv/Makefile (distribute): Add Banner. Sat Sep 21 19:15:24 1996 Ulrich Drepper * sysdeps/stub/getsysstats.c: New file. * sysdeps/unix/sysv/linux/getsysstats.c: New file. * misc/Makefile (headers): Add sys/sysinfo.h. (routines): Add getsysstats. * sysdeps/unix/sysv/linux/Makefile [$(subdir)==misc] (sysdep_headers): Remove sys/sysinfo.h. * sysdeps/generic/sys/sysinfo.h: New file. * sysdeps/unix/sysv/linux/sys/sysinfo.h: Add prototype for get_nprocs, get_phys_pages, and get_avphys_pages. * misc/Makefile (routines): Add mntent_r. * misc/mntent_r.c: New file. * misc/mntent.c: Remove all functions but getmntent and use __getmntent_r. * misc/mntent.h: Add prototype for __getmntent_r. * misc/fstab.c: Use __getmntent_r function instead of getmntent. This will not clobber the state in getmntent. * sysdeps/generic/confname.h: Add _SC_PROCESSORS_CONF, _SC_NPROCESSORS_ONLN, _SC_PHYS_PAGES, _SC_AVPHYS_PAGES, _SC_ATEXIT_MAX, and _SC_PASS_MAX. * sysdeps/stub/sysconf.c: Add handling _SC_PROCESSORS_CONF and _SC_NPROCESSORS_ONLN by calling __get_nprocs, _SC_PHYS_PAGES by calling __get_phys_pages, _SY_AVPHYS_PAGES by calling __get_avphys_pages, _SC_ATEXIT_MAX and _SC_PASS_MAX. * sysdeps/posix/sysconf.c: Likewise. * posix/getconf.c (vars): Add _NPROCESSORS_CONF, _NPROCESSORS_ONLN, _PHYS_PAGES, _AVPHYS_PAGES, ATEXIT_MAX, and PASS_MAX entries. Sat Sep 21 05:20:36 1996 Ulrich Drepper * version.h (VERSION): Bump to 1.95. * Make-dist (+tsrcs): Don't filter out files in subdirs which match files in the sysdeps hierachy (welcome back, sys/syscall.h!). * resolv/Makefile (libresolv-routines): Remove getnetnamad. Sat Sep 21 03:00:19 1996 Ulrich Drepper * locale/loadlocale.c (_nl_free_locale): Remove function. * locale/localeinfo.h: Remove prototype for _nl_free_locale. * locale/setlocale.c (setlocale): Don't free locale data of categories which succeeded to load after a wrong or missing data file was observed. * locale/setlocale (setlocale): Initialize NEWNAME correctly so that it works even when the locale data is not used. * stdlib/random_r.c: Fix typo in comment. * stdlib/drand48-iter.c: Likewise. * stdlib/drand48.c: Likewise. * stdlib/erand48.c: Likewise. * stdlib/jrand48.c: Likewise. * stdlib/lcong48.c: Likewise. * stdlib/lrand48.c: Likewise. * stdlib/mrand48.c: Likewise. * stdlib/nrand48.c: Likewise. * stdlib/random.c: Likewise. * stdlib/seed48.c: Likewise. * stdlib/srand48.c: Likewise. * misc/search.h: Likewise. * misc/hsearch.c: Likewise. * misc/hsearch_r.c: Likewise. * sysdeps/unix/sysv/linux/m68k/sysdep.S (__errno_location): Thu Sep 19 23:36:19 1996 Thomas Bushnell, n/BSG * hurd/hurdinit.c (__libc_argv): Provide common decl. (_hurd_setproc): Don't declare __libc_argv here. --- resolv/Banner | 1 + resolv/Makefile | 5 ++- resolv/arpa/nameser.h | 2 +- resolv/base64.c | 4 +- resolv/gethnamaddr.c | 36 ++++++++++++++++- resolv/res_comp.c | 20 ++++++++++ resolv/res_debug.c | 7 ++-- resolv/res_query.c | 8 ++-- resolv/res_send.c | 17 ++++++++ resolv/resolv.h | 107 ++++++++++++++++++++++++++++---------------------- 10 files changed, 146 insertions(+), 61 deletions(-) create mode 100644 resolv/Banner (limited to 'resolv') diff --git a/resolv/Banner b/resolv/Banner new file mode 100644 index 0000000000..e08f0b4cd3 --- /dev/null +++ b/resolv/Banner @@ -0,0 +1 @@ +BIND-4.9.5-T4B diff --git a/resolv/Makefile b/resolv/Makefile index a141fc7569..9df98fab5a 100644 --- a/resolv/Makefile +++ b/resolv/Makefile @@ -22,13 +22,14 @@ subdir := resolv headers := resolv.h netdb.h arpa/nameser.h sys/bitypes.h -distribute := ../conf/portability.h mapv4v6addr.h mapv4v6hostent.h +distribute := ../conf/portability.h mapv4v6addr.h mapv4v6hostent.h \ + Banner routines := herror inet_addr inet_ntop inet_pton nsap_addr res_init extra-libs := libresolv extra-libs-others = $(extra-libs) -libresolv-routines := gethnamaddr getnetnamadr res_comp res_debug \ +libresolv-routines := gethnamaddr res_comp res_debug \ res_data res_mkquery res_query res_send \ inet_net_ntop inet_net_pton inet_neta base64 diff --git a/resolv/arpa/nameser.h b/resolv/arpa/nameser.h index 7da0aef597..2352af684c 100644 --- a/resolv/arpa/nameser.h +++ b/resolv/arpa/nameser.h @@ -111,7 +111,7 @@ * Define constants based on rfc883 */ #define PACKETSZ 512 /* maximum packet size */ -#define MAXDNAME 256 /* maximum domain name */ +#define MAXDNAME 1025 /* maximum domain name */ #define MAXCDNAME 255 /* maximum compressed domain name */ #define MAXLABEL 63 /* maximum length of domain label */ #define HFIXEDSZ 12 /* #/bytes of fixed data in header */ diff --git a/resolv/base64.c b/resolv/base64.c index 98983e0a93..8b01de33f4 100644 --- a/resolv/base64.c +++ b/resolv/base64.c @@ -127,7 +127,7 @@ static const char Pad64 = '='; characters followed by one "=" padding character. */ -ssize_t +int b64_ntop(src, srclength, target, targsize) u_char const *src; size_t srclength; @@ -198,7 +198,7 @@ b64_ntop(src, srclength, target, targsize) it returns the number of data bytes stored at the target, or -1 on error. */ -ssize_t +int b64_pton(src, target, targsize) char const *src; u_char *target; diff --git a/resolv/gethnamaddr.c b/resolv/gethnamaddr.c index 755fc52ea8..fb51e31003 100644 --- a/resolv/gethnamaddr.c +++ b/resolv/gethnamaddr.c @@ -167,7 +167,7 @@ getanswer(answer, anslen, qname, qtype) int type, class, buflen, ancount, qdcount; int haveanswer, had_error; int toobig = 0; - char tbuf[MAXDNAME+1]; + char tbuf[MAXDNAME]; const char *tname; int (*name_ok) __P((const char *)); @@ -417,6 +417,10 @@ gethostbyname(name) { struct hostent *hp; + if ((_res.options & RES_INIT) == 0 && res_init() == -1) { + h_errno = NETDB_INTERNAL; + return (NULL); + } if (_res.options & RES_USE_INET6) { hp = gethostbyname2(name, AF_INET6); if (hp) @@ -502,6 +506,36 @@ gethostbyname2(name, af) } if (!isdigit(*cp) && *cp != '.') break; + } + if (isxdigit(name[0]) || name[0] == ':') + for (cp = name;; ++cp) { + if (!*cp) { + if (*--cp == '.') + break; + /* + * All-IPv6-legal, no dot at the end. + * Fake up a hostent as if we'd actually + * done a lookup. + */ + if (inet_pton(af, name, host_addr) <= 0) { + h_errno = HOST_NOT_FOUND; + return (NULL); + } + strncpy(hostbuf, name, MAXDNAME); + hostbuf[MAXDNAME] = '\0'; + bp = hostbuf + MAXDNAME; + len = sizeof hostbuf - MAXDNAME; + host.h_name = hostbuf; + host.h_aliases = host_aliases; + host_aliases[0] = NULL; + h_addr_ptrs[0] = (char *)host_addr; + h_addr_ptrs[1] = NULL; + host.h_addr_list = h_addr_ptrs; + h_errno = NETDB_SUCCESS; + return (&host); + } + if (!isxdigit(*cp) && *cp != ':' && *cp != '.') + break; } if ((n = res_search(name, C_IN, type, buf.buf, sizeof(buf))) < 0) { diff --git a/resolv/res_comp.c b/resolv/res_comp.c index 7da1c3e0f6..76f7cea5c5 100644 --- a/resolv/res_comp.c +++ b/resolv/res_comp.c @@ -526,6 +526,26 @@ putlong(l, msgp) __putlong(l, msgp); } +#undef dn_comp +int +dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr) + const char *exp_dn; + u_char *comp_dn, **dnptrs, **lastdnptr; + int length; +{ + return (__dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr)); +} + +#undef dn_expand +int +dn_expand(msg, eomorig, comp_dn, exp_dn, length) + const u_char *msg, *eomorig, *comp_dn; + char *exp_dn; + int length; +{ + return (__dn_expand(msg, eomorig, comp_dn, exp_dn, length)); +} + #undef dn_skipname dn_skipname(comp_dn, eom) const u_char *comp_dn, *eom; diff --git a/resolv/res_debug.c b/resolv/res_debug.c index b47667626f..61724bf23b 100644 --- a/resolv/res_debug.c +++ b/resolv/res_debug.c @@ -238,6 +238,7 @@ __p_query(msg) } #ifdef ultrix +#undef p_query /* ultrix 4.0's packaging has some icky packaging. alias for it here. * there is more junk of this kind over in res_comp.c. */ @@ -1041,8 +1042,8 @@ __p_option(option) /* * Return a mnemonic for a time to live */ -char * -__p_time(value) +const char * +p_time(value) u_int32_t value; { static char nbuf[40]; @@ -1369,7 +1370,7 @@ loc_aton(ascii, binary) } /* takes an on-the-wire LOC RR and formats it in a human readable format. */ -char * +const char * loc_ntoa(binary, ascii) const u_char *binary; char *ascii; diff --git a/resolv/res_query.c b/resolv/res_query.c index 135c6aa5c0..2d191d0332 100644 --- a/resolv/res_query.c +++ b/resolv/res_query.c @@ -86,7 +86,7 @@ static char rcsid[] = "$Id$"; #define MAXPACKET 1024 #endif -char *__hostalias __P((const char *)); +const char *hostalias __P((const char *)); /* @@ -321,7 +321,7 @@ res_querydomain(name, domain, class, type, answer, anslen) u_char *answer; /* buffer to put answer */ int anslen; /* size of answer */ { - char nbuf[2*MAXDNAME+2]; + char nbuf[MAXDNAME]; const char *longname = nbuf; int n; @@ -351,8 +351,8 @@ res_querydomain(name, domain, class, type, answer, anslen) return (res_query(longname, class, type, answer, anslen)); } -char * -__hostalias(name) +const char * +hostalias(name) register const char *name; { register char *cp1, *cp2; diff --git a/resolv/res_send.c b/resolv/res_send.c index 841baa64e3..4c258b99bf 100644 --- a/resolv/res_send.c +++ b/resolv/res_send.c @@ -781,3 +781,20 @@ _res_close() vc = 0; } } + +#ifdef ultrix +/* ultrix 4.0 had some icky packaging in its libc.a. alias for it here. + * there is more gunk of this kind over in res_debug.c. + */ + +#undef res_send +int +res_send(buf, buflen, ans, anssiz) + const u_char *buf; + int buflen; + u_char *ans; + int anssiz; +{ + return (__res_send(buf, buflen, ans, anssiz)); +} +#endif /* Ultrix 4.0 hackery */ diff --git a/resolv/resolv.h b/resolv/resolv.h index 23460c5280..e5ec75a4db 100644 --- a/resolv/resolv.h +++ b/resolv/resolv.h @@ -112,7 +112,7 @@ struct __res_state { #define nsaddr nsaddr_list[0] /* for backward compatibility */ u_short id; /* current packet id */ char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ - char defdname[MAXDNAME]; /* default domain */ + char defdname[256]; /* default domain (deprecated) */ u_long pfcode; /* RES_PRF_ flags - see below. */ unsigned ndots:4; /* threshold for initial abs. query */ unsigned nsort:4; /* number of elements in sort_list[] */ @@ -205,6 +205,7 @@ extern const struct res_sym __p_type_syms[]; #define loc_ntoa __loc_ntoa #define loc_aton __loc_aton #define dn_skipname __dn_skipname +#define fp_resstat __fp_resstat #define fp_query __fp_query #define fp_nquery __fp_nquery #define hostalias __hostalias @@ -213,6 +214,7 @@ extern const struct res_sym __p_type_syms[]; #define p_class __p_class #define p_time __p_time #define p_type __p_type +#define p_query __p_query #define p_cdnname __p_cdnname #define p_cdname __p_cdname #define p_fqnname __p_fqnname @@ -221,59 +223,68 @@ extern const struct res_sym __p_type_syms[]; #define p_option __p_option #define p_secstodate __p_secstodate #define dn_count_labels __dn_count_labels +#define dn_comp __dn_comp +#define dn_expand __dn_expand +#define res_init __res_init #define res_randomid __res_randomid +#define res_query __res_query +#define res_search __res_search +#define res_querydomain __res_querydomain +#define res_mkquery __res_mkquery +#define res_send __res_send #define res_isourserver __res_isourserver #define res_nameinquery __res_nameinquery #define res_queriesmatch __res_queriesmatch __BEGIN_DECLS -int __res_hnok __P((const char *)); -int __res_ownok __P((const char *)); -int __res_mailok __P((const char *)); -int __res_dnok __P((const char *)); -int sym_ston __P((const struct res_sym *, char *, int *)); -const char *sym_ntos __P((const struct res_sym *, int, int *)); -const char *sym_ntop __P((const struct res_sym *, int, int *)); -ssize_t b64_ntop __P((u_char const *, size_t, char *, size_t)); -ssize_t b64_pton __P((char const *, u_char *, size_t)); -int __loc_aton __P((const char *ascii, u_char *binary)); -char * __loc_ntoa __P((const u_char *binary, char *ascii)); -int __dn_skipname __P((const u_char *, const u_char *)); -void __fp_resstat __P((struct __res_state *, FILE *)); -void __fp_query __P((const u_char *, FILE *)); -void __fp_nquery __P((const u_char *, int, FILE *)); -char *__hostalias __P((const char *)); -void __putlong __P((u_int32_t, u_char *)); -void __putshort __P((u_int16_t, u_char *)); -char *__p_time __P((u_int32_t)); -void __p_query __P((const u_char *)); -const u_char *__p_cdnname __P((const u_char *, const u_char *, int, FILE *)); -const u_char *__p_cdname __P((const u_char *, const u_char *, FILE *)); -const u_char *__p_fqnname __P((const u_char *cp, const u_char *msg, +int res_hnok __P((const char *)); +int res_ownok __P((const char *)); +int res_mailok __P((const char *)); +int res_dnok __P((const char *)); +int sym_ston __P((const struct res_sym *, char *, int *)); +const char * sym_ntos __P((const struct res_sym *, int, int *)); +const char * sym_ntop __P((const struct res_sym *, int, int *)); +int b64_ntop __P((u_char const *, size_t, char *, size_t)); +int b64_pton __P((char const *, u_char *, size_t)); +int loc_aton __P((const char *, u_char *)); +const char * loc_ntoa __P((const u_char *, char *)); +int dn_skipname __P((const u_char *, const u_char *)); +void fp_resstat __P((struct __res_state *, FILE *)); +void fp_query __P((const u_char *, FILE *)); +void fp_nquery __P((const u_char *, int, FILE *)); +const char * hostalias __P((const char *)); +void putlong __P((u_int32_t, u_char *)); +void putshort __P((u_int16_t, u_char *)); +const char * p_class __P((int)); +const char * p_time __P((u_int32_t)); +const char * p_type __P((int)); +void p_query __P((const u_char *)); +const u_char * p_cdnname __P((const u_char *, const u_char *, int, FILE *)); +const u_char * p_cdname __P((const u_char *, const u_char *, FILE *)); +const u_char * p_fqnname __P((const u_char *cp, const u_char *msg, int, char *, int)); -const u_char *__p_fqname __P((const u_char *, const u_char *, FILE *)); -const u_char *__p_rr __P((const u_char *, const u_char *, FILE *)); -const char *__p_type __P((int)); -const char *__p_class __P((int)); -const char *__p_option __P((u_long option)); -char * __p_secstodate __P((unsigned long)); -int dn_count_labels __P((char *)); -int dn_comp __P((const char *, u_char *, int, u_char **, u_char **)); -int dn_expand __P((const u_char *, const u_char *, const u_char *, - char *, int)); -int res_init __P((void)); -u_int16_t res_randomid __P((void)); -int res_query __P((const char *, int, int, u_char *, int)); -int res_search __P((const char *, int, int, u_char *, int)); -int res_querydomain __P((const char *, const char *, int, int, - u_char *, int)); -int res_mkquery __P((int, const char *, int, int, const u_char *, int, - const u_char *, u_char *, int)); -int res_send __P((const u_char *, int, u_char *, int)); -int res_isourserver __P((const struct sockaddr_in *)); -int res_nameinquery __P((const char *, int, int, - const u_char *, const u_char *)); -int res_queriesmatch __P((const u_char *, const u_char *, - const u_char *, const u_char *)); +const u_char * p_fqname __P((const u_char *, const u_char *, FILE *)); +const u_char * p_rr __P((const u_char *, const u_char *, FILE *)); +const char * p_option __P((u_long option)); +char * p_secstodate __P((u_long)); +int dn_count_labels __P((char *)); +int dn_comp __P((const char *, u_char *, int, + u_char **, u_char **)); +int dn_expand __P((const u_char *, const u_char *, const u_char *, + char *, int)); +int res_init __P((void)); +u_int16_t res_randomid __P((void)); +int res_query __P((const char *, int, int, u_char *, int)); +int res_search __P((const char *, int, int, u_char *, int)); +int res_querydomain __P((const char *, const char *, int, int, + u_char *, int)); +int res_mkquery __P((int, const char *, int, int, const u_char *, int, + const u_char *, u_char *, int)); +int res_send __P((const u_char *, int, u_char *, int)); +int res_isourserver __P((const struct sockaddr_in *)); +int res_nameinquery __P((const char *, int, int, + const u_char *, const u_char *)); +int res_queriesmatch __P((const u_char *, const u_char *, + const u_char *, const u_char *)); __END_DECLS #endif /* !_RESOLV_H_ */ -- cgit 1.4.1