Merge remote-tracking branch 'origin/lan-broadcast' into lan-broadcast
This commit is contained in:
commit
2a89e7e0d1
@ -349,12 +349,16 @@ const std::vector<TransportAddress>& Network::getBroadcastAddresses()
|
|||||||
if (p->ifa_addr->sa_family == AF_INET)
|
if (p->ifa_addr->sa_family == AF_INET)
|
||||||
{
|
{
|
||||||
struct sockaddr_in *sa = (struct sockaddr_in *) p->ifa_addr;
|
struct sockaddr_in *sa = (struct sockaddr_in *) p->ifa_addr;
|
||||||
TransportAddress ta(sa->sin_addr, get);
|
TransportAddress ta(htonl(sa->sin_addr.s_addr), 0);
|
||||||
char *addr = inet_ntoa(sa->sin_addr);
|
uint32_t u = ((sockaddr_in*)(p->ifa_netmask))->sin_addr.s_addr;
|
||||||
int ip = ((sockaddr_in*)(p->ifa_netmask))->sin_addr.s_addr;
|
// Convert mask to #bits: SWAT algorithm
|
||||||
ip = ~ip;
|
u = u - ((u >> 1) & 0x55555555);
|
||||||
printf("Interface: %s\tAddress: %s\tmask: %x -> %x\n", p->ifa_name,
|
u = (u & 0x33333333) + ((u >> 2) & 0x33333333);
|
||||||
addr, p->ifa_netmask, htonl(ip));
|
u = (((u + (u >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
|
||||||
|
|
||||||
|
printf("Interface: %s\tAddress: %s\tmask: %x\n", p->ifa_name,
|
||||||
|
ta.toString().c_str(), u);
|
||||||
|
addAllBroadcastAddresses(ta, u);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user