![]() ![]() | ![]() |
Passage de la branche 4.1 en branche stable.
1: /* 2: ================================================================================ 3: RPL/2 (R) version 4.1.0 4: Copyright (C) 1989-2011 Dr. BERTRAND Joël 5: 6: This file is part of RPL/2. 7: 8: RPL/2 is free software; you can redistribute it and/or modify it 9: under the terms of the CeCILL V2 License as published by the french 10: CEA, CNRS and INRIA. 11: 12: RPL/2 is distributed in the hope that it will be useful, but WITHOUT 13: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14: FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL V2 License 15: for more details. 16: 17: You should have received a copy of the CeCILL License 18: along with RPL/2. If not, write to info@cecill.info. 19: ================================================================================ 20: */ 21: 22: 23: #ifndef GETADDRINFO_H 24: #define GETADDRINFO_H 25: 26: #ifdef HAVE_CONFIG_H 27: #include "config.h" 28: #endif 29: 30: #include <sys/types.h> 31: 32: #ifdef WIN32 33: #include <time.h> 34: #include <winsock2.h> 35: #ifdef DO_IPV6 36: #include <ws2tcpip.h> 37: #endif /* DO_IPV6 */ 38: #include <windows.h> 39: #else 40: #include <sys/socket.h> 41: #include <netdb.h> 42: #endif 43: 44: #ifdef __INNOTEK_LIBC__ 45: typedef int socklen_t; 46: #endif 47: 48: /********************************************************************/ 49: /* 50: * Undefine all the macros. 51: * <netdb.h> might defines some of them. 52: */ 53: #ifdef EAI_ADDRFAMILY 54: #undef EAI_ADDRFAMILY 55: #endif 56: #ifdef EAI_AGAIN 57: #undef EAI_AGAIN 58: #endif 59: #ifdef EAI_BADFLAGS 60: #undef EAI_BADFLAGS 61: #endif 62: #ifdef EAI_FAIL 63: #undef EAI_FAIL 64: #endif 65: #ifdef EAI_FAMILY 66: #undef EAI_FAMILY 67: #endif 68: #ifdef EAI_MEMORY 69: #undef EAI_MEMORY 70: #endif 71: #ifdef EAI_NONAME 72: #undef EAI_NONAME 73: #endif 74: #ifdef EAI_OVERFLOW 75: #undef EAI_OVERFLOW 76: #endif 77: #ifdef EAI_SERVICE 78: #undef EAI_SERVICE 79: #endif 80: #ifdef EAI_SOCKTYPE 81: #undef EAI_SOCKTYPE 82: #endif 83: #ifdef EAI_SYSTEM 84: #undef EAI_SYSTEM 85: #endif 86: 87: #ifdef AI_PASSIVE 88: #undef AI_PASSIVE 89: #endif 90: #ifdef AI_CANONNAME 91: #undef AI_CANONNAME 92: #endif 93: #ifdef AI_NUMERICHOST 94: #undef AI_NUMERICHOST 95: #endif 96: #ifdef AI_NUMERICSERV 97: #undef AI_NUMERICSERV 98: #endif 99: #ifdef AI_V4MAPPED 100: #undef AI_V4MAPPED 101: #endif 102: #ifdef AI_ALL 103: #undef AI_ALL 104: #endif 105: #ifdef AI_ADDRCONFIG 106: #undef AI_ADDRCONFIG 107: #endif 108: #ifdef AI_DEFAULT 109: #undef AI_DEFAULT 110: #endif 111: 112: #ifdef NI_NOFQDN 113: #undef NI_NOFQDN 114: #endif 115: #ifdef NI_NUMERICHOST 116: #undef NI_NUMERICHOST 117: #endif 118: #ifdef NI_NAMEREQD 119: #undef NI_NAMEREQD 120: #endif 121: #ifdef NI_NUMERICSERV 122: #undef NI_NUMERICSERV 123: #endif 124: #ifdef NI_NUMERICSCOPE 125: #undef NI_NUMERICSCOPE 126: #endif 127: 128: #ifdef NI_DGRAM 129: #undef NI_DGRAM 130: #endif 131: #ifdef NI_MAXHOST 132: #undef NI_MAXHOST 133: #endif 134: #ifdef NI_MAXSERV 135: #undef NI_MAXSERV 136: #endif 137: 138: /* 139: * Fake struct and function names. 140: * <netdb.h> might declares all or some of them. 141: */ 142: #if defined(HAVE_GETADDRINFO) || defined(HAVE_GETNAMEINFO) 143: #define addrinfo my_addrinfo 144: #define gai_strerror my_gai_strerror 145: #define freeaddrinfo my_freeaddrinfo 146: #define getaddrinfo my_getaddrinfo 147: #define getnameinfo my_getnameinfo 148: #endif 149: 150: /********************************************************************/ 151: /* 152: * Error codes. 153: */ 154: #define EAI_ADDRFAMILY 1 155: #define EAI_AGAIN 2 156: #define EAI_BADFLAGS 3 157: #define EAI_FAIL 4 158: #define EAI_FAMILY 5 159: #define EAI_MEMORY 6 160: #define EAI_NONAME 7 161: #define EAI_OVERFLOW 8 162: #define EAI_SERVICE 9 163: #define EAI_SOCKTYPE 10 164: #define EAI_SYSTEM 11 165: 166: /* 167: * Flags for getaddrinfo(). 168: */ 169: #define AI_ADDRCONFIG 0x0001 170: #define AI_ALL 0x0002 171: #define AI_CANONNAME 0x0004 172: #define AI_NUMERICHOST 0x0008 173: #define AI_NUMERICSERV 0x0010 174: #define AI_PASSIVE 0x0020 175: #define AI_V4MAPPED 0x0040 176: #define AI_DEFAULT (AI_V4MAPPED | AI_ADDRCONFIG) 177: 178: /* 179: * Flags for getnameinfo(). 180: */ 181: #define NI_DGRAM 0x0001 182: #define NI_NAMEREQD 0x0002 183: #define NI_NOFQDN 0x0004 184: #define NI_NUMERICHOST 0x0008 185: #define NI_NUMERICSCOPE 0x0010 186: #define NI_NUMERICSERV 0x0020 187: 188: /* 189: * Maximum length of FQDN and servie name for getnameinfo(). 190: */ 191: #define NI_MAXHOST 1025 192: #define NI_MAXSERV 32 193: 194: /* 195: * Address families and Protocol families. 196: */ 197: #ifndef AF_UNSPEC 198: #define AF_UNSPEC AF_INET 199: #endif 200: #ifndef PF_UNSPEC 201: #define PF_UNSPEC PF_INET 202: #endif 203: 204: /* 205: * struct addrinfo. 206: */ 207: struct addrinfo { 208: int ai_flags; 209: int ai_family; 210: int ai_socktype; 211: int ai_protocol; 212: socklen_t ai_addrlen; 213: char *ai_canonname; 214: struct sockaddr *ai_addr; 215: struct addrinfo *ai_next; 216: }; 217: 218: /* 219: * Functions. 220: */ 221: #ifdef __STDC__ 222: #if defined (__cplusplus) 223: extern "C" { 224: #endif 225: const char *gai_strerror(int); 226: void freeaddrinfo(struct addrinfo *); 227: int getaddrinfo(const char *, const char *, const struct addrinfo *, 228: struct addrinfo **); 229: int getnameinfo(const struct sockaddr *, socklen_t, char *, 230: socklen_t, char *, socklen_t, int); 231: #if defined (__cplusplus) 232: } 233: #endif 234: #else 235: const char *gai_strerror(); 236: void freeaddrinfo(); 237: int getaddrinfo(); 238: int getnameinfo(); 239: #endif 240: 241: #endif /* not GETADDRINFO_H */ 242: 243: // vim: ts=4