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/utils/misc/src/main/java/org/onlab/packet/ICMP6.java b/utils/misc/src/main/java/org/onlab/packet/ICMP6.java
index 5c2a6e6..7c9b4b9 100644
--- a/utils/misc/src/main/java/org/onlab/packet/ICMP6.java
+++ b/utils/misc/src/main/java/org/onlab/packet/ICMP6.java
@@ -34,13 +34,68 @@
public class ICMP6 extends BasePacket {
public static final byte HEADER_LENGTH = 4; // bytes
+ // Type
+ /** Destination Unreachable. */
+ public static final byte DEST_UNREACH = (byte) 0x01;
+ /** Packet Too Big. */
+ public static final byte PKT_TOO_BIG = (byte) 0x02;
+ /** Time Exceeded. */
+ public static final byte TIME_EXCEED = (byte) 0x03;
+ /** Parameter Problem. */
+ public static final byte PARAM_ERR = (byte) 0x04;
+ /** Echo Request. */
public static final byte ECHO_REQUEST = (byte) 0x80;
+ /** Echo Reply. */
public static final byte ECHO_REPLY = (byte) 0x81;
+ /** Multicast Listener Query. */
+ public static final byte MCAST_QUERY = (byte) 0x82;
+ /** Multicast Listener Report. */
+ public static final byte MCAST_REPORT = (byte) 0x83;
+ /** Multicast Listener Done. */
+ public static final byte MCAST_DONE = (byte) 0x84;
+ /** Router Solicitation. */
public static final byte ROUTER_SOLICITATION = (byte) 0x85;
+ /** Router Advertisement. */
public static final byte ROUTER_ADVERTISEMENT = (byte) 0x86;
+ /** Neighbor Solicitation. */
public static final byte NEIGHBOR_SOLICITATION = (byte) 0x87;
+ /** Neighbor Advertisement. */
public static final byte NEIGHBOR_ADVERTISEMENT = (byte) 0x88;
+ /** Redirect Message. */
public static final byte REDIRECT = (byte) 0x89;
+
+ // Code for DEST_UNREACH
+ /** No route to destination. */
+ public static final byte NO_ROUTE = (byte) 0x00;
+ /** Communication with destination administratively prohibited. */
+ public static final byte COMM_PROHIBIT = (byte) 0x01;
+ /** Beyond scope of source address. */
+ public static final byte BEYOND_SCOPE = (byte) 0x02;
+ /** Address unreachable. */
+ public static final byte ADDR_UNREACH = (byte) 0x03;
+ /** Port unreachable. */
+ public static final byte PORT_UNREACH = (byte) 0x04;
+ /** Source address failed ingress/egress policy. */
+ public static final byte FAIL_POLICY = (byte) 0x05;
+ /** Reject route to destination. */
+ public static final byte REJECT_ROUTE = (byte) 0x06;
+ /** Error in Source Routing Header. */
+ public static final byte SRC_ROUTING_HEADER_ERR = (byte) 0x07;
+
+ // Code for TIME_EXCEED
+ /** Hop limit exceeded in transit. */
+ public static final byte HOP_LIMIT_EXCEED = (byte) 0x00;
+ /** Fragment reassembly time exceeded. */
+ public static final byte DEFRAG_TIME_EXCEED = (byte) 0x01;
+
+ // Code for PARAM_ERR
+ /** Erroneous header field encountered. */
+ public static final byte HDR_FIELD_ERR = (byte) 0x00;
+ /** Unrecognized Next Header type encountered. */
+ public static final byte NEXT_HEADER_ERR = (byte) 0x01;
+ /** Unrecognized IPv6 option encountered. */
+ public static final byte IPV6_OPT_ERR = (byte) 0x01;
+
public static final Map<Byte, Class<? extends IPacket>> PROTOCOL_CLASS_MAP =
new HashMap<>();