Annotation of embedaddon/curl/lib/curl_addrinfo.h, revision 1.1.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>