netsupp.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _NETSUPP_H_
00022 #define _NETSUPP_H_
00023
00024 #include "kdelibs_export.h"
00025
00026 #ifdef HAVE_CONFIG_H
00027 #include <config.h>
00028 #endif
00029
00030 #include <sys/socket.h>
00031 #include <netdb.h>
00032
00033
00034
00035
00036
00037 #ifndef AF_LOCAL
00038 #define AF_LOCAL AF_UNIX
00039 #define PF_LOCAL PF_UNIX
00040 #endif
00041
00042 #ifdef CLOBBER_IN6
00043 #define kde_in6_addr in6_addr
00044 #define kde_sockaddr_in6 sockaddr_in6
00045 #endif
00046
00047
00048
00053 struct kde_in6_addr
00054 {
00055 unsigned char __u6_addr[16];
00056 };
00057
00062 struct kde_sockaddr_in6
00063 {
00064 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
00065 Q_UINT8 sin6_len;
00066 Q_UINT8 sin6_family;
00067 #else //HAVE_STRUCT_SOCKADDR_SA_LEN
00068 Q_UINT16 sin6_family;
00069 #endif
00070 unsigned short sin6_port;
00071 Q_UINT32 sin6_flowinfo;
00072 struct kde_in6_addr sin6_addr;
00073 Q_UINT32 sin6_scope_id;
00074 };
00075
00076
00077
00078 #define KDE_IN6_IS_ADDR_UNSPECIFIED(a) \
00079 (((Q_UINT32 *) (a))[0] == 0 && ((Q_UINT32 *) (a))[1] == 0 && \
00080 ((Q_UINT32 *) (a))[2] == 0 && ((Q_UINT32 *) (a))[3] == 0)
00081
00082 #define KDE_IN6_IS_ADDR_LOOPBACK(a) \
00083 (((Q_UINT32 *) (a))[0] == 0 && ((Q_UINT32 *) (a))[1] == 0 && \
00084 ((Q_UINT32 *) (a))[2] == 0 && ((Q_UINT32 *) (a))[3] == htonl (1))
00085
00086 #define KDE_IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff)
00087
00088 #define KDE_IN6_IS_ADDR_LINKLOCAL(a) \
00089 ((((Q_UINT32 *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000))
00090
00091 #define KDE_IN6_IS_ADDR_SITELOCAL(a) \
00092 ((((Q_UINT32 *) (a))[0] & htonl (0xffc00000)) == htonl (0xfec00000))
00093
00094 #define KDE_IN6_IS_ADDR_V4MAPPED(a) \
00095 ((((Q_UINT32 *) (a))[0] == 0) && (((Q_UINT32 *) (a))[1] == 0) && \
00096 (((Q_UINT32 *) (a))[2] == htonl (0xffff)))
00097
00098 #define KDE_IN6_IS_ADDR_V4COMPAT(a) \
00099 ((((Q_UINT32 *) (a))[0] == 0) && (((Q_UINT32 *) (a))[1] == 0) && \
00100 (((Q_UINT32 *) (a))[2] == 0) && (ntohl (((Q_UINT32 *) (a))[3]) > 1))
00101
00102 #define KDE_IN6_ARE_ADDR_EQUAL(a,b) \
00103 ((((Q_UINT32 *) (a))[0] == ((Q_UINT32 *) (b))[0]) && \
00104 (((Q_UINT32 *) (a))[1] == ((Q_UINT32 *) (b))[1]) && \
00105 (((Q_UINT32 *) (a))[2] == ((Q_UINT32 *) (b))[2]) && \
00106 (((Q_UINT32 *) (a))[3] == ((Q_UINT32 *) (b))[3]))
00107
00108 #define KDE_IN6_IS_ADDR_MC_NODELOCAL(a) \
00109 (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0x1))
00110
00111 #define KDE_IN6_IS_ADDR_MC_LINKLOCAL(a) \
00112 (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0x2))
00113
00114 #define KDE_IN6_IS_ADDR_MC_SITELOCAL(a) \
00115 (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0x5))
00116
00117 #define KDE_IN6_IS_ADDR_MC_ORGLOCAL(a) \
00118 (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0x8))
00119
00120 #define KDE_IN6_IS_ADDR_MC_GLOBAL(a) \
00121 (KDE_IN6_IS_ADDR_MULTICAST(a) && ((((Q_UINT8 *) (a))[1] & 0xf) == 0xe))
00122
00123 #ifdef NEED_IN6_TESTS
00124 # define IN6_IS_ADDR_UNSPECIFIED KDE_IN6_IS_ADDR_UNSPECIFIED
00125 # define IN6_IS_ADDR_LOOPBACK KDE_IN6_IS_ADDR_LOOPBACK
00126 # define IN6_IS_ADDR_MULTICAST KDE_IN6_IS_ADDR_MULTICAST
00127 # define IN6_IS_ADDR_LINKLOCAL KDE_IN6_IS_ADDR_LINKLOCAL
00128 # define IN6_IS_ADDR_SITELOCAL KDE_IN6_IS_ADDR_SITELOCAL
00129 # define IN6_IS_ADDR_V4MAPPED KDE_IN6_IS_ADDR_V4MAPPED
00130 # define IN6_IS_ADDR_V4COMPAT KDE_IN6_IS_ADDR_V4COMPAT
00131 # define IN6_ARE_ADDR_EQUAL KDE_IN6_ARE_ADDR_EQUAL
00132 # define IN6_IS_ADDR_MC_NODELOCAL KDE_IN6_IS_ADDR_MC_NODELOCAL
00133 # define IN6_IS_ADDR_MC_LINKLOCAL KDE_IN6_IS_ADDR_MC_LINKLOCAL
00134 # define IN6_IS_ADDR_MC_SITELOCAL KDE_IN6_IS_ADDR_MC_SITELOCAL
00135 # define IN6_IS_ADDR_MC_ORGLOCAL KDE_IN6_IS_ADDR_MC_ORGLOCAL
00136 # define IN6_IS_ADDR_MC_GLOBAL KDE_IN6_IS_ADDR_MC_GLOBAL
00137 #endif
00138
00139
00140
00141 #define KAI_SYSTEM 0
00142 #define KAI_LOCALUNIX 1
00143 #define KAI_QDNS 2
00144
00145 struct addrinfo;
00146
00155 struct kde_addrinfo
00156 {
00157 struct addrinfo *data;
00158 int origin;
00159 };
00160
00161 extern KDECORE_EXPORT int kde_getaddrinfo(const char *name, const char *service,
00162 const struct addrinfo* hint,
00163 struct kde_addrinfo** result);
00164 extern KDECORE_EXPORT void kde_freeaddrinfo(struct kde_addrinfo *p);
00165
00166 #if !defined(HAVE_GETADDRINFO) || defined(HAVE_BROKEN_GETADDRINFO)
00167
00168 # ifndef HAVE_STRUCT_ADDRINFO
00169
00172 struct addrinfo
00173 {
00174 int ai_flags;
00175 int ai_family;
00176 int ai_socktype;
00177 int ai_protocol;
00178 int ai_addrlen;
00179 struct sockaddr *ai_addr;
00180 char *ai_canonname;
00181 struct addrinfo *ai_next;
00182 };
00183 # endif
00184
00185 # ifdef AI_PASSIVE
00186 # undef AI_PASSIVE
00187 # undef AI_CANONNAME
00188 # undef AI_NUMERICHOST
00189 # endif
00190
00191
00192 # define AI_PASSIVE 1
00193 # define AI_CANONNAME 2
00194 # define AI_NUMERICHOST 4
00195
00196 # ifdef EAI_ADDRFAMILY
00197 # undef EAI_ADDRFAMILY
00198 # undef EAI_AGAIN
00199 # undef EAI_BADFLAGS
00200 # undef EAI_FAIL
00201 # undef EAI_FAMILY
00202 # undef EAI_MEMORY
00203 # undef EAI_NODATA
00204 # undef EAI_NONAME
00205 # undef EAI_SERVICE
00206 # undef EAI_SOCKTYPE
00207 # undef EAI_SYSTEM
00208 # endif
00209
00210
00211 # define EAI_ADDRFAMILY 1
00212 # define EAI_AGAIN 2
00213 # define EAI_BADFLAGS 3
00214 # define EAI_FAIL 4
00215 # define EAI_FAMILY 5
00216 # define EAI_MEMORY 6
00217 # define EAI_NODATA 7
00218 # define EAI_NONAME 8
00219 # define EAI_SERVICE 9
00220 # define EAI_SOCKTYPE 10
00221 # define EAI_SYSTEM 11
00222
00223
00224
00225
00226
00227
00228 # define NI_MAXHOST 1025
00229 # define NI_MAXSERV 32
00230
00231 # ifdef NI_NUMERICHOST
00232 # undef NI_NUMERICHOST
00233 # undef NI_NUMERICSERV
00234 # undef NI_NOFQDN
00235 # undef NI_NAMEREQD
00236 # undef NI_DGRAM
00237 # endif
00238
00239 # define NI_NUMERICHOST 1
00240 # define NI_NUMERICSERV 2
00241 # define NI_NOFQDN 4
00242 # define NI_NAMEREQD 8
00243 # define NI_DGRAM 16
00244
00245 # ifdef getaddrinfo
00246 # undef getaddrinfo
00247 # endif
00248
00249 namespace KDE
00250 {
00252 extern KDECORE_EXPORT int getaddrinfo(const char *name, const char *service,
00253 const struct addrinfo* hint,
00254 struct addrinfo** result);
00256 extern KDECORE_EXPORT void freeaddrinfo(struct addrinfo* ai);
00258 extern KDECORE_EXPORT char *gai_strerror(int errorcode);
00260 extern KDECORE_EXPORT int getnameinfo(const struct sockaddr *sa,
00261 unsigned int salen,
00262 char *host, size_t hostlen,
00263 char *serv, size_t servlen,
00264 int flags);
00265 }
00266
00267 # define getaddrinfo KDE::getaddrinfo
00268 # define freeaddrinfo KDE::freeaddrinfo
00269 # define gai_strerror KDE::gai_strerror
00270 # define getnameinfo KDE::getnameinfo
00271
00272
00273 #endif
00274
00275 #ifndef HAVE_INET_PTON
00276
00277 namespace KDE
00278 {
00280 extern KDECORE_EXPORT int inet_pton(int af, const char *cp, void* buf);
00281 }
00282
00283 # define inet_pton KDE::inet_pton
00284 #endif
00285
00286 #ifndef HAVE_INET_NTOP
00287
00288 namespace KDE
00289 {
00291 extern KDECORE_EXPORT const char* inet_ntop(int af, const void *cp, char *buf, size_t len);
00292 }
00293
00294 # define inet_ntop KDE::inet_ntop
00295 #endif
00296
00297 #endif
This file is part of the documentation for kdecore Library Version 3.4.3.