diff --git a/src/unix/bsd/mod.rs b/src/unix/bsd/mod.rs
index ecb21b1c75f58dda2696b2a8d8cbaf3e5a2f3f1c..d55c78162df4c83af875342a07782e3794221f58 100644
--- a/src/unix/bsd/mod.rs
+++ b/src/unix/bsd/mod.rs
@@ -27,11 +27,6 @@ s! {
         pub sun_family: sa_family_t,
         pub sun_path: [c_char; 104]
     }
-
-    pub struct ipv6_mreq {
-        pub ipv6mr_multiaddr: ::in6_addr,
-        pub ipv6mr_interface: ::c_uint,
-    }
 }
 
 extern {
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 8c568c00adf871ab22bf1ca3e5c068a95e209ff9..6ec4bf6d9ced089384ddccfc8f253e1f4349b210 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -56,6 +56,14 @@ s! {
         pub imr_multiaddr: in_addr,
         pub imr_interface: in_addr,
     }
+
+    pub struct ipv6_mreq {
+        pub ipv6mr_multiaddr: in6_addr,
+        #[cfg(target_os = "android")]
+        pub ipv6mr_interface: c_uint,
+        #[cfg(not(target_os = "android"))]
+        pub ipv6mr_interface: c_int,
+    }
 }
 
 cfg_if! {
diff --git a/src/unix/notbsd/android.rs b/src/unix/notbsd/android.rs
index 637f64676a6f72fe62fc69c529b40f0f9a3865f3..96fdc200322a9fe830e3aaf23e4c46a5680cb79a 100644
--- a/src/unix/notbsd/android.rs
+++ b/src/unix/notbsd/android.rs
@@ -54,11 +54,6 @@ s! {
         pub sched_policy: ::int32_t,
         pub sched_priority: ::int32_t,
     }
-
-    pub struct ipv6_mreq {
-        pub ipv6mr_multiaddr: ::in6_addr,
-        pub ipv6mr_interface: ::c_int,
-    }
 }
 
 pub const BUFSIZ: ::c_uint = 1024;
diff --git a/src/unix/notbsd/linux/mod.rs b/src/unix/notbsd/linux/mod.rs
index 4afac2d23196aafd7128c5be8284db4616f73418..d17f3306a70cbad3c62e871a4968c87b46d18463 100644
--- a/src/unix/notbsd/linux/mod.rs
+++ b/src/unix/notbsd/linux/mod.rs
@@ -28,11 +28,6 @@ s! {
         pub ifa_ifu: *mut ::sockaddr, // FIXME This should be a union
         pub ifa_data: *mut ::c_void
     }
-
-    pub struct ipv6_mreq {
-        pub ipv6mr_multiaddr: ::in6_addr,
-        pub ipv6mr_interface: ::c_uint,
-    }
 }
 
 pub const BUFSIZ: ::c_uint = 8192;