Mercurial > hg > nginx
comparison src/core/ngx_resolver.h @ 6458:384154fc634f
Resolver: added support for SRV records.
author | Dmitry Volyntsev <xeioex@nginx.com> |
---|---|
date | Wed, 23 Mar 2016 17:44:36 +0300 |
parents | c94aba230a5a |
children | c3e3de6d2672 |
comparison
equal
deleted
inserted
replaced
6457:a6711b85da83 | 6458:384154fc634f |
---|---|
19 #define NGX_RESOLVE_MX 15 | 19 #define NGX_RESOLVE_MX 15 |
20 #define NGX_RESOLVE_TXT 16 | 20 #define NGX_RESOLVE_TXT 16 |
21 #if (NGX_HAVE_INET6) | 21 #if (NGX_HAVE_INET6) |
22 #define NGX_RESOLVE_AAAA 28 | 22 #define NGX_RESOLVE_AAAA 28 |
23 #endif | 23 #endif |
24 #define NGX_RESOLVE_SRV 33 | |
24 #define NGX_RESOLVE_DNAME 39 | 25 #define NGX_RESOLVE_DNAME 39 |
25 | 26 |
26 #define NGX_RESOLVE_FORMERR 1 | 27 #define NGX_RESOLVE_FORMERR 1 |
27 #define NGX_RESOLVE_SERVFAIL 2 | 28 #define NGX_RESOLVE_SERVFAIL 2 |
28 #define NGX_RESOLVE_NXDOMAIN 3 | 29 #define NGX_RESOLVE_NXDOMAIN 3 |
56 | 57 |
57 typedef void (*ngx_resolver_handler_pt)(ngx_resolver_ctx_t *ctx); | 58 typedef void (*ngx_resolver_handler_pt)(ngx_resolver_ctx_t *ctx); |
58 | 59 |
59 | 60 |
60 typedef struct { | 61 typedef struct { |
62 struct sockaddr *sockaddr; | |
63 socklen_t socklen; | |
64 ngx_str_t name; | |
65 u_short priority; | |
66 u_short weight; | |
67 } ngx_resolver_addr_t; | |
68 | |
69 | |
70 typedef struct { | |
71 ngx_str_t name; | |
72 u_short priority; | |
73 u_short weight; | |
74 u_short port; | |
75 } ngx_resolver_srv_t; | |
76 | |
77 | |
78 typedef struct { | |
79 ngx_str_t name; | |
80 u_short priority; | |
81 u_short weight; | |
82 u_short port; | |
83 | |
84 ngx_resolver_ctx_t *ctx; | |
85 | |
86 ngx_uint_t naddrs; | |
87 ngx_addr_t *addrs; | |
88 } ngx_resolver_srv_name_t; | |
89 | |
90 | |
91 typedef struct { | |
61 ngx_rbtree_node_t node; | 92 ngx_rbtree_node_t node; |
62 ngx_queue_t queue; | 93 ngx_queue_t queue; |
63 | 94 |
64 /* PTR: resolved name, A: name to resolve */ | 95 /* PTR: resolved name, A: name to resolve */ |
65 u_char *name; | 96 u_char *name; |
79 | 110 |
80 union { | 111 union { |
81 in_addr_t addr; | 112 in_addr_t addr; |
82 in_addr_t *addrs; | 113 in_addr_t *addrs; |
83 u_char *cname; | 114 u_char *cname; |
115 ngx_resolver_srv_t *srvs; | |
84 } u; | 116 } u; |
85 | 117 |
86 u_char code; | 118 u_char code; |
87 u_short naddrs; | 119 u_short naddrs; |
120 u_short nsrvs; | |
88 u_short cnlen; | 121 u_short cnlen; |
89 | 122 |
90 #if (NGX_HAVE_INET6) | 123 #if (NGX_HAVE_INET6) |
91 union { | 124 union { |
92 struct in6_addr addr6; | 125 struct in6_addr addr6; |
125 ngx_uint_t last_connection; | 158 ngx_uint_t last_connection; |
126 | 159 |
127 ngx_rbtree_t name_rbtree; | 160 ngx_rbtree_t name_rbtree; |
128 ngx_rbtree_node_t name_sentinel; | 161 ngx_rbtree_node_t name_sentinel; |
129 | 162 |
163 ngx_rbtree_t srv_rbtree; | |
164 ngx_rbtree_node_t srv_sentinel; | |
165 | |
130 ngx_rbtree_t addr_rbtree; | 166 ngx_rbtree_t addr_rbtree; |
131 ngx_rbtree_node_t addr_sentinel; | 167 ngx_rbtree_node_t addr_sentinel; |
132 | 168 |
133 ngx_queue_t name_resend_queue; | 169 ngx_queue_t name_resend_queue; |
170 ngx_queue_t srv_resend_queue; | |
134 ngx_queue_t addr_resend_queue; | 171 ngx_queue_t addr_resend_queue; |
135 | 172 |
136 ngx_queue_t name_expire_queue; | 173 ngx_queue_t name_expire_queue; |
174 ngx_queue_t srv_expire_queue; | |
137 ngx_queue_t addr_expire_queue; | 175 ngx_queue_t addr_expire_queue; |
138 | 176 |
139 #if (NGX_HAVE_INET6) | 177 #if (NGX_HAVE_INET6) |
140 ngx_uint_t ipv6; /* unsigned ipv6:1; */ | 178 ngx_uint_t ipv6; /* unsigned ipv6:1; */ |
141 ngx_rbtree_t addr6_rbtree; | 179 ngx_rbtree_t addr6_rbtree; |
161 /* event ident must be after 3 pointers as in ngx_connection_t */ | 199 /* event ident must be after 3 pointers as in ngx_connection_t */ |
162 ngx_int_t ident; | 200 ngx_int_t ident; |
163 | 201 |
164 ngx_int_t state; | 202 ngx_int_t state; |
165 ngx_str_t name; | 203 ngx_str_t name; |
204 ngx_str_t service; | |
166 | 205 |
167 time_t valid; | 206 time_t valid; |
168 ngx_uint_t naddrs; | 207 ngx_uint_t naddrs; |
169 ngx_addr_t *addrs; | 208 ngx_resolver_addr_t *addrs; |
170 ngx_addr_t addr; | 209 ngx_resolver_addr_t addr; |
171 struct sockaddr_in sin; | 210 struct sockaddr_in sin; |
211 | |
212 ngx_uint_t count; | |
213 ngx_uint_t nsrvs; | |
214 ngx_resolver_srv_name_t *srvs; | |
172 | 215 |
173 ngx_resolver_handler_pt handler; | 216 ngx_resolver_handler_pt handler; |
174 void *data; | 217 void *data; |
175 ngx_msec_t timeout; | 218 ngx_msec_t timeout; |
176 | 219 |