#include #include "str.hpp" #include #include extern "C" { bool llarp_getifaddr(const char * ifname, int af, struct sockaddr* addr) { ifaddrs* ifa = nullptr; bool found = false; socklen_t sl = sizeof(sockaddr_in6); if (af == AF_INET) sl = sizeof(sockaddr_in); if (getifaddrs(&ifa) == -1) return false; ifaddrs* i = ifa; while (i) { if (llarp::StrEq(i->ifa_name, ifname) && i->ifa_addr && i->ifa_addr->sa_family == af) { memcpy(addr, i->ifa_addr, sl); found = true; break; } i = i->ifa_next; } if (ifa) freeifaddrs(ifa); return found; } }