diff --git a/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java b/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
index 11cf902..4084221 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
@@ -179,6 +179,10 @@
      * otherwise false
      */
     public boolean contains(IpPrefix other) {
+        if (version() != other.version()) {
+            return false;
+        }
+
         if (this.prefixLength > other.prefixLength) {
             return false;               // This prefix has smaller prefix size
         }
@@ -201,6 +205,10 @@
      * false
      */
     public boolean contains(IpAddress other) {
+        if (version() != other.version()) {
+            return false;
+        }
+
         //
         // Mask the other address with my prefix length.
         // If the other prefix is within this prefix, the masked address must
diff --git a/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java b/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java
index ba765b1..9fc4eaa 100644
--- a/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java
@@ -767,6 +767,12 @@
         assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/16")));
         assertFalse(ipPrefix.contains(IpPrefix.valueOf("0.0.0.0/0")));
         assertTrue(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
+
+        // Test when there is a mistmatch in the compared IP address families
+        ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
+        assertFalse(ipPrefix.contains(IpPrefix.valueOf("1111:2222:3333:4444::/120")));
+        ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
+        assertFalse(ipPrefix.contains(IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
     }
 
     /**
@@ -840,6 +846,12 @@
         assertFalse(ipPrefix.contains(IpPrefix.valueOf("::/0")));
         assertTrue(ipPrefix.contains(
                 IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128")));
+
+        // Test when there is a mistmatch in the compared IP address families
+        ipPrefix = IpPrefix.valueOf("::/0");
+        assertFalse(ipPrefix.contains(IpPrefix.valueOf("1.2.0.0/24")));
+        ipPrefix = IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
+        assertFalse(ipPrefix.contains(IpPrefix.valueOf("255.255.255.255/32")));
     }
 
     /**
@@ -876,6 +888,12 @@
         assertFalse(ipPrefix.contains(IpAddress.valueOf("1.3.0.0")));
         assertFalse(ipPrefix.contains(IpAddress.valueOf("0.0.0.0")));
         assertTrue(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
+
+        // Test when there is a mistmatch in the compared IP address families
+        ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
+        assertFalse(ipPrefix.contains(IpAddress.valueOf("1111:2222:3333:4444::")));
+        ipPrefix = IpPrefix.valueOf("255.255.255.255/32");
+        assertFalse(ipPrefix.contains(IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
     }
 
     /**
@@ -929,6 +947,12 @@
         assertFalse(ipPrefix.contains(IpAddress.valueOf("::")));
         assertTrue(ipPrefix.contains(
                 IpAddress.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")));
+
+        // Test when there is a mistmatch in the compared IP address families
+        ipPrefix = IpPrefix.valueOf("::/0");
+        assertFalse(ipPrefix.contains(IpAddress.valueOf("1.2.0.0")));
+        ipPrefix = IpPrefix.valueOf("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/128");
+        assertFalse(ipPrefix.contains(IpAddress.valueOf("255.255.255.255")));
     }
 
     /**
