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