roken-common.h revision 55682
1/*
2 * Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska H�gskolan
3 * (Royal Institute of Technology, Stockholm, Sweden).
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 *
17 * 3. Neither the name of the Institute nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34/* $Id: roken-common.h,v 1.24 1999/12/05 13:25:40 assar Exp $ */
35
36#ifndef __ROKEN_COMMON_H__
37#define __ROKEN_COMMON_H__
38
39#ifndef INADDR_NONE
40#define INADDR_NONE 0xffffffff
41#endif
42
43#ifndef INADDR_LOOPBACK
44#define INADDR_LOOPBACK 0x7f000001
45#endif
46
47#ifndef SOMAXCONN
48#define SOMAXCONN 5
49#endif
50
51#ifndef STDIN_FILENO
52#define STDIN_FILENO 0
53#endif
54
55#ifndef STDOUT_FILENO
56#define STDOUT_FILENO 1
57#endif
58
59#ifndef STDERR_FILENO
60#define STDERR_FILENO 2
61#endif
62
63#ifndef max
64#define max(a,b) (((a)>(b))?(a):(b))
65#endif
66
67#ifndef min
68#define min(a,b) (((a)<(b))?(a):(b))
69#endif
70
71#ifndef TRUE
72#define TRUE 1
73#endif
74
75#ifndef FALSE
76#define FALSE 0
77#endif
78
79#ifndef LOG_DAEMON
80#define openlog(id,option,facility) openlog((id),(option))
81#define	LOG_DAEMON	0
82#endif
83#ifndef LOG_ODELAY
84#define LOG_ODELAY 0
85#endif
86#ifndef LOG_NDELAY
87#define LOG_NDELAY 0x08
88#endif
89#ifndef LOG_CONS
90#define LOG_CONS 0
91#endif
92#ifndef LOG_AUTH
93#define LOG_AUTH 0
94#endif
95#ifndef LOG_AUTHPRIV
96#define LOG_AUTHPRIV LOG_AUTH
97#endif
98
99#ifndef F_OK
100#define F_OK 0
101#endif
102
103#ifndef O_ACCMODE
104#define O_ACCMODE	003
105#endif
106
107#ifndef _PATH_DEVNULL
108#define _PATH_DEVNULL "/dev/null"
109#endif
110
111#ifndef _PATH_HEQUIV
112#define _PATH_HEQUIV "/etc/hosts.equiv"
113#endif
114
115#ifndef MAXPATHLEN
116#define MAXPATHLEN (1024+4)
117#endif
118
119#ifndef SIG_ERR
120#define SIG_ERR ((RETSIGTYPE (*)())-1)
121#endif
122
123/*
124 * error code for getipnodeby{name,addr}
125 */
126
127#ifndef HOST_NOT_FOUND
128#define HOST_NOT_FOUND 1
129#endif
130
131#ifndef TRY_AGAIN
132#define TRY_AGAIN 2
133#endif
134
135#ifndef NO_RECOVERY
136#define NO_RECOVERY 3
137#endif
138
139#ifndef NO_DATA
140#define NO_DATA 4
141#endif
142
143#ifndef NO_ADDRESS
144#define NO_ADDRESS NO_DATA
145#endif
146
147/*
148 * error code for getaddrinfo
149 */
150
151#ifndef EAI_NOERROR
152#define EAI_NOERROR	0	/* no error */
153#endif
154
155#ifndef EAI_ADDRFAMILY
156
157#define EAI_ADDRFAMILY	1	/* address family for nodename not supported */
158#define EAI_AGAIN	2	/* temporary failure in name resolution */
159#define EAI_BADFLAGS	3	/* invalid value for ai_flags */
160#define EAI_FAIL	4	/* non-recoverable failure in name resolution */
161#define EAI_FAMILY	5	/* ai_family not supported */
162#define EAI_MEMORY	6	/* memory allocation failure */
163#define EAI_NODATA	7	/* no address associated with nodename */
164#define EAI_NONAME	8	/* nodename nor servname provided, or not known */
165#define EAI_SERVICE	9	/* servname not supported for ai_socktype */
166#define EAI_SOCKTYPE   10	/* ai_socktype not supported */
167#define EAI_SYSTEM     11	/* system error returned in errno */
168
169#endif /* EAI_ADDRFAMILY */
170
171/* flags for getaddrinfo() */
172
173#ifndef AI_PASSIVE
174
175#define AI_PASSIVE	0x01
176#define AI_CANONNAME	0x02
177#define AI_NUMERICHOST	0x04
178
179#endif /* AI_PASSIVE */
180
181/* flags for getnameinfo() */
182
183#ifndef NI_DGRAM
184#define NI_DGRAM	0x01
185#define NI_NAMEREQD	0x02
186#define NI_NOFQDN	0x04
187#define NI_NUMERICHOST	0x08
188#define NI_NUMERICSERV	0x10
189#endif
190
191/*
192 * constants for getnameinfo
193 */
194
195#ifndef NI_MAXHOST
196#define NI_MAXHOST  1025
197#define NI_MAXSERV    32
198#endif
199
200/*
201 * constants for inet_ntop
202 */
203
204#ifndef INET_ADDRSTRLEN
205#define INET_ADDRSTRLEN    16
206#endif
207
208#ifndef INET6_ADDRSTRLEN
209#define INET6_ADDRSTRLEN   46
210#endif
211
212/*
213 * for shutdown(2)
214 */
215
216#ifndef SHUT_RD
217#define SHUT_RD 0
218#endif
219
220#ifndef SHUT_WR
221#define SHUT_WR 1
222#endif
223
224#ifndef SHUT_RDWR
225#define SHUT_RDWR 2
226#endif
227
228#ifndef HAVE___ATTRIBUTE__
229#define __attribute__(x)
230#endif
231
232#if IRIX != 4 /* fix for compiler bug */
233#ifdef RETSIGTYPE
234typedef RETSIGTYPE (*SigAction)(/* int??? */);
235SigAction signal(int iSig, SigAction pAction); /* BSD compatible */
236#endif
237#endif
238
239int ROKEN_LIB_FUNCTION simple_execve(const char*, char*const[], char*const[]);
240int ROKEN_LIB_FUNCTION simple_execvp(const char*, char *const[]);
241int ROKEN_LIB_FUNCTION simple_execlp(const char*, ...);
242int ROKEN_LIB_FUNCTION simple_execle(const char*, ...);
243
244void ROKEN_LIB_FUNCTION print_version(const char *);
245
246void *ROKEN_LIB_FUNCTION emalloc (size_t);
247void *ROKEN_LIB_FUNCTION erealloc (void *, size_t);
248char *ROKEN_LIB_FUNCTION estrdup (const char *);
249
250ssize_t ROKEN_LIB_FUNCTION eread (int fd, void *buf, size_t nbytes);
251ssize_t ROKEN_LIB_FUNCTION ewrite (int fd, const void *buf, size_t nbytes);
252
253void
254socket_set_address_and_port (struct sockaddr *sa, const void *ptr, int port);
255
256size_t
257socket_addr_size (const struct sockaddr *sa);
258
259void
260socket_set_any (struct sockaddr *sa, int af);
261
262size_t
263socket_sockaddr_size (const struct sockaddr *sa);
264
265void *
266socket_get_address (struct sockaddr *sa);
267
268int
269socket_get_port (const struct sockaddr *sa);
270
271void
272socket_set_port (struct sockaddr *sa, int port);
273
274void
275socket_set_debug (int sock);
276
277void
278socket_set_tos (int sock, int tos);
279
280void
281socket_set_reuseaddr (int sock, int val);
282
283#endif /* __ROKEN_COMMON_H__ */
284