Import upstream 2.3.14
[packages/xinetd.git] / libs / src / portable / libportable.h
1 #ifndef _XINETD_LIBPORTABLE
2 #define _XINETD_LIBPORTABLE 1
3
4 #include "config.h"
5 #include <sys/types.h>
6 #include <sys/socket.h>
7 #include <netinet/in.h>
8 #include <netdb.h>
9
10 #ifndef IPV6_ADDRFORM
11 #define IPV6_ADDRFORM            1
12 #endif
13
14 #ifndef NI_MAXHOST
15 #define NI_MAXHOST 1025
16 #endif
17
18 #ifndef HAVE_DIFFTIME
19 double difftime( time_t, time_t );
20 #endif
21
22 #ifndef HAVE_STRCASECMP
23 int strcasecmp(const char *s1, const char *s2);
24 #endif
25
26 #ifndef HAVE_STRERROR
27 char * strerror(int);
28 #endif
29
30 #ifdef NO_INET_ATON
31 int inet_aton(const char *cp, struct in_addr *addr);
32 #endif
33
34 #ifndef HAVE_GETNAMEINFO
35 int getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
36                 size_t hostlen, char *serv, size_t servlen, int flags);
37 #endif
38
39 #ifndef HAVE_INET_NTOP
40 const char *inet_ntop(int, const void *, char *, size_t);
41 #endif
42
43 #ifndef APPEND
44 #define APPEND(a, b) APPEND2 (a, b)
45 #endif
46
47 #ifndef APPEND2
48 #define APPEND2(a, b) a##b
49 #endif
50
51 #ifndef FLOAT_TYPE
52 #define FLOAT_TYPE double
53 #endif
54
55 #ifndef FUNC_PREFIX
56 #define FUNC_PREFIX 
57 #endif
58
59 #ifndef HAVE_FCVT
60 int APPEND(FUNC_PREFIX,fcvt_r)(FLOAT_TYPE value,int ndigit,int *decpt,int *sign,char *buf,size_t len);
61 char *APPEND(FUNC_PREFIX,fcvt)(FLOAT_TYPE value,int ndigit,int *decpt,int *sign);
62 #endif
63 #ifndef HAVE_ECVT
64 char *APPEND(FUNC_PREFIX,ecvt)(FLOAT_TYPE value,int ndigit,int *decpt,int *sign);
65 int APPEND(FUNC_PREFIX,ecvt_r)(FLOAT_TYPE value,int ndigit,int *decpt,int *sign,char *buf,size_t len);
66 #endif
67 #ifndef HAVE_GCVT
68 char *APPEND(FUNC_PREFIX,gcvt)(FLOAT_TYPE value,int ndigit,char *buf);
69 #endif
70
71 /* from OpenSSH's fake-socket.h */
72
73 #ifndef HAVE_STRUCT_SOCKADDR_STORAGE
74 # define        _SS_MAXSIZE     128     /* Implementation specific max size */
75 # define       _SS_PADSIZE     (_SS_MAXSIZE - sizeof (struct sockaddr))
76
77 struct sockaddr_storage {
78         struct  sockaddr ss_sa;
79         char            __ss_pad2[_SS_PADSIZE];
80 };
81 # define ss_family ss_sa.sa_family
82 #endif /* !HAVE_STRUCT_SOCKADDR_STORAGE */
83
84 #ifndef IN6_IS_ADDR_LOOPBACK
85 # define IN6_IS_ADDR_LOOPBACK(a) \
86         (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
87          ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == htonl (1))
88 #endif /* !IN6_IS_ADDR_LOOPBACK */
89
90 #ifndef HAVE_STRUCT_IN6_ADDR
91 struct in6_addr {
92         uint8_t         s6_addr[16];
93 };
94 #endif /* !HAVE_STRUCT_IN6_ADDR */
95
96 #ifndef HAVE_STRUCT_SOCKADDR_IN6
97 struct sockaddr_in6 {
98    unsigned short sin6_family;
99         uint16_t sin6_port;
100         uint32_t sin6_flowinfo;
101         struct in6_addr sin6_addr;
102 };
103 #endif /* !HAVE_STRUCT_SOCKADDR_IN6 */
104
105 #ifndef AF_INET6
106 /* Define it to something that should never appear */
107 #define AF_INET6 AF_MAX
108 #endif
109
110
111 #endif /* _XINETD_LIBPORTABLE */