1/*
2 * Copyright (C) 2005-2008  Internet Systems Consortium, Inc. ("ISC")
3 * Copyright (C) 2001  Internet Software Consortium.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
10 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11 * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 * PERFORMANCE OF THIS SOFTWARE.
16 */
17
18/* $Id: port_before.h.in,v 1.31 2008/02/28 05:36:10 marka Exp $ */
19
20#ifndef port_before_h
21#define port_before_h
22#include <config.h>
23
24#ifdef NEED_SUN4PROTOS
25#define _PARAMS(x) x
26#endif
27
28struct group;           /* silence warning */
29struct passwd;          /* silence warning */
30struct timeval;         /* silence warning */
31struct timezone;        /* silence warning */
32
33#ifdef HAVE_SYS_TIMERS_H
34#include <sys/timers.h>
35#endif
36#include <limits.h>
37
38#ifdef ISC_PLATFORM_NEEDTIMESPEC
39#include <time.h>		/* For time_t */
40struct timespec {
41	time_t  tv_sec;         /* seconds */
42	long    tv_nsec;        /* nanoseconds */
43};
44#endif
45#ifndef HAVE_MEMMOVE
46#define memmove(a,b,c) bcopy(b,a,c)
47#endif
48
49@WANT_IRS_GR@
50@WANT_IRS_NIS@
51@WANT_IRS_PW@
52
53@BSD_COMP@
54@USE_POLL@
55@HAVE_MD5@
56@SOLARIS2@
57
58@DO_PTHREADS@
59@GETGROUPLIST_ARGS@
60@GETNETBYADDR_ADDR_T@
61@SETPWENT_VOID@
62@SETGRENT_VOID@
63
64@NET_R_ARGS@
65@NET_R_BAD@
66@NET_R_COPY@
67@NET_R_COPY_ARGS@
68@NET_R_END_RESULT@
69@NET_R_END_RETURN@
70@NET_R_ENT_ARGS@
71@NET_R_OK@
72@NET_R_RETURN@
73@NET_R_SET_RESULT@
74@NET_R_SETANSWER@
75@NET_R_SET_RETURN@
76@NETENT_DATA@
77
78@GROUP_R_RETURN@
79@GROUP_R_SET_RETURN@
80@GROUP_R_SET_RESULT@
81@GROUP_R_END_RETURN@
82@GROUP_R_END_RESULT@
83@GROUP_R_ARGS@
84@GROUP_R_ENT_ARGS@
85@GROUP_R_OK@
86@GROUP_R_BAD@
87
88@HOST_R_ARGS@
89@HOST_R_BAD@
90@HOST_R_COPY@
91@HOST_R_COPY_ARGS@
92@HOST_R_END_RESULT@
93@HOST_R_END_RETURN@
94@HOST_R_ENT_ARGS@
95@HOST_R_ERRNO@
96@HOST_R_OK@
97@HOST_R_RETURN@
98@HOST_R_SETANSWER@
99@HOST_R_SET_RESULT@
100@HOST_R_SET_RETURN@
101@HOSTENT_DATA@
102
103@NGR_R_ARGS@
104@NGR_R_BAD@
105@NGR_R_COPY@
106@NGR_R_COPY_ARGS@
107@NGR_R_CONST@
108@NGR_R_END_RESULT@
109@NGR_R_END_RETURN@
110@NGR_R_END_ARGS@
111@NGR_R_OK@
112@NGR_R_RETURN@
113@NGR_R_SET_CONST@
114@NGR_R_SET_RESULT@
115@NGR_R_SET_RETURN@
116@NGR_R_SET_ARGS@
117@NGR_R_PRIVATE@
118
119#if !defined(NGR_R_SET_ARGS) && defined(NGR_R_END_ARGS)
120#define NGR_R_SET_ARGS NGR_R_END_ARGS
121#endif
122
123@PROTO_R_ARGS@
124@PROTO_R_BAD@
125@PROTO_R_COPY@
126@PROTO_R_COPY_ARGS@
127@PROTO_R_END_RESULT@
128@PROTO_R_END_RETURN@
129@PROTO_R_ENT_ARGS@
130@PROTO_R_ENT_UNUSED@
131@PROTO_R_OK@
132@PROTO_R_SETANSWER@
133@PROTO_R_RETURN@
134@PROTO_R_SET_RESULT@
135@PROTO_R_SET_RETURN@
136@PROTOENT_DATA@
137
138@PASS_R_ARGS@
139@PASS_R_BAD@
140@PASS_R_COPY@
141@PASS_R_COPY_ARGS@
142@PASS_R_END_RESULT@
143@PASS_R_END_RETURN@
144@PASS_R_ENT_ARGS@
145@PASS_R_OK@
146@PASS_R_RETURN@
147@PASS_R_SET_RESULT@
148@PASS_R_SET_RETURN@
149
150@SERV_R_ARGS@
151@SERV_R_BAD@
152@SERV_R_COPY@
153@SERV_R_COPY_ARGS@
154@SERV_R_END_RESULT@
155@SERV_R_END_RETURN@
156@SERV_R_ENT_ARGS@
157@SERV_R_ENT_UNUSED@
158@SERV_R_OK@
159@SERV_R_SETANSWER@
160@SERV_R_RETURN@
161@SERV_R_SET_RESULT@
162@SERV_R_SET_RETURN@
163@SERVENT_DATA@
164
165
166#define DE_CONST(konst, var) \
167	do { \
168		union { const void *k; void *v; } _u; \
169		_u.k = konst; \
170		var = _u.v; \
171	} while (0)
172
173#define UNUSED(x) (x) = (x)
174
175@SOLARIS_BITTYPES@
176@ISC_SOCKLEN_T@
177
178#ifdef __GNUC__
179#define ISC_FORMAT_PRINTF(fmt, args) \
180	__attribute__((__format__(__printf__, fmt, args)))
181#else
182#define ISC_FORMAT_PRINTF(fmt, args)
183#endif
184
185/* Pull in host order macros when _XOPEN_SOURCE_EXTENDED is defined. */
186#if defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
187#include <sys/byteorder.h>
188#endif
189
190#endif
191
192/*! \file */
193