#include
#include <ifaddrs.h>
#include <netinet/in.h>
int main() {
struct ifaddrs* ifAddrStruct = nullptr;
if (getifaddrs(&ifAddrStruct) == 0) {
struct ifaddrs* ifa = ifAddrStruct;
while (ifa != nullptr) {
if (ifa->ifa_addr != nullptr && ifa->ifa_addr->sa_family == AF_INET6) {
struct sockaddr_in6* addr = reinterpret_cast<struct sockaddr_in6*>(ifa->ifa_addr);
if (IN6_IS_ADDR_LOOPBACK(&addr->sin6_addr)) {
std::cout << "Loopback adapter index: " << if_nametoindex(ifa->ifa_name) << std::endl;
}
}
ifa = ifa->ifa_next;
}
freeifaddrs(ifAddrStruct);
} else {
std::cerr << “Error getting adapter information.” << std::endl;
}
return 0;
}