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