diff --git a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
index 308bbf9..713603b 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
@@ -60,11 +60,11 @@
             required = false, multiValued = false)
     private String ipProtoString = null;
 
-    @Option(name = "--ipSrc", description = "Source IP Address",
+    @Option(name = "--ipSrc", description = "Source IP Prefix",
             required = false, multiValued = false)
     private String srcIpString = null;
 
-    @Option(name = "--ipDst", description = "Destination IP Address",
+    @Option(name = "--ipDst", description = "Destination IP Prefix",
             required = false, multiValued = false)
     private String dstIpString = null;
 
@@ -109,9 +109,47 @@
      * @return traffic selector
      */
     protected TrafficSelector buildTrafficSelector() {
-        TrafficSelector.Builder selectorBuilder = DefaultTrafficSelector.builder();
-        short ethType = EthType.IPV4.value();
+        IpPrefix srcIpPrefix = null;
+        IpPrefix dstIpPrefix = null;
 
+        TrafficSelector.Builder selectorBuilder = DefaultTrafficSelector.builder();
+
+        if (!isNullOrEmpty(srcIpString)) {
+            srcIpPrefix = IpPrefix.valueOf(srcIpString);
+            if (srcIpPrefix.isIp4()) {
+                selectorBuilder.matchIPSrc(srcIpPrefix);
+            } else {
+                selectorBuilder.matchIPv6Src(srcIpPrefix);
+            }
+        }
+
+        if (!isNullOrEmpty(dstIpString)) {
+            dstIpPrefix = IpPrefix.valueOf(dstIpString);
+            if (dstIpPrefix.isIp4()) {
+                selectorBuilder.matchIPDst(dstIpPrefix);
+            } else {
+                selectorBuilder.matchIPv6Dst(dstIpPrefix);
+            }
+        }
+
+        if ((srcIpPrefix != null) && (dstIpPrefix != null) &&
+            (srcIpPrefix.version() != dstIpPrefix.version())) {
+            // ERROR: IP src/dst version mismatch
+            throw new IllegalArgumentException(
+                        "IP source and destination version mismatch");
+        }
+
+        //
+        // Set the default EthType based on the IP version if the matching
+        // source or destination IP prefixes.
+        //
+        short ethType = EthType.IPV4.value();
+        if ((srcIpPrefix != null) && srcIpPrefix.isIp6()) {
+            ethType = EthType.IPV6.value();
+        }
+        if ((dstIpPrefix != null) && dstIpPrefix.isIp6()) {
+            ethType = EthType.IPV6.value();
+        }
         if (!isNullOrEmpty(ethTypeString)) {
             ethType = EthType.parseFromString(ethTypeString);
         }
@@ -130,14 +168,6 @@
             selectorBuilder.matchIPProtocol((byte) ipProtoShort);
         }
 
-        if (!isNullOrEmpty(srcIpString)) {
-            selectorBuilder.matchIPSrc(IpPrefix.valueOf(srcIpString));
-        }
-
-        if (!isNullOrEmpty(dstIpString)) {
-            selectorBuilder.matchIPDst(IpPrefix.valueOf(dstIpString));
-        }
-
         if (!isNullOrEmpty(srcTcpString)) {
             selectorBuilder.matchTcpSrc((short) Integer.parseInt(srcTcpString));
         }
