62 if (rr->
type == T_A) {
75 sa->sa_len = sock_addr_len;
77 *sa_length = sock_addr_len;
81 }
else if (rr->
type == T_AAAA) {
82 if (rr->
data_len !=
sizeof(SOCK_ADDR_IN6_ADDR(sa))) {
85 }
else if ((sock_addr_len =
sizeof(*SOCK_ADDR_IN6_PTR(sa))) > *sa_length) {
89 memset((
void *) SOCK_ADDR_IN6_PTR(sa), 0, sock_addr_len);
90 SOCK_ADDR_IN6_FAMILY(sa) = AF_INET6;
91 SOCK_ADDR_IN6_PORT(sa) = port;
92 SOCK_ADDR_IN6_ADDR(sa) = IN6_ADDR(rr->
data);
94 sa->sa_len = sock_addr_len;
96 *sa_length = sock_addr_len;
101 errno = EAFNOSUPPORT;
116 static const char *myname;
120 msg_fatal(
"usage: %s dnsaddrtype hostname portnumber", myname);
123 int main(
int argc,
char **argv)
128 struct sockaddr_storage ss;
129 struct sockaddr *sa = (
struct sockaddr *) &ss;
141 if (argv[1] == 0 || argv[2] == 0)
143 if ((type =
dns_type(argv[0])) == 0)
145 if (!
alldig(argv[2]) || (port = atoi(argv[2])) > 65535)
149 sa_length =
sizeof(ss);
154 argv[1], argv[2], hostaddr.
buf, portnum.
buf);
int main(int argc, char **argv)
#define SOCK_ADDR_IN_FAMILY(sa)
#define SOCKADDR_TO_HOSTADDR(sa, salen, host, port, sock)
int dns_rr_to_sa(DNS_RR *rr, unsigned port, struct sockaddr *sa, SOCKADDR_SIZE *sa_length)
int alldig(const char *string)
char buf[MAI_HOSTADDR_STRSIZE]
VSTREAM * vstream_printf(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
NORETURN msg_fatal(const char *fmt,...)
int vstream_fflush(VSTREAM *stream)
unsigned dns_type(const char *)
#define SOCK_ADDR_IN_PTR(sa)
VSTRING * vstring_free(VSTRING *vp)
char buf[MAI_SERVPORT_STRSIZE]
#define SOCK_ADDR_IN_ADDR(sa)
void dns_rr_free(DNS_RR *)
#define dns_lookup(name, type, rflags, list, fqdn, why)
#define SOCK_ADDR_IN_PORT(sa)