--- libavformat/udp.c
+++ libavformat/udp.c
@@ -47,8 +47,11 @@
 #define HAVE_PTHREAD_CANCEL 0
 #endif
 
-#ifndef IPV6_ADD_MEMBERSHIP
+#if !defined(IPV6_ADD_MEMBERSHIP) && defined(IPV6_JOIN_GROUP)
 #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
+#endif
+
+#if !defined(IPV6_DROP_MEMBERSHIP) && defined(IPV6_LEAVE_GROUP)
 #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
 #endif
 
@@ -153,7 +156,7 @@
         }
     }
 #endif
-#if HAVE_STRUCT_IPV6_MREQ && defined(IPPROTO_IPV6)
+#if HAVE_STRUCT_IPV6_MREQ && defined(IPPROTO_IPV6) && defined(IPV6_ADD_MEMBERSHIP)
     if (addr->sa_family == AF_INET6) {
         struct ipv6_mreq mreq6;
 
@@ -182,7 +185,7 @@
         }
     }
 #endif
-#if HAVE_STRUCT_IPV6_MREQ && defined(IPPROTO_IPV6)
+#if HAVE_STRUCT_IPV6_MREQ && defined(IPPROTO_IPV6) && defined(IPV6_DROP_MEMBERSHIP)
     if (addr->sa_family == AF_INET6) {
         struct ipv6_mreq mreq6;
 
