Annotation of embedaddon/curl/lib/curl_addrinfo.h, revision 1.1
1.1 ! misho 1: #ifndef HEADER_CURL_ADDRINFO_H
! 2: #define HEADER_CURL_ADDRINFO_H
! 3: /***************************************************************************
! 4: * _ _ ____ _
! 5: * Project ___| | | | _ \| |
! 6: * / __| | | | |_) | |
! 7: * | (__| |_| | _ <| |___
! 8: * \___|\___/|_| \_\_____|
! 9: *
! 10: * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
! 11: *
! 12: * This software is licensed as described in the file COPYING, which
! 13: * you should have received as part of this distribution. The terms
! 14: * are also available at https://curl.haxx.se/docs/copyright.html.
! 15: *
! 16: * You may opt to use, copy, modify, merge, publish, distribute and/or sell
! 17: * copies of the Software, and permit persons to whom the Software is
! 18: * furnished to do so, under the terms of the COPYING file.
! 19: *
! 20: * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
! 21: * KIND, either express or implied.
! 22: *
! 23: ***************************************************************************/
! 24:
! 25: #include "curl_setup.h"
! 26:
! 27: #ifdef HAVE_NETINET_IN_H
! 28: # include <netinet/in.h>
! 29: #endif
! 30: #ifdef HAVE_NETDB_H
! 31: # include <netdb.h>
! 32: #endif
! 33: #ifdef HAVE_ARPA_INET_H
! 34: # include <arpa/inet.h>
! 35: #endif
! 36:
! 37: #ifdef __VMS
! 38: # include <in.h>
! 39: # include <inet.h>
! 40: # include <stdlib.h>
! 41: #endif
! 42:
! 43:
! 44: /*
! 45: * Curl_addrinfo is our internal struct definition that we use to allow
! 46: * consistent internal handling of this data. We use this even when the
! 47: * system provides an addrinfo structure definition. And we use this for
! 48: * all sorts of IPv4 and IPV6 builds.
! 49: */
! 50:
! 51: struct Curl_addrinfo {
! 52: int ai_flags;
! 53: int ai_family;
! 54: int ai_socktype;
! 55: int ai_protocol;
! 56: curl_socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */
! 57: char *ai_canonname;
! 58: struct sockaddr *ai_addr;
! 59: struct Curl_addrinfo *ai_next;
! 60: };
! 61: typedef struct Curl_addrinfo Curl_addrinfo;
! 62:
! 63: void
! 64: Curl_freeaddrinfo(Curl_addrinfo *cahead);
! 65:
! 66: #ifdef HAVE_GETADDRINFO
! 67: int
! 68: Curl_getaddrinfo_ex(const char *nodename,
! 69: const char *servname,
! 70: const struct addrinfo *hints,
! 71: Curl_addrinfo **result);
! 72: #endif
! 73:
! 74: Curl_addrinfo *
! 75: Curl_he2ai(const struct hostent *he, int port);
! 76:
! 77: Curl_addrinfo *
! 78: Curl_ip2addr(int af, const void *inaddr, const char *hostname, int port);
! 79:
! 80: Curl_addrinfo *Curl_str2addr(char *dotted, int port);
! 81:
! 82: #ifdef USE_UNIX_SOCKETS
! 83: Curl_addrinfo *Curl_unix2addr(const char *path, bool *longpath, bool abstract);
! 84: #endif
! 85:
! 86: #if defined(CURLDEBUG) && defined(HAVE_GETADDRINFO) && \
! 87: defined(HAVE_FREEADDRINFO)
! 88: void
! 89: curl_dbg_freeaddrinfo(struct addrinfo *freethis, int line, const char *source);
! 90: #endif
! 91:
! 92: #if defined(CURLDEBUG) && defined(HAVE_GETADDRINFO)
! 93: int
! 94: curl_dbg_getaddrinfo(const char *hostname, const char *service,
! 95: const struct addrinfo *hints, struct addrinfo **result,
! 96: int line, const char *source);
! 97: #endif
! 98:
! 99: #ifdef HAVE_GETADDRINFO
! 100: #ifdef USE_RESOLVE_ON_IPS
! 101: void Curl_addrinfo_set_port(Curl_addrinfo *addrinfo, int port);
! 102: #else
! 103: #define Curl_addrinfo_set_port(x,y)
! 104: #endif
! 105: #endif
! 106:
! 107: #endif /* HEADER_CURL_ADDRINFO_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>