version 1.31, 2020/09/15 08:15:17 |
version 1.32, 2020/09/15 08:19:29 |
|
|
#include <isc/base64.h> |
#include <isc/base64.h> |
#include <isc/hex.h> |
#include <isc/hex.h> |
#include <isc/log.h> |
#include <isc/log.h> |
#include <isc/netaddr.h> |
|
#include <isc/result.h> |
#include <isc/result.h> |
#include <isc/serial.h> |
#include <isc/serial.h> |
#include <isc/sockaddr.h> |
#include <isc/sockaddr.h> |
|
|
set_nameserver(char *opt) { |
set_nameserver(char *opt) { |
isc_result_t result; |
isc_result_t result; |
isc_sockaddr_t sockaddrs[DIG_MAX_ADDRESSES]; |
isc_sockaddr_t sockaddrs[DIG_MAX_ADDRESSES]; |
isc_netaddr_t netaddr; |
|
int count, i; |
int count, i; |
dig_server_t *srv; |
dig_server_t *srv; |
char tmp[ISC_NETADDR_FORMATSIZE]; |
char tmp[NI_MAXHOST]; |
|
|
if (opt == NULL) |
if (opt == NULL) |
return ISC_R_NOTFOUND; |
return ISC_R_NOTFOUND; |
|
|
flush_server_list(); |
flush_server_list(); |
|
|
for (i = 0; i < count; i++) { |
for (i = 0; i < count; i++) { |
isc_netaddr_fromsockaddr(&netaddr, &sockaddrs[i]); |
int error; |
isc_netaddr_format(&netaddr, tmp, sizeof(tmp)); |
error = getnameinfo(&sockaddrs[i].type.sa, |
|
sockaddrs[i].type.sa.sa_len, tmp, sizeof(tmp), NULL, 0, |
|
NI_NUMERICHOST | NI_NUMERICSERV); |
|
if (error) |
|
fatal("%s", gai_strerror(error)); |
srv = make_server(tmp, opt); |
srv = make_server(tmp, opt); |
if (srv == NULL) |
if (srv == NULL) |
fatal("memory allocation failure"); |
fatal("memory allocation failure"); |
|
|
getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp) { |
getaddresses(dig_lookup_t *lookup, const char *host, isc_result_t *resultp) { |
isc_result_t result; |
isc_result_t result; |
isc_sockaddr_t sockaddrs[DIG_MAX_ADDRESSES]; |
isc_sockaddr_t sockaddrs[DIG_MAX_ADDRESSES]; |
isc_netaddr_t netaddr; |
|
int count, i; |
int count, i; |
dig_server_t *srv; |
dig_server_t *srv; |
char tmp[ISC_NETADDR_FORMATSIZE]; |
char tmp[NI_MAXHOST]; |
|
|
result = get_addresses(host, 0, sockaddrs, |
result = get_addresses(host, 0, sockaddrs, |
DIG_MAX_ADDRESSES, &count); |
DIG_MAX_ADDRESSES, &count); |
|
|
} |
} |
|
|
for (i = 0; i < count; i++) { |
for (i = 0; i < count; i++) { |
isc_netaddr_fromsockaddr(&netaddr, &sockaddrs[i]); |
int error; |
isc_netaddr_format(&netaddr, tmp, sizeof(tmp)); |
error = getnameinfo(&sockaddrs[i].type.sa, |
|
sockaddrs[i].type.sa.sa_len, tmp, sizeof(tmp), NULL, 0, |
|
NI_NUMERICHOST | NI_NUMERICSERV); |
|
if (error) |
|
fatal("%s", gai_strerror(error)); |
|
|
srv = make_server(tmp, host); |
srv = make_server(tmp, host); |
ISC_LIST_APPEND(lookup->my_server_list, srv, link); |
ISC_LIST_APPEND(lookup->my_server_list, srv, link); |
} |
} |