diff --git a/utils/misc/src/main/java/org/onlab/packet/IpAddress.java b/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
index f8d9f2f..699ad47 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IpAddress.java
@@ -80,6 +80,24 @@
     }
 
     /**
+     * Tests whether the IP version of this address is IPv4.
+     *
+     * @return true if the IP version of this address is IPv4, otherwise false.
+     */
+    public boolean isIp4() {
+        return (version() == Ip4Address.VERSION);
+    }
+
+    /**
+     * Tests whether the IP version of this address is IPv6.
+     *
+     * @return true if the IP version of this address is IPv6, otherwise false.
+     */
+    public boolean isIp6() {
+        return (version() == Ip6Address.VERSION);
+    }
+
+    /**
      * Gets the {@link Ip4Address} view of the IP address.
      *
      * @return the {@link Ip4Address} view of the IP address if it is IPv4,
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 4084221..46a920e 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IpPrefix.java
@@ -57,6 +57,24 @@
     }
 
     /**
+     * Tests whether the IP version of this prefix is IPv4.
+     *
+     * @return true if the IP version of this prefix is IPv4, otherwise false.
+     */
+    public boolean isIp4() {
+        return address.isIp4();
+    }
+
+    /**
+     * Tests whether the IP version of this prefix is IPv6.
+     *
+     * @return true if the IP version of this prefix is IPv6, otherwise false.
+     */
+    public boolean isIp6() {
+        return address.isIp6();
+    }
+
+    /**
      * Returns the IP address value of the prefix.
      *
      * @return the IP address value of the prefix
diff --git a/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java b/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
index f0e6ae7..2257991 100644
--- a/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/IpAddressTest.java
@@ -78,6 +78,38 @@
     }
 
     /**
+     * Tests whether the IP version of an address is IPv4.
+     */
+    @Test
+    public void testIsIp4() {
+        IpAddress ipAddress;
+
+        // IPv4
+        ipAddress = IpAddress.valueOf("0.0.0.0");
+        assertTrue(ipAddress.isIp4());
+
+        // IPv6
+        ipAddress = IpAddress.valueOf("::");
+        assertFalse(ipAddress.isIp4());
+    }
+
+    /**
+     * Tests whether the IP version of an address is IPv6.
+     */
+    @Test
+    public void testIsIp6() {
+        IpAddress ipAddress;
+
+        // IPv4
+        ipAddress = IpAddress.valueOf("0.0.0.0");
+        assertFalse(ipAddress.isIp6());
+
+        // IPv6
+        ipAddress = IpAddress.valueOf("::");
+        assertTrue(ipAddress.isIp6());
+    }
+
+    /**
      * Tests getting the Ip4Address and Ip6Address view of the IP address.
      */
     @Test
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 9fc4eaa..31fbb03 100644
--- a/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/IpPrefixTest.java
@@ -65,6 +65,38 @@
     }
 
     /**
+     * Tests whether the IP version of a prefix is IPv4.
+     */
+    @Test
+    public void testIsIp4() {
+        IpPrefix ipPrefix;
+
+        // IPv4
+        ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
+        assertTrue(ipPrefix.isIp4());
+
+        // IPv6
+        ipPrefix = IpPrefix.valueOf("::/0");
+        assertFalse(ipPrefix.isIp4());
+    }
+
+    /**
+     * Tests whether the IP version of a prefix is IPv6.
+     */
+    @Test
+    public void testIsIp6() {
+        IpPrefix ipPrefix;
+
+        // IPv4
+        ipPrefix = IpPrefix.valueOf("0.0.0.0/0");
+        assertFalse(ipPrefix.isIp6());
+
+        // IPv6
+        ipPrefix = IpPrefix.valueOf("::/0");
+        assertTrue(ipPrefix.isIp6());
+    }
+
+    /**
      * Tests returning the IP address value and IP address prefix length of
      * an IPv4 prefix.
      */
