From 4dd7b2843f49eec7779cb01f94ef46e1611fbfc9 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Wed, 25 Jul 2018 14:05:23 +1000 Subject: [PATCH] only get public addresses --- llarp/net.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/llarp/net.cpp b/llarp/net.cpp index f39025f2e..926f00b30 100644 --- a/llarp/net.cpp +++ b/llarp/net.cpp @@ -62,17 +62,21 @@ llarp_getifaddr(const char* ifname, int af, struct sockaddr* addr) // std::to_string(i->ifa_addr->sa_family)); if(llarp::StrEq(i->ifa_name, ifname) && i->ifa_addr->sa_family == af) { - // llarp::LogInfo(__FILE__, "found ", ifname, " af: ", af); - memcpy(addr, i->ifa_addr, sl); - if(af == AF_INET6) + llarp::Addr a(*i->ifa_addr); + if(!a.isPrivate()) { - // set scope id - sockaddr_in6* ip6addr = (sockaddr_in6*)addr; - ip6addr->sin6_scope_id = if_nametoindex(ifname); - ip6addr->sin6_flowinfo = 0; + // llarp::LogInfo(__FILE__, "found ", ifname, " af: ", af); + memcpy(addr, i->ifa_addr, sl); + if(af == AF_INET6) + { + // set scope id + sockaddr_in6* ip6addr = (sockaddr_in6*)addr; + ip6addr->sin6_scope_id = if_nametoindex(ifname); + ip6addr->sin6_flowinfo = 0; + } + found = true; + break; } - found = true; - break; } } i = i->ifa_next;