diff --git a/src/network_utils.h b/src/network_utils.h
index b9148237c9a5c1fd757b4967bfb1bdf5d3956df7..b98ccac2a7367a20cbcfb20168c8d298a4653c49 100644
--- a/src/network_utils.h
+++ b/src/network_utils.h
@@ -23,6 +23,10 @@
 #define write(s, b, f) send(s, b, (int)strlen(b), 0)
 #endif
 
+#ifndef IPV6_JOIN_GROUP
+#define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP
+#endif
+
 namespace dht {
 namespace net {
 
diff --git a/src/peer_discovery.cpp b/src/peer_discovery.cpp
index 038b3e2dbfd27d7b6da45cce1c17c524f5337c2a..bb282dfe5a7dc7d12c95daee0494206d36d80e04 100644
--- a/src/peer_discovery.cpp
+++ b/src/peer_discovery.cpp
@@ -130,7 +130,7 @@ PeerDiscovery::socketJoinMulticast(int sockfd, sa_family_t family)
 
         config_ipv6.ipv6mr_interface = 0;
         inet_pton(AF_INET6, MULTICAST_ADDRESS_IPV6, &config_ipv6.ipv6mr_multiaddr);
-        if (setsockopt(sockfd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &config_ipv6, sizeof(config_ipv6)) < 0){
+        if (setsockopt(sockfd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &config_ipv6, sizeof(config_ipv6)) < 0){
             throw std::runtime_error(std::string("Member Addition IPV6 Error: ") + strerror(errno));
         }
         break;