#include "ink_platform.h"#include <ts/ink_inet.h>#include <resolv.h>#include <arpa/nameser.h>

Go to the source code of this file.
| Data Structures | |
| struct | ts_imp_res_state | 
| Defines | |
| #define | INK_RES_F_VC 0x00000001 | 
| #define | INK_RES_F_CONN 0x00000002 | 
| #define | INK_RES_F_EDNS0ERR 0x00000004 | 
| #define | INK_RES_F__UNUSED 0x00000008 | 
| #define | INK_RES_F_LASTMASK 0x000000F0 | 
| #define | INK_RES_F_LASTSHIFT 4 | 
| #define | INK_RES_GETLAST(res) (((res)._flags & INK_RES_F_LASTMASK) >> INK_RES_F_LASTSHIFT) | 
| #define | INK_RES_EXHAUSTIVE 0x00000001 | 
| #define | INK_RES_IPV4ONLY 0x00000002 | 
| #define | INK_RES_IPV6ONLY 0x00000004 | 
| #define | INK_RES_INIT 0x00000001 | 
| #define | INK_RES_DEBUG 0x00000002 | 
| #define | INK_RES_AAONLY 0x00000004 | 
| #define | INK_RES_USEVC 0x00000008 | 
| #define | INK_RES_PRIMARY 0x00000010 | 
| #define | INK_RES_IGNTC 0x00000020 | 
| #define | INK_RES_RECURSE 0x00000040 | 
| #define | INK_RES_DEFNAMES 0x00000080 | 
| #define | INK_RES_STAYOPEN 0x00000100 | 
| #define | INK_RES_DNSRCH 0x00000200 | 
| #define | INK_RES_INSECURE1 0x00000400 | 
| #define | INK_RES_INSECURE2 0x00000800 | 
| #define | INK_RES_NOALIASES 0x00001000 | 
| #define | INK_RES_USE_INET6 0x00002000 | 
| #define | INK_RES_ROTATE 0x00004000 | 
| #define | INK_RES_NOCHECKNAME 0x00008000 | 
| #define | INK_RES_KEEPTSIG 0x00010000 | 
| #define | INK_RES_BLAST 0x00020000 | 
| #define | INK_RES_NSID 0x00040000 | 
| #define | INK_RES_NOTLDQUERY 0x00100000 | 
| #define | INK_RES_USE_DNSSEC 0x00200000 | 
| #define | INK_RES_USE_DNAME 0x10000000 | 
| #define | INK_RES_USE_EDNS0 0x40000000 | 
| #define | INK_RES_DEFAULT | 
| #define | INK_MAXNS 32 | 
| #define | INK_MAXDFLSRCH 3 | 
| #define | INK_MAXDNSRCH 6 | 
| #define | INK_LOCALDOMAINPARTS 2 | 
| #define | INK_RES_TIMEOUT 5 | 
| #define | INK_RES_TIMEOUT 5 | 
| #define | INK_RES_MAXNDOTS 15 | 
| #define | INK_RES_MAXRETRANS 30 | 
| #define | INK_RES_MAXRETRY 5 | 
| #define | INK_RES_DFLRETRY 2 | 
| #define | INK_RES_MAXTIME 65535 | 
| #define | INK_NS_TYPE_ELT 0x40 | 
| #define | INK_DNS_LABELTYPE_BITSTRING 0x41 | 
| #define | NS_GET16(s, cp) | 
| #define | NS_GET32(l, cp) | 
| #define | NS_PUT16(s, cp) | 
| #define | NS_PUT32(l, cp) | 
| Typedefs | |
| typedef HostResPreference | HostResPreferenceOrder [N_HOST_RES_PREFERENCE_ORDER] | 
| Storage for preference ordering. | |
| typedef ts_imp_res_state * | ink_res_state | 
| Enumerations | |
| enum | HostResPreference { HOST_RES_PREFER_NONE = 0, HOST_RES_PREFER_CLIENT, HOST_RES_PREFER_IPV4, HOST_RES_PREFER_IPV6 } | 
| IP family preference for DNS resolution.More... | |
| enum | HostResStyle { HOST_RES_NONE = 0, HOST_RES_IPV4, HOST_RES_IPV4_ONLY, HOST_RES_IPV6, HOST_RES_IPV6_ONLY } | 
| IP family to use in a DNS query for a host address.More... | |
| Functions | |
| HostResStyle | ats_host_res_from (int family, HostResPreferenceOrder) | 
| Caclulate the effective resolution preferences. | |
| HostResStyle | ats_host_res_match (sockaddr const *addr) | 
| Calculate the host resolution style to force a family match to addr. | |
| void | parse_host_res_preference (char const *value, HostResPreferenceOrder order) | 
| Parse a host resolution configuration string. | |
| int | ink_res_init (ink_res_state, IpEndpoint const *pHostList, size_t pHostListSize, const char *pDefDomain=NULL, const char *pSearchList=NULL, const char *pResolvConf=NULL) | 
| int | ink_res_mkquery (ink_res_state, int, const char *, int, int, const unsigned char *, int, const unsigned char *, unsigned char *, int) | 
| int | ink_ns_name_ntop (const u_char *src, char *dst, size_t dstsiz) | 
| void | ts_host_res_global_init () | 
| Initialize global values for HttpProxyPort / Host Resolution. | |
| int | ts_host_res_order_to_string (HostResPreferenceOrder const &order, char *out, int size) | 
| Generate a string representation of a host resolution preference ordering. | |
| Variables | |
| static int const | N_HOST_RES_PREFERENCE = HOST_RES_PREFER_IPV6+1 | 
| # of preference values. | |
| static int const | N_HOST_RES_PREFERENCE_ORDER = 3 | 
| # of entries in a preference ordering. | |
| HostResPreferenceOrder const | HOST_RES_DEFAULT_PREFERENCE_ORDER | 
| Global, hard wired default value for preference ordering. | |
| HostResPreferenceOrder | host_res_default_preference_order | 
| Global (configurable) default. | |
| char const *const | HOST_RES_PREFERENCE_STRING [N_HOST_RES_PREFERENCE] | 
| String versions of FamilyPreference. | |
| char const *const | HOST_RES_STYLE_STRING [] | 
| Strings for host resolution styles. | |
| #define INK_DNS_LABELTYPE_BITSTRING 0x41 | 
Definition at line 146 of file ink_resolver.h.
Referenced by ink_ns_name_ntop(), labellen(), and ns_name_ntop().
| #define INK_LOCALDOMAINPARTS 2 | 
Definition at line 136 of file ink_resolver.h.
Referenced by ink_res_init().
| #define INK_MAXDFLSRCH 3 | 
Definition at line 134 of file ink_resolver.h.
Referenced by ink_res_init().
| #define INK_MAXDNSRCH 6 | 
Definition at line 135 of file ink_resolver.h.
| #define INK_MAXNS 32 | 
Definition at line 133 of file ink_resolver.h.
Referenced by ink_res_init(), and ink_res_setservers().
| #define INK_NS_TYPE_ELT 0x40 | 
Definition at line 145 of file ink_resolver.h.
Referenced by ink_ns_name_ntop(), labellen(), and ns_name_ntop().
| #define INK_RES_AAONLY 0x00000004 | 
Definition at line 106 of file ink_resolver.h.
| #define INK_RES_BLAST 0x00020000 | 
Definition at line 121 of file ink_resolver.h.
| #define INK_RES_DEBUG 0x00000002 | 
Definition at line 105 of file ink_resolver.h.
Referenced by ink_res_init(), and ink_res_setoptions().
| #define INK_RES_DEFAULT | 
(INK_RES_RECURSE | INK_RES_DEFNAMES | \ INK_RES_DNSRCH)
Definition at line 130 of file ink_resolver.h.
| #define INK_RES_DEFNAMES 0x00000080 | 
Definition at line 111 of file ink_resolver.h.
| #define INK_RES_DFLRETRY 2 | 
Definition at line 142 of file ink_resolver.h.
| #define INK_RES_DNSRCH 0x00000200 | 
Definition at line 113 of file ink_resolver.h.
| #define INK_RES_EXHAUSTIVE 0x00000001 | 
Definition at line 96 of file ink_resolver.h.
| #define INK_RES_F__UNUSED 0x00000008 | 
Definition at line 90 of file ink_resolver.h.
| #define INK_RES_F_CONN 0x00000002 | 
Definition at line 88 of file ink_resolver.h.
| #define INK_RES_F_EDNS0ERR 0x00000004 | 
Definition at line 89 of file ink_resolver.h.
| #define INK_RES_F_LASTMASK 0x000000F0 | 
Definition at line 91 of file ink_resolver.h.
| #define INK_RES_F_LASTSHIFT 4 | 
Definition at line 92 of file ink_resolver.h.
| #define INK_RES_F_VC 0x00000001 | 
Definition at line 87 of file ink_resolver.h.
Referenced by ink_res_nclose().
| #define INK_RES_GETLAST | ( | res | ) | (((res)._flags & INK_RES_F_LASTMASK) >> INK_RES_F_LASTSHIFT) | 
Definition at line 93 of file ink_resolver.h.
| #define INK_RES_IGNTC 0x00000020 | 
Definition at line 109 of file ink_resolver.h.
| #define INK_RES_INIT 0x00000001 | 
Definition at line 104 of file ink_resolver.h.
| #define INK_RES_INSECURE1 0x00000400 | 
Definition at line 114 of file ink_resolver.h.
| #define INK_RES_INSECURE2 0x00000800 | 
Definition at line 115 of file ink_resolver.h.
| #define INK_RES_IPV4ONLY 0x00000002 | 
Definition at line 97 of file ink_resolver.h.
| #define INK_RES_IPV6ONLY 0x00000004 | 
Definition at line 98 of file ink_resolver.h.
| #define INK_RES_KEEPTSIG 0x00010000 | 
Definition at line 120 of file ink_resolver.h.
| #define INK_RES_MAXNDOTS 15 | 
Definition at line 139 of file ink_resolver.h.
Referenced by ink_res_setoptions().
| #define INK_RES_MAXRETRANS 30 | 
Definition at line 140 of file ink_resolver.h.
Referenced by ink_res_setoptions().
| #define INK_RES_MAXRETRY 5 | 
Definition at line 141 of file ink_resolver.h.
Referenced by ink_res_setoptions().
| #define INK_RES_MAXTIME 65535 | 
Definition at line 143 of file ink_resolver.h.
| #define INK_RES_NOALIASES 0x00001000 | 
Definition at line 116 of file ink_resolver.h.
| #define INK_RES_NOCHECKNAME 0x00008000 | 
Definition at line 119 of file ink_resolver.h.
| #define INK_RES_NOTLDQUERY 0x00100000 | 
Definition at line 123 of file ink_resolver.h.
| #define INK_RES_NSID 0x00040000 | 
Definition at line 122 of file ink_resolver.h.
| #define INK_RES_PRIMARY 0x00000010 | 
Definition at line 108 of file ink_resolver.h.
| #define INK_RES_RECURSE 0x00000040 | 
Definition at line 110 of file ink_resolver.h.
| #define INK_RES_ROTATE 0x00004000 | 
Definition at line 118 of file ink_resolver.h.
| #define INK_RES_STAYOPEN 0x00000100 | 
Definition at line 112 of file ink_resolver.h.
| #define INK_RES_TIMEOUT 5 | 
Definition at line 138 of file ink_resolver.h.
| #define INK_RES_TIMEOUT 5 | 
Definition at line 138 of file ink_resolver.h.
| #define INK_RES_USE_DNAME 0x10000000 | 
Definition at line 127 of file ink_resolver.h.
| #define INK_RES_USE_DNSSEC 0x00200000 | 
Definition at line 124 of file ink_resolver.h.
| #define INK_RES_USE_EDNS0 0x40000000 | 
Definition at line 128 of file ink_resolver.h.
| #define INK_RES_USE_INET6 0x00002000 | 
Definition at line 117 of file ink_resolver.h.
| #define INK_RES_USEVC 0x00000008 | 
Definition at line 107 of file ink_resolver.h.
| #define NS_GET16 | ( | s, | ||
| cp | ||||
| ) | 
do { \ const u_char *t_cp = (const u_char *)(cp); \ (s) = ((u_int16_t)t_cp[0] << 8) \ | ((u_int16_t)t_cp[1]) \ ; \ (cp) += NS_INT16SZ; \ } while (0)
Definition at line 201 of file ink_resolver.h.
Referenced by dns_process(), and ink_get16().
| #define NS_GET32 | ( | l, | ||
| cp | ||||
| ) | 
do { \ const u_char *t_cp = (const u_char *)(cp); \ (l) = ((u_int32_t)t_cp[0] << 24) \ | ((u_int32_t)t_cp[1] << 16) \ | ((u_int32_t)t_cp[2] << 8) \ | ((u_int32_t)t_cp[3]) \ ; \ (cp) += NS_INT32SZ; \ } while (0)
Definition at line 211 of file ink_resolver.h.
Referenced by dns_process().
| #define NS_PUT16 | ( | s, | ||
| cp | ||||
| ) | 
do { \ u_int16_t t_s = (u_int16_t)(s); \ u_char *t_cp = (u_char *)(cp); \ *t_cp++ = t_s >> 8; \ *t_cp = t_s; \ (cp) += NS_INT16SZ; \ } while (0)
Definition at line 223 of file ink_resolver.h.
Referenced by ink_res_mkquery().
| #define NS_PUT32 | ( | l, | ||
| cp | ||||
| ) | 
do { \ u_int32_t t_l = (u_int32_t)(l); \ u_char *t_cp = (u_char *)(cp); \ *t_cp++ = t_l >> 24; \ *t_cp++ = t_l >> 16; \ *t_cp++ = t_l >> 8; \ *t_cp = t_l; \ (cp) += NS_INT32SZ; \ } while (0)
Definition at line 233 of file ink_resolver.h.
Referenced by ink_res_mkquery().
Storage for preference ordering.
Definition at line 161 of file ink_resolver.h.
| typedef ts_imp_res_state* ink_res_state | 
Definition at line 274 of file ink_resolver.h.
| enum HostResPreference | 
IP family preference for DNS resolution.
Used for configuration.
| HOST_RES_PREFER_NONE | Invalid / init value. | 
| HOST_RES_PREFER_CLIENT | Prefer family of client connection. | 
| HOST_RES_PREFER_IPV4 | Prefer IPv4. | 
| HOST_RES_PREFER_IPV6 | Prefer IPv6. | 
Definition at line 150 of file ink_resolver.h.
| enum HostResStyle | 
IP family to use in a DNS query for a host address.
Used during DNS query operations.
Definition at line 171 of file ink_resolver.h.
| HostResStyle ats_host_res_from | ( | int | family, | |
| HostResPreferenceOrder | ||||
| ) | 
Caclulate the effective resolution preferences.
| family | Connection family | 
Definition at line 505 of file ink_res_mkquery.cc.
References HOST_RES_PREFER_CLIENT, HOST_RES_PREFER_IPV4, HOST_RES_PREFER_IPV6, and N_HOST_RES_PREFERENCE_ORDER.
Referenced by HttpSessionAccept::accept().
| HostResStyle ats_host_res_match | ( | sockaddr const * | addr | ) | 
Calculate the host resolution style to force a family match to addr.
Definition at line 529 of file ink_res_mkquery.cc.
References ats_is_ip4(), and ats_is_ip6().
Referenced by HttpTransact::handle_response_from_server().
| int ink_ns_name_ntop | ( | const u_char * | src, | |
| char * | dst, | |||
| size_t | dstsiz | |||
| ) | 
Definition at line 306 of file ink_res_mkquery.cc.
References decode_bitstring(), digits, INK_DNS_LABELTYPE_BITSTRING, INK_NS_TYPE_ELT, labellen(), printable(), and special().
Referenced by dns_process().
| int ink_res_init | ( | ink_res_state | , | |
| IpEndpoint const * | pHostList, | |||
| size_t | pHostListSize, | |||
| const char * | pDefDomain = NULL, | |||
| const char * | pSearchList = NULL, | |||
| const char * | pResolvConf = NULL | |||
| ) | 
| pHostList | Additional servers. | |
| pHostListSize | # of entries in pHostList. | |
| pDefDomain | Default domain (may be NULL). | |
| pSearchList | Unknown | |
| pResolvConf | Path to configuration file. | 
Definition at line 297 of file ink_res_init.cc.
References ts_imp_res_state::_flags, ts_imp_res_state::_vcsock, ats_ip_copy(), ats_is_ip(), ts_imp_res_state::defdname, ts_imp_res_state::dnsrch, fp, ts_imp_res_state::id, INK_LOCALDOMAINPARTS, INK_MAXDFLSRCH, INK_MAXNS, INK_RES_DEBUG, ink_res_randomid(), ink_res_setoptions(), ink_res_setservers(), ink_strlcpy(), MATCH, ts_imp_res_state::ndots, ts_imp_res_state::nsaddr_list, ts_imp_res_state::nscount, ts_imp_res_state::options, ts_imp_res_state::pfcode, ts_imp_res_state::qhook, ts_imp_res_state::res_h_errno, ts_imp_res_state::retrans, ts_imp_res_state::retry, ts_imp_res_state::rhook, and IpEndpoint::sa.
Referenced by DNSProcessor::dns_init().
| int ink_res_mkquery | ( | ink_res_state | , | |
| int | , | |||
| const char * | , | |||
| int | , | |||
| int | , | |||
| const unsigned char * | , | |||
| int | , | |||
| const unsigned char * | , | |||
| unsigned char * | , | |||
| int | ||||
| ) | 
| void parse_host_res_preference | ( | char const * | value, | |
| HostResPreferenceOrder | order | |||
| ) | 
Parse a host resolution configuration string.
| [in] | value | Configuration string. | 
| [out] | order | Order to update. | 
Definition at line 582 of file ink_res_init.cc.
References HOST_RES_PREFER_IPV4, HOST_RES_PREFER_IPV6, HOST_RES_PREFER_NONE, HOST_RES_PREFERENCE_STRING, Tokenizer::Initialize(), N_HOST_RES_PREFERENCE, and N_HOST_RES_PREFERENCE_ORDER.
Referenced by HttpProxyPort::processFamilyPreference(), and ts_host_res_global_init().
| void ts_host_res_global_init | ( | ) | 
Initialize global values for HttpProxyPort / Host Resolution.
Definition at line 562 of file RecHttp.cc.
References ats_free(), HOST_RES_DEFAULT_PREFERENCE_ORDER, host_res_default_preference_order, memcpy, parse_host_res_preference(), and REC_ConfigReadString().
Referenced by ink_hostdb_init().
| int ts_host_res_order_to_string | ( | HostResPreferenceOrder const & | order, | |
| char * | out, | |||
| int | size | |||
| ) | 
Generate a string representation of a host resolution preference ordering.
| order | order to print | |
| out | Target buffer for string. | |
| size | Size of buffer. | 
Definition at line 630 of file ink_res_init.cc.
References HOST_RES_PREFER_NONE, HOST_RES_PREFERENCE_STRING, and N_HOST_RES_PREFERENCE_ORDER.
Referenced by HttpProxyPort::print().
Global, hard wired default value for preference ordering.
Definition at line 97 of file ink_res_init.cc.
Referenced by ts_host_res_global_init().
Global (configurable) default.
Definition at line 103 of file ink_res_init.cc.
Referenced by HttpProxyPort::HttpProxyPort(), detail::HttpSessionAcceptOptions::HttpSessionAcceptOptions(), HttpProxyPort::print(), and ts_host_res_global_init().
| char const* const HOST_RES_PREFERENCE_STRING[N_HOST_RES_PREFERENCE] | 
String versions of FamilyPreference. 
Definition at line 105 of file ink_res_init.cc.
Referenced by parse_host_res_preference(), HttpProxyPort::processOptions(), and ts_host_res_order_to_string().
| char const* const HOST_RES_STYLE_STRING[] | 
Strings for host resolution styles.
Definition at line 109 of file ink_res_init.cc.
| int const N_HOST_RES_PREFERENCE = HOST_RES_PREFER_IPV6+1  [static] | 
# of preference values.
Definition at line 157 of file ink_resolver.h.
Referenced by parse_host_res_preference().
| int const N_HOST_RES_PREFERENCE_ORDER = 3  [static] | 
# of entries in a preference ordering.
Definition at line 159 of file ink_resolver.h.
Referenced by ats_host_res_from(), parse_host_res_preference(), and ts_host_res_order_to_string().
 1.7.1
 1.7.1