[haiku-commits] r33968 - in haiku/trunk: headers/posix headers/posix/arpa headers/posix/netinet6 src/kits/network src/kits/network/libbind ...

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 9 Nov 2009 23:18:35 +0100 (CET)

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 ...]

Other related posts: