roken-common.h revision 90926
155682Smarkm/* 272445Sassar * Copyright (c) 1995 - 2001 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 3490926Snectar/* $Id: roken-common.h,v 1.48 2001/09/03 12:04:34 joda Exp $ */ 3555682Smarkm 3655682Smarkm#ifndef __ROKEN_COMMON_H__ 3755682Smarkm#define __ROKEN_COMMON_H__ 3855682Smarkm 3972445Sassar#ifdef __cplusplus 4072445Sassar#define ROKEN_CPP_START extern "C" { 4172445Sassar#define ROKEN_CPP_END } 4272445Sassar#else 4372445Sassar#define ROKEN_CPP_START 4472445Sassar#define ROKEN_CPP_END 4572445Sassar#endif 4672445Sassar 4755682Smarkm#ifndef INADDR_NONE 4855682Smarkm#define INADDR_NONE 0xffffffff 4955682Smarkm#endif 5055682Smarkm 5155682Smarkm#ifndef INADDR_LOOPBACK 5255682Smarkm#define INADDR_LOOPBACK 0x7f000001 5355682Smarkm#endif 5455682Smarkm 5555682Smarkm#ifndef SOMAXCONN 5655682Smarkm#define SOMAXCONN 5 5755682Smarkm#endif 5855682Smarkm 5955682Smarkm#ifndef STDIN_FILENO 6055682Smarkm#define STDIN_FILENO 0 6155682Smarkm#endif 6255682Smarkm 6355682Smarkm#ifndef STDOUT_FILENO 6455682Smarkm#define STDOUT_FILENO 1 6555682Smarkm#endif 6655682Smarkm 6755682Smarkm#ifndef STDERR_FILENO 6855682Smarkm#define STDERR_FILENO 2 6955682Smarkm#endif 7055682Smarkm 7155682Smarkm#ifndef max 7255682Smarkm#define max(a,b) (((a)>(b))?(a):(b)) 7355682Smarkm#endif 7455682Smarkm 7555682Smarkm#ifndef min 7655682Smarkm#define min(a,b) (((a)<(b))?(a):(b)) 7755682Smarkm#endif 7855682Smarkm 7955682Smarkm#ifndef TRUE 8055682Smarkm#define TRUE 1 8155682Smarkm#endif 8255682Smarkm 8355682Smarkm#ifndef FALSE 8455682Smarkm#define FALSE 0 8555682Smarkm#endif 8655682Smarkm 8755682Smarkm#ifndef LOG_DAEMON 8855682Smarkm#define openlog(id,option,facility) openlog((id),(option)) 8955682Smarkm#define LOG_DAEMON 0 9055682Smarkm#endif 9155682Smarkm#ifndef LOG_ODELAY 9255682Smarkm#define LOG_ODELAY 0 9355682Smarkm#endif 9455682Smarkm#ifndef LOG_NDELAY 9555682Smarkm#define LOG_NDELAY 0x08 9655682Smarkm#endif 9755682Smarkm#ifndef LOG_CONS 9855682Smarkm#define LOG_CONS 0 9955682Smarkm#endif 10055682Smarkm#ifndef LOG_AUTH 10155682Smarkm#define LOG_AUTH 0 10255682Smarkm#endif 10355682Smarkm#ifndef LOG_AUTHPRIV 10455682Smarkm#define LOG_AUTHPRIV LOG_AUTH 10555682Smarkm#endif 10655682Smarkm 10755682Smarkm#ifndef F_OK 10855682Smarkm#define F_OK 0 10955682Smarkm#endif 11055682Smarkm 11155682Smarkm#ifndef O_ACCMODE 11255682Smarkm#define O_ACCMODE 003 11355682Smarkm#endif 11455682Smarkm 11557416Smarkm#ifndef _PATH_DEV 11657416Smarkm#define _PATH_DEV "/dev/" 11757416Smarkm#endif 11857416Smarkm 11955682Smarkm#ifndef _PATH_DEVNULL 12055682Smarkm#define _PATH_DEVNULL "/dev/null" 12155682Smarkm#endif 12255682Smarkm 12355682Smarkm#ifndef _PATH_HEQUIV 12455682Smarkm#define _PATH_HEQUIV "/etc/hosts.equiv" 12555682Smarkm#endif 12655682Smarkm 12772445Sassar#ifndef _PATH_VARRUN 12872445Sassar#define _PATH_VARRUN "/var/run/" 12972445Sassar#endif 13072445Sassar 13172445Sassar#ifndef _PATH_BSHELL 13272445Sassar#define _PATH_BSHELL "/bin/sh" 13372445Sassar#endif 13472445Sassar 13555682Smarkm#ifndef MAXPATHLEN 13655682Smarkm#define MAXPATHLEN (1024+4) 13755682Smarkm#endif 13855682Smarkm 13955682Smarkm#ifndef SIG_ERR 14072445Sassar#define SIG_ERR ((RETSIGTYPE (*)(int))-1) 14155682Smarkm#endif 14255682Smarkm 14355682Smarkm/* 14455682Smarkm * error code for getipnodeby{name,addr} 14555682Smarkm */ 14655682Smarkm 14755682Smarkm#ifndef HOST_NOT_FOUND 14855682Smarkm#define HOST_NOT_FOUND 1 14955682Smarkm#endif 15055682Smarkm 15155682Smarkm#ifndef TRY_AGAIN 15255682Smarkm#define TRY_AGAIN 2 15355682Smarkm#endif 15455682Smarkm 15555682Smarkm#ifndef NO_RECOVERY 15655682Smarkm#define NO_RECOVERY 3 15755682Smarkm#endif 15855682Smarkm 15955682Smarkm#ifndef NO_DATA 16055682Smarkm#define NO_DATA 4 16155682Smarkm#endif 16255682Smarkm 16355682Smarkm#ifndef NO_ADDRESS 16455682Smarkm#define NO_ADDRESS NO_DATA 16555682Smarkm#endif 16655682Smarkm 16755682Smarkm/* 16855682Smarkm * error code for getaddrinfo 16955682Smarkm */ 17055682Smarkm 17155682Smarkm#ifndef EAI_NOERROR 17255682Smarkm#define EAI_NOERROR 0 /* no error */ 17355682Smarkm#endif 17455682Smarkm 17555682Smarkm#ifndef EAI_ADDRFAMILY 17655682Smarkm 17755682Smarkm#define EAI_ADDRFAMILY 1 /* address family for nodename not supported */ 17855682Smarkm#define EAI_AGAIN 2 /* temporary failure in name resolution */ 17955682Smarkm#define EAI_BADFLAGS 3 /* invalid value for ai_flags */ 18055682Smarkm#define EAI_FAIL 4 /* non-recoverable failure in name resolution */ 18155682Smarkm#define EAI_FAMILY 5 /* ai_family not supported */ 18255682Smarkm#define EAI_MEMORY 6 /* memory allocation failure */ 18355682Smarkm#define EAI_NODATA 7 /* no address associated with nodename */ 18455682Smarkm#define EAI_NONAME 8 /* nodename nor servname provided, or not known */ 18555682Smarkm#define EAI_SERVICE 9 /* servname not supported for ai_socktype */ 18655682Smarkm#define EAI_SOCKTYPE 10 /* ai_socktype not supported */ 18755682Smarkm#define EAI_SYSTEM 11 /* system error returned in errno */ 18855682Smarkm 18955682Smarkm#endif /* EAI_ADDRFAMILY */ 19055682Smarkm 19155682Smarkm/* flags for getaddrinfo() */ 19255682Smarkm 19355682Smarkm#ifndef AI_PASSIVE 19455682Smarkm 19555682Smarkm#define AI_PASSIVE 0x01 19655682Smarkm#define AI_CANONNAME 0x02 19755682Smarkm#define AI_NUMERICHOST 0x04 19855682Smarkm 19955682Smarkm#endif /* AI_PASSIVE */ 20055682Smarkm 20155682Smarkm/* flags for getnameinfo() */ 20255682Smarkm 20355682Smarkm#ifndef NI_DGRAM 20455682Smarkm#define NI_DGRAM 0x01 20555682Smarkm#define NI_NAMEREQD 0x02 20655682Smarkm#define NI_NOFQDN 0x04 20755682Smarkm#define NI_NUMERICHOST 0x08 20855682Smarkm#define NI_NUMERICSERV 0x10 20955682Smarkm#endif 21055682Smarkm 21155682Smarkm/* 21255682Smarkm * constants for getnameinfo 21355682Smarkm */ 21455682Smarkm 21555682Smarkm#ifndef NI_MAXHOST 21655682Smarkm#define NI_MAXHOST 1025 21755682Smarkm#define NI_MAXSERV 32 21855682Smarkm#endif 21955682Smarkm 22055682Smarkm/* 22155682Smarkm * constants for inet_ntop 22255682Smarkm */ 22355682Smarkm 22455682Smarkm#ifndef INET_ADDRSTRLEN 22555682Smarkm#define INET_ADDRSTRLEN 16 22655682Smarkm#endif 22755682Smarkm 22855682Smarkm#ifndef INET6_ADDRSTRLEN 22955682Smarkm#define INET6_ADDRSTRLEN 46 23055682Smarkm#endif 23155682Smarkm 23255682Smarkm/* 23355682Smarkm * for shutdown(2) 23455682Smarkm */ 23555682Smarkm 23655682Smarkm#ifndef SHUT_RD 23755682Smarkm#define SHUT_RD 0 23855682Smarkm#endif 23955682Smarkm 24055682Smarkm#ifndef SHUT_WR 24155682Smarkm#define SHUT_WR 1 24255682Smarkm#endif 24355682Smarkm 24455682Smarkm#ifndef SHUT_RDWR 24555682Smarkm#define SHUT_RDWR 2 24655682Smarkm#endif 24755682Smarkm 24855682Smarkm#ifndef HAVE___ATTRIBUTE__ 24955682Smarkm#define __attribute__(x) 25055682Smarkm#endif 25155682Smarkm 25272445SassarROKEN_CPP_START 25372445Sassar 25455682Smarkm#if IRIX != 4 /* fix for compiler bug */ 25555682Smarkm#ifdef RETSIGTYPE 25672445Sassartypedef RETSIGTYPE (*SigAction)(int); 25755682SmarkmSigAction signal(int iSig, SigAction pAction); /* BSD compatible */ 25855682Smarkm#endif 25955682Smarkm#endif 26055682Smarkm 26155682Smarkmint ROKEN_LIB_FUNCTION simple_execve(const char*, char*const[], char*const[]); 26255682Smarkmint ROKEN_LIB_FUNCTION simple_execvp(const char*, char *const[]); 26355682Smarkmint ROKEN_LIB_FUNCTION simple_execlp(const char*, ...); 26455682Smarkmint ROKEN_LIB_FUNCTION simple_execle(const char*, ...); 26572445Sassarint ROKEN_LIB_FUNCTION simple_execl(const char *file, ...); 26655682Smarkm 26790926Snectarint ROKEN_LIB_FUNCTION wait_for_process(pid_t); 26890926Snectarint ROKEN_LIB_FUNCTION pipe_execv(FILE**, FILE**, FILE**, const char*, ...); 26990926Snectar 27055682Smarkmvoid ROKEN_LIB_FUNCTION print_version(const char *); 27155682Smarkm 27255682Smarkmssize_t ROKEN_LIB_FUNCTION eread (int fd, void *buf, size_t nbytes); 27355682Smarkmssize_t ROKEN_LIB_FUNCTION ewrite (int fd, const void *buf, size_t nbytes); 27455682Smarkm 27590926Snectarstruct hostent; 27690926Snectar 27790926Snectarconst char * 27890926Snectarhostent_find_fqdn (const struct hostent *he); 27990926Snectar 28055682Smarkmvoid 28172445Sassaresetenv(const char *var, const char *val, int rewrite); 28272445Sassar 28372445Sassarvoid 28455682Smarkmsocket_set_address_and_port (struct sockaddr *sa, const void *ptr, int port); 28555682Smarkm 28655682Smarkmsize_t 28755682Smarkmsocket_addr_size (const struct sockaddr *sa); 28855682Smarkm 28955682Smarkmvoid 29055682Smarkmsocket_set_any (struct sockaddr *sa, int af); 29155682Smarkm 29255682Smarkmsize_t 29355682Smarkmsocket_sockaddr_size (const struct sockaddr *sa); 29455682Smarkm 29555682Smarkmvoid * 29655682Smarkmsocket_get_address (struct sockaddr *sa); 29755682Smarkm 29855682Smarkmint 29955682Smarkmsocket_get_port (const struct sockaddr *sa); 30055682Smarkm 30155682Smarkmvoid 30255682Smarkmsocket_set_port (struct sockaddr *sa, int port); 30355682Smarkm 30455682Smarkmvoid 30590926Snectarsocket_set_portrange (int sock, int restr, int af); 30690926Snectar 30790926Snectarvoid 30855682Smarkmsocket_set_debug (int sock); 30955682Smarkm 31055682Smarkmvoid 31155682Smarkmsocket_set_tos (int sock, int tos); 31255682Smarkm 31355682Smarkmvoid 31455682Smarkmsocket_set_reuseaddr (int sock, int val); 31555682Smarkm 31657416Smarkmchar ** 31757416Smarkmvstrcollect(va_list *ap); 31857416Smarkm 31957416Smarkmchar ** 32057416Smarkmstrcollect(char *first, ...); 32157416Smarkm 32272445Sassarvoid timevalfix(struct timeval *t1); 32372445Sassarvoid timevaladd(struct timeval *t1, const struct timeval *t2); 32472445Sassarvoid timevalsub(struct timeval *t1, const struct timeval *t2); 32557419Smarkm 32672445Sassarchar *pid_file_write (const char *progname); 32772445Sassarvoid pid_file_delete (char **); 32872445Sassar 32972445Sassarint 33072445Sassarread_environment(const char *file, char ***env); 33172445Sassar 33272445Sassarvoid warnerr(int doerrno, const char *fmt, va_list ap) 33372445Sassar __attribute__ ((format (printf, 2, 0))); 33472445Sassar 33572445SassarROKEN_CPP_END 33672445Sassar 33755682Smarkm#endif /* __ROKEN_COMMON_H__ */ 338