Xinqi Bao's Git
1 /* See LICENSE file for copyright and license details. */
7 #if defined(__OpenBSD__)
9 #include <sys/socket.h>
15 ip(const char *iface
, unsigned short sa_family
)
17 struct ifaddrs
*ifaddr
, *ifa
;
19 char host
[NI_MAXHOST
];
21 if (getifaddrs(&ifaddr
) < 0) {
26 for (ifa
= ifaddr
; ifa
!= NULL
; ifa
= ifa
->ifa_next
) {
30 s
= getnameinfo(ifa
->ifa_addr
, sizeof(struct sockaddr_in6
),
31 host
, NI_MAXHOST
, NULL
, 0, NI_NUMERICHOST
);
32 if (!strcmp(ifa
->ifa_name
, iface
) &&
33 (ifa
->ifa_addr
->sa_family
== sa_family
)) {
36 warn("getnameinfo: %s", gai_strerror(s
));
39 return bprintf("%s", host
);
49 ipv4(const char *iface
)
51 return ip(iface
, AF_INET
);
55 ipv6(const char *iface
)
57 return ip(iface
, AF_INET6
);