roken-common.h revision 57416
155682Smarkm/* 257416Smarkm * Copyright (c) 1995 - 2000 Kungliga Tekniska H�gskolan 355682Smarkm * (Royal Institute of Technology, Stockholm, Sweden). 455682Smarkm * All rights reserved. 555682Smarkm * 655682Smarkm * Redistribution and use in source and binary forms, with or without 755682Smarkm * modification, are permitted provided that the following conditions 855682Smarkm * are met: 955682Smarkm * 1055682Smarkm * 1. Redistributions of source code must retain the above copyright 1155682Smarkm * notice, this list of conditions and the following disclaimer. 1255682Smarkm * 1355682Smarkm * 2. Redistributions in binary form must reproduce the above copyright 1455682Smarkm * notice, this list of conditions and the following disclaimer in the 1555682Smarkm * documentation and/or other materials provided with the distribution. 1655682Smarkm * 1755682Smarkm * 3. Neither the name of the Institute nor the names of its contributors 1855682Smarkm * may be used to endorse or promote products derived from this software 1955682Smarkm * without specific prior written permission. 2055682Smarkm * 2155682Smarkm * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 2255682Smarkm * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2355682Smarkm * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2455682Smarkm * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 2555682Smarkm * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2655682Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2755682Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2855682Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2955682Smarkm * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3055682Smarkm * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3155682Smarkm * SUCH DAMAGE. 3255682Smarkm */ 3355682Smarkm 3457416Smarkm/* $Id: roken-common.h,v 1.25 2000/01/09 10:58:34 assar Exp $ */ 3555682Smarkm 3655682Smarkm#ifndef __ROKEN_COMMON_H__ 3755682Smarkm#define __ROKEN_COMMON_H__ 3855682Smarkm 3955682Smarkm#ifndef INADDR_NONE 4055682Smarkm#define INADDR_NONE 0xffffffff 4155682Smarkm#endif 4255682Smarkm 4355682Smarkm#ifndef INADDR_LOOPBACK 4455682Smarkm#define INADDR_LOOPBACK 0x7f000001 4555682Smarkm#endif 4655682Smarkm 4755682Smarkm#ifndef SOMAXCONN 4855682Smarkm#define SOMAXCONN 5 4955682Smarkm#endif 5055682Smarkm 5155682Smarkm#ifndef STDIN_FILENO 5255682Smarkm#define STDIN_FILENO 0 5355682Smarkm#endif 5455682Smarkm 5555682Smarkm#ifndef STDOUT_FILENO 5655682Smarkm#define STDOUT_FILENO 1 5755682Smarkm#endif 5855682Smarkm 5955682Smarkm#ifndef STDERR_FILENO 6055682Smarkm#define STDERR_FILENO 2 6155682Smarkm#endif 6255682Smarkm 6355682Smarkm#ifndef max 6455682Smarkm#define max(a,b) (((a)>(b))?(a):(b)) 6555682Smarkm#endif 6655682Smarkm 6755682Smarkm#ifndef min 6855682Smarkm#define min(a,b) (((a)<(b))?(a):(b)) 6955682Smarkm#endif 7055682Smarkm 7155682Smarkm#ifndef TRUE 7255682Smarkm#define TRUE 1 7355682Smarkm#endif 7455682Smarkm 7555682Smarkm#ifndef FALSE 7655682Smarkm#define FALSE 0 7755682Smarkm#endif 7855682Smarkm 7955682Smarkm#ifndef LOG_DAEMON 8055682Smarkm#define openlog(id,option,facility) openlog((id),(option)) 8155682Smarkm#define LOG_DAEMON 0 8255682Smarkm#endif 8355682Smarkm#ifndef LOG_ODELAY 8455682Smarkm#define LOG_ODELAY 0 8555682Smarkm#endif 8655682Smarkm#ifndef LOG_NDELAY 8755682Smarkm#define LOG_NDELAY 0x08 8855682Smarkm#endif 8955682Smarkm#ifndef LOG_CONS 9055682Smarkm#define LOG_CONS 0 9155682Smarkm#endif 9255682Smarkm#ifndef LOG_AUTH 9355682Smarkm#define LOG_AUTH 0 9455682Smarkm#endif 9555682Smarkm#ifndef LOG_AUTHPRIV 9655682Smarkm#define LOG_AUTHPRIV LOG_AUTH 9755682Smarkm#endif 9855682Smarkm 9955682Smarkm#ifndef F_OK 10055682Smarkm#define F_OK 0 10155682Smarkm#endif 10255682Smarkm 10355682Smarkm#ifndef O_ACCMODE 10455682Smarkm#define O_ACCMODE 003 10555682Smarkm#endif 10655682Smarkm 10757416Smarkm#ifndef _PATH_DEV 10857416Smarkm#define _PATH_DEV "/dev/" 10957416Smarkm#endif 11057416Smarkm 11155682Smarkm#ifndef _PATH_DEVNULL 11255682Smarkm#define _PATH_DEVNULL "/dev/null" 11355682Smarkm#endif 11455682Smarkm 11555682Smarkm#ifndef _PATH_HEQUIV 11655682Smarkm#define _PATH_HEQUIV "/etc/hosts.equiv" 11755682Smarkm#endif 11855682Smarkm 11955682Smarkm#ifndef MAXPATHLEN 12055682Smarkm#define MAXPATHLEN (1024+4) 12155682Smarkm#endif 12255682Smarkm 12355682Smarkm#ifndef SIG_ERR 12455682Smarkm#define SIG_ERR ((RETSIGTYPE (*)())-1) 12555682Smarkm#endif 12655682Smarkm 12755682Smarkm/* 12855682Smarkm * error code for getipnodeby{name,addr} 12955682Smarkm */ 13055682Smarkm 13155682Smarkm#ifndef HOST_NOT_FOUND 13255682Smarkm#define HOST_NOT_FOUND 1 13355682Smarkm#endif 13455682Smarkm 13555682Smarkm#ifndef TRY_AGAIN 13655682Smarkm#define TRY_AGAIN 2 13755682Smarkm#endif 13855682Smarkm 13955682Smarkm#ifndef NO_RECOVERY 14055682Smarkm#define NO_RECOVERY 3 14155682Smarkm#endif 14255682Smarkm 14355682Smarkm#ifndef NO_DATA 14455682Smarkm#define NO_DATA 4 14555682Smarkm#endif 14655682Smarkm 14755682Smarkm#ifndef NO_ADDRESS 14855682Smarkm#define NO_ADDRESS NO_DATA 14955682Smarkm#endif 15055682Smarkm 15155682Smarkm/* 15255682Smarkm * error code for getaddrinfo 15355682Smarkm */ 15455682Smarkm 15555682Smarkm#ifndef EAI_NOERROR 15655682Smarkm#define EAI_NOERROR 0 /* no error */ 15755682Smarkm#endif 15855682Smarkm 15955682Smarkm#ifndef EAI_ADDRFAMILY 16055682Smarkm 16155682Smarkm#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */ 16255682Smarkm#define EAI_AGAIN 2 /* temporary failure in name resolution */ 16355682Smarkm#define EAI_BADFLAGS 3 /* invalid value for ai_flags */ 16455682Smarkm#define EAI_FAIL 4 /* non-recoverable failure in name resolution */ 16555682Smarkm#define EAI_FAMILY 5 /* ai_family not supported */ 16655682Smarkm#define EAI_MEMORY 6 /* memory allocation failure */ 16755682Smarkm#define EAI_NODATA 7 /* no address associated with nodename */ 16855682Smarkm#define EAI_NONAME 8 /* nodename nor servname provided, or not known */ 16955682Smarkm#define EAI_SERVICE 9 /* servname not supported for ai_socktype */ 17055682Smarkm#define EAI_SOCKTYPE 10 /* ai_socktype not supported */ 17155682Smarkm#define EAI_SYSTEM 11 /* system error returned in errno */ 17255682Smarkm 17355682Smarkm#endif /* EAI_ADDRFAMILY */ 17455682Smarkm 17555682Smarkm/* flags for getaddrinfo() */ 17655682Smarkm 17755682Smarkm#ifndef AI_PASSIVE 17855682Smarkm 17955682Smarkm#define AI_PASSIVE 0x01 18055682Smarkm#define AI_CANONNAME 0x02 18155682Smarkm#define AI_NUMERICHOST 0x04 18255682Smarkm 18355682Smarkm#endif /* AI_PASSIVE */ 18455682Smarkm 18555682Smarkm/* flags for getnameinfo() */ 18655682Smarkm 18755682Smarkm#ifndef NI_DGRAM 18855682Smarkm#define NI_DGRAM 0x01 18955682Smarkm#define NI_NAMEREQD 0x02 19055682Smarkm#define NI_NOFQDN 0x04 19155682Smarkm#define NI_NUMERICHOST 0x08 19255682Smarkm#define NI_NUMERICSERV 0x10 19355682Smarkm#endif 19455682Smarkm 19555682Smarkm/* 19655682Smarkm * constants for getnameinfo 19755682Smarkm */ 19855682Smarkm 19955682Smarkm#ifndef NI_MAXHOST 20055682Smarkm#define NI_MAXHOST 1025 20155682Smarkm#define NI_MAXSERV 32 20255682Smarkm#endif 20355682Smarkm 20455682Smarkm/* 20555682Smarkm * constants for inet_ntop 20655682Smarkm */ 20755682Smarkm 20855682Smarkm#ifndef INET_ADDRSTRLEN 20955682Smarkm#define INET_ADDRSTRLEN 16 21055682Smarkm#endif 21155682Smarkm 21255682Smarkm#ifndef INET6_ADDRSTRLEN 21355682Smarkm#define INET6_ADDRSTRLEN 46 21455682Smarkm#endif 21555682Smarkm 21655682Smarkm/* 21755682Smarkm * for shutdown(2) 21855682Smarkm */ 21955682Smarkm 22055682Smarkm#ifndef SHUT_RD 22155682Smarkm#define SHUT_RD 0 22255682Smarkm#endif 22355682Smarkm 22455682Smarkm#ifndef SHUT_WR 22555682Smarkm#define SHUT_WR 1 22655682Smarkm#endif 22755682Smarkm 22855682Smarkm#ifndef SHUT_RDWR 22955682Smarkm#define SHUT_RDWR 2 23055682Smarkm#endif 23155682Smarkm 23255682Smarkm#ifndef HAVE___ATTRIBUTE__ 23355682Smarkm#define __attribute__(x) 23455682Smarkm#endif 23555682Smarkm 23655682Smarkm#if IRIX != 4 /* fix for compiler bug */ 23755682Smarkm#ifdef RETSIGTYPE 23855682Smarkmtypedef RETSIGTYPE (*SigAction)(/* int??? */); 23955682SmarkmSigAction signal(int iSig, SigAction pAction); /* BSD compatible */ 24055682Smarkm#endif 24155682Smarkm#endif 24255682Smarkm 24355682Smarkmint ROKEN_LIB_FUNCTION simple_execve(const char*, char*const[], char*const[]); 24455682Smarkmint ROKEN_LIB_FUNCTION simple_execvp(const char*, char *const[]); 24555682Smarkmint ROKEN_LIB_FUNCTION simple_execlp(const char*, ...); 24655682Smarkmint ROKEN_LIB_FUNCTION simple_execle(const char*, ...); 24755682Smarkm 24855682Smarkmvoid ROKEN_LIB_FUNCTION print_version(const char *); 24955682Smarkm 25055682Smarkmvoid *ROKEN_LIB_FUNCTION emalloc (size_t); 25155682Smarkmvoid *ROKEN_LIB_FUNCTION erealloc (void *, size_t); 25255682Smarkmchar *ROKEN_LIB_FUNCTION estrdup (const char *); 25355682Smarkm 25455682Smarkmssize_t ROKEN_LIB_FUNCTION eread (int fd, void *buf, size_t nbytes); 25555682Smarkmssize_t ROKEN_LIB_FUNCTION ewrite (int fd, const void *buf, size_t nbytes); 25655682Smarkm 25755682Smarkmvoid 25855682Smarkmsocket_set_address_and_port (struct sockaddr *sa, const void *ptr, int port); 25955682Smarkm 26055682Smarkmsize_t 26155682Smarkmsocket_addr_size (const struct sockaddr *sa); 26255682Smarkm 26355682Smarkmvoid 26455682Smarkmsocket_set_any (struct sockaddr *sa, int af); 26555682Smarkm 26655682Smarkmsize_t 26755682Smarkmsocket_sockaddr_size (const struct sockaddr *sa); 26855682Smarkm 26955682Smarkmvoid * 27055682Smarkmsocket_get_address (struct sockaddr *sa); 27155682Smarkm 27255682Smarkmint 27355682Smarkmsocket_get_port (const struct sockaddr *sa); 27455682Smarkm 27555682Smarkmvoid 27655682Smarkmsocket_set_port (struct sockaddr *sa, int port); 27755682Smarkm 27855682Smarkmvoid 27955682Smarkmsocket_set_debug (int sock); 28055682Smarkm 28155682Smarkmvoid 28255682Smarkmsocket_set_tos (int sock, int tos); 28355682Smarkm 28455682Smarkmvoid 28555682Smarkmsocket_set_reuseaddr (int sock, int val); 28655682Smarkm 28757416Smarkmchar ** 28857416Smarkmvstrcollect(va_list *ap); 28957416Smarkm 29057416Smarkmchar ** 29157416Smarkmstrcollect(char *first, ...); 29257416Smarkm 29355682Smarkm#endif /* __ROKEN_COMMON_H__ */ 294