mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-18 20:47:53 +00:00
Mac multicast bug fix -- GitHub issue #986
This commit is contained in:
parent
db813db7e8
commit
632d6e04ad
@ -165,6 +165,7 @@ MacEthernetTap::MacEthernetTap(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_dev = devstr;
|
||||||
|
|
||||||
if (::pipe(_shutdownSignalPipe))
|
if (::pipe(_shutdownSignalPipe))
|
||||||
throw std::runtime_error("pipe creation failed");
|
throw std::runtime_error("pipe creation failed");
|
||||||
@ -285,7 +286,7 @@ std::vector<InetAddress> MacEthernetTap::ips() const
|
|||||||
if (!getifaddrs(&ifa)) {
|
if (!getifaddrs(&ifa)) {
|
||||||
struct ifaddrs *p = ifa;
|
struct ifaddrs *p = ifa;
|
||||||
while (p) {
|
while (p) {
|
||||||
if ((!strcmp(p->ifa_name,_dev.c_str()))&&(p->ifa_addr)&&(p->ifa_netmask)&&(p->ifa_addr->sa_family == p->ifa_netmask->sa_family)) {
|
if ((p->ifa_name)&&(!strcmp(p->ifa_name,_dev.c_str()))&&(p->ifa_addr)) {
|
||||||
switch(p->ifa_addr->sa_family) {
|
switch(p->ifa_addr->sa_family) {
|
||||||
case AF_INET: {
|
case AF_INET: {
|
||||||
struct sockaddr_in *sin = (struct sockaddr_in *)p->ifa_addr;
|
struct sockaddr_in *sin = (struct sockaddr_in *)p->ifa_addr;
|
||||||
@ -361,7 +362,7 @@ void MacEthernetTap::scanMulticastGroups(std::vector<MulticastGroup> &added,std:
|
|||||||
newGroups.push_back(MulticastGroup::deriveMulticastGroupForAddressResolution(*ip));
|
newGroups.push_back(MulticastGroup::deriveMulticastGroupForAddressResolution(*ip));
|
||||||
|
|
||||||
std::sort(newGroups.begin(),newGroups.end());
|
std::sort(newGroups.begin(),newGroups.end());
|
||||||
std::unique(newGroups.begin(),newGroups.end());
|
newGroups.erase(std::unique(newGroups.begin(),newGroups.end()),newGroups.end());
|
||||||
|
|
||||||
for(std::vector<MulticastGroup>::iterator m(newGroups.begin());m!=newGroups.end();++m) {
|
for(std::vector<MulticastGroup>::iterator m(newGroups.begin());m!=newGroups.end();++m) {
|
||||||
if (!std::binary_search(_multicastGroups.begin(),_multicastGroups.end(),*m))
|
if (!std::binary_search(_multicastGroups.begin(),_multicastGroups.end(),*m))
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
* to force a minor update without an actual version number change. It's
|
* to force a minor update without an actual version number change. It's
|
||||||
* not part of the actual release version number.
|
* not part of the actual release version number.
|
||||||
*/
|
*/
|
||||||
#define ZEROTIER_ONE_VERSION_BUILD 0
|
#define ZEROTIER_ONE_VERSION_BUILD 1
|
||||||
|
|
||||||
#ifndef ZT_BUILD_ARCHITECTURE
|
#ifndef ZT_BUILD_ARCHITECTURE
|
||||||
#define ZT_BUILD_ARCHITECTURE 0
|
#define ZT_BUILD_ARCHITECTURE 0
|
||||||
|
Loading…
Reference in New Issue
Block a user