45 static int dns_retry = 0;
46 static int dns_retrans = 0;
47 static int dns_init_ok =
FALSE;
56 dns_retry = _res.retry;
57 dns_retrans = _res.retrans;
59 if ((env = getenv(
"DNS_RETRY")) != NULL)
64 t = strtol(env, NULL, 10);
69 if ((env = getenv(
"DNS_RETRANS")) != NULL)
74 t = strtol(env, NULL, 10);
79 ZE_MessageInfo(11,
"DNS retry : %d, retrans : %d", dns_retry, dns_retrans);
97 for (i = 0; i < r->
count; i++)
119 if (r == NULL || a == NULL)
122 for (rr = r->dns_r_head; rr != NULL; rr = rr->
rr_next)
138 memset(buf, 0,
sizeof (buf));
160 if (domain == NULL || a == NULL)
163 memset(a, 0,
sizeof (*a));
164 a->
domain = strdup(domain);
165 memset(&rt, 0,
sizeof (rt));
168 if ((res =
dns_lookup(domain,
"A", dns_retrans, dns_retry, &rt)) >= 0)
170 parse_a_answer(&rt, a);
186 parse_aaaa_answer(r, a)
192 if (r == NULL || a == NULL)
195 for (rr = r->dns_r_head; rr != NULL; rr = rr->
rr_next)
211 memset(buf, 0,
sizeof (buf));
233 if (domain == NULL || a == NULL)
236 memset(a, 0,
sizeof (*a));
237 a->
domain = strdup(domain);
238 memset(&rt, 0,
sizeof (rt));
241 if ((res =
dns_lookup(domain,
"AAAA", dns_retrans, dns_retry, &rt)) >= 0)
243 parse_aaaa_answer(&rt, a);
259 parse_mx_answer(r, mx)
265 if (r == NULL || mx == NULL)
268 for (rr = r->dns_r_head; rr != NULL; rr = rr->
rr_next)
290 for (ra = r->dns_r_head; ra != NULL; ra = ra->
rr_next)
314 memset(buf, 0,
sizeof (buf));
326 memset(&a, 0,
sizeof (a));
329 for (i = 0; i < a.
count; i++)
365 if (domain == NULL || mx == NULL)
369 memset(mx, 0,
sizeof (*mx));
370 mx->
domain = strdup(domain);
373 if ((res =
dns_lookup(domain,
"MX", dns_retrans, dns_retry, &rt)) >= 0)
375 result = parse_mx_answer(&rt, mx);
412 printf(
"%s* %-3s %2d %s\n",
421 dns_retrans, dns_retry, &rt)) >= 0)
433 memset(buf, 0,
sizeof (buf));
434 printf(
"%s* %-3s %-16s %s\n", prefix, stype, buf, rr->
rr_domain);
438 printf(
"%s* %-3s %s\n", prefix, stype, rr->
rr_domain);
458 if (a == NULL || b == NULL)
464 if (a->
name != NULL && b->
name != NULL)
467 if (r == 0 && a->
ip != NULL && b->
ip != NULL)
468 r = strcasecmp(a->
ip, b->
ip);
void dns_free_hostarr(DNS_HOSTARR_T *r)
int dns_get_mx(char *domain, DNS_HOSTARR_T *mx)
int dns_lookup(const char *domain, const char *type_name, time_t retrans, int retry, DNS_REPLY_T *)
union resource_record::@0 rr_u
const char * dns_type_to_string(int)
char * zeStrSet(char *, int, int)
DNS_HOST_T host[MAX_HOST]
#define ZE_MessageInfo(level,...)
void dns_free_data(DNS_REPLY_T *)
#define ZE_LogSysError(...)
unsigned int mx_r_preference
int compar_dns_host(void *va, const void *vb) const
int dns_get_a(char *domain, DNS_HOSTARR_T *a)
void print_dns_reply(DNS_REPLY_T *r, int level)
int dns_get_aaaa(char *domain, DNS_HOSTARR_T *a)
char * jinet_ntop(int, void *, char *, size_t)