ONOS-1756: Improve CLI auto completers

- Add more ICMP types and codes
- Add completer for --icmp6Type
- Add completer for --icmp6Code
- Add completer for --extHdr
    It is a multiValued option.
    For example, the following command will match an IPv6 packet with both fragment and routing extension header:
    add-point-intent --ethType IPV6 --extHdr FRAG --extHdr ROUTING
    NOTE: OVS 2.3.1 does not support OFPXMC_OFB_IPV6_EXTHDR match field yet.
- Change parameter of TrafficSelector.matchIPv6ExthdrFlags() from int to short since that field is 9 bits only

Change-Id: I55944399f3985f2cc09330a726f21983de273341
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 10889fe..d21321b 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
@@ -104,8 +104,8 @@
     private String dstTcpString = null;
 
     @Option(name = "--extHdr", description = "IPv6 Extension Header Pseudo-field",
-            required = false, multiValued = false)
-    private String extHdrString = null;
+            required = false, multiValued = true)
+    private List<String> extHdrStringList = null;
 
     @Option(name = "-b", aliases = "--bandwidth", description = "Bandwidth",
             required = false, multiValued = false)
@@ -217,11 +217,13 @@
         }
 
         if (!isNullOrEmpty(icmp6TypeString)) {
-            selectorBuilder.matchIcmpv6Type((byte) Integer.parseInt(icmp6TypeString));
+            byte icmp6Type = Icmp6Type.parseFromString(icmp6TypeString);
+            selectorBuilder.matchIcmpv6Type(icmp6Type);
         }
 
         if (!isNullOrEmpty(icmp6CodeString)) {
-            selectorBuilder.matchIcmpv6Code((byte) Integer.parseInt(icmp6CodeString));
+            byte icmp6Code = Icmp6Code.parseFromString(icmp6CodeString);
+            selectorBuilder.matchIcmpv6Code(icmp6Code);
         }
 
         if (!isNullOrEmpty(ndTargetString)) {
@@ -244,8 +246,12 @@
             selectorBuilder.matchTcpDst((short) Integer.parseInt(dstTcpString));
         }
 
-        if (!isNullOrEmpty(extHdrString)) {
-            selectorBuilder.matchIPv6ExthdrFlags(Integer.parseInt(extHdrString));
+        if (extHdrStringList != null) {
+            short extHdr = 0;
+            for (String extHdrString : extHdrStringList) {
+                extHdr = (short) (extHdr | ExtHeader.parseFromString(extHdrString));
+            }
+            selectorBuilder.matchIPv6ExthdrFlags(extHdr);
         }
 
         return selectorBuilder.build();