diff options
Diffstat (limited to 'usr/src/lib/libresolv2_joy/include')
36 files changed, 3674 insertions, 0 deletions
| diff --git a/usr/src/lib/libresolv2_joy/include/Makefile b/usr/src/lib/libresolv2_joy/include/Makefile new file mode 100644 index 0000000000..8bff3c3188 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/Makefile @@ -0,0 +1,60 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2006 Sun Microsystems, Inc.  All rights reserved. +# Use is subject to license terms. +# +# ident	"%Z%%M%	%I%	%E% SMI" +# + +include		../../../Makefile.master + +HDRS=		os_version.h port_ipv6.h +TMPHDRS=	new_os_version.h new_port_ipv6.h + +all :=		TARGET= all +clean :=	TARGET= clean +clobber :=	TARGET= clobber +install :=	TARGET= install + +.KEEP_STATE: + +all lint: $(HDRS) + +install: all + +clean: +	$(RM) $(HDRS) $(TMPHDRS) + +clobber: clean + +# os_version.h and port_ipv6.h should be rebuilt when you change OS +# revision. Since that's not easily expressed as a dependency, we +# rebuild them every time. + +os_version.h: make_os_version FRC +	./make_os_version + +port_ipv6.h: probe_ipv6 FRC +	CC="$(CC)" ./probe_ipv6 + +FRC: diff --git a/usr/src/lib/libresolv2_joy/include/arpa/port_inet.h b/usr/src/lib/libresolv2_joy/include/arpa/port_inet.h new file mode 100644 index 0000000000..5eb1787f56 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/arpa/port_inet.h @@ -0,0 +1,41 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + +/* + * + * All rights reserved. + */ + +#ifndef _ARPA_PORT_INET_H +#define	_ARPA_PORT_INET_H + +#ifdef	__cplusplus +extern "C" { +#endif + +/* + * these are libresolv2 functions that were made local in previous versions + * we rename them res_* because they conflict with libnsl or libsocket + */ + +#define	inet_lnaof res_inet_lnaof  /* libsocket */ +ulong_t inet_lnaof(struct in_addr in); + +#define	inet_makeaddr res_inet_makeaddr  /* libsocket */ +struct in_addr inet_makeaddr(ulong_t net, ulong_t host); + +#define	inet_netof res_inet_netof  /* libnsl */ +ulong_t inet_netof(struct in_addr in); + +#define	inet_network res_inet_network  /* libsocket */ +ulong_t inet_network(register const char *cp); + +#ifdef	__cplusplus +} +#endif + + + +#endif /* _ARPA_PORT_INET_H */ diff --git a/usr/src/lib/libresolv2_joy/include/arpa/port_nameser.h b/usr/src/lib/libresolv2_joy/include/arpa/port_nameser.h new file mode 100644 index 0000000000..b40ea0d163 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/arpa/port_nameser.h @@ -0,0 +1,40 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _ARPA_PORT_NAMESER_H +#define	_ARPA_PORT_NAMESER_H + +/* + * ISC changed the ns_updrec structure. However, it's a public interface + * in Solaris, so we rename it here and wrap in sunw_updrec.c + */ +#define	ns_updrec	__ISC_ns_updrec + + +/* + * Due to the above, the following functions need to be renamed and + * wrapped in sunw_updrec.c. + * + * For BIND 8.2.2, ISC removed the dynamic update functions, and the + * definition of the ns_updrec structure, from the public include files + * (<resolv.h>, <arpa/nameser.h>. However, res_update(), res_mkupdate(), + * and res_mkupdrec() are in the public libresolv interface in Solaris, + * so we can't easily remove them. Thus, ISC's new versions of res_mkupdate() + * etc. can't be exposed under their original names. + * + * res_nmkupdate() and res_nupdate are new. We could either change them + * to accept the <arpa/nameser.h> ns_updrec, or leave them unchanged and + * undocumented. Since ISC may change ns_updrec again, we pick the latter + * solution for now. + */ +#define	res_mkupdate	__ISC_res_mkupdate +#define	res_update	__ISC_res_update +#define	res_mkupdrec	__ISC_res_mkupdrec +#define	res_freeupdrec	__ISC_res_freeupdrec +#define	res_nmkupdate	__ISC_res_nmkupdate +#define	res_nupdate	__ISC_res_nupdate + + +#endif /* _ARPA_PORT_NAMESER_H */ diff --git a/usr/src/lib/libresolv2_joy/include/conf/sunoptions.h b/usr/src/lib/libresolv2_joy/include/conf/sunoptions.h new file mode 100644 index 0000000000..b75ff9d878 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/conf/sunoptions.h @@ -0,0 +1,30 @@ +/* + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef	_SUNOPTIONS_H +#define	_SUNOPTIONS_H + +#define	USELOOPBACK	/* Resolver library defaults to 127.0.0.1 */ + +/* Additions for Solaris 2 */ + +#define	SUNW_INITCHKIF		/* Check if any non-loopback interface is up */ +#define	SUNW_CONFCHECK		/* Abort quickly if no /etc/resolv.conf or */ +				/* local named */ +#define	SUNW_HOSTS_FALLBACK	/* Configurable /etc/hosts fallback */ +#define	SUNW_HNOK_UNDERSCORE	/* Allow underscore in hostnames (libresolv) */ +#define	SUNW_MT_RESOLVER	/* MT hot extensions (libresolv) */ +#define	SUNW_SETHERRNO		/* ISC does not set h_errno in gethostbyname */ +#define	SUNW_OVERRIDE_RETRY	/* Allow NS switch to override res->retry */ +#define	SUNW_LIBMD5	/* Use md5(3EXT) instead of internal implementation */ + +/* If compiling an MT warm libresolv, we also need reentrancy */ +#if	defined(SUNW_MT_RESOLVER) && !defined(_REENTRANT) +#define	_REENTRANT +#endif + +/* End additions for Solaris 2 */ + +#endif /* _SUNOPTIONS_H */ diff --git a/usr/src/lib/libresolv2_joy/include/config.h b/usr/src/lib/libresolv2_joy/include/config.h new file mode 100644 index 0000000000..35fb115a0f --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/config.h @@ -0,0 +1,75 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + + +/* config.h.  Generated from config.h.in by configure.  */ +/* #undef _SOCKADDR_LEN */ +#define HAVE_FCNTL_H 1 +/* #undef HAVE_PATHS_H */ +#define HAVE_INTTYPES_H 1 +#define HAVE_STROPTS_H 1 +/* #undef HAVE_SYS_TIMERS_H */ +#define HAVE_SYS_SELECT_H 1 +#define HAVE_MEMORY_H 1 +/* #undef SYS_CDEFS_H */ +#define _POSIX_PTHREAD_SEMANTICS 1 +#define POSIX_GETPWUID_R 1 +#define POSIX_GETPWNAM_R 1 +#define POSIX_GETGRGID_R 1 +#define POSIX_GETGRNAM_R 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCHR 1 +/* #undef SPRINTF_CHAR */ +/* #undef VSPRINTF_CHAR */ +#define USE_SYSERROR_LIST 1 +/* #undef NEED_STRTOUL */ +/* #undef NEED_SUN4PROTOS */ +/* #undef REENABLE_SEND */ + +#define NEED_SETGROUPENT 1 +#define NEED_GETGROUPLIST 1 + +/* define if prototype for getgrnam_r() is required */ +/* #undef NEED_GETGRNAM_R  */ +/* #undef NEED_GETGRGID_R  */ +/* #undef NEED_GETGRENT_R  */ +#define NEED_SETGRENT_R 1 +#define NEED_ENDGRENT_R 1 + +#define NEED_INNETGR_R 1 +/* #undef NEED_SETNETGRENT_R */ +#define NEED_ENDNETGRENT_R 1 + +/* #undef NEED_GETPWNAM_R */ +/* #undef NEED_GETPWUID_R */ +#define NEED_SETPWENT_R 1 +#define NEED_SETPASSENT_R 1 +#define NEED_SETPWENT_R 1 +/* #undef NEED_GETPWENT_R */ +#define NEED_ENDPWENT_R 1 + +#define NEED_SETPASSENT 1 + +/* #undef HAS_PW_CLASS */ + +/* #undef ssize_t */ +/* #undef uintptr_t */ + +/* Shut up warnings about sputaux in stdio.h on BSD/OS pre-4.1 */  +/* #undef SHUTUP_SPUTAUX */ +#ifdef SHUTUP_SPUTAUX +struct __sFILE; +extern __inline int __sputaux(int _c, struct __sFILE *_p); +#endif +#define BROKEN_IN6ADDR_INIT_MACROS 1 +#define HAVE_STRLCAT 1 +/* Shut up warnings about missing braces */ +/* #undef SHUTUP_MUTEX_INITIALIZER */ +#ifdef SHUTUP_MUTEX_INITIALIZER +#define LIBBIND_MUTEX_INITIALIZER { PTHREAD_MUTEX_INITIALIZER } +#else +#define LIBBIND_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER +#endif + diff --git a/usr/src/lib/libresolv2_joy/include/err.h b/usr/src/lib/libresolv2_joy/include/err.h new file mode 100644 index 0000000000..45992ea336 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/err.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2001 by Sun Microsystems, Inc. + * All rights reserved. + */ + +/*- + * Copyright (c) 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: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *    must display the following acknowledgement: + *	This product includes software developed by the University of + *	California, Berkeley and its contributors. + * 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 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + *	@(#)err.h	8.1 (Berkeley) 6/2/93 + */ + +#pragma ident	"%Z%%M%	%I%	%E% SMI" + +#ifndef _ERR_H_ +#define	_ERR_H_ + +#include <sys/cdefs.h> +#include <stdarg.h> + +__BEGIN_DECLS +__dead void	err __P((int, const char *, ...)) __attribute__((__volatile)); +__dead void	verr __P((int, const char *, va_list)) +		    __attribute__((__volatile)); +__dead void	errx __P((int, const char *, ...)) __attribute__((__volatile)); +__dead void	verrx __P((int, const char *, va_list)) +		    __attribute__((__volatile)); +void		warn __P((const char *, ...)); +void		vwarn __P((const char *, va_list)); +void		warnx __P((const char *, ...)); +void		vwarnx __P((const char *, va_list)); +__END_DECLS + +#endif /* !_ERR_H_ */ diff --git a/usr/src/lib/libresolv2_joy/include/fd_setsize.h b/usr/src/lib/libresolv2_joy/include/fd_setsize.h new file mode 100644 index 0000000000..0e21049742 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/fd_setsize.h @@ -0,0 +1,10 @@ +#ifndef _FD_SETSIZE_H +#define _FD_SETSIZE_H + +/*% + * If you need a bigger FD_SETSIZE, this is NOT the place to set it. + * This file is a fallback for BIND ports which don't specify their own. + */ + +#endif /* _FD_SETSIZE_H */ +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/hesiod.h b/usr/src/lib/libresolv2_joy/include/hesiod.h new file mode 100644 index 0000000000..d64c0c5e80 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/hesiod.h @@ -0,0 +1,39 @@ +/* + * 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. + */ + +/*! \file  + * \brief + * This file is primarily maintained by <tytso@mit.edu> and <ghudson@mit.edu>. + */ + +/* + * $Id: hesiod.h,v 1.4 2005/04/27 04:56:14 sra Exp $ + */ + +#ifndef _HESIOD_H_INCLUDED +#define _HESIOD_H_INCLUDED + +int		hesiod_init __P((void **)); +void		hesiod_end __P((void *)); +char *		hesiod_to_bind __P((void *, const char *, const char *)); +char **		hesiod_resolve __P((void *, const char *, const char *)); +void		hesiod_free_list __P((void *, char **)); +struct __res_state * __hesiod_res_get __P((void *)); +void		__hesiod_res_set __P((void *, struct __res_state *, +				      void (*)(void *))); + +#endif /*_HESIOD_H_INCLUDED*/ diff --git a/usr/src/lib/libresolv2_joy/include/irp.h b/usr/src/lib/libresolv2_joy/include/irp.h new file mode 100644 index 0000000000..1290bd068f --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/irp.h @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 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. + */ + +/* + * $Id: irp.h,v 1.4 2005/04/27 04:56:15 sra Exp $ + */ + +#ifndef _IRP_H_INCLUDED +#define _IRP_H_INCLUDED + +/*! \file */ + +#define IRPD_TIMEOUT 30			/*%< seconds */ +#define IRPD_MAXSESS 50			/*%< number of simultaneous sessions. */ +#define IRPD_PORT 6660			/*%< 10 times the number of the beast. */ +#define IRPD_PATH "/var/run/irpd"	/*%< af_unix socket path */ + +/* If sets the environment variable IRPDSERVER to an IP address +   (e.g. "192.5.5.1"), then that's the host the client expects irpd to be +   running on. */ +#define IRPD_HOST_ENV "IRPDSERVER" + +/* Protocol response codes.  */ +#define IRPD_WELCOME_CODE 200 +#define IRPD_NOT_WELCOME_CODE 500 + +#define IRPD_GETHOST_ERROR 510 +#define IRPD_GETHOST_NONE 210 +#define IRPD_GETHOST_OK 211 +#define IRPD_GETHOST_SETOK 212 + +#define IRPD_GETNET_ERROR 520 +#define IRPD_GETNET_NONE 220 +#define IRPD_GETNET_OK 221 +#define IRPD_GETNET_SETOK 222 + +#define IRPD_GETUSER_ERROR 530 +#define IRPD_GETUSER_NONE 230 +#define IRPD_GETUSER_OK 231 +#define IRPD_GETUSER_SETOK 232 + +#define IRPD_GETGROUP_ERROR 540 +#define IRPD_GETGROUP_NONE 240 +#define IRPD_GETGROUP_OK 241 +#define IRPD_GETGROUP_SETOK 242 + +#define IRPD_GETSERVICE_ERROR 550 +#define IRPD_GETSERVICE_NONE 250 +#define IRPD_GETSERVICE_OK 251 +#define IRPD_GETSERVICE_SETOK 252 + +#define IRPD_GETPROTO_ERROR 560 +#define IRPD_GETPROTO_NONE 260 +#define IRPD_GETPROTO_OK 261 +#define IRPD_GETPROTO_SETOK 262 + +#define IRPD_GETNETGR_ERROR 570 +#define IRPD_GETNETGR_NONE 270 +#define IRPD_GETNETGR_OK 271 +#define IRPD_GETNETGR_NOMORE 272 +#define IRPD_GETNETGR_MATCHES 273 +#define IRPD_GETNETGR_NOMATCH 274 +#define IRPD_GETNETGR_SETOK 275 +#define IRPD_GETNETGR_SETERR 276 + +#define	irs_irp_read_body __irs_irp_read_body +#define irs_irp_read_response __irs_irp_read_response +#define irs_irp_disconnect __irs_irp_disconnect +#define irs_irp_connect __irs_irp_connect +#define irs_irp_connection_setup __irs_irp_connection_setup +#define irs_irp_send_command __irs_irp_send_command + +struct irp_p; + +char   *irs_irp_read_body(struct irp_p *, size_t *); +int	irs_irp_read_response(struct irp_p *, char *, size_t); +void	irs_irp_disconnect(struct irp_p *); +int	irs_irp_connect(struct irp_p *); +int	irs_irp_is_connected(struct irp_p *); +int	irs_irp_connection_setup(struct irp_p *, int *); +#ifdef __GNUC__ +int	irs_irp_send_command(struct irp_p *, const char *, ...) +			     __attribute__((__format__(__printf__, 2, 3))); +#else +int	irs_irp_send_command(struct irp_p *, const char *, ...); +#endif +int	irs_irp_get_full_response(struct irp_p *, int *, char *, size_t, +				  char **, size_t *); +int	irs_irp_read_line(struct irp_p *, char *, int); + +#endif + +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/irs.h b/usr/src/lib/libresolv2_joy/include/irs.h new file mode 100644 index 0000000000..42d4890dfd --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/irs.h @@ -0,0 +1,348 @@ +/* + * 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. + */ + +/* + * $Id: irs.h,v 1.5 2005/04/27 04:56:15 sra Exp $ + */ + +#ifndef _IRS_H_INCLUDED +#define _IRS_H_INCLUDED + +/*! \file */ + +#include <sys/types.h> + +#include <arpa/nameser.h> + +#include <grp.h> +#include <netdb.h> +#include <resolv.h> +#include <pwd.h> + +/*% + * This is the group map class. + */ +struct irs_gr { +	void *		private; +	void		(*close) __P((struct irs_gr *)); +	struct group *	(*next) __P((struct irs_gr *)); +	struct group *	(*byname) __P((struct irs_gr *, const char *)); +	struct group *	(*bygid) __P((struct irs_gr *, gid_t)); +	int		(*list) __P((struct irs_gr *, const char *, +				     gid_t, gid_t *, int *)); +	void		(*rewind) __P((struct irs_gr *)); +	void		(*minimize) __P((struct irs_gr *)); +	struct __res_state * (*res_get) __P((struct irs_gr *)); +	void		(*res_set) __P((struct irs_gr *, res_state, +					void (*)(void *))); +}; + +/*% + * This is the password map class. + */ +struct irs_pw { +	void *		private; +	void		(*close) __P((struct irs_pw *)); +	struct passwd *	(*next) __P((struct irs_pw *)); +	struct passwd *	(*byname) __P((struct irs_pw *, const char *)); +	struct passwd *	(*byuid) __P((struct irs_pw *, uid_t)); +	void		(*rewind) __P((struct irs_pw *)); +	void		(*minimize) __P((struct irs_pw *)); +	struct __res_state * (*res_get) __P((struct irs_pw *)); +	void		(*res_set) __P((struct irs_pw *, res_state, +					void (*)(void *))); +}; + +/*% + * This is the service map class. + */ +struct irs_sv { +	void *		private; +	void		(*close) __P((struct irs_sv *)); +	struct servent *(*byname) __P((struct irs_sv *, +				       const char *, const char *)); +	struct servent *(*byport) __P((struct irs_sv *, int, const char *)); +	struct servent *(*next) __P((struct irs_sv *)); +	void		(*rewind) __P((struct irs_sv *)); +	void		(*minimize) __P((struct irs_sv *)); +	struct __res_state * (*res_get) __P((struct irs_sv *)); +	void		(*res_set) __P((struct irs_sv *, res_state, +					void (*)(void *))); +}; + +/*% + * This is the protocols map class. + */ +struct irs_pr { +	void *		private; +	void		(*close) __P((struct irs_pr *)); +	struct protoent	*(*byname) __P((struct irs_pr *, const char *)); +	struct protoent	*(*bynumber) __P((struct irs_pr *, int)); +	struct protoent	*(*next) __P((struct irs_pr *)); +	void		(*rewind) __P((struct irs_pr *)); +	void		(*minimize) __P((struct irs_pr *)); +	struct __res_state * (*res_get) __P((struct irs_pr *)); +	void		(*res_set) __P((struct irs_pr *, res_state, +					void (*)(void *))); +}; + +/*% + * This is the hosts map class. + */ +struct irs_ho { +	void *		private; +	void		(*close) __P((struct irs_ho *)); +	struct hostent *(*byname) __P((struct irs_ho *, const char *)); +	struct hostent *(*byname2) __P((struct irs_ho *, const char *, int)); +	struct hostent *(*byaddr) __P((struct irs_ho *, +				       const void *, int, int)); +	struct hostent *(*next) __P((struct irs_ho *)); +	void		(*rewind) __P((struct irs_ho *)); +	void		(*minimize) __P((struct irs_ho *)); +	struct __res_state * (*res_get) __P((struct irs_ho *)); +	void		(*res_set) __P((struct irs_ho *, res_state, +					void (*)(void *))); +	struct addrinfo *(*addrinfo) __P((struct irs_ho *, const char *, +					  const struct addrinfo *)); +}; + +/*% + * This is the networks map class. + */ +struct irs_nw { +	void *		private; +	void		(*close) __P((struct irs_nw *)); +	struct nwent *	(*byname) __P((struct irs_nw *, const char *, int)); +	struct nwent *	(*byaddr) __P((struct irs_nw *, void *, int, int)); +	struct nwent *	(*next) __P((struct irs_nw *)); +	void		(*rewind) __P((struct irs_nw *)); +	void		(*minimize) __P((struct irs_nw *)); +	struct __res_state * (*res_get) __P((struct irs_nw *)); +	void		(*res_set) __P((struct irs_nw *, res_state, +					void (*)(void *))); +}; + +/*% + * This is the netgroups map class. + */ +struct irs_ng { +	void *		private; +	void		(*close) __P((struct irs_ng *)); +	int		(*next) __P((struct irs_ng *, const char **, +				     const char **, const char **)); +	int		(*test) __P((struct irs_ng *, const char *, +				     const char *, const char *, +				     const char *)); +	void		(*rewind) __P((struct irs_ng *, const char *)); +	void		(*minimize) __P((struct irs_ng *)); +}; + +/*% + * This is the generic map class, which copies the front of all others. + */ +struct irs_map { +	void *		private; +	void		(*close) __P((void *)); +}; + +/*% + * This is the accessor class.  It contains pointers to all of the + * initializers for the map classes for a particular accessor. + */ +struct irs_acc { +	void *		private; +	void		(*close) __P((struct irs_acc *)); +	struct irs_gr *	(*gr_map) __P((struct irs_acc *)); +	struct irs_pw *	(*pw_map) __P((struct irs_acc *)); +	struct irs_sv *	(*sv_map) __P((struct irs_acc *)); +	struct irs_pr *	(*pr_map) __P((struct irs_acc *)); +	struct irs_ho *	(*ho_map) __P((struct irs_acc *)); +	struct irs_nw *	(*nw_map) __P((struct irs_acc *)); +	struct irs_ng *	(*ng_map) __P((struct irs_acc *)); +	struct __res_state * (*res_get) __P((struct irs_acc *)); +	void		(*res_set) __P((struct irs_acc *, res_state, +					void (*)(void *))); +}; + +/*% + * This is because the official definition of "struct netent" has no + * concept of CIDR even though it allows variant address families (on + * output but not input).  The compatibility stubs convert the structs + * below into "struct netent"'s. + */ +struct nwent { +	char		*n_name;	/*%< official name of net */ +	char		**n_aliases;	/*%< alias list */ +	int		n_addrtype;	/*%< net address type */ +	void		*n_addr;	/*%< network address */ +	int		n_length;	/*%< address length, in bits */ +}; + +/*% + * Hide external function names from POSIX. + */ +#define	irs_gen_acc	__irs_gen_acc +#define	irs_lcl_acc	__irs_lcl_acc +#define	irs_dns_acc	__irs_dns_acc +#define	irs_nis_acc	__irs_nis_acc +#define	irs_irp_acc	__irs_irp_acc +#define	irs_destroy	__irs_destroy +#define	irs_dns_gr	__irs_dns_gr +#define	irs_dns_ho	__irs_dns_ho +#define	irs_dns_nw	__irs_dns_nw +#define	irs_dns_pr	__irs_dns_pr +#define	irs_dns_pw	__irs_dns_pw +#define	irs_dns_sv	__irs_dns_sv +#define	irs_gen_gr	__irs_gen_gr +#define	irs_gen_ho	__irs_gen_ho +#define	irs_gen_ng	__irs_gen_ng +#define	irs_gen_nw	__irs_gen_nw +#define	irs_gen_pr	__irs_gen_pr +#define	irs_gen_pw	__irs_gen_pw +#define	irs_gen_sv	__irs_gen_sv +#define	irs_irp_get_full_response	__irs_irp_get_full_response +#define	irs_irp_gr	__irs_irp_gr +#define	irs_irp_ho	__irs_irp_ho +#define	irs_irp_is_connected	__irs_irp_is_connected +#define	irs_irp_ng	__irs_irp_ng +#define	irs_irp_nw	__irs_irp_nw +#define	irs_irp_pr	__irs_irp_pr +#define	irs_irp_pw	__irs_irp_pw +#define	irs_irp_read_line	__irs_irp_read_line +#define	irs_irp_sv	__irs_irp_sv +#define	irs_lcl_gr	__irs_lcl_gr +#define	irs_lcl_ho	__irs_lcl_ho +#define	irs_lcl_ng	__irs_lcl_ng +#define	irs_lcl_nw	__irs_lcl_nw +#define	irs_lcl_pr	__irs_lcl_pr +#define	irs_lcl_pw	__irs_lcl_pw +#define	irs_lcl_sv	__irs_lcl_sv +#define	irs_nis_gr	__irs_nis_gr +#define	irs_nis_ho	__irs_nis_ho +#define	irs_nis_ng	__irs_nis_ng +#define	irs_nis_nw	__irs_nis_nw +#define	irs_nis_pr	__irs_nis_pr +#define	irs_nis_pw	__irs_nis_pw +#define	irs_nis_sv	__irs_nis_sv +#define	net_data_create	__net_data_create +#define	net_data_destroy	__net_data_destroy +#define	net_data_minimize	__net_data_minimize + +/*% + * Externs. + */ +extern struct irs_acc *	irs_gen_acc __P((const char *, const char *)); +extern struct irs_acc *	irs_lcl_acc __P((const char *)); +extern struct irs_acc *	irs_dns_acc __P((const char *)); +extern struct irs_acc *	irs_nis_acc __P((const char *)); +extern struct irs_acc *	irs_irp_acc __P((const char *)); + +extern void		irs_destroy __P((void)); + +/*% + * These forward declarations are for the semi-private functions in + * the get*.c files. Each of these funcs implements the real get* + * functionality and the standard versions are just wrappers that + * call these. Apart from the wrappers, only irpd is expected to + * call these directly, hence these decls are put here and not in + * the /usr/include replacements. + */ + +struct net_data;			/*%< forward */ +/* + * net_data_create gets a singleton net_data object.  net_data_init + * creates as many net_data objects as times it is called.  Clients using + * the default interface will use net_data_create by default.  Servers will + * probably want net_data_init (one call per client) + */ +struct net_data *net_data_create __P((const char *)); +struct net_data *net_data_init __P((const char *)); +void		net_data_destroy __P((void *)); +	 +extern struct group    *getgrent_p __P((struct net_data *)); +extern struct group    *getgrnam_p __P((const char *, struct net_data *)); +extern struct group    *getgrgid_p __P((gid_t, struct net_data *)); +extern int 		setgroupent_p __P((int, struct net_data *)); +extern void 		endgrent_p __P((struct net_data *)); +extern int		getgrouplist_p __P((const char *, gid_t, gid_t *, int *, +					    struct net_data *)); + +#ifdef SETGRENT_VOID +extern void 		setgrent_p __P((struct net_data *)); +#else +extern int 		setgrent_p __P((struct net_data *)); +#endif + +extern struct hostent 	*gethostbyname_p __P((const char *, +					      struct net_data *)); +extern struct hostent 	*gethostbyname2_p __P((const char *, int, +					       struct net_data *)); +extern struct hostent 	*gethostbyaddr_p __P((const char *, int, int, +					      struct net_data *)); +extern struct hostent 	*gethostent_p __P((struct net_data *)); +extern void 		sethostent_p __P((int, struct net_data *)); +extern void 		endhostent_p __P((struct net_data *)); +extern struct hostent 	*getipnodebyname_p __P((const char *, int, int, int *, +					       struct net_data *)); +extern struct hostent 	*getipnodebyaddr_p __P((const void *, size_t, +					      int, int *, struct net_data *)); + +extern struct netent 	*getnetent_p __P((struct net_data *)); +extern struct netent 	*getnetbyname_p __P((const char *, struct net_data *)); +extern struct netent 	*getnetbyaddr_p __P((unsigned long, int, +					     struct net_data *)); +extern void		setnetent_p __P((int, struct net_data *)); +extern void		endnetent_p __P((struct net_data *)); + +extern void		setnetgrent_p __P((const char *, struct net_data *)); +extern void		endnetgrent_p __P((struct net_data *)); +extern int		innetgr_p __P((const char *, const char *, const char *, +				       const char *, struct net_data *)); +extern int		getnetgrent_p __P((const char **, const char **, +					   const char **, struct net_data *)); + +extern struct protoent  *getprotoent_p __P((struct net_data *)); +extern struct protoent  *getprotobyname_p __P((const char *, +					       struct net_data *)); +extern struct protoent	*getprotobynumber_p __P((int, struct net_data *)); +extern void		setprotoent_p __P((int, struct net_data *)); +extern void		endprotoent_p __P((struct net_data *)); + + +extern struct passwd 	*getpwent_p __P((struct net_data *)); +extern struct passwd 	*getpwnam_p __P((const char *, struct net_data *)); +extern struct passwd 	*getpwuid_p __P((uid_t, struct net_data *)); +extern int		setpassent_p __P((int, struct net_data *)); +extern void		endpwent_p __P((struct net_data *)); + +#ifdef SETPWENT_VOID +extern void		setpwent_p __P((struct net_data *)); +#else +extern int		setpwent_p __P((struct net_data *)); +#endif + +extern struct servent 	*getservent_p __P((struct net_data *)); +extern struct servent 	*getservbyname_p __P((const char *, const char *, +					      struct net_data *)); +extern struct servent 	*getservbyport_p __P((int, const char *, +					      struct net_data *)); +extern void		setservent_p __P((int, struct net_data *)); +extern void		endservent_p __P((struct net_data *)); + +#endif /*_IRS_H_INCLUDED*/ + +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/assertions.h b/usr/src/lib/libresolv2_joy/include/isc/assertions.h new file mode 100644 index 0000000000..68925e73b3 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/assertions.h @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2004, 2005, 2008  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 1997-2001  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. + */ + +/* + * $Id: assertions.h,v 1.5 2008/11/14 02:36:51 marka Exp $ + */ + +#ifndef ASSERTIONS_H +#define ASSERTIONS_H		1 + +typedef enum { +	assert_require, assert_ensure, assert_insist, assert_invariant +} assertion_type; + +typedef void (*assertion_failure_callback)(const char *, int, assertion_type, +					   const char *, int); + +/* coverity[+kill] */ +extern assertion_failure_callback __assertion_failed; +void set_assertion_failure_callback(assertion_failure_callback f); +const char *assertion_type_to_text(assertion_type type); + +#if defined(CHECK_ALL) || defined(__COVERITY__) +#define CHECK_REQUIRE		1 +#define CHECK_ENSURE		1 +#define CHECK_INSIST		1 +#define CHECK_INVARIANT		1 +#endif + +#if defined(CHECK_NONE) && !defined(__COVERITY__) +#define CHECK_REQUIRE		0 +#define CHECK_ENSURE		0 +#define CHECK_INSIST		0 +#define CHECK_INVARIANT		0 +#endif + +#ifndef CHECK_REQUIRE +#define CHECK_REQUIRE		1 +#endif + +#ifndef CHECK_ENSURE +#define CHECK_ENSURE		1 +#endif + +#ifndef CHECK_INSIST +#define CHECK_INSIST		1 +#endif + +#ifndef CHECK_INVARIANT +#define CHECK_INVARIANT		1 +#endif + +#if CHECK_REQUIRE != 0 +#define REQUIRE(cond) \ +	((void) ((cond) || \ +		 ((__assertion_failed)(__FILE__, __LINE__, assert_require, \ +				       #cond, 0), 0))) +#define REQUIRE_ERR(cond) \ +	((void) ((cond) || \ +		 ((__assertion_failed)(__FILE__, __LINE__, assert_require, \ +				       #cond, 1), 0))) +#else +#define REQUIRE(cond)		((void) (cond)) +#define REQUIRE_ERR(cond)	((void) (cond)) +#endif /* CHECK_REQUIRE */ + +#if CHECK_ENSURE != 0 +#define ENSURE(cond) \ +	((void) ((cond) || \ +		 ((__assertion_failed)(__FILE__, __LINE__, assert_ensure, \ +				       #cond, 0), 0))) +#define ENSURE_ERR(cond) \ +	((void) ((cond) || \ +		 ((__assertion_failed)(__FILE__, __LINE__, assert_ensure, \ +				       #cond, 1), 0))) +#else +#define ENSURE(cond)		((void) (cond)) +#define ENSURE_ERR(cond)	((void) (cond)) +#endif /* CHECK_ENSURE */ + +#if CHECK_INSIST != 0 +#define INSIST(cond) \ +	((void) ((cond) || \ +		 ((__assertion_failed)(__FILE__, __LINE__, assert_insist, \ +				       #cond, 0), 0))) +#define INSIST_ERR(cond) \ +	((void) ((cond) || \ +		 ((__assertion_failed)(__FILE__, __LINE__, assert_insist, \ +				       #cond, 1), 0))) +#else +#define INSIST(cond)		((void) (cond)) +#define INSIST_ERR(cond)	((void) (cond)) +#endif /* CHECK_INSIST */ + +#if CHECK_INVARIANT != 0 +#define INVARIANT(cond) \ +	((void) ((cond) || \ +		 ((__assertion_failed)(__FILE__, __LINE__, assert_invariant, \ +				       #cond, 0), 0))) +#define INVARIANT_ERR(cond) \ +	((void) ((cond) || \ +		 ((__assertion_failed)(__FILE__, __LINE__, assert_invariant, \ +				       #cond, 1), 0))) +#else +#define INVARIANT(cond)		((void) (cond)) +#define INVARIANT_ERR(cond)	((void) (cond)) +#endif /* CHECK_INVARIANT */ +#endif /* ASSERTIONS_H */ +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/ctl.h b/usr/src/lib/libresolv2_joy/include/isc/ctl.h new file mode 100644 index 0000000000..e2ba20201d --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/ctl.h @@ -0,0 +1,112 @@ +#ifndef ISC_CTL_H +#define ISC_CTL_H + +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 1998,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. + */ + +/* + * $Id: ctl.h,v 1.5 2005/04/27 04:56:17 sra Exp $ + */ + +/*! \file */ + +#include <sys/types.h> +#include <sys/socket.h> + +#include <isc/eventlib.h> + +/* Macros. */ + +#define	CTL_MORE	0x0001	/*%< More will be / should be sent. */ +#define	CTL_EXIT	0x0002	/*%< Close connection after this. */ +#define	CTL_DATA	0x0004	/*%< Go into / this is DATA mode. */ +/* Types. */ + +struct ctl_cctx; +struct ctl_sctx; +struct ctl_sess; +struct ctl_verb; + +enum ctl_severity { ctl_debug, ctl_warning, ctl_error }; + +typedef void (*ctl_logfunc)(enum ctl_severity, const char *, ...); + +typedef void (*ctl_verbfunc)(struct ctl_sctx *, struct ctl_sess *, +			     const struct ctl_verb *, const char *, +			     u_int, const void *, void *); + +typedef void (*ctl_srvrdone)(struct ctl_sctx *, struct ctl_sess *, void *); + +typedef void (*ctl_clntdone)(struct ctl_cctx *, void *, const char *, u_int); + +struct ctl_verb { +	const char *	name; +	ctl_verbfunc	func; +	const char *	help; +}; + +/* General symbols. */ + +#define	ctl_logger	__ctl_logger + +#ifdef __GNUC__ +void			ctl_logger(enum ctl_severity, const char *, ...) +				__attribute__((__format__(__printf__, 2, 3))); +#else +void			ctl_logger(enum ctl_severity, const char *, ...); +#endif + +/* Client symbols. */ + +#define	ctl_client	__ctl_client +#define	ctl_endclient	__ctl_endclient +#define	ctl_command	__ctl_command + +struct ctl_cctx *	ctl_client(evContext, const struct sockaddr *, size_t, +				   const struct sockaddr *, size_t, +				   ctl_clntdone, void *, +				   u_int, ctl_logfunc); +void			ctl_endclient(struct ctl_cctx *); +int			ctl_command(struct ctl_cctx *, const char *, size_t, +				    ctl_clntdone, void *); + +/* Server symbols. */ + +#define	ctl_server	__ctl_server +#define	ctl_endserver	__ctl_endserver +#define	ctl_response	__ctl_response +#define	ctl_sendhelp	__ctl_sendhelp +#define ctl_getcsctx	__ctl_getcsctx +#define ctl_setcsctx	__ctl_setcsctx + +struct ctl_sctx *	ctl_server(evContext, const struct sockaddr *, size_t, +				   const struct ctl_verb *, +				   u_int, u_int, +				   u_int, int, int, +				   ctl_logfunc, void *); +void			ctl_endserver(struct ctl_sctx *); +void			ctl_response(struct ctl_sess *, u_int, +				     const char *, u_int, const void *, +				     ctl_srvrdone, void *, +				     const char *, size_t); +void			ctl_sendhelp(struct ctl_sess *, u_int); +void *			ctl_getcsctx(struct ctl_sess *); +void *			ctl_setcsctx(struct ctl_sess *, void *); + +#endif /*ISC_CTL_H*/ + +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/dst.h b/usr/src/lib/libresolv2_joy/include/isc/dst.h new file mode 100644 index 0000000000..90a9e67468 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/dst.h @@ -0,0 +1,168 @@ +#ifndef DST_H +#define DST_H + +#ifndef HAS_DST_KEY +typedef struct dst_key { +	char	*dk_key_name;   /*%< name of the key */ +	int	dk_key_size;    /*%< this is the size of the key in bits */ +	int	dk_proto;       /*%< what protocols this key can be used for */ +	int	dk_alg;         /*%< algorithm number from key record */ +	u_int32_t dk_flags;     /*%< and the flags of the public key */ +	u_int16_t dk_id;        /*%< identifier of the key */ +} DST_KEY; +#endif /* HAS_DST_KEY */ +/* + * do not taint namespace + */ +#define	dst_bsafe_init		__dst_bsafe_init +#define	dst_buffer_to_key	__dst_buffer_to_key +#define	dst_check_algorithm	__dst_check_algorithm +#define	dst_compare_keys	__dst_compare_keys +#define	dst_cylink_init		__dst_cylink_init +#define	dst_dnskey_to_key	__dst_dnskey_to_key +#define	dst_eay_dss_init	__dst_eay_dss_init +#define	dst_free_key		__dst_free_key +#define	dst_generate_key	__dst_generate_key +#define	dst_hmac_md5_init	__dst_hmac_md5_init +#define	dst_init		__dst_init +#define	dst_key_to_buffer	__dst_key_to_buffer +#define	dst_key_to_dnskey	__dst_key_to_dnskey +#define	dst_read_key		__dst_read_key +#define	dst_rsaref_init		__dst_rsaref_init +#define	dst_s_build_filename	__dst_s_build_filename +#define	dst_s_calculate_bits	__dst_s_calculate_bits +#define	dst_s_conv_bignum_b64_to_u8	__dst_s_conv_bignum_b64_to_u8 +#define	dst_s_conv_bignum_u8_to_b64	__dst_s_conv_bignum_u8_to_b64 +#define	dst_s_dns_key_id	__dst_s_dns_key_id +#define	dst_s_dump		__dst_s_dump +#define	dst_s_filename_length	__dst_s_filename_length +#define	dst_s_fopen		__dst_s_fopen +#define	dst_s_get_int16		__dst_s_get_int16 +#define	dst_s_get_int32		__dst_s_get_int32 +#define	dst_s_id_calc		__dst_s_id_calc +#define	dst_s_put_int16		__dst_s_put_int16 +#define	dst_s_put_int32		__dst_s_put_int32 +#define	dst_s_quick_random	__dst_s_quick_random +#define	dst_s_quick_random_set	__dst_s_quick_random_set +#define	dst_s_random		__dst_s_random +#define	dst_s_semi_random	__dst_s_semi_random +#define	dst_s_verify_str	__dst_s_verify_str +#define	dst_sig_size		__dst_sig_size +#define	dst_sign_data		__dst_sign_data +#define	dst_verify_data		__dst_verify_data +#define	dst_write_key		__dst_write_key + +/*  + * DST Crypto API defintions  + */ +void     dst_init(void); +int      dst_check_algorithm(const int); + + +int dst_sign_data(const int,	 	/*!<   specifies INIT/UPDATE/FINAL/ALL  */ +		  DST_KEY *,	 	/*!<   the key to use  */ +		  void **,	 	/*!<   pointer to state structure  */ +		  const u_char *,	/*!<   data to be signed  */ +		  const int,	 	/*!<   length of input data  */ +		  u_char *,	 	/*!<   buffer to write signature to  */ +		  const int);	 	/*!<   size of output buffer  */ +int dst_verify_data(const int,	 	/*!<   specifies INIT/UPDATE/FINAL/ALL  */ +		    DST_KEY *,	 	/*!<   the key to use  */ +		    void **,	 	/*!<   pointer to state structure  */ +		    const u_char *,	/*!<   data to be verified  */ +		    const int,	 	/*!<   length of input data  */ +		    const u_char *,	/*!<   buffer containing signature  */ +		    const int);	 	/*!<   length of signature  */ +DST_KEY *dst_read_key(const char *,	/*!<   name of key  */ +		      const u_int16_t,	/*!<   key tag identifier  */ +		      const int,	/*!<   key algorithm  */ +		      const int);	/*!<   Private/PublicKey wanted */ +int      dst_write_key(const DST_KEY *,	/*!<   key to write out  */ +		       const int); 	/*!<   Public/Private  */ +DST_KEY *dst_dnskey_to_key(const char *,	/*!<   KEY record name  */ +			   const u_char *,	/*!<   KEY RDATA  */ +			   const int);		/*!<   size of input buffer */ +int      dst_key_to_dnskey(const DST_KEY *,	/*!<   key to translate  */ +			   u_char *,		/*!<   output buffer  */ +			   const int);		/*!<   size of out_storage */ +DST_KEY *dst_buffer_to_key(const char *,  	/*!<   name of the key  */ +			   const int,	  	/*!<   algorithm  */ +			   const int,	  	/*!<   dns flags  */ +			   const int,	  	/*!<   dns protocol  */ +			   const u_char *, 	/*!<   key in dns wire fmt  */ +			   const int);	  	/*!<   size of key  */ +int     dst_key_to_buffer(DST_KEY *, u_char *, int); + +DST_KEY *dst_generate_key(const char *,    	/*!<   name of new key  */ +			  const int,       	/*!<   key algorithm to generate  */ +			  const int,      	/*!<   size of new key  */ +			  const int,       	/*!<   alg dependent parameter */ +			  const int,     	/*!<   key DNS flags  */ +			  const int);		/*!<   key DNS protocol  */ +DST_KEY *dst_free_key(DST_KEY *); +int      dst_compare_keys(const DST_KEY *, const DST_KEY *); + +int	dst_sig_size(DST_KEY *); + + +/* support for dns key tags/ids */ +u_int16_t dst_s_dns_key_id(const u_char *, const int); +u_int16_t dst_s_id_calc(const u_char *, const int); + +/* Used by callers as well as by the library.  */ +#define RAW_KEY_SIZE    8192        /*%< large enough to store any key */ +/* DST_API control flags */ +/* These are used used in functions dst_sign_data and dst_verify_data */ +#define SIG_MODE_INIT		1  /*%< initialize digest */ +#define SIG_MODE_UPDATE		2  /*%< add data to digest */ +#define SIG_MODE_FINAL		4  /*%< generate/verify signature */ +#define SIG_MODE_ALL		(SIG_MODE_INIT|SIG_MODE_UPDATE|SIG_MODE_FINAL) + +/* Flags for dst_read_private_key()  */ +#define DST_FORCE_READ		0x1000000 +#define DST_CAN_SIGN		0x010F +#define DST_NO_AUTHEN		0x8000 +#define DST_EXTEND_FLAG         0x1000 +#define DST_STANDARD		0 +#define DST_PRIVATE             0x2000000 +#define DST_PUBLIC              0x4000000 +#define DST_RAND_SEMI           1 +#define DST_RAND_STD            2 +#define DST_RAND_KEY            3 +#define DST_RAND_DSS            4 + + +/* DST algorithm codes */ +#define KEY_RSA			1 +#define KEY_DH			2 +#define KEY_DSA			3 +#define KEY_PRIVATE		254 +#define KEY_EXPAND		255 +#define KEY_HMAC_MD5		157 +#define KEY_HMAC_SHA1		158 +#define UNKNOWN_KEYALG		0 +#define DST_MAX_ALGS            KEY_HMAC_SHA1 + +/* DST constants to locations in KEY record  changes in new KEY record */ +#define DST_FLAGS_SIZE		2 +#define DST_KEY_PROT		2 +#define DST_KEY_ALG		3 +#define DST_EXT_FLAG            4 +#define DST_KEY_START		4 + +#ifndef SIGN_F_NOKEY  +#define SIGN_F_NOKEY		0xC000 +#endif + +/* error codes from dst routines */ +#define SIGN_INIT_FAILURE	(-23) +#define SIGN_UPDATE_FAILURE	(-24) +#define SIGN_FINAL_FAILURE	(-25) +#define VERIFY_INIT_FAILURE	(-26) +#define VERIFY_UPDATE_FAILURE	(-27) +#define VERIFY_FINAL_FAILURE	(-28) +#define MISSING_KEY_OR_SIGNATURE (-30) +#define UNSUPPORTED_KEYALG	(-31) + +#endif /* DST_H */ +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/eventlib.h b/usr/src/lib/libresolv2_joy/include/isc/eventlib.h new file mode 100644 index 0000000000..a4cfdf9092 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/eventlib.h @@ -0,0 +1,206 @@ +/* + * Copyright (C) 2004, 2005, 2008  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 1995-1999, 2001, 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. + */ + +/* eventlib.h - exported interfaces for eventlib + * vix 09sep95 [initial] + * + * $Id: eventlib.h,v 1.7 2008/11/14 02:36:51 marka Exp $ + */ + +#ifndef _EVENTLIB_H +#define _EVENTLIB_H + +#include <sys/types.h> +#include <sys/uio.h> +#include <sys/time.h> +#include <stdio.h> + +#include <isc/platform.h> + +#ifndef __P +# define __EVENTLIB_P_DEFINED +# ifdef __STDC__ +#  define __P(x) x +# else +#  define __P(x) () +# endif +#endif + +/* In the absence of branded types... */ +typedef struct { void *opaque; } evConnID; +typedef struct { void *opaque; } evFileID; +typedef struct { void *opaque; } evStreamID; +typedef struct { void *opaque; } evTimerID; +typedef struct { void *opaque; } evWaitID; +typedef struct { void *opaque; } evContext; +typedef struct { void *opaque; } evEvent; + +#define	evInitID(id) ((id)->opaque = NULL) +#define	evTestID(id) ((id).opaque != NULL) + +typedef void (*evConnFunc)__P((evContext, void *, int, const void *, int, +			       const void *, int)); +typedef void (*evFileFunc)__P((evContext, void *, int, int)); +typedef	void (*evStreamFunc)__P((evContext, void *, int, int)); +typedef void (*evTimerFunc)__P((evContext, void *, +				struct timespec, struct timespec)); +typedef	void (*evWaitFunc)__P((evContext, void *, const void *)); + +typedef	struct { unsigned char mask[256/8]; } evByteMask; +#define	EV_BYTEMASK_BYTE(b) ((b) / 8) +#define	EV_BYTEMASK_MASK(b) (1 << ((b) % 8)) +#define	EV_BYTEMASK_SET(bm, b) \ +	((bm).mask[EV_BYTEMASK_BYTE(b)] |= EV_BYTEMASK_MASK(b)) +#define	EV_BYTEMASK_CLR(bm, b) \ +	((bm).mask[EV_BYTEMASK_BYTE(b)] &= ~EV_BYTEMASK_MASK(b)) +#define	EV_BYTEMASK_TST(bm, b) \ +	((bm).mask[EV_BYTEMASK_BYTE(b)] & EV_BYTEMASK_MASK(b)) + +#define	EV_POLL		1 +#define	EV_WAIT		2 +#define	EV_NULL		4 + +#define	EV_READ		1 +#define	EV_WRITE	2 +#define	EV_EXCEPT	4 + +#define EV_WASNONBLOCKING 8	/* Internal library use. */ + +/* eventlib.c */ +#define evCreate	__evCreate +#define evSetDebug	__evSetDebug +#define evDestroy	__evDestroy +#define evGetNext	__evGetNext +#define evDispatch	__evDispatch +#define evDrop		__evDrop +#define evMainLoop	__evMainLoop +#define evHighestFD	__evHighestFD +#define evGetOption	__evGetOption +#define evSetOption	__evSetOption + +int  evCreate __P((evContext *)); +void evSetDebug __P((evContext, int, FILE *)); +int  evDestroy __P((evContext)); +int  evGetNext __P((evContext, evEvent *, int)); +int  evDispatch __P((evContext, evEvent)); +void evDrop __P((evContext, evEvent)); +int  evMainLoop __P((evContext)); +int  evHighestFD __P((evContext)); +int  evGetOption __P((evContext *, const char *, int *)); +int  evSetOption __P((evContext *, const char *, int)); + +/* ev_connects.c */ +#define evListen	__evListen +#define evConnect	__evConnect +#define evCancelConn	__evCancelConn +#define evHold		__evHold +#define evUnhold	__evUnhold +#define evTryAccept	__evTryAccept + +int evListen __P((evContext, int, int, evConnFunc, void *, evConnID *)); +int evConnect __P((evContext, int, const void *, int, +		   evConnFunc, void *, evConnID *)); +int evCancelConn __P((evContext, evConnID)); +int evHold __P((evContext, evConnID)); +int evUnhold __P((evContext, evConnID)); +int evTryAccept __P((evContext, evConnID, int *)); + +/* ev_files.c */ +#define evSelectFD	__evSelectFD +#define evDeselectFD	__evDeselectFD + +int evSelectFD __P((evContext, int, int, evFileFunc, void *, evFileID *)); +int evDeselectFD __P((evContext, evFileID)); + +/* ev_streams.c */ +#define evConsIovec	__evConsIovec +#define evWrite		__evWrite +#define evRead		__evRead +#define evTimeRW	__evTimeRW +#define evUntimeRW	__evUntimeRW +#define	evCancelRW	__evCancelRW + +struct iovec evConsIovec __P((void *, size_t)); +int evWrite __P((evContext, int, const struct iovec *, int, +		 evStreamFunc func, void *, evStreamID *)); +int evRead __P((evContext, int, const struct iovec *, int, +		evStreamFunc func, void *, evStreamID *)); +int evTimeRW __P((evContext, evStreamID, evTimerID timer)); +int evUntimeRW __P((evContext, evStreamID)); +int evCancelRW __P((evContext, evStreamID)); + +/* ev_timers.c */ +#define evConsTime	__evConsTime +#define evAddTime	__evAddTime +#define evSubTime	__evSubTime +#define evCmpTime	__evCmpTime +#define	evTimeSpec	__evTimeSpec +#define	evTimeVal	__evTimeVal + +#define evNowTime		__evNowTime +#define evUTCTime		__evUTCTime +#define evLastEventTime		__evLastEventTime +#define evSetTimer		__evSetTimer +#define evClearTimer		__evClearTimer +#define evConfigTimer		__evConfigTimer +#define evResetTimer		__evResetTimer +#define evSetIdleTimer		__evSetIdleTimer +#define evClearIdleTimer	__evClearIdleTimer +#define evResetIdleTimer	__evResetIdleTimer +#define evTouchIdleTimer	__evTouchIdleTimer + +struct timespec evConsTime __P((time_t sec, long nsec)); +struct timespec evAddTime __P((struct timespec, struct timespec)); +struct timespec evSubTime __P((struct timespec, struct timespec)); +struct timespec evNowTime __P((void)); +struct timespec evUTCTime __P((void)); +struct timespec evLastEventTime __P((evContext)); +struct timespec evTimeSpec __P((struct timeval)); +struct timeval evTimeVal __P((struct timespec)); +int evCmpTime __P((struct timespec, struct timespec)); +int evSetTimer __P((evContext, evTimerFunc, void *, struct timespec, +		    struct timespec, evTimerID *)); +int evClearTimer __P((evContext, evTimerID)); +int evConfigTimer __P((evContext, evTimerID, const char *param, +		      int value)); +int evResetTimer __P((evContext, evTimerID, evTimerFunc, void *, +		      struct timespec, struct timespec)); +int evSetIdleTimer __P((evContext, evTimerFunc, void *, struct timespec, +			evTimerID *)); +int evClearIdleTimer __P((evContext, evTimerID)); +int evResetIdleTimer __P((evContext, evTimerID, evTimerFunc, void *, +			  struct timespec)); +int evTouchIdleTimer __P((evContext, evTimerID)); + +/* ev_waits.c */ +#define evWaitFor	__evWaitFor +#define evDo		__evDo +#define evUnwait	__evUnwait +#define evDefer		__evDefer + +int evWaitFor __P((evContext, const void *, evWaitFunc, void *, evWaitID *)); +int evDo __P((evContext, const void *)); +int evUnwait __P((evContext, evWaitID)); +int evDefer __P((evContext, evWaitFunc, void *)); + +#ifdef __EVENTLIB_P_DEFINED +# undef __P +#endif + +#endif /*_EVENTLIB_H*/ + +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/heap.h b/usr/src/lib/libresolv2_joy/include/isc/heap.h new file mode 100644 index 0000000000..384d507cf5 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/heap.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 1997,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. + */ + +typedef int (*heap_higher_priority_func)(void *, void *); +typedef void (*heap_index_func)(void *, int); +typedef void (*heap_for_each_func)(void *, void *); + +typedef struct heap_context { +	int array_size; +	int array_size_increment; +	int heap_size; +	void **heap; +	heap_higher_priority_func higher_priority; +	heap_index_func index; +} *heap_context; + +#define heap_new	__heap_new +#define heap_free	__heap_free +#define heap_insert	__heap_insert +#define heap_delete	__heap_delete +#define heap_increased	__heap_increased +#define heap_decreased	__heap_decreased +#define heap_element	__heap_element +#define heap_for_each	__heap_for_each + +heap_context	heap_new(heap_higher_priority_func, heap_index_func, int); +int		heap_free(heap_context); +int		heap_insert(heap_context, void *); +int		heap_delete(heap_context, int); +int		heap_increased(heap_context, int); +int		heap_decreased(heap_context, int); +void *		heap_element(heap_context, int); +int		heap_for_each(heap_context, heap_for_each_func, void *); + +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/irpmarshall.h b/usr/src/lib/libresolv2_joy/include/isc/irpmarshall.h new file mode 100644 index 0000000000..244b3e3460 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/irpmarshall.h @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 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. + */ + +/* + * $Id: irpmarshall.h,v 1.4 2005/04/27 04:56:17 sra Exp $ + */ + +#ifndef _IRPMARSHALL_H_INCLUDED +#define _IRPMARSHALL_H_INCLUDED + +/* Hide function names */ +#define irp_marshall_gr __irp_marshall_gr +#define irp_marshall_ho __irp_marshall_ho +#define irp_marshall_ne __irp_marshall_ne +#define irp_marshall_ng __irp_marshall_ng +#define irp_marshall_nw __irp_marshall_nw +#define irp_marshall_pr __irp_marshall_pr +#define irp_marshall_pw __irp_marshall_pw +#define irp_marshall_sv __irp_marshall_sv +#define irp_unmarshall_gr __irp_unmarshall_gr +#define irp_unmarshall_ho __irp_unmarshall_ho +#define irp_unmarshall_ne __irp_unmarshall_ne +#define irp_unmarshall_ng __irp_unmarshall_ng +#define irp_unmarshall_nw __irp_unmarshall_nw +#define irp_unmarshall_pr __irp_unmarshall_pr +#define irp_unmarshall_pw __irp_unmarshall_pw +#define irp_unmarshall_sv __irp_unmarshall_sv + +#define MAXPADDRSIZE (sizeof "255.255.255.255" + 1) +#define ADDR_T_STR(x) (x == AF_INET ? "AF_INET" :\ +		       (x == AF_INET6 ? "AF_INET6" : "UNKNOWN")) + +/* See comment below on usage */ +int irp_marshall_pw(const struct passwd *, char **, size_t *); +int irp_unmarshall_pw(struct passwd *, char *); +int irp_marshall_gr(const struct group *, char **, size_t *); +int irp_unmarshall_gr(struct group *, char *); +int irp_marshall_sv(const struct servent *, char **, size_t *); +int irp_unmarshall_sv(struct servent *, char *); +int irp_marshall_pr(struct protoent *, char **, size_t *); +int irp_unmarshall_pr(struct protoent *, char *); +int irp_marshall_ho(struct hostent *, char **, size_t *); +int irp_unmarshall_ho(struct hostent *, char *); +int irp_marshall_ng(const char *, const char *, const char *, +		    char **, size_t *); +int irp_unmarshall_ng(const char **, const char **, const char **, char *); +int irp_marshall_nw(struct nwent *, char **, size_t *); +int irp_unmarshall_nw(struct nwent *, char *); +int irp_marshall_ne(struct netent *, char **, size_t *); +int irp_unmarshall_ne(struct netent *, char *); + +/*! \file + * \brief + * Functions to marshall and unmarshall various system data structures. We + * use a printable ascii format that is as close to various system config + * files as reasonable (e.g. /etc/passwd format). + * + * We are not forgiving with unmarhsalling misformatted buffers. In + * particular whitespace in fields is not ignored. So a formatted password + * entry "brister  :1364:100:...." will yield a username of "brister   " + * + * We potentially do a lot of mallocs to fill fields that are of type + * (char **) like a hostent h_addr field. Building (for example) the + * h_addr field and its associated addresses all in one buffer is + * certainly possible, but not done here. + * + * The following description is true for all the marshalling functions: + * + * int irp_marshall_XX(struct yyyy *XX, char **buffer, size_t *len); + * + * The argument XX (of type struct passwd for example) is marshalled in the + * buffer pointed at by *BUFFER, which is of length *LEN. Returns 0 + * on success and -1 on failure. Failure will occur if *LEN is + * smaller than needed. + * + * If BUFFER is NULL, then *LEN is set to the size of the buffer + * needed to marshall the data and no marshalling is actually done. + * + * If *BUFFER is NULL, then a buffer large enough will be allocated + * with memget() and the size allocated will be stored in *LEN. An extra 2 + * bytes will be allocated for the client to append CRLF if wanted. The + * value of *LEN will include these two bytes. + * + * All the marshalling functions produce a buffer with the fields + * separated by colons (except for the hostent marshalling, which uses '@' + * to separate fields). Fields that have multiple subfields (like the + * gr_mem field in struct group) have their subparts separated by + * commas. + * + * int irp_unmarshall_XX(struct YYYYY *XX, char *buffer); + * + * The unmashalling functions break apart the buffer and store the + * values in the struct pointed to by XX. All pointer values inside + * XX are allocated with malloc. All arrays of pointers have a NULL + * as the last element. + */ + +#endif diff --git a/usr/src/lib/libresolv2_joy/include/isc/list.h b/usr/src/lib/libresolv2_joy/include/isc/list.h new file mode 100644 index 0000000000..5fe9031141 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/list.h @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 1997,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 LIST_H +#define LIST_H 1 +#include <isc/assertions.h> + +#define LIST(type) struct { type *head, *tail; } +#define INIT_LIST(list) \ +	do { (list).head = NULL; (list).tail = NULL; } while (0) + +#define LINK(type) struct { type *prev, *next; } +#define INIT_LINK_TYPE(elt, link, type) \ +	do { \ +		(elt)->link.prev = (type *)(-1); \ +		(elt)->link.next = (type *)(-1); \ +	} while (0) +#define INIT_LINK(elt, link) \ +	INIT_LINK_TYPE(elt, link, void) +#define LINKED(elt, link) ((void *)((elt)->link.prev) != (void *)(-1) && \ +			   (void *)((elt)->link.next) != (void *)(-1)) + +#define HEAD(list) ((list).head) +#define TAIL(list) ((list).tail) +#define EMPTY(list) ((list).head == NULL) + +#define PREPEND(list, elt, link) \ +	do { \ +		INSIST(!LINKED(elt, link));\ +		if ((list).head != NULL) \ +			(list).head->link.prev = (elt); \ +		else \ +			(list).tail = (elt); \ +		(elt)->link.prev = NULL; \ +		(elt)->link.next = (list).head; \ +		(list).head = (elt); \ +	} while (0) + +#define APPEND(list, elt, link) \ +	do { \ +		INSIST(!LINKED(elt, link));\ +		if ((list).tail != NULL) \ +			(list).tail->link.next = (elt); \ +		else \ +			(list).head = (elt); \ +		(elt)->link.prev = (list).tail; \ +		(elt)->link.next = NULL; \ +		(list).tail = (elt); \ +	} while (0) + +#define UNLINK_TYPE(list, elt, link, type) \ +	do { \ +		INSIST(LINKED(elt, link));\ +		if ((elt)->link.next != NULL) \ +			(elt)->link.next->link.prev = (elt)->link.prev; \ +		else { \ +			INSIST((list).tail == (elt)); \ +			(list).tail = (elt)->link.prev; \ +		} \ +		if ((elt)->link.prev != NULL) \ +			(elt)->link.prev->link.next = (elt)->link.next; \ +		else { \ +			INSIST((list).head == (elt)); \ +			(list).head = (elt)->link.next; \ +		} \ +		INIT_LINK_TYPE(elt, link, type); \ +	} while (0) +#define UNLINK(list, elt, link) \ +	UNLINK_TYPE(list, elt, link, void) + +#define PREV(elt, link) ((elt)->link.prev) +#define NEXT(elt, link) ((elt)->link.next) + +#define INSERT_BEFORE(list, before, elt, link) \ +	do { \ +		INSIST(!LINKED(elt, link));\ +		if ((before)->link.prev == NULL) \ +			PREPEND(list, elt, link); \ +		else { \ +			(elt)->link.prev = (before)->link.prev; \ +			(before)->link.prev = (elt); \ +			(elt)->link.prev->link.next = (elt); \ +			(elt)->link.next = (before); \ +		} \ +	} while (0) + +#define INSERT_AFTER(list, after, elt, link) \ +	do { \ +		INSIST(!LINKED(elt, link));\ +		if ((after)->link.next == NULL) \ +			APPEND(list, elt, link); \ +		else { \ +			(elt)->link.next = (after)->link.next; \ +			(after)->link.next = (elt); \ +			(elt)->link.next->link.prev = (elt); \ +			(elt)->link.prev = (after); \ +		} \ +	} while (0) + +#define ENQUEUE(list, elt, link) APPEND(list, elt, link) +#define DEQUEUE(list, elt, link) UNLINK(list, elt, link) + +#endif /* LIST_H */ +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/logging.h b/usr/src/lib/libresolv2_joy/include/isc/logging.h new file mode 100644 index 0000000000..c539443ff8 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/logging.h @@ -0,0 +1,113 @@ +/* + * 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 LOGGING_H +#define LOGGING_H + +#include <sys/types.h> +#include <stdio.h> +#include <stdarg.h> +#include <unistd.h> + +#define log_critical		(-5) +#define log_error   		(-4) +#define log_warning 		(-3) +#define log_notice  		(-2) +#define log_info  		(-1) +#define log_debug(level)	(level) + +typedef enum { log_syslog, log_file, log_null } log_channel_type; + +#define LOG_MAX_VERSIONS 99 + +#define LOG_CLOSE_STREAM		0x0001 +#define LOG_TIMESTAMP			0x0002 +#define LOG_TRUNCATE			0x0004 +#define LOG_USE_CONTEXT_LEVEL		0x0008 +#define LOG_PRINT_LEVEL			0x0010 +#define LOG_REQUIRE_DEBUG		0x0020 +#define LOG_CHANNEL_BROKEN		0x0040 +#define LOG_PRINT_CATEGORY		0x0080 +#define LOG_CHANNEL_OFF			0x0100 + +typedef struct log_context *log_context; +typedef struct log_channel *log_channel; + +#define LOG_OPTION_DEBUG		0x01 +#define LOG_OPTION_LEVEL		0x02 + +#define log_open_stream		__log_open_stream +#define log_close_stream	__log_close_stream +#define log_get_stream		__log_get_stream +#define log_get_filename	__log_get_filename +#define log_check_channel	__log_check_channel +#define log_check		__log_check +#define log_vwrite		__log_vwrite +#define log_write		__log_write +#define log_new_context		__log_new_context +#define log_free_context	__log_free_context +#define log_add_channel		__log_add_channel +#define log_remove_channel	__log_remove_channel +#define log_option		__log_option +#define log_category_is_active	__log_category_is_active +#define log_new_syslog_channel	__log_new_syslog_channel +#define log_new_file_channel	__log_new_file_channel +#define log_set_file_owner	__log_set_file_owner +#define log_new_null_channel	__log_new_null_channel +#define log_inc_references	__log_inc_references +#define log_dec_references	__log_dec_references +#define log_get_channel_type	__log_get_channel_type +#define log_free_channel	__log_free_channel +#define log_close_debug_channels	__log_close_debug_channels + +FILE *			log_open_stream(log_channel); +int			log_close_stream(log_channel); +FILE *			log_get_stream(log_channel); +char *			log_get_filename(log_channel); +int			log_check_channel(log_context, int, log_channel); +int			log_check(log_context, int, int); +#ifdef __GNUC__ +void			log_vwrite(log_context, int, int, const char *,  +				   va_list args) +				__attribute__((__format__(__printf__, 4, 0))); +void			log_write(log_context, int, int, const char *, ...) +				__attribute__((__format__(__printf__, 4, 5))); +#else +void			log_vwrite(log_context, int, int, const char *,  +				   va_list args); +void			log_write(log_context, int, int, const char *, ...); +#endif +int			log_new_context(int, char **, log_context *); +void			log_free_context(log_context); +int			log_add_channel(log_context, int, log_channel); +int			log_remove_channel(log_context, int, log_channel); +int			log_option(log_context, int, int); +int			log_category_is_active(log_context, int); +log_channel		log_new_syslog_channel(unsigned int, int, int); +log_channel		log_new_file_channel(unsigned int, int, const char *, +					     FILE *, unsigned int, +					     unsigned long); +int			log_set_file_owner(log_channel, uid_t, gid_t); +log_channel		log_new_null_channel(void); +int			log_inc_references(log_channel); +int			log_dec_references(log_channel); +log_channel_type	log_get_channel_type(log_channel); +int			log_free_channel(log_channel); +void			log_close_debug_channels(log_context); + +#endif /* !LOGGING_H */ +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/memcluster.h b/usr/src/lib/libresolv2_joy/include/isc/memcluster.h new file mode 100644 index 0000000000..0923deb5e7 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/memcluster.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 1997,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 MEMCLUSTER_H +#define MEMCLUSTER_H + +#include <stdio.h> + +#define meminit		__meminit +#ifdef MEMCLUSTER_DEBUG +#define memget(s)	__memget_debug(s, __FILE__, __LINE__) +#define memput(p, s)	__memput_debug(p, s, __FILE__, __LINE__) +#else /*MEMCLUSTER_DEBUG*/ +#ifdef MEMCLUSTER_RECORD +#define memget(s)	__memget_record(s, __FILE__, __LINE__) +#define memput(p, s)	__memput_record(p, s, __FILE__, __LINE__) +#else /*MEMCLUSTER_RECORD*/ +#define memget		__memget +#define memput		__memput +#endif /*MEMCLUSTER_RECORD*/ +#endif /*MEMCLUSTER_DEBUG*/ +#define memstats	__memstats +#define memactive	__memactive + +int	meminit(size_t, size_t); +void *	__memget(size_t); +void 	__memput(void *, size_t); +void *	__memget_debug(size_t, const char *, int); +void 	__memput_debug(void *, size_t, const char *, int); +void *	__memget_record(size_t, const char *, int); +void 	__memput_record(void *, size_t, const char *, int); +void 	memstats(FILE *); +int	memactive(void); + +#endif /* MEMCLUSTER_H */ +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/misc.h b/usr/src/lib/libresolv2_joy/include/isc/misc.h new file mode 100644 index 0000000000..b54f4ee6ed --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/misc.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2004, 2005, 2008  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 1995-2001, 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. + */ + +/* + * $Id: misc.h,v 1.7 2008/11/14 02:36:51 marka Exp $ + */ + +#ifndef _ISC_MISC_H +#define _ISC_MISC_H + +/*! \file */ + +#include <stdio.h> +#include <sys/types.h> + +#define	bitncmp		__bitncmp +/*#define isc_movefile	__isc_movefile */ + +extern int		bitncmp(const void *, const void *, int); +extern int		isc_movefile(const char *, const char *); + +extern int		isc_gethexstring(unsigned char *, size_t, int, FILE *, +					 int *); +extern void		isc_puthexstring(FILE *, const unsigned char *, size_t, +					 size_t, size_t, const char *); +extern void		isc_tohex(const unsigned char *, size_t, char *); + +#endif /*_ISC_MISC_H*/ + +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/isc/platform.h b/usr/src/lib/libresolv2_joy/include/isc/platform.h new file mode 100644 index 0000000000..2fc59b61a8 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/platform.h @@ -0,0 +1,42 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + + +/* + * Copyright (C) 2008  Internet Systems Consortium, Inc. ("ISC") + * + * 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. + */ + +/* $Id: platform.h.in,v 1.3 2008/01/23 02:15:56 tbox Exp $ */ + +/*! \file */ + +#ifndef ISC_PLATFORM_H +#define ISC_PLATFORM_H + +/* + * Define if the OS does not define struct timespec. + */ +#undef ISC_PLATFORM_NEEDTIMESPEC +#ifdef ISC_PLATFORM_NEEDTIMESPEC +#include <time.h>               /* For time_t */ +struct timespec { +	time_t  tv_sec;         /* seconds */ +	long    tv_nsec;        /* nanoseconds */ +}; +#endif + +#endif diff --git a/usr/src/lib/libresolv2_joy/include/isc/tree.h b/usr/src/lib/libresolv2_joy/include/isc/tree.h new file mode 100644 index 0000000000..96feaca68d --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/isc/tree.h @@ -0,0 +1,59 @@ +/* tree.h - declare structures used by tree library + * + * vix 22jan93 [revisited; uses RCS, ANSI, POSIX; has bug fixes] + * vix 27jun86 [broken out of tree.c] + * + * $Id: tree.h,v 1.3 2005/04/27 04:56:18 sra Exp $ + */ + + +#ifndef	_TREE_H_INCLUDED +#define	_TREE_H_INCLUDED + + +#ifndef __P +# if defined(__STDC__) || defined(__GNUC__) +#  define __P(x) x +# else +#  define __P(x) () +# endif +#endif + +/*% + * tree_t is our package-specific anonymous pointer. + */ +#if defined(__STDC__) || defined(__GNUC__) +typedef	void *tree_t; +#else +typedef	char *tree_t; +#endif + +/*% + * Do not taint namespace + */ +#define	tree_add	__tree_add +#define	tree_delete	__tree_delete +#define	tree_init	__tree_init +#define	tree_mung	__tree_mung +#define	tree_srch	__tree_srch +#define	tree_trav	__tree_trav + + +typedef	struct tree_s { +		tree_t		data; +		struct tree_s	*left, *right; +		short		bal; +	} +	tree; + + +void	tree_init	__P((tree **)); +tree_t	tree_srch	__P((tree **, int (*)(), tree_t)); +tree_t	tree_add	__P((tree **, int (*)(), tree_t, void (*)())); +int	tree_delete	__P((tree **, int (*)(), tree_t, void (*)())); +int	tree_trav	__P((tree **, int (*)())); +void	tree_mung	__P((tree **, void (*)())); + + +#endif	/* _TREE_H_INCLUDED */ +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/make_os_version b/usr/src/lib/libresolv2_joy/include/make_os_version new file mode 100755 index 0000000000..3654490fee --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/make_os_version @@ -0,0 +1,34 @@ +#!/bin/sh + +# Copyright (c) 1999 by Sun Microsystems, Inc. +# All rights reserved. +# +#pragma ident	"%Z%%M%	%I%	%E% SMI" + +UNAME_R=`/usr/bin/uname -r` + +OS_MAJOR=`echo $UNAME_R | /usr/bin/sed -e 's/^\([^.]*\).*/\1/'` +OS_MINOR=`echo $UNAME_R | /usr/bin/sed -e 's/^[^.]*\.\([^.]*\).*/\1/'` +OS_VERSION=`echo $UNAME_R | tr '.' '_'` + +cat <<EOF > new_os_version.h +#ifndef OS_VERSION_H +#define OS_VERSION_H + +#define SUNOS_$OS_VERSION +#define OS_MAJOR $OS_MAJOR +#define OS_MINOR $OS_MINOR + +#endif +EOF + +if [ -f os_version.h ]; then +	if /usr/bin/cmp -s new_os_version.h os_version.h; then +		/usr/bin/rm -f new_os_version.h +	else +		/usr/bin/rm -f os_version.h +		/usr/bin/mv new_os_version.h os_version.h +	fi +else +	/usr/bin/mv new_os_version.h os_version.h +fi diff --git a/usr/src/lib/libresolv2_joy/include/make_os_version.sh b/usr/src/lib/libresolv2_joy/include/make_os_version.sh new file mode 100644 index 0000000000..3654490fee --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/make_os_version.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# Copyright (c) 1999 by Sun Microsystems, Inc. +# All rights reserved. +# +#pragma ident	"%Z%%M%	%I%	%E% SMI" + +UNAME_R=`/usr/bin/uname -r` + +OS_MAJOR=`echo $UNAME_R | /usr/bin/sed -e 's/^\([^.]*\).*/\1/'` +OS_MINOR=`echo $UNAME_R | /usr/bin/sed -e 's/^[^.]*\.\([^.]*\).*/\1/'` +OS_VERSION=`echo $UNAME_R | tr '.' '_'` + +cat <<EOF > new_os_version.h +#ifndef OS_VERSION_H +#define OS_VERSION_H + +#define SUNOS_$OS_VERSION +#define OS_MAJOR $OS_MAJOR +#define OS_MINOR $OS_MINOR + +#endif +EOF + +if [ -f os_version.h ]; then +	if /usr/bin/cmp -s new_os_version.h os_version.h; then +		/usr/bin/rm -f new_os_version.h +	else +		/usr/bin/rm -f os_version.h +		/usr/bin/mv new_os_version.h os_version.h +	fi +else +	/usr/bin/mv new_os_version.h os_version.h +fi diff --git a/usr/src/lib/libresolv2_joy/include/port_after.h b/usr/src/lib/libresolv2_joy/include/port_after.h new file mode 100644 index 0000000000..c3abf4b334 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/port_after.h @@ -0,0 +1,539 @@ +/* + * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. + */ + +/* + * Copyright (C) 2004-2008  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2001-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. + */ + +/* $Id: port_after.h.in,v 1.60 2008/02/28 05:34:17 marka Exp $ */ + +#ifndef port_after_h +#define port_after_h + +#include <stdio.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/param.h> +#include <sys/time.h> +#if (!defined(BSD)) || (BSD < 199306) +#include <sys/bitypes.h> +#endif +#ifdef HAVE_INTTYPES_H +#include <inttypes.h> +#endif +#ifdef HAVE_SYS_SELECT_H +#include <sys/select.h> +#endif /* HAVE_SYS_SELECT_H */ + +#ifdef REENABLE_SEND +#undef send +#endif + +#undef NEED_PSELECT +#undef HAVE_SA_LEN +#undef HAVE_MINIMUM_IFREQ +#define NEED_DAEMON 1 +#undef NEED_STRSEP +#undef NEED_STRERROR +#ifdef NEED_STRERROR +const char *isc_strerror(int); +#define strerror isc_strerror +#endif +/* HAS_INET6_STRUCTS and HAVE_SIN6_SCOPE_ID are defined by port_ipv6.h + * #define HAS_INET6_STRUCTS 1 + * #define HAVE_SIN6_SCOPE_ID 1 + */ +#include <port_ipv6.h> + +#undef NEED_IN6ADDR_ANY +#undef HAS_IN_ADDR6 +#define HAVE_SOCKADDR_STORAGE 1 +#undef NEED_GETTIMEOFDAY +#define HAVE_STRNDUP +#undef USE_FIONBIO_IOCTL +#undef INNETGR_ARGS + +#undef USE_IFNAMELINKID +#define PORT_NONBLOCK O_NONBLOCK + +#ifndef _POSIX_PATH_MAX +#define _POSIX_PATH_MAX 255 +#endif +#ifndef PATH_MAX +#define PATH_MAX _POSIX_PATH_MAX +#endif + +/* + * We need to know the IPv6 address family number even on IPv4-only systems. + * Note that this is NOT a protocol constant, and that if the system has its + * own AF_INET6, different from ours below, all of BIND's libraries and + * executables will need to be recompiled after the system <sys/socket.h> + * has had this type added.  The type number below is correct on most BSD- + * derived systems for which AF_INET6 is defined. + */ +#ifndef AF_INET6 +#define AF_INET6        24 +#endif + +#ifndef PF_INET6 +#define PF_INET6        AF_INET6 +#endif + +#ifdef HAS_IN_ADDR6 +/* Map to pre-RFC structure. */ +#define in6_addr in_addr6 +#endif + +#ifndef HAS_INET6_STRUCTS +/* Replace with structure from later rev of O/S if known. */ +struct in6_addr { +	u_int8_t        s6_addr[16]; +}; + +#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 }} + +/* Replace with structure from later rev of O/S if known. */ +struct sockaddr_in6 { +#ifdef  HAVE_SA_LEN +	u_int8_t        sin6_len;       /* length of this struct */ +	u_int8_t        sin6_family;    /* AF_INET6 */ +#else +	u_int16_t       sin6_family;    /* AF_INET6 */ +#endif +	u_int16_t       sin6_port;      /* transport layer port # */ +	u_int32_t       sin6_flowinfo;  /* IPv6 flow information */ +	struct in6_addr sin6_addr;      /* IPv6 address */ +	u_int32_t       sin6_scope_id;  /* set of interfaces for a scope */ +}; +#endif  /* HAS_INET6_STRUCTS */ + +#ifdef BROKEN_IN6ADDR_INIT_MACROS +#undef IN6ADDR_ANY_INIT +#undef IN6ADDR_LOOPBACK_INIT +#endif + +#ifdef _AIX +#ifndef IN6ADDR_ANY_INIT +#define IN6ADDR_ANY_INIT {{{ 0, 0, 0, 0 }}} +#endif +#ifndef IN6ADDR_LOOPBACK_INIT +#if BYTE_ORDER == BIG_ENDIAN +#define IN6ADDR_LOOPBACK_INIT {{{ 0, 0, 0, 1 }}} +#else +#define IN6ADDR_LOOPBACK_INIT {{{0, 0, 0, 0x01000000}}} +#endif +#endif +#endif + +#ifndef IN6ADDR_ANY_INIT +#ifdef s6_addr +#define IN6ADDR_ANY_INIT \ +	{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ +	    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}} +#else +#define IN6ADDR_ANY_INIT \ +	{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ +	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }} +#endif + +#endif +#ifndef IN6ADDR_LOOPBACK_INIT +#ifdef s6_addr +#define IN6ADDR_LOOPBACK_INIT \ +	{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ +	    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}} +#else +#define IN6ADDR_LOOPBACK_INIT \ +	{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ +	   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }} +#endif +#endif + +#ifndef HAVE_SOCKADDR_STORAGE +#define __SS_MAXSIZE 128 +#define __SS_ALLIGSIZE (sizeof (long)) + +struct sockaddr_storage { +#ifdef  HAVE_SA_LEN +	u_int8_t        ss_len;       /* address length */ +	u_int8_t        ss_family;    /* address family */ +	char            __ss_pad1[__SS_ALLIGSIZE - 2 * sizeof(u_int8_t)]; +	long            __ss_align; +	char            __ss_pad2[__SS_MAXSIZE - 2 * __SS_ALLIGSIZE]; +#else +	u_int16_t       ss_family;    /* address family */ +	char            __ss_pad1[__SS_ALLIGSIZE - sizeof(u_int16_t)]; +	long            __ss_align; +	char            __ss_pad2[__SS_MAXSIZE - 2 * __SS_ALLIGSIZE]; +#endif +}; +#endif + + +#if !defined(HAS_INET6_STRUCTS) || defined(NEED_IN6ADDR_ANY) +#define in6addr_any isc_in6addr_any +extern const struct in6_addr in6addr_any; +#endif + +/* + * IN6_ARE_ADDR_EQUAL, IN6_IS_ADDR_UNSPECIFIED, IN6_IS_ADDR_V4COMPAT and + * IN6_IS_ADDR_V4MAPPED are broken in glibc 2.1. + */ +#ifdef __GLIBC__ +#if __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 2) +#undef IN6_ARE_ADDR_EQUAL +#undef IN6_IS_ADDR_UNSPECIFIED +#undef IN6_IS_ADDR_V4COMPAT +#undef IN6_IS_ADDR_V4MAPPED +#endif +#endif + +#ifndef IN6_ARE_ADDR_EQUAL +#define IN6_ARE_ADDR_EQUAL(a,b) \ +   (memcmp(&(a)->s6_addr[0], &(b)->s6_addr[0], sizeof(struct in6_addr)) == 0) +#endif + +#ifndef IN6_IS_ADDR_UNSPECIFIED +#define IN6_IS_ADDR_UNSPECIFIED(a)      \ +	IN6_ARE_ADDR_EQUAL(a, &in6addr_any) +#endif + +#ifndef IN6_IS_ADDR_LOOPBACK +extern const struct in6_addr isc_in6addr_loopback; +#define IN6_IS_ADDR_LOOPBACK(a) \ +	IN6_ARE_ADDR_EQUAL(a, &isc_in6addr_loopback) +#endif + +#ifndef IN6_IS_ADDR_V4MAPPED +#define IN6_IS_ADDR_V4MAPPED(a)	\ +	((a)->s6_addr[0] == 0x00 && (a)->s6_addr[1] == 0x00 && \ +	(a)->s6_addr[2] == 0x00 && (a)->s6_addr[3] == 0x00 && \ +	(a)->s6_addr[4] == 0x00 && (a)->s6_addr[5] == 0x00 && \ +	(a)->s6_addr[6] == 0x00 && (a)->s6_addr[9] == 0x00 && \ +	(a)->s6_addr[8] == 0x00 && (a)->s6_addr[9] == 0x00 && \ +	(a)->s6_addr[10] == 0xff && (a)->s6_addr[11] == 0xff) +#endif + +#ifndef IN6_IS_ADDR_SITELOCAL +#define IN6_IS_ADDR_SITELOCAL(a)        \ +	(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0)) +#endif + +#ifndef IN6_IS_ADDR_LINKLOCAL +#define IN6_IS_ADDR_LINKLOCAL(a)        \ +	(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80)) +#endif + +#ifndef IN6_IS_ADDR_MULTICAST +#define IN6_IS_ADDR_MULTICAST(a)        ((a)->s6_addr[0] == 0xff) +#endif + +#ifndef __IPV6_ADDR_MC_SCOPE +#define __IPV6_ADDR_MC_SCOPE(a)         ((a)->s6_addr[1] & 0x0f) +#endif + +#ifndef __IPV6_ADDR_SCOPE_SITELOCAL +#define __IPV6_ADDR_SCOPE_SITELOCAL 0x05 +#endif +#ifndef __IPV6_ADDR_SCOPE_ORGLOCAL +#define __IPV6_ADDR_SCOPE_ORGLOCAL  0x08 +#endif + +#ifndef IN6_IS_ADDR_MC_SITELOCAL +#define IN6_IS_ADDR_MC_SITELOCAL(a)     \ +	(IN6_IS_ADDR_MULTICAST(a) &&    \ +	 (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_SITELOCAL)) +#endif + +#ifndef IN6_IS_ADDR_MC_ORGLOCAL +#define IN6_IS_ADDR_MC_ORGLOCAL(a)      \ +	(IN6_IS_ADDR_MULTICAST(a) &&    \ +	 (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_ORGLOCAL)) +#endif + +#ifndef INADDR_NONE +#define INADDR_NONE 0xffffffff +#endif + +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 256 +#endif + +#ifndef INET6_ADDRSTRLEN +/* sizeof("aaaa:bbbb:cccc:dddd:eeee:ffff:123.123.123.123") */ +#define INET6_ADDRSTRLEN 46 +#endif + +#ifndef MIN +#define MIN(x,y) (((x) <= (y)) ? (x) : (y)) +#endif + +#ifndef MAX +#define MAX(x,y) (((x) >= (y)) ? (x) : (y)) +#endif + +#ifdef NEED_DAEMON +int daemon(int nochdir, int noclose); +#endif + +#ifdef NEED_STRSEP +char * strsep(char **stringp, const char *delim); +#endif + +#ifndef ALIGN +#define ALIGN(p) (((uintptr_t)(p) + (sizeof(long) - 1)) & ~(sizeof(long) - 1)) +#endif + +#ifdef NEED_SETGROUPENT +int setgroupent(int stayopen); +#endif + +#ifdef NEED_GETGROUPLIST +int getgrouplist(GETGROUPLIST_ARGS); +#endif + +#ifdef POSIX_GETGRNAM_R +int +__posix_getgrnam_r(const char *, struct group *, char *, int, struct group **); +#endif + +#ifdef NEED_GETGRNAM_R +int +getgrnam_r(const char *,  struct group *, char *, size_t, struct group **); +#endif + +#ifdef POSIX_GETGRGID_R +int +__posix_getgrgid_r(gid_t, struct group *, char *, int, struct group **) ; +#endif + +#ifdef NEED_GETGRGID_R +int +getgrgid_r(gid_t, struct group *, char *, size_t, struct group **); +#endif + +#ifdef NEED_GETGRENT_R +GROUP_R_RETURN getgrent_r(struct group *gptr, GROUP_R_ARGS); +#endif + +#ifdef NEED_SETGRENT_R +GROUP_R_SET_RETURN setgrent_r(GROUP_R_ENT_ARGS); +#endif + +#ifdef NEED_ENDGRENT_R +GROUP_R_END_RETURN endgrent_r(GROUP_R_ENT_ARGS); +#endif + +#if defined(NEED_INNETGR_R) && defined(NGR_R_RETURN) +NGR_R_RETURN +innetgr_r(const char *, const char *, const char *, const char *); +#endif + +#ifdef NEED_SETNETGRENT_R +#ifdef NGR_R_SET_ARGS +NGR_R_SET_RETURN setnetgrent_r(NGR_R_SET_CONST char *netgroup, NGR_R_SET_ARGS); +#else +NGR_R_SET_RETURN setnetgrent_r(NGR_R_SET_CONST char *netgroup); +#endif +#endif + +#ifdef NEED_ENDNETGRENT_R +#ifdef NGR_R_END_ARGS +NGR_R_END_RETURN endnetgrent_r(NGR_R_END_ARGS); +#else +NGR_R_END_RETURN endnetgrent_r(void); +#endif +#endif + +#ifdef POSIX_GETPWNAM_R +int +__posix_getpwnam_r(const char *login,  struct passwd *pwptr, +		char *buf, size_t buflen, struct passwd **result); +#endif + +#ifdef NEED_GETPWNAM_R +int +getpwnam_r(const char *login,  struct passwd *pwptr, +		char *buf, size_t buflen, struct passwd **result); +#endif + +#ifdef POSIX_GETPWUID_R +int +__posix_getpwuid_r(uid_t uid, struct passwd *pwptr, +		char *buf, int buflen, struct passwd **result); +#endif + +#ifdef NEED_GETPWUID_R +int +getpwuid_r(uid_t uid, struct passwd *pwptr, +		char *buf, size_t buflen, struct passwd **result); +#endif + +#ifdef NEED_SETPWENT_R +#ifdef PASS_R_ENT_ARGS +PASS_R_SET_RETURN setpwent_r(PASS_R_ENT_ARGS); +#else +PASS_R_SET_RETURN setpwent_r(void); +#endif + +#endif + +#ifdef NEED_SETPASSENT_R +#ifdef PASS_R_ENT_ARGS +PASS_R_SET_RETURN setpassent_r(int stayopen, PASS_R_ENT_ARGS); +#else +PASS_R_SET_RETURN setpassent_r(int stayopen); +#endif +#endif + +#ifdef NEED_GETPWENT_R +PASS_R_RETURN getpwent_r(struct passwd *pwptr, PASS_R_ARGS); +#endif + +#ifdef NEED_ENDPWENT_R +void endpwent_r(void); +#endif + +#ifdef NEED_SETPASSENT +int setpassent(int stayopen); +#endif + +#define gettimeofday isc__gettimeofday +#ifdef NEED_GETTIMEOFDAY +int isc__gettimeofday(struct timeval *tvp, struct _TIMEZONE *tzp); +#else +int isc__gettimeofday(struct timeval *tp, struct timezone *tzp); +#endif + +int getnetgrent(NGR_R_CONST char **machinep, NGR_R_CONST char **userp, +		NGR_R_CONST char **domainp); + +#ifdef NGR_R_ARGS +int getnetgrent_r(NGR_R_CONST char **machinep, NGR_R_CONST char **userp, +		  NGR_R_CONST char **domainp, NGR_R_ARGS); +#endif + +/* setnetgrent and endnetgrent are defined in sunw_port_after.h  +#ifdef SETNETGRENT_ARGS +void setnetgrent(SETNETGRENT_ARGS); +#else +void setnetgrent(const char *netgroup); +#endif + +void endnetgrent(void); +*/ + +#ifdef INNETGR_ARGS +int innetgr(INNETGR_ARGS); +#else +int innetgr(const char *netgroup, const char *machine, +	    const char *user, const char *domain); +#endif + +#ifdef NGR_R_SET_ARGS +NGR_R_SET_RETURN +setnetgrent_r(NGR_R_SET_CONST char *netgroup, NGR_R_SET_ARGS); +#else +NGR_R_SET_RETURN +setnetgrent_r(NGR_R_SET_CONST char *netgroup); +#endif + +#ifdef NEED_STRTOUL +unsigned long strtoul(const char *, char **, int); +#endif + +#ifdef NEED_SUN4PROTOS +#include <stdarg.h> +#ifndef __SIZE_TYPE__ +#define __SIZE_TYPE__ int +#endif +struct sockaddr; +struct iovec; +struct timeval; +struct timezone; +int fprintf(FILE *, const char *, ...); +int getsockname(int, struct sockaddr *, int *); +int getpeername(int, struct sockaddr *, int *); +int socket(int, int, int); +int connect(int, const struct sockaddr *, int); +int writev(int, struct iovec *, int); +int readv(int, struct iovec *, int); +int send(int, const char *, int, int); +void bzero(char *, int); +int recvfrom(int, char *, int, int, struct sockaddr *, int *); +int syslog(int, const char *, ... ); +int printf(const char *, ...); +__SIZE_TYPE__ fread(void *, __SIZE_TYPE__, __SIZE_TYPE__, FILE *); +__SIZE_TYPE__ fwrite(const void *, __SIZE_TYPE__, __SIZE_TYPE__, FILE *); +int fclose(FILE *); +int ungetc(int, FILE *); +int scanf(const char *, ...); +int sscanf(const char *, const char *, ... ); +int tolower(int); +int toupper(int); +int strcasecmp(const char *, const char *); +int strncasecmp(const char *, const char *, int); +int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +#ifdef gettimeofday +#undef gettimeofday +int gettimeofday(struct timeval *, struct timezone *); +#define gettimeofday isc__gettimeofday +#else +int gettimeofday(struct timeval *, struct timezone *); +#endif +long strtol(const char*, char **, int); +int fseek(FILE *, long, int); +int setsockopt(int, int, int, const char *, int); +int bind(int, const struct sockaddr *, int); +void bcopy(char *, char *, int); +int fputc(char, FILE *); +int listen(int, int); +int accept(int, struct sockaddr *, int *); +int getsockopt(int, int, int, char *, int *); +int vfprintf(FILE *, const char *, va_list); +int fflush(FILE *); +int fgetc(FILE *); +int fputs(const char *, FILE *); +int fchown(int, int, int); +void setbuf(FILE *, char *); +int gethostname(char *, int); +int rename(const char *, const char *); +time_t time(time_t *); +int fscanf(FILE *, const char *, ...); +int sscanf(const char *, const char *, ...); +int ioctl(int, int, caddr_t); +void perror(const char *); + +#if !defined(__USE_FIXED_PROTOTYPES__) && !defined(__cplusplus) && !defined(__STRICT_ANSI__) +/* + * 'gcc -ansi' changes the prototype for vsprintf(). + * Use this prototype when 'gcc -ansi' is not in effect. + */ +char *vsprintf(char *, const char *, va_list); +#endif +#endif + +/* Solaris-specific changes */ +#include "sunw_port_after.h" + +#endif	/* port_after_h */ diff --git a/usr/src/lib/libresolv2_joy/include/port_before.h b/usr/src/lib/libresolv2_joy/include/port_before.h new file mode 100644 index 0000000000..2801139223 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/port_before.h @@ -0,0 +1,201 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + + +/* + * Copyright (C) 2005-2008  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2001  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. + */ + +/* $Id: port_before.h.in,v 1.31 2008/02/28 05:36:10 marka Exp $ */ + +#ifndef port_before_h +#define port_before_h +/* Solaris-specific changes */ +#include "sunw_port_before.h" +#include <config.h> + +#ifdef NEED_SUN4PROTOS +#define _PARAMS(x) x +#endif + +struct group;           /* silence warning */ +struct passwd;          /* silence warning */ +struct timeval;         /* silence warning */ +struct timezone;        /* silence warning */ + +#ifdef HAVE_SYS_TIMERS_H +#include <sys/timers.h> +#endif +#include <limits.h> + +#ifdef ISC_PLATFORM_NEEDTIMESPEC +#include <time.h>		/* For time_t */ +struct timespec { +	time_t  tv_sec;         /* seconds */ +	long    tv_nsec;        /* nanoseconds */ +}; +#endif +#ifndef HAVE_MEMMOVE +#define memmove(a,b,c) bcopy(b,a,c) +#endif + +#undef WANT_IRS_GR +#undef WANT_IRS_NIS +#undef WANT_IRS_PW + +#define BSD_COMP 1 +#define USE_POLL 1 +#define HAVE_MD5 1 +#define SOLARIS2 1 + +/* DO_PTHREADS is conditionally defined in sunw_port_before.h  + * #define DO_PTHREADS 1 */ +#define GETGROUPLIST_ARGS const char *name, gid_t basegid, gid_t *groups, int *ngroups +#define GETNETBYADDR_ADDR_T long +#define SETPWENT_VOID 1 +#define SETGRENT_VOID 1 + +#define NET_R_ARGS char *buf, int buflen +#define NET_R_BAD NULL +#define NET_R_COPY buf, buflen +#define NET_R_COPY_ARGS NET_R_ARGS +#define NET_R_END_RESULT(x) /*empty*/ +#define NET_R_END_RETURN void +#undef NET_R_ENT_ARGS /*empty*/ +#define NET_R_OK nptr +#define NET_R_RETURN struct netent * +#undef NET_R_SET_RESULT /*empty*/ +#undef NET_R_SETANSWER +#define NET_R_SET_RETURN void +#undef NETENT_DATA + +#define GROUP_R_RETURN struct group * +#define GROUP_R_SET_RETURN void +#undef GROUP_R_SET_RESULT /*empty*/ +#define GROUP_R_END_RETURN void +#define GROUP_R_END_RESULT(x) /*empty*/ +#define GROUP_R_ARGS char *buf, int buflen +#define GROUP_R_ENT_ARGS void +#define GROUP_R_OK gptr +#define GROUP_R_BAD NULL + +#define HOST_R_ARGS char *buf, int buflen, int *h_errnop +#define HOST_R_BAD NULL +#define HOST_R_COPY buf, buflen +#define HOST_R_COPY_ARGS char *buf, int buflen +#define HOST_R_END_RESULT(x) /*empty*/ +#define HOST_R_END_RETURN void +#undef HOST_R_ENT_ARGS /*empty*/ +#define HOST_R_ERRNO *h_errnop = h_errno +#define HOST_R_OK hptr +#define HOST_R_RETURN struct hostent * +#undef HOST_R_SETANSWER +#undef HOST_R_SET_RESULT +#define HOST_R_SET_RETURN void +#undef HOSTENT_DATA + +#define NGR_R_ARGS char *buf, int buflen +#define NGR_R_BAD (0) +#define NGR_R_COPY buf, buflen +#define NGR_R_COPY_ARGS NGR_R_ARGS +#define NGR_R_CONST +#define NGR_R_END_RESULT(x)  /*empty*/ +#define NGR_R_END_RETURN void +#undef NGR_R_END_ARGS /*empty*/ +#define NGR_R_OK 1 +#define NGR_R_RETURN int +#define NGR_R_SET_CONST const +#undef NGR_R_SET_RESULT /*empty*/ +#define NGR_R_SET_RETURN void +#undef NGR_R_SET_ARGS + + +#if !defined(NGR_R_SET_ARGS) && defined(NGR_R_END_ARGS) +#define NGR_R_SET_ARGS NGR_R_END_ARGS +#endif + +#define PROTO_R_ARGS char *buf, int buflen +#define PROTO_R_BAD NULL +#define PROTO_R_COPY buf, buflen +#define PROTO_R_COPY_ARGS PROTO_R_ARGS +#define PROTO_R_END_RESULT(x) /*empty*/ +#define PROTO_R_END_RETURN void +#undef PROTO_R_ENT_ARGS /*empty*/ +#undef PROTO_R_ENT_UNUSED +#define PROTO_R_OK pptr +#undef PROTO_R_SETANSWER +#define PROTO_R_RETURN struct protoent * +#undef PROTO_R_SET_RESULT +#define PROTO_R_SET_RETURN void +#undef PROTOENT_DATA + +#define PASS_R_ARGS char *buf, int buflen +#define PASS_R_BAD NULL +#define PASS_R_COPY buf, buflen +#define PASS_R_COPY_ARGS PASS_R_ARGS +#define PASS_R_END_RESULT(x) /*empty*/ +#define PASS_R_END_RETURN void +#undef PASS_R_ENT_ARGS +#define PASS_R_OK pwptr +#define PASS_R_RETURN struct passwd * +#undef PASS_R_SET_RESULT /*empty*/ +#define PASS_R_SET_RETURN void + +#define SERV_R_ARGS char *buf, int buflen +#define SERV_R_BAD NULL +#define SERV_R_COPY buf, buflen +#define SERV_R_COPY_ARGS SERV_R_ARGS +#define SERV_R_END_RESULT(x) /*empty*/ +#define SERV_R_END_RETURN void  +#undef SERV_R_ENT_ARGS /*empty*/ +#undef SERV_R_ENT_UNUSED /*empty*/ +#define SERV_R_OK sptr +#undef SERV_R_SETANSWER +#define SERV_R_RETURN struct servent * +#undef SERV_R_SET_RESULT +#define SERV_R_SET_RETURN void + + + +#define DE_CONST(konst, var) \ +	do { \ +		union { const void *k; void *v; } _u; \ +		_u.k = konst; \ +		var = _u.v; \ +	} while (0) + +#define UNUSED(x) (x) = (x) + +#undef NEED_SOLARIS_BITTYPES +#define ISC_SOCKLEN_T int + +#ifdef __GNUC__ +#define ISC_FORMAT_PRINTF(fmt, args) \ +	__attribute__((__format__(__printf__, fmt, args))) +#else +#define ISC_FORMAT_PRINTF(fmt, args) +#endif + +/* Pull in host order macros when _XOPEN_SOURCE_EXTENDED is defined. */ +#if defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED) +#include <sys/byteorder.h> +#endif + +#endif + +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/port_netdb.h b/usr/src/lib/libresolv2_joy/include/port_netdb.h new file mode 100644 index 0000000000..a308cc7efa --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/port_netdb.h @@ -0,0 +1,188 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + + +#ifndef _PORT_NETDB_H +#define	_PORT_NETDB_H + +#ifdef	__cplusplus +extern "C" { +#endif + +/* AI_NUMERICSERV is not a valid flag for getaddrinfo */ +#define	AI_MASK		0x0038	/* mask of valid flags */ + +/* EAI_OVERFLOW was removed from ISC */ +#define	EAI_BADHINTS  12 + +/* + * these are libresolv2 functions that were renamed in previous versions to + * res_* because they conflict with libnsl or libsocket + */ + +#define	endhostent joy_res_endhostent /* libnsl */ +void endhostent __P((void)); +#define	endnetent res_endnetent  /* libsocket */ +void endnetent __P((void)); +#define	freeaddrinfo res_freeaddrinfo /* libsocket */ +void freeaddrinfo __P((struct addrinfo *)); +#define	freehostent res_freehostent  /* libsocket and libnsl */ +void freehostent __P((struct hostent *)); +#define	getaddrinfo res_getaddrinfo  /* libsocket */ +int getaddrinfo __P((const char *, const char *, +				const struct addrinfo *, struct addrinfo **)); +#define	gethostbyaddr joy_res_gethostbyaddr /* libnsl */ +struct hostent *gethostbyaddr __P((const char *, int, int)); +#define	gethostbyname joy_res_gethostbyname /* libnsl */ +struct hostent *gethostbyname __P((const char *)); +#define	gethostbyname2 joy_res_gethostbyname2 /* lib/nsswitch/dns */ +struct hostent *gethostbyname2 __P((const char *, int)); +#define	gethostent res_gethostent  /* libnsl */ +struct hostent *gethostent __P((void)); +#define	getipnodebyaddr res_getipnodebyaddr  /* libnsl and libsocket */ +struct hostent *getipnodebyaddr __P((const void *, size_t, int, int *)); +#define	getipnodebyname res_getipnodebyname  /* libnsl and libsocket */ +struct hostent *getipnodebyname __P((const char *, int, int, int *)); + +#define	getnetbyaddr res_getnetbyaddr /* libsocket */ +struct netent *getnetbyaddr __P((unsigned long, int)); +#define	getnetbyname res_getnetbyname /* libsocket */ +struct netent *getnetbyname __P((const char *)); +#define	getnetent res_getnetent /* libsocket */ +struct netent *getnetent __P((void)); +#define	sethostent joy_res_sethostent /* libnsl */ +void sethostent __P((int)); +#define	setnetent res_setnetent /* libsocket */ +void setnetent __P((int)); + +/* + * these are other irs functions now included in libresolv.so.2. We rename the + * ones that overlap with libsocket or libnsl + */ + +/* endprotoent is in libsocket.so.1 */ +#define	endprotoent res_endprotoent +void		endprotoent __P((void)); + +/* endservent is in libsocket.so.1 */ +#define	endservent res_endservent +void		endservent __P((void)); + +/* note: the next two symbols are variables, not functions */ + +/* gai_errlist is in libsocket.so.1 */ +#define	gai_errlist res_gai_errlist + +/* gai_nerr is in libsocket.so.1 */ +#define	gai_nerr res_gai_nerr + +/* gai_strerror is in libsocket.so.1 */ +#define	gai_strerror res_gai_strerror +const char *gai_strerror __P((int ecode)); + +/* gethostbyaddr_r is in libnsl.so.1 */ +#define	gethostbyaddr_r res_gethostbyaddr_r +struct hostent *gethostbyaddr_r __P((const char *addr, int len, int type, +				struct hostent *hptr, char *buf, +				int buflen, int *h_errnop)); + +/* gethostbyname_r is in libnsl.so.1 */ +#define	gethostbyname_r res_gethostbyname_r +struct hostent *gethostbyname_r __P((const char *name,	 struct hostent *hptr, +				char *buf, int buflen, int *h_errnop)); + +/* gethostent_r is in libnsl.so.1 */ +#define	gethostent_r res_gethostent_r +struct hostent *gethostent_r __P((struct hostent *hptr, char *buf, int buflen, +				int *h_errnop)); + +/* getnameinfo is in libsocket.so.1 */ +#define	getnameinfo res_getnameinfo +int getnameinfo __P((const struct sockaddr *, size_t, char *, +				size_t, char *, size_t, int)); + +/* getnetbyaddr_r is in libsocket.so.1 */ +#define	getnetbyaddr_r res_getnetbyaddr_r +struct netent *getnetbyaddr_r __P((long, int, struct netent *, char *, int)); + +/* getnetbyname_r is in libsocket.so.1 */ +#define	getnetbyname_r res_getnetbyname_r +struct netent *getnetbyname_r __P((const char *, struct netent *, char *, int)); + +/* getnetent_r is in libsocket.so.1 */ +#define	getnetent_r res_getnetent_r +struct netent *getnetent_r __P((struct netent *, char *, int)); + +/* getprotobyname is in libsocket.so.1 */ +#define	getprotobyname res_getprotobyname +struct protoent	*getprotobyname __P((const char *)); + +/* getprotobyname_r is in libsocket.so.1 */ +#define	getprotobyname_r res_getprotobyname_r +struct protoent	*getprotobyname_r __P((const char *, struct protoent *, +				char *, int)); + +/* getprotobynumber is in libsocket.so.1 */ +#define	getprotobynumber res_getprotobynumber +struct protoent	*getprotobynumber __P((int)); + +/* getprotobynumber_r is in libsocket.so.1 */ +#define	getprotobynumber_r res_getprotobynumber_r +struct protoent	*getprotobynumber_r __P((int, +				struct protoent *, char *, int)); + +/* getprotoent is in libsocket.so.1 */ +#define	getprotoent res_getprotoent +struct protoent	*getprotoent __P((void)); + +/* getprotoent_r is in libsocket.so.1 */ +#define	getprotoent_r res_getprotoent_r +struct protoent	*getprotoent_r __P((struct protoent *, char *, int)); + +/* getservbyname is in libsocket.so.1 and libnsl.so.1 */ +#define	getservbyname res_getservbyname +struct servent *getservbyname __P((const char *, const char *)); + +/* getservbyname_r is in libsocket.so.1 and libnsl.so.1 */ +#define	getservbyname_r res_getservbyname_r +struct servent *getservbyname_r __P((const char *name, const char *, +				struct servent *, char *, int)); + +/* getservbyport is in libsocket.so.1 and libnsl.so.1 */ +#define	getservbyport res_getservbyport +struct servent *getservbyport __P((int, const char *)); + +/* getservbyport_r is in libsocket.so.1 and libnsl.so.1 */ +#define	getservbyport_r res_getservbyport_r +struct servent *getservbyport_r __P((int port, const char *, +				struct servent *, char *, int)); + +/* getservent is in libsocket.so.1 */ +#define	getservent res_getservent +struct servent *getservent __P((void)); + +/* getservent_r is in libsocket.so.1 */ +#define	getservent_r res_getservent_r +struct servent *getservent_r __P((struct servent *, char *, int)); + +/* innetgr is in libsocket.so.1 */ +#define	innetgr res_innetgr +int innetgr __P((const char *, const char *, const char *, const char *)); + +/* setprotoent is in libsocket.so.1 */ +#define	setprotoent res_setprotoent +void setprotoent __P((int)); + +/* setservent is in libsocket.so.1 */ +#define	setservent res_setservent +void setservent __P((int)); + + + +#ifdef	__cplusplus +} +#endif + +#endif /* _PORT_NETDB_H */ diff --git a/usr/src/lib/libresolv2_joy/include/port_resolv.h b/usr/src/lib/libresolv2_joy/include/port_resolv.h new file mode 100644 index 0000000000..cd1a97d40c --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/port_resolv.h @@ -0,0 +1,42 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _PORT_RESOLV_H +#define	_PORT_RESOLV_H + +#ifdef	__cplusplus +extern "C" { +#endif + +/* RES_NSID has the same value as RES_NO_NIBBLE, which has been deleted  */ +#define	RES_NSID	0x00040000	/* request name server ID */ + +/* RES_DEFAULT has a new value in libbind-6.0 */ +#undef RES_DEFAULT +#define	RES_DEFAULT	(RES_RECURSE | RES_DEFNAMES | \ +	RES_DNSRCH | RES_NO_NIBBLE2) + +#ifndef __ultrix__ +u_int16_t	_getshort __P((const uchar_t *)); +u_int32_t	_getlong __P((const uchar_t *)); +#endif + +/* rename functions so they can be wrapped (see sunw/sunw_wrappers.c */ +#define	p_option isc_p_option +const char *p_option(ulong_t option); +#define	p_secstodate isc_p_secstodate +char *p_secstodate(ulong_t secs); + +/* prevent namespace pollution */ +#define	res_protocolnumber	__res_protocolnumber +#define	res_servicenumber	__res_servicenumber + + + +#ifdef	__cplusplus +} +#endif + +#endif /* _PORT_RESOLV_H */ diff --git a/usr/src/lib/libresolv2_joy/include/probe_ipv6 b/usr/src/lib/libresolv2_joy/include/probe_ipv6 new file mode 100755 index 0000000000..371ac96c55 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/probe_ipv6 @@ -0,0 +1,73 @@ +#!/bin/sh + +# Copyright 2003 by Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +#pragma ident	"%Z%%M%	%I%	%E% SMI" + +set -e +PATH=/bin:/usr/bin:$PATH; export PATH +trap "rm -f tmp$$[abc].[oc]" 0 +target=port_ipv6 +new=new_${target}.h +old=${target}.h + +cat > tmp$$a.c <<EOF +#include <sys/types.h> +#include <netinet/in.h> +struct sockaddr_in6 xx; +EOF + +cat > tmp$$b.c <<EOF +#include <sys/types.h> +#include <netinet/in.h> +struct in6_addr xx; +EOF + +cat > tmp$$c.c <<EOF +#include <sys/types.h> +#include <netinet/in.h> +struct sockaddr_in6 xx; +main() { xx.sin6_scope_id = 0; } +EOF + +cat > ${new} <<EOF + +/* This file is automatically generated. Do Not Edit. */ + +#ifndef ${target}_h +#define ${target}_h + +EOF + +if ${CC} -c tmp$$a.c > /dev/null 2>&1 +then +        echo "#define HAS_INET6_STRUCTS" >> ${new} +        if ${CC} -c tmp$$b.c > /dev/null 2>&1 +        then +		: +	else +                echo "#define in6_addr in_addr6" >> ${new} +        fi +	if ${CC} -c tmp$$c.c > /dev/null 2>&1 +	then +		echo "#define HAVE_SIN6_SCOPE_ID" >> ${new} +	else +		echo "#undef HAVE_SIN6_SCOPE_ID" >> ${new} +	fi +else +        echo "#undef HAS_INET6_STRUCTS" >> ${new} +fi +echo  >> ${new} +echo "#endif" >> ${new} +if [ -f ${old} ]; then +        if cmp -s ${new} ${old} ; then +                rm -f ${new} +        else +                rm -f ${old} +                mv ${new} ${old} +        fi +else +        mv ${new} ${old} +fi +exit 0 diff --git a/usr/src/lib/libresolv2_joy/include/probe_ipv6.sh b/usr/src/lib/libresolv2_joy/include/probe_ipv6.sh new file mode 100644 index 0000000000..371ac96c55 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/probe_ipv6.sh @@ -0,0 +1,73 @@ +#!/bin/sh + +# Copyright 2003 by Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +#pragma ident	"%Z%%M%	%I%	%E% SMI" + +set -e +PATH=/bin:/usr/bin:$PATH; export PATH +trap "rm -f tmp$$[abc].[oc]" 0 +target=port_ipv6 +new=new_${target}.h +old=${target}.h + +cat > tmp$$a.c <<EOF +#include <sys/types.h> +#include <netinet/in.h> +struct sockaddr_in6 xx; +EOF + +cat > tmp$$b.c <<EOF +#include <sys/types.h> +#include <netinet/in.h> +struct in6_addr xx; +EOF + +cat > tmp$$c.c <<EOF +#include <sys/types.h> +#include <netinet/in.h> +struct sockaddr_in6 xx; +main() { xx.sin6_scope_id = 0; } +EOF + +cat > ${new} <<EOF + +/* This file is automatically generated. Do Not Edit. */ + +#ifndef ${target}_h +#define ${target}_h + +EOF + +if ${CC} -c tmp$$a.c > /dev/null 2>&1 +then +        echo "#define HAS_INET6_STRUCTS" >> ${new} +        if ${CC} -c tmp$$b.c > /dev/null 2>&1 +        then +		: +	else +                echo "#define in6_addr in_addr6" >> ${new} +        fi +	if ${CC} -c tmp$$c.c > /dev/null 2>&1 +	then +		echo "#define HAVE_SIN6_SCOPE_ID" >> ${new} +	else +		echo "#undef HAVE_SIN6_SCOPE_ID" >> ${new} +	fi +else +        echo "#undef HAS_INET6_STRUCTS" >> ${new} +fi +echo  >> ${new} +echo "#endif" >> ${new} +if [ -f ${old} ]; then +        if cmp -s ${new} ${old} ; then +                rm -f ${new} +        else +                rm -f ${old} +                mv ${new} ${old} +        fi +else +        mv ${new} ${old} +fi +exit 0 diff --git a/usr/src/lib/libresolv2_joy/include/res_update.h b/usr/src/lib/libresolv2_joy/include/res_update.h new file mode 100644 index 0000000000..419dfc43d5 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/res_update.h @@ -0,0 +1,88 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + + +/* + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 1999 by Internet Software Consortium, Inc. + * + * 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. + */ + +/* + *	$Id: res_update.h,v 1.3 2005/04/27 04:56:15 sra Exp $ + */ + +#ifndef __RES_UPDATE_H +#define __RES_UPDATE_H + +/*! \file */ + +#include <sys/types.h> +#include <arpa/nameser.h> +#include <isc/list.h> +#include <resolv.h> + +#ifndef	ORIGINAL_ISC_CODE +/* definition of u_int32_t needed on Solaris */ +#include <sys/bitypes.h> +/* need to rename ns_updrec before we define it here */ +#include "arpa/port_nameser.h" +#endif	/* ORIGINAL_ISC_CODE */ + + +/*% + * This RR-like structure is particular to UPDATE. + */ +struct ns_updrec { +	LINK(struct ns_updrec) r_link, r_glink; +	ns_sect		r_section;	/*%< ZONE/PREREQUISITE/UPDATE */ +	char *		r_dname;	/*%< owner of the RR */ +	ns_class	r_class;	/*%< class number */ +	ns_type		r_type;		/*%< type number */ +	u_int32_t	r_ttl;		/*%< time to live */ +	u_char *	r_data;		/*%< rdata fields as text string */ +	u_int		r_size;		/*%< size of r_data field */ +	int		r_opcode;	/*%< type of operation */ +	/* following fields for private use by the resolver/server routines */ +	struct databuf *r_dp;		/*%< databuf to process */ +	struct databuf *r_deldp;	/*%< databuf's deleted/overwritten */ +	u_int		r_zone;		/*%< zone number on server */ +}; +typedef struct ns_updrec ns_updrec; +typedef	LIST(ns_updrec)	ns_updque; + +#ifdef	ORIGINAL_ISC_CODE +#define res_mkupdate		__res_mkupdate +#define res_update		__res_update +#define res_mkupdrec		__res_mkupdrec +#define res_freeupdrec		__res_freeupdrec +#define res_nmkupdate		__res_nmkupdate +#define res_nupdate		__res_nupdate +#else +/* these are renamed in "port_nameser.h" */ +#endif	/* ORIGINAL_ISC_CODE */ + + +int		res_mkupdate __P((ns_updrec *, u_char *, int)); +int		res_update __P((ns_updrec *)); +ns_updrec *	res_mkupdrec __P((int, const char *, u_int, u_int, u_long)); +void		res_freeupdrec __P((ns_updrec *)); +int		res_nmkupdate __P((res_state, ns_updrec *, u_char *, int)); +int		res_nupdate __P((res_state, ns_updrec *, ns_tsig_key *)); + +#endif /*__RES_UPDATE_H*/ + +/*! \file */ diff --git a/usr/src/lib/libresolv2_joy/include/resolv_mt.h b/usr/src/lib/libresolv2_joy/include/resolv_mt.h new file mode 100644 index 0000000000..27963a1207 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/resolv_mt.h @@ -0,0 +1,47 @@ +#ifndef _RESOLV_MT_H +#define _RESOLV_MT_H + +#include <sys/types.h> +#include <netinet/in.h> +#include <arpa/nameser.h> +#include <resolv.h> + +/* Access functions for the libresolv private interface */ + +int	__res_enable_mt(void); +int	__res_disable_mt(void); + +/* Per-thread context */ + +typedef struct { +int	no_hosts_fallback_private; +int	retry_save; +int	retry_private; +char	inet_nsap_ntoa_tmpbuf[255*3]; +char	sym_ntos_unname[20]; +char	sym_ntop_unname[20]; +char	p_option_nbuf[40]; +char	p_time_nbuf[40]; +char	precsize_ntoa_retbuf[sizeof "90000000.00"]; +char	loc_ntoa_tmpbuf[sizeof +"1000 60 60.000 N 1000 60 60.000 W -12345678.00m 90000000.00m 90000000.00m 90000000.00m"]; +char	p_secstodate_output[15]; +} mtctxres_t; + +/* Thread-specific data (TSD) */ + +mtctxres_t	*___mtctxres(void); +#define mtctxres	(___mtctxres()) + +/* Various static data that should be TSD */ + +#define sym_ntos_unname		(mtctxres->sym_ntos_unname) +#define sym_ntop_unname		(mtctxres->sym_ntop_unname) +#define inet_nsap_ntoa_tmpbuf	(mtctxres->inet_nsap_ntoa_tmpbuf) +#define p_option_nbuf		(mtctxres->p_option_nbuf) +#define p_time_nbuf		(mtctxres->p_time_nbuf) +#define precsize_ntoa_retbuf	(mtctxres->precsize_ntoa_retbuf) +#define loc_ntoa_tmpbuf		(mtctxres->loc_ntoa_tmpbuf) +#define p_secstodate_output	(mtctxres->p_secstodate_output) + +#endif /* _RESOLV_MT_H */ diff --git a/usr/src/lib/libresolv2_joy/include/sunw_port_after.h b/usr/src/lib/libresolv2_joy/include/sunw_port_after.h new file mode 100644 index 0000000000..fce7445189 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/sunw_port_after.h @@ -0,0 +1,123 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + +#ifndef	_SUNW_PORT_AFTER_H +#define	_SUNW_PORT_AFTER_H + +#ifdef	__cplusplus +extern "C" { +#endif + +/* + * rename setnetgrent and endnetgrent which were formerly in a separate irs + * shared library.  These functions should come from libc.so + */ +#define	setnetgrent res_setnetgrent +#ifdef SETNETGRENT_ARGS +void setnetgrent(SETNETGRENT_ARGS); +#else +void setnetgrent(const char *netgroup); +#endif + +#define	endnetgrent res_endnetgrent +void endnetgrent(void); + + +/* + * include ports for the public header files. ISC's versions are quite different + * from those currently in OpenSolaris. + */ + +#ifdef _RESOLV_H_ +#include <port_resolv.h> +#endif /* _RESOLV_H_ */ + +#ifdef _NETDB_H +#include <port_netdb.h> +#endif /* _NETDB_H */ + +#ifdef _ARPA_INET_H +#include <arpa/port_inet.h> +#endif /* _ARPA_INET_H */ + +#ifdef _ARPA_NAMESER_H +#include <arpa/port_nameser.h> +#endif /* _ARPA_NAMESER_H */ + + +#ifdef _ARPA_NAMESER_COMPAT_H +/* no changes */ +#endif /* _ARPA_NAMESER_COMPAT_H */ + +/* version-specific defines */ +#include <os_version.h> + +/* + * Prior to 2.6, Solaris needs a prototype for gethostname(). + */ +#if (OS_MAJOR == 5 && OS_MINOR < 6) +extern int gethostname(char *, size_t); +#endif +/* + * gethostid() was not available until 2.5 + * setsockopt(SO_REUSEADDR) fails on unix domain sockets before 2.5 + * use ioctl(FIONBIO) rather than fcntl() calls to set/clear non-blocking i/o. + */ +#if (OS_MAJOR == 5 && OS_MINOR < 5) +#define	GET_HOST_ID_MISSING +#define	NO_UNIX_REUSEADDR +#define	USE_FIONBIO_IOCTL +#endif + +#if (OS_MAJOR == 5 && OS_MINOR < 11) +#define	NEED_STRSEP +extern char *strsep(char **, const char *); +#endif + + +/* + * Solaris 2.5 and later have getrlimit(), setrlimit() and getrusage(). + */ +#if (OS_MAJOR > 5 || (OS_MAJOR == 5 && OS_MINOR >= 5)) +#include <sys/resource.h> +#define	HAVE_GETRUSAGE +#define	RLIMIT_TYPE rlim_t +#define	RLIMIT_FILE_INFINITY +#endif + +/* the default syslog facility of named/lwresd. */ +#ifndef ISC_FACILITY +#define	ISC_FACILITY LOG_DAEMON +#endif + + +/* + * Solaris 8 has if_nametoindex(). + */ +#if (OS_MAJOR > 5 || (OS_MAJOR == 5 && OS_MINOR >= 8)) +#define	USE_IFNAMELINKID +#endif + +#undef ALIGN +#if (OS_MAJOR == 5 && OS_MINOR > 8) +#define	ALIGN(x) (((uintptr_t)(x) + (sizeof (char *) - 1UL)) & \ +		~(sizeof (char *) - 1UL)) +#else +#define	ALIGN(x) (((unsigned long)(x) + (sizeof (char *) - 1UL)) & \ +		~(sizeof (char *) - 1UL)) +#endif + +#if (OS_MAJOR == 5 && OS_MINOR < 5) +#ifndef USE_FIONBIO_IOCTL +#define	USE_FIONBIO_IOCTL 1 +#endif +#endif + + +#ifdef	__cplusplus +} +#endif + +#endif	/* _SUNW_PORT_AFTER_H */ diff --git a/usr/src/lib/libresolv2_joy/include/sunw_port_before.h b/usr/src/lib/libresolv2_joy/include/sunw_port_before.h new file mode 100644 index 0000000000..776e311fcc --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/sunw_port_before.h @@ -0,0 +1,43 @@ +/* + * Copyright 2009 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + +#ifndef	_SUNW_PORT_BEFORE_H +#define	_SUNW_PORT_BEFORE_H + +#ifdef SUNW_OPTIONS +#include <conf/sunoptions.h> +#endif + +/* version-specific defines */ +#include <os_version.h> +#if (OS_MAJOR == 5 && OS_MINOR < 6) +#ifndef SOLARIS_BITTYPES +#define	NEED_SOLARIS_BITTYPES 1 +#endif +#endif + +#if (OS_MAJOR == 5 && OS_MINOR < 5) +#undef HAS_PTHREADS +#else +#define	HAS_PTHREADS +#endif + +#if defined(HAS_PTHREADS) && defined(_REENTRANT) +#define DO_PTHREADS +#endif + +/* + * need these if we are using public versions of nameser.h, resolv.h, and + * inet.h + */ +#include <sys/param.h> +#if (!defined(BSD)) || (BSD < 199306) +#include <sys/bitypes.h> +#else +#include <sys/types.h> +#endif +#include <sys/cdefs.h> + +#endif	/* _SUNW_PORT_BEFORE_H */ diff --git a/usr/src/lib/libresolv2_joy/include/sys/bitypes.h b/usr/src/lib/libresolv2_joy/include/sys/bitypes.h new file mode 100644 index 0000000000..54fb42bad7 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/sys/bitypes.h @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2004, 2007, 2008  Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 1998, 1999, 2001  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. + */ + +/* $Id: bitypes.h,v 1.7 2008/11/14 02:54:35 tbox Exp $ */ + +#ifndef __BIT_TYPES_DEFINED__ +#define __BIT_TYPES_DEFINED__ + +	/* +	 * Basic integral types.  Omit the typedef if +	 * not possible for a machine/compiler combination. +	 */ + +#ifdef NEED_SOLARIS_BITTYPES +	typedef /*signed*/ char            int8_t; +	typedef short                     int16_t; +	typedef int                       int32_t; +#endif +	typedef unsigned char            u_int8_t; +	typedef unsigned short          u_int16_t; +	typedef unsigned int            u_int32_t; + +#endif	/* __BIT_TYPES_DEFINED__ */ diff --git a/usr/src/lib/libresolv2_joy/include/sys/cdefs.h b/usr/src/lib/libresolv2_joy/include/sys/cdefs.h new file mode 100644 index 0000000000..67aac00cc7 --- /dev/null +++ b/usr/src/lib/libresolv2_joy/include/sys/cdefs.h @@ -0,0 +1,144 @@ +/* + * ++Copyright++ 1991, 1993 + * - + * Copyright (c) 1991, 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: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *    must display the following acknowledgement: + * 	This product includes software developed by the University of + * 	California, Berkeley and its contributors. + * 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 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * - + * Portions Copyright (c) 1993 by Digital Equipment Corporation. + *  + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies, and that + * the name of Digital Equipment Corporation not be used in advertising or + * publicity pertaining to distribution of the document or software without + * specific, written prior permission. + *  + * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT + * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + * - + * --Copyright-- + */ + +/* + *	@(#)cdefs.h	8.1 (Berkeley) 6/2/93 + *	$Id: cdefs.h,v 1.2 2004/07/19 05:54:07 marka Exp $ + */ + +#ifndef	_CDEFS_H_ +#define	_CDEFS_H_ + +#if defined(__cplusplus) +#define	__BEGIN_DECLS	extern "C" { +#define	__END_DECLS	}; +#else +#define	__BEGIN_DECLS +#define	__END_DECLS +#endif + +/* + * The __CONCAT macro is used to concatenate parts of symbol names, e.g. + * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo. + * The __CONCAT macro is a bit tricky -- make sure you don't put spaces + * in between its arguments.  __CONCAT can also concatenate double-quoted + * strings produced by the __STRING macro, but this only works with ANSI C. + */ +#if defined(__STDC__) || defined(__cplusplus) +#define	__P(protos)	protos		/* full-blown ANSI C */ +#define	__CONCAT(x,y)	x ## y +#define	__STRING(x)	#x + +#define	__const		const		/* define reserved names to standard */ +#define	__signed	signed +#define	__volatile	volatile +#if defined(__cplusplus) +#define	__inline	inline		/* convert to C++ keyword */ +#else +#ifndef __GNUC__ +#define	__inline			/* delete GCC keyword */ +#endif /* !__GNUC__ */ +#endif /* !__cplusplus */ + +#else	/* !(__STDC__ || __cplusplus) */ +#define	__P(protos)	()		/* traditional C preprocessor */ +#define	__CONCAT(x,y)	x/**/y +#define	__STRING(x)	"x" + +#ifndef __GNUC__ +#define	__const				/* delete pseudo-ANSI C keywords */ +#define	__inline +#define	__signed +#define	__volatile +/* + * In non-ANSI C environments, new programs will want ANSI-only C keywords + * deleted from the program and old programs will want them left alone. + * When using a compiler other than gcc, programs using the ANSI C keywords + * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS. + * When using "gcc -traditional", we assume that this is the intent; if + * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone. + */ +#ifndef	NO_ANSI_KEYWORDS +#define	const				/* delete ANSI C keywords */ +#define	inline +#define	signed +#define	volatile +#endif +#endif	/* !__GNUC__ */ +#endif	/* !(__STDC__ || __cplusplus) */ + +/* + * GCC1 and some versions of GCC2 declare dead (non-returning) and + * pure (no side effects) functions using "volatile" and "const"; + * unfortunately, these then cause warnings under "-ansi -pedantic". + * GCC2 uses a new, peculiar __attribute__((attrs)) style.  All of + * these work for GNU C++ (modulo a slight glitch in the C++ grammar + * in the distribution version of 2.5.5). + */ +#if !defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +#define	__attribute__(x)	/* delete __attribute__ if non-gcc or gcc1 */ +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +#define	__dead		__volatile +#define	__pure		__const +#endif +#endif + +/* Delete pseudo-keywords wherever they are not available or needed. */ +#ifndef __dead +#define	__dead +#define	__pure +#endif + +#endif /* !_CDEFS_H_ */ | 
