Author: axeld Date: 2009-11-09 23:18:34 +0100 (Mon, 09 Nov 2009) New Revision: 33968 Changeset: http://dev.haiku-os.org/changeset/33968/haiku Added: haiku/trunk/src/kits/network/libbind/ haiku/trunk/src/kits/network/libbind/COPYRIGHT haiku/trunk/src/kits/network/libbind/Jamfile haiku/trunk/src/kits/network/libbind/bsd/ haiku/trunk/src/kits/network/libbind/bsd/strsep.c haiku/trunk/src/kits/network/libbind/config.h haiku/trunk/src/kits/network/libbind/defaults/ haiku/trunk/src/kits/network/libbind/defaults/services haiku/trunk/src/kits/network/libbind/dst/ haiku/trunk/src/kits/network/libbind/dst/dst_api.c haiku/trunk/src/kits/network/libbind/dst/dst_internal.h haiku/trunk/src/kits/network/libbind/dst/hmac_link.c haiku/trunk/src/kits/network/libbind/dst/md5.h haiku/trunk/src/kits/network/libbind/dst/md5_dgst.c haiku/trunk/src/kits/network/libbind/dst/md5_locl.h haiku/trunk/src/kits/network/libbind/dst/support.c haiku/trunk/src/kits/network/libbind/include/ haiku/trunk/src/kits/network/libbind/include/Makefile haiku/trunk/src/kits/network/libbind/include/Makefile.in haiku/trunk/src/kits/network/libbind/include/arpa_dude/ haiku/trunk/src/kits/network/libbind/include/arpa_dude/inet.h haiku/trunk/src/kits/network/libbind/include/arpa_dude/nameser.h haiku/trunk/src/kits/network/libbind/include/arpa_dude/nameser_compat.h haiku/trunk/src/kits/network/libbind/include/arpa_dude/resolv.h haiku/trunk/src/kits/network/libbind/include/fd_setsize.h haiku/trunk/src/kits/network/libbind/include/hesiod.h haiku/trunk/src/kits/network/libbind/include/irp.h haiku/trunk/src/kits/network/libbind/include/irs.h haiku/trunk/src/kits/network/libbind/include/isc/ haiku/trunk/src/kits/network/libbind/include/isc/assertions.h haiku/trunk/src/kits/network/libbind/include/isc/ctl.h haiku/trunk/src/kits/network/libbind/include/isc/dst.h haiku/trunk/src/kits/network/libbind/include/isc/eventlib.h haiku/trunk/src/kits/network/libbind/include/isc/heap.h haiku/trunk/src/kits/network/libbind/include/isc/irpmarshall.h haiku/trunk/src/kits/network/libbind/include/isc/list.h haiku/trunk/src/kits/network/libbind/include/isc/logging.h haiku/trunk/src/kits/network/libbind/include/isc/memcluster.h haiku/trunk/src/kits/network/libbind/include/isc/misc.h haiku/trunk/src/kits/network/libbind/include/isc/platform.h haiku/trunk/src/kits/network/libbind/include/isc/platform.h.in haiku/trunk/src/kits/network/libbind/include/isc/tree.h haiku/trunk/src/kits/network/libbind/include/netdb.h haiku/trunk/src/kits/network/libbind/include/netgroup.h haiku/trunk/src/kits/network/libbind/include/res_update.h haiku/trunk/src/kits/network/libbind/include/resolv_mt.h haiku/trunk/src/kits/network/libbind/include/sys/ haiku/trunk/src/kits/network/libbind/include/sys/bitypes.h haiku/trunk/src/kits/network/libbind/include/utmp.h haiku/trunk/src/kits/network/libbind/inet/ haiku/trunk/src/kits/network/libbind/inet/inet_addr.c haiku/trunk/src/kits/network/libbind/inet/inet_cidr_ntop.c haiku/trunk/src/kits/network/libbind/inet/inet_cidr_pton.c haiku/trunk/src/kits/network/libbind/inet/inet_data.c haiku/trunk/src/kits/network/libbind/inet/inet_lnaof.c haiku/trunk/src/kits/network/libbind/inet/inet_makeaddr.c haiku/trunk/src/kits/network/libbind/inet/inet_net_ntop.c haiku/trunk/src/kits/network/libbind/inet/inet_net_pton.c haiku/trunk/src/kits/network/libbind/inet/inet_neta.c haiku/trunk/src/kits/network/libbind/inet/inet_netof.c haiku/trunk/src/kits/network/libbind/inet/inet_network.c haiku/trunk/src/kits/network/libbind/inet/inet_ntoa.c haiku/trunk/src/kits/network/libbind/inet/inet_ntop.c haiku/trunk/src/kits/network/libbind/inet/inet_pton.c haiku/trunk/src/kits/network/libbind/inet/nsap_addr.c haiku/trunk/src/kits/network/libbind/irs/ haiku/trunk/src/kits/network/libbind/irs/dns.c haiku/trunk/src/kits/network/libbind/irs/dns_gr.c haiku/trunk/src/kits/network/libbind/irs/dns_ho.c haiku/trunk/src/kits/network/libbind/irs/dns_nw.c haiku/trunk/src/kits/network/libbind/irs/dns_p.h haiku/trunk/src/kits/network/libbind/irs/dns_pr.c haiku/trunk/src/kits/network/libbind/irs/dns_pw.c haiku/trunk/src/kits/network/libbind/irs/dns_sv.c haiku/trunk/src/kits/network/libbind/irs/gai_strerror.c haiku/trunk/src/kits/network/libbind/irs/gen.c haiku/trunk/src/kits/network/libbind/irs/gen_gr.c haiku/trunk/src/kits/network/libbind/irs/gen_ho.c haiku/trunk/src/kits/network/libbind/irs/gen_ng.c haiku/trunk/src/kits/network/libbind/irs/gen_nw.c haiku/trunk/src/kits/network/libbind/irs/gen_p.h haiku/trunk/src/kits/network/libbind/irs/gen_pr.c haiku/trunk/src/kits/network/libbind/irs/gen_pw.c haiku/trunk/src/kits/network/libbind/irs/gen_sv.c haiku/trunk/src/kits/network/libbind/irs/getaddrinfo.c haiku/trunk/src/kits/network/libbind/irs/getgrent.c haiku/trunk/src/kits/network/libbind/irs/getgrent_r.c haiku/trunk/src/kits/network/libbind/irs/gethostent.c haiku/trunk/src/kits/network/libbind/irs/gethostent_r.c haiku/trunk/src/kits/network/libbind/irs/getnameinfo.c haiku/trunk/src/kits/network/libbind/irs/getnetent.c haiku/trunk/src/kits/network/libbind/irs/getnetent_r.c haiku/trunk/src/kits/network/libbind/irs/getnetgrent.c haiku/trunk/src/kits/network/libbind/irs/getnetgrent_r.c haiku/trunk/src/kits/network/libbind/irs/getprotoent.c haiku/trunk/src/kits/network/libbind/irs/getprotoent_r.c haiku/trunk/src/kits/network/libbind/irs/getpwent.c haiku/trunk/src/kits/network/libbind/irs/getpwent_r.c haiku/trunk/src/kits/network/libbind/irs/getservent.c haiku/trunk/src/kits/network/libbind/irs/getservent_r.c [... truncated: 96 added files follow ...] Removed: haiku/trunk/src/kits/network/dns/ Modified: haiku/trunk/headers/posix/arpa/inet.h haiku/trunk/headers/posix/arpa/nameser.h haiku/trunk/headers/posix/netinet6/in6.h haiku/trunk/headers/posix/resolv.h haiku/trunk/src/kits/network/Jamfile Log: * Ported libbind-6.0 to Haiku, and into our libnetwork.so. * Got rid of the TLS/multi-thread hacks of the previous port. * Took over irs/lcl_sv.cpp, and irs/lcl_ho.c, and irs/lcl_pr.c from the previous version as they contain customizations. * Removed unused files from libbind. * Only barely tested, so beware. Modified: haiku/trunk/headers/posix/arpa/inet.h =================================================================== --- haiku/trunk/headers/posix/arpa/inet.h 2009-11-09 21:33:35 UTC (rev 33967) +++ haiku/trunk/headers/posix/arpa/inet.h 2009-11-09 22:18:34 UTC (rev 33968) @@ -6,7 +6,7 @@ /* * Copyright (c) 1983, 1993 * The 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: @@ -22,7 +22,7 @@ * 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 @@ -36,14 +36,14 @@ * 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 @@ -97,7 +97,8 @@ int inet_cidr_pton(int, const char *, void *, int *); char *inet_ntoa(struct in_addr); int inet_pton(int, const char *, void *); -const char *inet_ntop(int, const void *, char *, socklen_t); +const char* inet_ntop(int family, const void* source, char* dest, + socklen_t size); u_int inet_nsap_addr(const char *, u_char *, int); char *inet_nsap_ntoa(int, const u_char *, char *); Modified: haiku/trunk/headers/posix/arpa/nameser.h =================================================================== --- haiku/trunk/headers/posix/arpa/nameser.h 2009-11-09 21:33:35 UTC (rev 33967) +++ haiku/trunk/headers/posix/arpa/nameser.h 2009-11-09 22:18:34 UTC (rev 33968) @@ -1,12 +1,29 @@ /* - * Copyright 2006, Haiku, Inc. All Rights Reserved. + * Copyright 2006-2009, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. */ /* + * Portions Copyright (C) 2004, 2005, 2008, 2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 1996-2003 Internet Software Consortium. + * + * Permission to use, copy, modify, and/or 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 ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC 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 (c) 1983, 1989, 1993 * The 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: @@ -22,7 +39,7 @@ * 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 @@ -35,23 +52,6 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - -/* - * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") - * Copyright (c) 1996-1999 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 ISC DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC 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. - */ #ifndef _ARPA_NAMESER_H_ #define _ARPA_NAMESER_H_ @@ -69,7 +69,7 @@ * compare for equality; rather, use it to determine whether your libbind.a * contains a new enough lib/nameser/ to support the feature you need. */ -#define __NAMESER 19991006 /* New interface version stamp. */ +#define __NAMESER 20090302 /* New interface version stamp. */ /* * Define constants based on RFC 883, RFC 1034, RFC 1035 @@ -79,6 +79,9 @@ #define NS_MAXMSG 65535 /* maximum message size */ #define NS_MAXCDNAME 255 /* maximum compressed domain name */ #define NS_MAXLABEL 63 /* maximum length of domain label */ +#define NS_MAXLABELS 128 /* theoretical max #/labels per domain name */ +#define NS_MAXNNAME 256 /* maximum uncompressed (binary) domain name */ +#define NS_MAXPADDR 40 #define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */ #define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */ #define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */ @@ -106,6 +109,18 @@ } ns_sect; /* + * Network name (compressed or not) type. Equivalent to a pointer when used + * in a function prototype. Can be const'd. + */ +typedef u_char ns_nname[NS_MAXNNAME]; +typedef const u_char *ns_nname_ct; +typedef u_char *ns_nname_t; + +struct ns_namemap { ns_nname_ct base; int len; }; +typedef struct ns_namemap *ns_namemap_t; +typedef const struct ns_namemap *ns_namemap_ct; + +/* * This is a message handle. It is caller allocated and has no dynamic data. * This structure is intended to be opaque to all but ns_parse.c, thus the * leading _'s on the member names. Use the accessor functions, not the _'s. @@ -122,6 +137,17 @@ const u_char *_msg_ptr; } ns_msg; +/* + * This is a newmsg handle, used when constructing new messages with + * ns_newmsg_init(), et al. + */ +struct ns_newmsg { + ns_msg msg; + const u_char *dnptrs[25]; + const u_char **lastdnptr; +}; +typedef struct ns_newmsg ns_newmsg; + /* Private data structure - do not use from outside library. */ struct _ns_flagdata { int mask, shift; }; extern struct _ns_flagdata _ns_flagdata[]; @@ -146,8 +172,23 @@ const u_char *rdata; } ns_rr; +/* + * Same thing, but using uncompressed network binary names, and real C types. + */ +typedef struct __ns_rr2 { + ns_nname nname; + size_t nnamel; + int type; + int rr_class; + u_int ttl; + int rdlength; + const u_char *rdata; +} ns_rr2; + /* Accessor macros - this is part of the public interface. */ #define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".") +#define ns_rr_nname(rr) ((const ns_nname_t)(rr).nname) +#define ns_rr_nnamel(rr) ((rr).nnamel + 0) #define ns_rr_type(rr) ((ns_type)((rr).type + 0)) #define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0)) #define ns_rr_ttl(rr) ((rr).ttl + 0) @@ -296,6 +337,17 @@ ns_t_sink = 40, /* Kitchen sink (experimentatl) */ ns_t_opt = 41, /* EDNS0 option (meta-RR) */ ns_t_apl = 42, /* Address prefix list (RFC 3123) */ + ns_t_ds = 43, /* Delegation Signer */ + ns_t_sshfp = 44, /* SSH Fingerprint */ + ns_t_ipseckey = 45, /* IPSEC Key */ + ns_t_rrsig = 46, /* RRset Signature */ + ns_t_nsec = 47, /* Negative security */ + ns_t_dnskey = 48, /* DNS Key */ + ns_t_dhcid = 49, /* Dynamic host configuratin identifier */ + ns_t_nsec3 = 50, /* Negative security type 3 */ + ns_t_nsec3param = 51, /* Negative security type 3 parameters */ + ns_t_hip = 55, /* Host Identity Protocol */ + ns_t_spf = 99, /* Sender Policy Framework */ ns_t_tkey = 249, /* Transaction key */ ns_t_tsig = 250, /* Transaction signature. */ ns_t_ixfr = 251, /* Incremental zone transfer. */ @@ -304,6 +356,7 @@ ns_t_maila = 254, /* Transfer mail agent records. */ ns_t_any = 255, /* Wildcard match. */ ns_t_zxfr = 256, /* BIND-specific, nonstandard. */ + ns_t_dlv = 32769, /* DNSSEC look-aside validatation. */ ns_t_max = 65536 } ns_type; @@ -373,13 +426,9 @@ #define NS_KEY_RESERVED10 0x0020 /* reserved - must be zero */ #define NS_KEY_RESERVED11 0x0010 /* reserved - must be zero */ #define NS_KEY_SIGNATORYMASK 0x000F /* key can sign RR's of same name */ -#define NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \ - NS_KEY_RESERVED4 | \ - NS_KEY_RESERVED5 | \ - NS_KEY_RESERVED8 | \ - NS_KEY_RESERVED9 | \ - NS_KEY_RESERVED10 | \ - NS_KEY_RESERVED11 ) +#define NS_KEY_RESERVED_BITMASK (NS_KEY_RESERVED2 | NS_KEY_RESERVED4 \ + | NS_KEY_RESERVED5 | NS_KEY_RESERVED8 | NS_KEY_RESERVED9 \ + | NS_KEY_RESERVED10 | NS_KEY_RESERVED11) #define NS_KEY_RESERVED_BITMASK2 0xFFFF /* no bits defined here */ /* The Algorithm field of the KEY and SIG RR's is an integer, {1..254} */ @@ -433,6 +482,7 @@ * EDNS0 extended flags, host order. */ #define NS_OPT_DNSSEC_OK 0x8000U +#define NS_OPT_NSID 3 /* * Inline versions of get/put short/long. Pointer is advanced. @@ -484,6 +534,7 @@ #define ns_initparse __ns_initparse #define ns_skiprr __ns_skiprr #define ns_parserr __ns_parserr +#define ns_parserr2 __ns_parserr2 #define ns_sprintrr __ns_sprintrr #define ns_sprintrrf __ns_sprintrrf #define ns_format_ttl __ns_format_ttl @@ -492,12 +543,19 @@ #define ns_name_ntol __ns_name_ntol #define ns_name_ntop __ns_name_ntop #define ns_name_pton __ns_name_pton +#define ns_name_pton2 __ns_name_pton2 #define ns_name_unpack __ns_name_unpack +#define ns_name_unpack2 __ns_name_unpack2 #define ns_name_pack __ns_name_pack #define ns_name_compress __ns_name_compress #define ns_name_uncompress __ns_name_uncompress #define ns_name_skip __ns_name_skip #define ns_name_rollback __ns_name_rollback +#define ns_name_length __ns_name_length +#define ns_name_eq __ns_name_eq +#define ns_name_owned __ns_name_owned +#define ns_name_map __ns_name_map +#define ns_name_labels __ns_name_labels #define ns_sign __ns_sign #define ns_sign2 __ns_sign2 #define ns_sign_tcp __ns_sign_tcp @@ -511,7 +569,18 @@ #define ns_subdomain __ns_subdomain #define ns_makecanon __ns_makecanon #define ns_samename __ns_samename +#define ns_newmsg_init __ns_newmsg_init +#define ns_newmsg_copy __ns_newmsg_copy +#define ns_newmsg_id __ns_newmsg_id +#define ns_newmsg_flag __ns_newmsg_flag +#define ns_newmsg_q __ns_newmsg_q +#define ns_newmsg_rr __ns_newmsg_rr +#define ns_newmsg_done __ns_newmsg_done +#define ns_rdata_unpack __ns_rdata_unpack +#define ns_rdata_equal __ns_rdata_equal +#define ns_rdata_refers __ns_rdata_refers + #ifdef __cplusplus extern "C" { #endif @@ -524,6 +593,7 @@ int ns_initparse(const u_char *, int, ns_msg *); int ns_skiprr(const u_char *, const u_char *, ns_sect, int); int ns_parserr(ns_msg *, ns_sect, int, ns_rr *); +int ns_parserr2(ns_msg *, ns_sect, int, ns_rr2 *); int ns_sprintrr(const ns_msg *, const ns_rr *, const char *, const char *, char *, size_t); int ns_sprintrrf(const u_char *, size_t, const char *, @@ -536,8 +606,11 @@ int ns_name_ntol(const u_char *, u_char *, size_t); int ns_name_ntop(const u_char *, char *, size_t); int ns_name_pton(const char *, u_char *, size_t); +int ns_name_pton2(const char *, u_char *, size_t, size_t *); int ns_name_unpack(const u_char *, const u_char *, const u_char *, u_char *, size_t); +int ns_name_unpack2(const u_char *, const u_char *, + const u_char *, u_char *, size_t, size_t *); int ns_name_pack(const u_char *, u_char *, int, const u_char **, const u_char **); int ns_name_uncompress(const u_char *, const u_char *, @@ -545,8 +618,15 @@ int ns_name_compress(const char *, u_char *, size_t, const u_char **, const u_char **); int ns_name_skip(const u_char **, const u_char *); -void ns_name_rollback(const u_char *, const u_char **, - const u_char **); +void ns_name_rollback(const u_char *, const u_char **, const u_char **); +ssize_t ns_name_length(ns_nname_ct nname, size_t nameSize); +int ns_name_eq(ns_nname_ct a, size_t aLength, ns_nname_ct b, + size_t bLength); +int ns_name_owned(ns_namemap_ct a, int aLength, ns_namemap_ct b, + int bLength); +int ns_name_map(ns_nname_ct nname, size_t nameLength, ns_namemap_t map, + int mapSize); +int ns_name_labels(ns_nname_ct, size_t); int ns_sign(u_char *, int *, int, int, void *, const u_char *, int, u_char *, int *, time_t); int ns_sign2(u_char *, int *, int, int, void *, @@ -570,6 +650,20 @@ int ns_subdomain(const char *, const char *); int ns_makecanon(const char *, char *, size_t); int ns_samename(const char *, const char *); +int ns_newmsg_init(u_char *buffer, size_t bufsiz, ns_newmsg *); +int ns_newmsg_copy(ns_newmsg *, ns_msg *); +void ns_newmsg_id(ns_newmsg *handle, u_int16_t id); +void ns_newmsg_flag(ns_newmsg *handle, ns_flag flag, u_int value); +int ns_newmsg_q(ns_newmsg *handle, ns_nname_ct qname, ns_type qtype, + ns_class qclass); +int ns_newmsg_rr(ns_newmsg *handle, ns_sect sect, ns_nname_ct name, + ns_type type, ns_class rr_class, u_int32_t ttl, u_int16_t rdlen, + const u_char *rdata); +size_t ns_newmsg_done(ns_newmsg *handle); +ssize_t ns_rdata_unpack(const u_char *, const u_char *, ns_type, const u_char *, + size_t, u_char *, size_t); +int ns_rdata_equal(ns_type, const u_char *, size_t, const u_char *, size_t); +int ns_rdata_refers(ns_type, const u_char *, size_t, const u_char *); #ifdef __cplusplus } Modified: haiku/trunk/headers/posix/netinet6/in6.h =================================================================== --- haiku/trunk/headers/posix/netinet6/in6.h 2009-11-09 21:33:35 UTC (rev 33967) +++ haiku/trunk/headers/posix/netinet6/in6.h 2009-11-09 22:18:34 UTC (rev 33968) @@ -27,4 +27,15 @@ uint32_t sin6_scope_id; }; + +#define IN6ADDR_ANY_INIT \ + {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }} +#define IN6ADDR_LOOPBACK_INIT \ + {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }} + +extern const struct in6_addr in6addr_any; +extern const struct in6_addr in6addr_loopback; + #endif /* _NETINET6_IN6_H_ */ Modified: haiku/trunk/headers/posix/resolv.h =================================================================== --- haiku/trunk/headers/posix/resolv.h 2009-11-09 21:33:35 UTC (rev 33967) +++ haiku/trunk/headers/posix/resolv.h 2009-11-09 22:18:34 UTC (rev 33968) @@ -1,7 +1,29 @@ /* + * Copyright 2009, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + */ + +/* + * Portions Copyright (C) 2004, 2005, 2008, 2009 Internet Systems Consortium, Inc. ("ISC") + * Portions Copyright (C) 1995-2003 Internet Software Consortium. + * + * Permission to use, copy, modify, and/or 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 ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC 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 (c) 1983, 1987, 1989 * The 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: @@ -17,7 +39,7 @@ * 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 @@ -31,39 +53,26 @@ * SUCH DAMAGE. */ -/* - * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") - * Portions Copyright (c) 1996-1999 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 ISC DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC 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. - */ - -/* +/*% * @(#)resolv.h 8.1 (Berkeley) 6/2/93 - * $Id: resolv.h 18456 2006-08-08 12:33:33Z axeld $ + * $Id: resolv.h,v 1.30 2009/03/03 01:52:48 each Exp $ */ #ifndef _RESOLV_H_ #define _RESOLV_H_ #include <sys/param.h> -#include <sys/types.h> +#if (!defined(BSD)) || (BSD < 199306) +# include <sys/bitypes.h> +#else +# include <sys/types.h> +#endif #include <sys/cdefs.h> #include <sys/socket.h> #include <stdio.h> #include <arpa/nameser.h> -/* +/*% * Revision information. This is the release date in YYYYMMDD format. * It can change every day so the right thing to do with it is use it * in preprocessor commands such as "#if (__RES > 19931104)". Do not @@ -71,9 +80,9 @@ * is new enough to contain a certain feature. */ -#define __RES 20030124 +#define __RES 20090302 -/* +/*% * This used to be defined in res_query.c, now it's in herror.c. * [XXX no it's not. It's in irs/irs_data.c] * It was @@ -93,12 +102,12 @@ */ #define RES_SET_H_ERRNO(r,x) __h_errno_set(r,x) -struct __res_state; /* forward */ +struct __res_state; /*%< forward */ __BEGIN_DECLS void __h_errno_set(struct __res_state *res, int err); __END_DECLS -/* +/*% * Resolver configuration file. * Normally not present, but may contain the address of the * initial name server(s) to query and the domain search list. @@ -119,71 +128,76 @@ #endif #endif -typedef res_sendhookact (*res_send_qhook)__PMT((struct sockaddr * const *, - const u_char **, int *, - u_char *, int, int *)); +typedef res_sendhookact (*res_send_qhook)(struct sockaddr * const *, + const u_char **, int *, u_char *, int, int *); -typedef res_sendhookact (*res_send_rhook)__PMT((const struct sockaddr *, - const u_char *, int, u_char *, - int, int *)); +typedef res_sendhookact (*res_send_rhook)(const struct sockaddr *, + const u_char *, int, u_char *, int, int *); struct res_sym { - int number; /* Identifying number, like T_MX */ - const char * name; /* Its symbolic name, like "MX" */ - const char * humanname; /* Its fun name, like "mail exchanger" */ + int number; /*%< Identifying number, like T_MX */ + const char * name; /*%< Its symbolic name, like "MX" */ + const char * humanname; /*%< Its fun name, like "mail exchanger" */ }; -/* +/*% * Global defines and variables for resolver stub. */ -#define MAXNS 3 /* max # name servers we'll track */ -#define MAXDFLSRCH 3 /* # default domain levels to try */ -#define MAXDNSRCH 6 /* max # domains in search path */ -#define LOCALDOMAINPARTS 2 /* min levels in name that is "local" */ - -#define RES_TIMEOUT 5 /* min. seconds between retries */ -#define MAXRESOLVSORT 10 /* number of net to sort on */ -#define RES_MAXNDOTS 15 /* should reflect bit field size */ -#define RES_MAXRETRANS 30 /* only for resolv.conf/RES_OPTIONS */ -#define RES_MAXRETRY 5 /* only for resolv.conf/RES_OPTIONS */ -#define RES_DFLRETRY 2 /* Default #/tries. */ -#define RES_MAXTIME 65535 /* Infinity, in milliseconds. */ - +#define MAXNS 3 /*%< max # name servers we'll track */ +#define MAXDFLSRCH 3 /*%< # default domain levels to try */ +#define MAXDNSRCH 6 /*%< max # domains in search path */ +#define LOCALDOMAINPARTS 2 /*%< min levels in name that is "local" */ +#define RES_TIMEOUT 5 /*%< min. seconds between retries */ +#define MAXRESOLVSORT 10 /*%< number of net to sort on */ +#define RES_MAXNDOTS 15 /*%< should reflect bit field size */ +#define RES_MAXRETRANS 30 /*%< only for resolv.conf/RES_OPTIONS */ +#define RES_MAXRETRY 5 /*%< only for resolv.conf/RES_OPTIONS */ +#define RES_DFLRETRY 2 /*%< Default #/tries. */ +#define RES_MAXTIME 65535 /*%< Infinity, in milliseconds. */ struct __res_state_ext; struct __res_state { - int retrans; /* retransmission time interval */ - int retry; /* number of times to retransmit */ - u_long options; /* option flags - see below. */ - int nscount; /* number of name servers */ + int retrans; /*%< retransmission time interval */ + int retry; /*%< number of times to retransmit */ +#ifdef sun + u_int options; /*%< option flags - see below. */ +#else + u_long options; /*%< option flags - see below. */ +#endif + 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 message id */ - char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */ - 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[] */ + nsaddr_list[MAXNS]; /*%< address of name server */ +#define nsaddr nsaddr_list[0] /*%< for backward compatibility */ + u_short id; /*%< current message id */ + char *dnsrch[MAXDNSRCH+1]; /*%< components of domain to search */ + char defdname[256]; /*%< default domain (deprecated) */ +#ifdef sun + u_int pfcode; /*%< RES_PRF_ flags - see below. */ +#else + u_long pfcode; /*%< RES_PRF_ flags - see below. */ +#endif + unsigned ndots:4; /*%< threshold for initial abs. query */ + unsigned nsort:4; /*%< number of elements in sort_list[] */ char unused[3]; struct { struct in_addr addr; u_int32_t mask; } sort_list[MAXRESOLVSORT]; - res_send_qhook qhook; /* query hook */ - res_send_rhook rhook; /* response hook */ - int res_h_errno; /* last one set for this context */ - int _vcsock; /* PRIVATE: for res_send VC i/o */ - u_int _flags; /* PRIVATE: see below */ - u_int _pad; /* make _u 64 bit aligned */ + res_send_qhook qhook; /*%< query hook */ + res_send_rhook rhook; /*%< response hook */ + int res_h_errno; /*%< last one set for this context */ + int _vcsock; /*%< PRIVATE: for res_send VC i/o */ + u_int _flags; /*%< PRIVATE: see below */ + u_char _rnd[16]; /*%< PRIVATE: random state */ + u_int _pad; /*%< make _u 64 bit aligned */ union { /* On an 32-bit arch this means 512b total. */ - char pad[72 - 4*sizeof (int) - 2*sizeof (void *)]; + char pad[56 - 4*sizeof (int) - 2*sizeof (void *)]; struct { u_int16_t nscount; - u_int16_t nstimes[MAXNS]; /* ms. */ + u_int16_t nstimes[MAXNS]; /*%< ms. */ int nssocks[MAXNS]; - struct __res_state_ext *ext; /* extention for IPv6 */ + struct __res_state_ext *ext; /*%< extention for IPv6 */ } _ext; } _u; }; @@ -192,76 +206,75 @@ union res_sockaddr_union { struct sockaddr_in sin; -#ifdef IN6ADDR_ANY_INIT struct sockaddr_in6 sin6; -#endif #ifdef ISC_ALIGN64 - int64_t __align64; /* 64bit alignment */ + int64_t __align64; /*%< 64bit alignment */ #else - int32_t __align32; /* 32bit alignment */ + int32_t __align32; /*%< 32bit alignment */ #endif - char __space[128]; /* max size */ + char __space[128]; /*%< max size */ }; -/* +/*% * Resolver flags (used to be discrete per-module statics ints). */ -#define RES_F_VC 0x00000001 /* socket is TCP */ -#define RES_F_CONN 0x00000002 /* socket is connected */ -#define RES_F_EDNS0ERR 0x00000004 /* EDNS0 caused errors */ -#define RES_F__UNUSED 0x00000008 /* (unused) */ -#define RES_F_LASTMASK 0x000000F0 /* ordinal server of last res_nsend */ -#define RES_F_LASTSHIFT 4 /* bit position of LASTMASK "flag" */ +#define RES_F_VC 0x00000001 /*%< socket is TCP */ +#define RES_F_CONN 0x00000002 /*%< socket is connected */ +#define RES_F_EDNS0ERR 0x00000004 /*%< EDNS0 caused errors */ +#define RES_F__UNUSED 0x00000008 /*%< (unused) */ +#define RES_F_LASTMASK 0x000000F0 /*%< ordinal server of last res_nsend */ +#define RES_F_LASTSHIFT 4 /*%< bit position of LASTMASK "flag" */ #define RES_GETLAST(res) (((res)._flags & RES_F_LASTMASK) >> RES_F_LASTSHIFT) /* res_findzonecut2() options */ -#define RES_EXHAUSTIVE 0x00000001 /* always do all queries */ -#define RES_IPV4ONLY 0x00000002 /* IPv4 only */ -#define RES_IPV6ONLY 0x00000004 /* IPv6 only */ +#define RES_EXHAUSTIVE 0x00000001 /*%< always do all queries */ +#define RES_IPV4ONLY 0x00000002 /*%< IPv4 only */ +#define RES_IPV6ONLY 0x00000004 /*%< IPv6 only */ -/* +/*% * Resolver options (keep these in synch with res_debug.c, please) */ -#define RES_INIT 0x00000001 /* address initialized */ -#define RES_DEBUG 0x00000002 /* print debug messages */ -#define RES_AAONLY 0x00000004 /* authoritative answers only (!IMPL)*/ -#define RES_USEVC 0x00000008 /* use virtual circuit */ -#define RES_PRIMARY 0x00000010 /* query primary server only (!IMPL) */ -#define RES_IGNTC 0x00000020 /* ignore trucation errors */ -#define RES_RECURSE 0x00000040 /* recursion desired */ -#define RES_DEFNAMES 0x00000080 /* use default domain name */ -#define RES_STAYOPEN 0x00000100 /* Keep TCP socket open */ -#define RES_DNSRCH 0x00000200 /* search up local domain tree */ -#define RES_INSECURE1 0x00000400 /* type 1 security disabled */ -#define RES_INSECURE2 0x00000800 /* type 2 security disabled */ -#define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */ -#define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */ -#define RES_ROTATE 0x00004000 /* rotate ns list after each query */ -#define RES_NOCHECKNAME 0x00008000 /* do not check names for sanity. */ -#define RES_KEEPTSIG 0x00010000 /* do not strip TSIG records */ -#define RES_BLAST 0x00020000 /* blast all recursive servers */ -#define RES_NOTLDQUERY 0x00100000 /* don't unqualified name as a tld */ -#define RES_USE_DNSSEC 0x00200000 /* use DNSSEC using OK bit in OPT */ +#define RES_INIT 0x00000001 /*%< address initialized */ +#define RES_DEBUG 0x00000002 /*%< print debug messages */ +#define RES_AAONLY 0x00000004 /*%< authoritative answers only (!IMPL)*/ +#define RES_USEVC 0x00000008 /*%< use virtual circuit */ +#define RES_PRIMARY 0x00000010 /*%< query primary server only (!IMPL) */ +#define RES_IGNTC 0x00000020 /*%< ignore trucation errors */ +#define RES_RECURSE 0x00000040 /*%< recursion desired */ +#define RES_DEFNAMES 0x00000080 /*%< use default domain name */ +#define RES_STAYOPEN 0x00000100 /*%< Keep TCP socket open */ +#define RES_DNSRCH 0x00000200 /*%< search up local domain tree */ +#define RES_INSECURE1 0x00000400 /*%< type 1 security disabled */ +#define RES_INSECURE2 0x00000800 /*%< type 2 security disabled */ +#define RES_NOALIASES 0x00001000 /*%< shuts off HOSTALIASES feature */ +#define RES_USE_INET6 0x00002000 /*%< use/map IPv6 in gethostbyname() */ +#define RES_ROTATE 0x00004000 /*%< rotate ns list after each query */ +#define RES_NOCHECKNAME 0x00008000 /*%< do not check names for sanity. */ +#define RES_KEEPTSIG 0x00010000 /*%< do not strip TSIG records */ +#define RES_BLAST 0x00020000 /*%< blast all recursive servers */ +#define RES_NSID 0x00040000 /*%< request name server ID */ +#define RES_NOTLDQUERY 0x00100000 /*%< don't unqualified name as a tld */ +#define RES_USE_DNSSEC 0x00200000 /*%< use DNSSEC using OK bit in OPT */ /* #define RES_DEBUG2 0x00400000 */ /* nslookup internal */ /* KAME extensions: use higher bit to avoid conflict with ISC use */ -#define RES_USE_DNAME 0x10000000 /* use DNAME */ -#define RES_USE_EDNS0 0x40000000 /* use EDNS0 if configured */ -#define RES_NO_NIBBLE2 0x80000000 /* disable alternate nibble lookup */ +#define RES_USE_DNAME 0x10000000 /*%< use DNAME */ +#define RES_USE_EDNS0 0x40000000 /*%< use EDNS0 if configured */ +#define RES_NO_NIBBLE2 0x80000000 /*%< disable alternate nibble lookup */ #define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | \ RES_DNSRCH | RES_NO_NIBBLE2) -/* +/*% * Resolver "pfcode" values. Used by dig. */ #define RES_PRF_STATS 0x00000001 #define RES_PRF_UPDATE 0x00000002 #define RES_PRF_CLASS 0x00000004 -#define RES_PRF_CMD 0x00000008 +#define RES_PRF_CMD 0x00000008 #define RES_PRF_QUES 0x00000010 -#define RES_PRF_ANS 0x00000020 +#define RES_PRF_ANS 0x00000020 #define RES_PRF_AUTH 0x00000040 -#define RES_PRF_ADD 0x00000080 +#define RES_PRF_ADD 0x00000080 #define RES_PRF_HEAD1 0x00000100 #define RES_PRF_HEAD2 0x00000200 #define RES_PRF_TTLID 0x00000400 @@ -285,37 +298,38 @@ #define p_query __p_query #define res_close __res_close #define res_init __res_init -#define res_isourserver __res_isourserver +#define res_isourserver __res_isourserver #define res_mkquery __res_mkquery #define res_query __res_query -#define res_querydomain __res_querydomain +#define res_querydomain __res_querydomain #define res_search __res_search #define res_send __res_send -#define res_sendsigned __res_sendsigned +#define res_sendsigned __res_sendsigned __BEGIN_DECLS -void fp_nquery __P((const u_char *, int, FILE *)); -void fp_query __P((const u_char *, FILE *)); -const char * hostalias __P((const char *)); -void p_query __P((const u_char *)); -void res_close __P((void)); -int res_init __P((void)); -int res_isourserver __P((const struct sockaddr_in *)); -int res_mkquery __P((int, const char *, int, int, const u_char *, - int, const u_char *, u_char *, int)); -int res_query __P((const char *, int, int, u_char *, int)); -int res_querydomain __P((const char *, const char *, int, int, - u_char *, int)); -int res_search __P((const char *, int, int, u_char *, int)); -int res_send __P((const u_char *, int, u_char *, int)); -int res_sendsigned __P((const u_char *, int, ns_tsig_key *, - u_char *, int)); +void fp_nquery(const u_char *, int, FILE *); +void fp_query(const u_char *, FILE *); +const char *hostalias(const char *); +void p_query(const u_char *); +void res_close(void); +int res_init(void); +int res_isourserver(const struct sockaddr_in *); +int res_mkquery(int, const char *, int, int, const u_char *, + int, const u_char *, u_char *, int); +int res_query(const char *, int, int, u_char *, int); +int res_querydomain(const char *, const char *, int, int, + u_char *, int); +int res_search(const char *, int, int, u_char *, int); +int res_send(const u_char *, int, u_char *, int); +int res_sendsigned(const u_char *, int, ns_tsig_key *, + u_char *, int); __END_DECLS #endif +#if !defined(SHARED_LIBBIND) || defined(LIB) /* * If libbind is a shared object (well, DLL anyway) - * these externs break the linker when resolv.h is + * these externs break the linker when resolv.h is * included by a lib client (like named) * Make them go away if a client is including this * @@ -325,54 +339,58 @@ extern const struct res_sym __p_class_syms[]; extern const struct res_sym __p_type_syms[]; extern const struct res_sym __p_rcode_syms[]; +#endif /* SHARED_LIBBIND */ -#define b64_ntop __b64_ntop -#define b64_pton __b64_pton -#define dn_comp __dn_comp +#define b64_ntop __b64_ntop +#define b64_pton __b64_pton +#define dn_comp __dn_comp #define dn_count_labels __dn_count_labels -#define dn_expand __dn_expand -#define dn_skipname __dn_skipname -#define fp_resstat __fp_resstat -#define loc_aton __loc_aton -#define loc_ntoa __loc_ntoa -#define p_cdname __p_cdname -#define p_cdnname __p_cdnname -#define p_class __p_class -#define p_fqname __p_fqname -#define p_fqnname __p_fqnname -#define p_option __p_option +#define dn_expand __dn_expand +#define dn_skipname __dn_skipname +#define fp_resstat __fp_resstat +#define loc_aton __loc_aton +#define loc_ntoa __loc_ntoa +#define p_cdname __p_cdname +#define p_cdnname __p_cdnname +#define p_class __p_class +#define p_fqname __p_fqname +#define p_fqnname __p_fqnname +#define p_option __p_option #define p_secstodate __p_secstodate -#define p_section __p_section -#define p_time __p_time -#define p_type __p_type -#define p_rcode __p_rcode -#define p_sockun __p_sockun -#define putlong __putlong -#define putshort __putshort -#define res_dnok __res_dnok +#define p_section __p_section +#define p_time __p_time +#define p_type __p_type +#define p_rcode __p_rcode +#define p_sockun __p_sockun +#define putlong __putlong +#define putshort __putshort +#define res_dnok __res_dnok #define res_findzonecut __res_findzonecut #define res_findzonecut2 __res_findzonecut2 -#define res_hnok __res_hnok +#define res_hnok __res_hnok #define res_hostalias __res_hostalias -#define res_mailok __res_mailok +#define res_mailok __res_mailok #define res_nameinquery __res_nameinquery -#define res_nclose __res_nclose -#define res_ninit __res_ninit +#define res_nclose __res_nclose +#define res_ninit __res_ninit #define res_nmkquery __res_nmkquery -#define res_pquery __res_pquery -#define res_nquery __res_nquery +#define res_pquery __res_pquery +#define res_nquery __res_nquery #define res_nquerydomain __res_nquerydomain -#define res_nsearch __res_nsearch -#define res_nsend __res_nsend +#define res_nsearch __res_nsearch +#define res_nsend __res_nsend #define res_nsendsigned __res_nsendsigned #define res_nisourserver __res_nisourserver -#define res_ownok __res_ownok +#define res_ownok __res_ownok #define res_queriesmatch __res_queriesmatch +#define res_rndinit __res_rndinit #define res_randomid __res_randomid -#define sym_ntop __sym_ntop -#define sym_ntos __sym_ntos -#define sym_ston __sym_ston -#define res_nopt __res_nopt +#define res_nrandomid __res_nrandomid +#define sym_ntop __sym_ntop +#define sym_ntos __sym_ntos +#define sym_ston __sym_ston +#define res_nopt __res_nopt +#define res_nopt_rdata __res_nopt_rdata #define res_ndestroy __res_ndestroy #define res_nametoclass __res_nametoclass #define res_nametotype __res_nametotype @@ -390,88 +408,88 @@ #define res_send_setrhook __res_send_setrhook #define res_servicename __res_servicename #define res_servicenumber __res_servicenumber + __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 *, const 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 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)); -const char * p_rcode __P((int)); -const char * p_sockun __P((union res_sockaddr_union, char *, size_t)); -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 *, const u_char *, - int, char *, int)); -const u_char * p_fqname __P((const u_char *, const u_char *, FILE *)); -const char * p_option __P((u_long)); -char * p_secstodate __P((u_long)); -int dn_count_labels __P((const 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)); -u_int res_randomid __P((void)); -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 char * p_section __P((int, int)); +int res_hnok(const char *); +int res_ownok(const char *); +int res_mailok(const char *); +int res_dnok(const char *); +int sym_ston(const struct res_sym *, const char *, int *); +const char * sym_ntos(const struct res_sym *, int, int *); +const char * sym_ntop(const struct res_sym *, int, int *); +int b64_ntop(u_char const *, size_t, char *, size_t); +int b64_pton(char const *, u_char *, size_t); +int loc_aton(const char *, u_char *); +const char * loc_ntoa(const u_char *, char *); +int dn_skipname(const u_char *, const u_char *); +void putlong(u_int32_t, u_char *); +void putshort(u_int16_t, u_char *); +#ifndef __ultrix__ +u_int16_t _getshort(const u_char *); +u_int32_t _getlong(const u_char *); +#endif +const char * p_class(int); +const char * p_time(u_int32_t); +const char * p_type(int); +const char * p_rcode(int); +const char * p_sockun(union res_sockaddr_union, char *, size_t); +const u_char * p_cdnname(const u_char *, const u_char *, int, FILE *); +const u_char * p_cdname(const u_char *, const u_char *, FILE *); +const u_char * p_fqnname(const u_char *, const u_char *, int, char *, int); +const u_char * p_fqname(const u_char *, const u_char *, FILE *); +const char * p_option(u_long); +char * p_secstodate(u_long); +int dn_count_labels(const char *); +int dn_comp(const char *, u_char *, int, u_char **, u_char **); +int dn_expand(const u_char *, const u_char *, const u_char *, + char *, int); +void res_rndinit(res_state); +u_int res_randomid(void); +u_int res_nrandomid(res_state); +int res_nameinquery(const char *, int, int, const u_char *, + const u_char *); +int res_queriesmatch(const u_char *, const u_char *, const u_char *, + const u_char *); +const char * p_section(int, int); /* Things involving a resolver context. */ -int res_ninit __P((res_state)); -int res_nisourserver __P((const res_state, - const struct sockaddr_in *)); -void fp_resstat __P((const res_state, FILE *)); -void res_pquery __P((const res_state, const u_char *, int, FILE *)); -const char * res_hostalias __P((const res_state, const char *, - char *, size_t)); -int res_nquery __P((res_state, const char *, int, int, - u_char *, int)); -int res_nsearch __P((res_state, const char *, int, int, u_char *, - int)); -int res_nquerydomain __P((res_state, const char *, const char *, - int, int, u_char *, int)); -int res_nmkquery __P((res_state, int, const char *, int, int, - const u_char *, int, const u_char *, - u_char *, int)); -int res_nsend __P((res_state, const u_char *, int, u_char *, int)); -int res_nsendsigned __P((res_state, const u_char *, int, - ns_tsig_key *, u_char *, int)); -int res_findzonecut __P((res_state, const char *, ns_class, int, - char *, size_t, struct in_addr *, int)); -int res_findzonecut2 __P((res_state, const char *, ns_class, int, - char *, size_t, - union res_sockaddr_union *, int)); -void res_nclose __P((res_state)); [... truncated: 57278 lines follow ...]