+ throw runtime_error(err);
+
+ for(pcap_if_t *d=devs; d; d=d->next)
+ if(iface==d->name)
+ {
+ for(pcap_addr_t *a=d->addresses; a; a=a->next)
+ {
+ if(a->addr->sa_family==AF_INET)
+ {
+ Address addr(ntohl(reinterpret_cast<sockaddr_in *>(a->addr)->sin_addr.s_addr));
+ if(a->netmask)
+ addr.set_mask(Address(ntohl(reinterpret_cast<sockaddr_in *>(a->netmask)->sin_addr.s_addr)));
+ localnets.push_back(addr);
+ }
+ else if(a->addr->sa_family==AF_INET6)
+ {
+ Address addr(reinterpret_cast<sockaddr_in6 *>(a->addr)->sin6_addr);
+ if(a->netmask)
+ addr.set_mask(Address(reinterpret_cast<sockaddr_in6 *>(a->netmask)->sin6_addr));
+ localnets.push_back(addr);
+ }
+ }
+ }