roken-common.h revision 57416
1/* 2 * Copyright (c) 1995 - 2000 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.25 2000/01/09 10:58:34 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_DEV 108#define _PATH_DEV "/dev/" 109#endif 110 111#ifndef _PATH_DEVNULL 112#define _PATH_DEVNULL "/dev/null" 113#endif 114 115#ifndef _PATH_HEQUIV 116#define _PATH_HEQUIV "/etc/hosts.equiv" 117#endif 118 119#ifndef MAXPATHLEN 120#define MAXPATHLEN (1024+4) 121#endif 122 123#ifndef SIG_ERR 124#define SIG_ERR ((RETSIGTYPE (*)())-1) 125#endif 126 127/* 128 * error code for getipnodeby{name,addr} 129 */ 130 131#ifndef HOST_NOT_FOUND 132#define HOST_NOT_FOUND 1 133#endif 134 135#ifndef TRY_AGAIN 136#define TRY_AGAIN 2 137#endif 138 139#ifndef NO_RECOVERY 140#define NO_RECOVERY 3 141#endif 142 143#ifndef NO_DATA 144#define NO_DATA 4 145#endif 146 147#ifndef NO_ADDRESS 148#define NO_ADDRESS NO_DATA 149#endif 150 151/* 152 * error code for getaddrinfo 153 */ 154 155#ifndef EAI_NOERROR 156#define EAI_NOERROR 0 /* no error */ 157#endif 158 159#ifndef EAI_ADDRFAMILY 160 161#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */ 162#define EAI_AGAIN 2 /* temporary failure in name resolution */ 163#define EAI_BADFLAGS 3 /* invalid value for ai_flags */ 164#define EAI_FAIL 4 /* non-recoverable failure in name resolution */ 165#define EAI_FAMILY 5 /* ai_family not supported */ 166#define EAI_MEMORY 6 /* memory allocation failure */ 167#define EAI_NODATA 7 /* no address associated with nodename */ 168#define EAI_NONAME 8 /* nodename nor servname provided, or not known */ 169#define EAI_SERVICE 9 /* servname not supported for ai_socktype */ 170#define EAI_SOCKTYPE 10 /* ai_socktype not supported */ 171#define EAI_SYSTEM 11 /* system error returned in errno */ 172 173#endif /* EAI_ADDRFAMILY */ 174 175/* flags for getaddrinfo() */ 176 177#ifndef AI_PASSIVE 178 179#define AI_PASSIVE 0x01 180#define AI_CANONNAME 0x02 181#define AI_NUMERICHOST 0x04 182 183#endif /* AI_PASSIVE */ 184 185/* flags for getnameinfo() */ 186 187#ifndef NI_DGRAM 188#define NI_DGRAM 0x01 189#define NI_NAMEREQD 0x02 190#define NI_NOFQDN 0x04 191#define NI_NUMERICHOST 0x08 192#define NI_NUMERICSERV 0x10 193#endif 194 195/* 196 * constants for getnameinfo 197 */ 198 199#ifndef NI_MAXHOST 200#define NI_MAXHOST 1025 201#define NI_MAXSERV 32 202#endif 203 204/* 205 * constants for inet_ntop 206 */ 207 208#ifndef INET_ADDRSTRLEN 209#define INET_ADDRSTRLEN 16 210#endif 211 212#ifndef INET6_ADDRSTRLEN 213#define INET6_ADDRSTRLEN 46 214#endif 215 216/* 217 * for shutdown(2) 218 */ 219 220#ifndef SHUT_RD 221#define SHUT_RD 0 222#endif 223 224#ifndef SHUT_WR 225#define SHUT_WR 1 226#endif 227 228#ifndef SHUT_RDWR 229#define SHUT_RDWR 2 230#endif 231 232#ifndef HAVE___ATTRIBUTE__ 233#define __attribute__(x) 234#endif 235 236#if IRIX != 4 /* fix for compiler bug */ 237#ifdef RETSIGTYPE 238typedef RETSIGTYPE (*SigAction)(/* int??? */); 239SigAction signal(int iSig, SigAction pAction); /* BSD compatible */ 240#endif 241#endif 242 243int ROKEN_LIB_FUNCTION simple_execve(const char*, char*const[], char*const[]); 244int ROKEN_LIB_FUNCTION simple_execvp(const char*, char *const[]); 245int ROKEN_LIB_FUNCTION simple_execlp(const char*, ...); 246int ROKEN_LIB_FUNCTION simple_execle(const char*, ...); 247 248void ROKEN_LIB_FUNCTION print_version(const char *); 249 250void *ROKEN_LIB_FUNCTION emalloc (size_t); 251void *ROKEN_LIB_FUNCTION erealloc (void *, size_t); 252char *ROKEN_LIB_FUNCTION estrdup (const char *); 253 254ssize_t ROKEN_LIB_FUNCTION eread (int fd, void *buf, size_t nbytes); 255ssize_t ROKEN_LIB_FUNCTION ewrite (int fd, const void *buf, size_t nbytes); 256 257void 258socket_set_address_and_port (struct sockaddr *sa, const void *ptr, int port); 259 260size_t 261socket_addr_size (const struct sockaddr *sa); 262 263void 264socket_set_any (struct sockaddr *sa, int af); 265 266size_t 267socket_sockaddr_size (const struct sockaddr *sa); 268 269void * 270socket_get_address (struct sockaddr *sa); 271 272int 273socket_get_port (const struct sockaddr *sa); 274 275void 276socket_set_port (struct sockaddr *sa, int port); 277 278void 279socket_set_debug (int sock); 280 281void 282socket_set_tos (int sock, int tos); 283 284void 285socket_set_reuseaddr (int sock, int val); 286 287char ** 288vstrcollect(va_list *ap); 289 290char ** 291strcollect(char *first, ...); 292 293#endif /* __ROKEN_COMMON_H__ */ 294