#include "lwip/api.h"
#include "lwip/sockets.h"
#include "arpa/nameser.h"
#include <string.h>
#include "netdb.h"
#include <ctype.h>
#include "ares.h"
Include dependency graph for ares_private.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Data Structures | |
struct | apattern |
struct | ares_channeldata |
struct | query |
struct | send_request |
struct | server_state |
Defines | |
#define | u_char unsigned char |
#define | u_int unsigned int |
#define | u_int16_t u16_t |
#define | u_int32_t u32_t |
#define | malloc mem_malloc |
#define | realloc mem_reallocm |
#define | free mem_free |
#define | strdup ares_strdup |
#define | strcasecmp ares_strcasecmp |
#define | time ares_time |
#define | DEFAULT_TIMEOUT 5 |
#define | DEFAULT_TRIES 4 |
#define | INADDR_NONE 0xffffffff |
#define | PATH_RESOLV_CONF "/etc/resolv.conf" |
#define | PATH_HOSTS "/etc/hosts" |
Functions | |
char * | ares_strdup (const char *) |
int | ares_strcasecmp (const char *s1, const char *s2) |
time_t | ares_time (time_t *) |
void | ares__send_query (ares_channel channel, struct query *query, time_t now) |
void | ares__close_sockets (struct server_state *server) |
|
Definition at line 60 of file ares_private.h. Referenced by init_by_defaults(). |
|
Definition at line 61 of file ares_private.h. Referenced by init_by_defaults(). |
|
|
Definition at line 63 of file ares_private.h. Referenced by dns_client(), fake_hostent(), and inet_addr(). |
|
Definition at line 38 of file ares_private.h. Referenced by ares__send_query(), ares_expand_name(), ares_gethostbyaddr(), ares_gethostbyname(), ares_init_options(), ares_mkquery(), ares_parse_a_reply(), ares_parse_ptr_reply(), ares_query(), ares_search(), ares_send(), cat_domain(), init_by_defaults(), init_by_options(), read_tcp_data(), strdup(), and write_tcp_data(). |
|
Definition at line 70 of file ares_private.h. |
|
Definition at line 66 of file ares_private.h. |
|
Definition at line 39 of file ares_private.h. |
|
Definition at line 45 of file ares_private.h. Referenced by ares_parse_a_reply(), ares_parse_ptr_reply(), callback(), and same_questions(). |
|
Definition at line 42 of file ares_private.h. Referenced by ares_gethostbyname(), ares_search(), callback(), fake_hostent(), gethostbynameaddr(), init_by_defaults(), init_by_options(), and single_domain(). |
|
Definition at line 48 of file ares_private.h. Referenced by ares_init_options(), ares_process(), ares_send(), ares_timeout(), main(), period_debug(), sys_arch_mbox_fetch(), sys_arch_sem_wait(), time(), and time_debug(). |
|
Definition at line 31 of file ares_private.h. Referenced by htonl(). |
|
Definition at line 32 of file ares_private.h. |
|
Definition at line 33 of file ares_private.h. |
|
Definition at line 34 of file ares_private.h. |
|
Definition at line 25 of file ares__close_sockets.c. References free, send_request::next, NULL, server_state::qhead, server_state::qtail, server_state::tcp_buffer, server_state::tcp_lenbuf_pos, server_state::tcp_socket, and server_state::udp_socket. Referenced by ares_destroy(), end_query(), and handle_error().
00026 { 00027 struct send_request *sendreq; 00028 00029 /* Free all pending output buffers. */ 00030 while (server->qhead) 00031 { 00032 /* Advance server->qhead; pull out query as we go. */ 00033 sendreq = server->qhead; 00034 server->qhead = sendreq->next; 00035 free(sendreq); 00036 } 00037 server->qtail = NULL; 00038 00039 /* Reset any existing input buffer. */ 00040 if (server->tcp_buffer) 00041 free(server->tcp_buffer); 00042 server->tcp_buffer = NULL; 00043 server->tcp_lenbuf_pos = 0; 00044 00045 /* Close the TCP and UDP sockets. */ 00046 if (server->tcp_socket != -1) 00047 { 00048 close(server->tcp_socket); 00049 server->tcp_socket = -1; 00050 } 00051 if (server->udp_socket != -1) 00052 { 00053 close(server->udp_socket); 00054 server->udp_socket = -1; 00055 } 00056 } |
|
Definition at line 375 of file ares_process.c. References ares_channel, ARES_ENOMEM, end_query(), malloc, next_server(), ares_channeldata::nservers, NULL, open_tcp_socket(), open_udp_socket(), query::qbuf, query::qlen, query::server, ares_channeldata::servers, query::skip_server, query::tcpbuf, query::tcplen, query::timeout, ares_channeldata::timeout, query::try, and query::using_tcp. Referenced by ares_send(), next_server(), and process_answer().
00376 { 00377 struct send_request *sendreq; 00378 struct server_state *server; 00379 00380 server = &channel->servers[query->server]; 00381 00382 if (query->using_tcp) 00383 { 00384 /* Make sure the TCP socket for this server is set up and queue 00385 * a send request. 00386 */ 00387 if (server->tcp_socket == -1) 00388 { 00389 if (open_tcp_socket(channel, server) == -1) 00390 { 00391 query->skip_server[query->server] = 1; 00392 next_server(channel, query, now); 00393 return; 00394 } 00395 } 00396 sendreq = malloc(sizeof(struct send_request)); 00397 if (!sendreq) 00398 end_query(channel, query, ARES_ENOMEM, NULL, 0); 00399 sendreq->data = query->tcpbuf; 00400 sendreq->len = query->tcplen; 00401 sendreq->next = NULL; 00402 if (server->qtail) 00403 server->qtail->next = sendreq; 00404 else 00405 server->qhead = sendreq; 00406 server->qtail = sendreq; 00407 query->timeout = 0; 00408 } 00409 else 00410 { 00411 if (server->udp_socket == -1) 00412 { 00413 if (open_udp_socket(channel, server) == -1) 00414 { 00415 query->skip_server[query->server] = 1; 00416 next_server(channel, query, now); 00417 return; 00418 } 00419 } 00420 if (send(server->udp_socket, (void *) query->qbuf, query->qlen, 0) == -1) 00421 { 00422 query->skip_server[query->server] = 1; 00423 next_server(channel, query, now); 00424 return; 00425 } 00426 query->timeout = now 00427 + ((query->try == 0) ? channel->timeout 00428 : channel->timeout << query->try / channel->nservers); 00429 } 00430 } |
Here is the call graph for this function:
|
|
|
|
|
|