57 if (sa->sa_family == AF_INET) {
62 }
else if (sa->sa_family == AF_INET6) {
64 (
char *) &SOCK_ADDR_IN6_ADDR(sa),
65 sizeof(SOCK_ADDR_IN6_ADDR(sa))));
83 static const char *myname;
90 static int compare_family(
const void *a,
const void *b)
92 struct addrinfo *resa = *(
struct addrinfo **) a;
93 struct addrinfo *resb = *(
struct addrinfo **) b;
95 return (resa->ai_family - resb->ai_family);
98 int main(
int argc,
char **argv)
101 struct addrinfo *res0;
102 struct addrinfo *res;
103 struct addrinfo **resv;
117 for (len = 0, res = res0; res != 0; res = res->ai_next)
119 resv = (
struct addrinfo **)
mymalloc(len *
sizeof(*resv));
120 for (len = 0, res = res0; res != 0; res = res->ai_next)
122 qsort((
void *) resv, len,
sizeof(*resv), compare_family);
123 for (n = 0; n < len; n++) {
124 if ((rr =
dns_sa_to_rr(argv[0], 0, resv[n]->ai_addr)) == 0)
void freeaddrinfo(struct addrinfo *ai)
int main(int argc, char **argv)
INET_PROTO_INFO * inet_proto_init(const char *context, const char *protocols)
#define hostname_to_sockaddr(host, serv, sock, res)
#define INET_PROTO_NAME_ALL
const char * dns_rr_to_pa(DNS_RR *, MAI_HOSTADDR_STR *)
DNS_RR * dns_rr_create(const char *, const char *, ushort, ushort, unsigned, unsigned, const char *, size_t)
char buf[MAI_HOSTADDR_STRSIZE]
VSTREAM * vstream_printf(const char *fmt,...)
DNS_RR * dns_sa_to_rr(const char *hostname, unsigned pref, struct sockaddr *sa)
NORETURN msg_fatal(const char *fmt,...)
int vstream_fflush(VSTREAM *stream)
#define SOCK_ADDR_IN_ADDR(sa)
void dns_rr_free(DNS_RR *)
void * mymalloc(ssize_t len)