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();