|
|
@ -62,17 +62,21 @@ llarp_getifaddr(const char* ifname, int af, struct sockaddr* addr)
|
|
|
|
// std::to_string(i->ifa_addr->sa_family));
|
|
|
|
// std::to_string(i->ifa_addr->sa_family));
|
|
|
|
if(llarp::StrEq(i->ifa_name, ifname) && i->ifa_addr->sa_family == af)
|
|
|
|
if(llarp::StrEq(i->ifa_name, ifname) && i->ifa_addr->sa_family == af)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// llarp::LogInfo(__FILE__, "found ", ifname, " af: ", af);
|
|
|
|
llarp::Addr a(*i->ifa_addr);
|
|
|
|
memcpy(addr, i->ifa_addr, sl);
|
|
|
|
if(!a.isPrivate())
|
|
|
|
if(af == AF_INET6)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// set scope id
|
|
|
|
// llarp::LogInfo(__FILE__, "found ", ifname, " af: ", af);
|
|
|
|
sockaddr_in6* ip6addr = (sockaddr_in6*)addr;
|
|
|
|
memcpy(addr, i->ifa_addr, sl);
|
|
|
|
ip6addr->sin6_scope_id = if_nametoindex(ifname);
|
|
|
|
if(af == AF_INET6)
|
|
|
|
ip6addr->sin6_flowinfo = 0;
|
|
|
|
{
|
|
|
|
|
|
|
|
// 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;
|
|
|
|
i = i->ifa_next;
|
|
|
|