T3: Handling double rules on table 10 for HW
Change-Id: I700138780ef72caf5a58507dfd37178f1e2237f3
(cherry picked from commit 8314b07a7bb73775eb6f00d5f132a7c31f1853f6)
diff --git a/src/main/java/org/onosproject/t3/cli/TroubleshootTraceCommand.java b/src/main/java/org/onosproject/t3/cli/TroubleshootTraceCommand.java
index 7387c5f..587c748 100644
--- a/src/main/java/org/onosproject/t3/cli/TroubleshootTraceCommand.java
+++ b/src/main/java/org/onosproject/t3/cli/TroubleshootTraceCommand.java
@@ -29,6 +29,7 @@
import org.onosproject.net.flow.TrafficSelector;
import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.group.GroupBucket;
+import org.onosproject.t3.api.GroupsInDevice;
import org.onosproject.t3.api.StaticPacketTrace;
import org.onosproject.t3.api.TroubleshootService;
@@ -227,26 +228,29 @@
//Prints the groups for a given trace and a specified level of verbosity
private void printGroups(StaticPacketTrace trace, boolean verbose, ConnectPoint connectPoint) {
- print("Groups");
- trace.getGroupOuputs(connectPoint.deviceId()).forEach(output -> {
- if (output.getOutput().equals(connectPoint)) {
- output.getGroups().forEach(group -> {
- if (verbose) {
- print(GROUP_FORMAT, Integer.toHexString(group.id().id()), group.state(), group.type(),
- group.bytes(), group.packets(), group.appId().name(), group.referenceCount());
- int i = 0;
- for (GroupBucket bucket : group.buckets().buckets()) {
- print(GROUP_BUCKET_FORMAT, Integer.toHexString(group.id().id()), ++i,
- bucket.bytes(), bucket.packets(),
- bucket.treatment().allInstructions());
+ List<GroupsInDevice> groupsInDevice = trace.getGroupOuputs(connectPoint.deviceId());
+ if (groupsInDevice != null) {
+ print("Groups");
+ groupsInDevice.forEach(output -> {
+ if (output.getOutput().equals(connectPoint)) {
+ output.getGroups().forEach(group -> {
+ if (verbose) {
+ print(GROUP_FORMAT, Integer.toHexString(group.id().id()), group.state(), group.type(),
+ group.bytes(), group.packets(), group.appId().name(), group.referenceCount());
+ int i = 0;
+ for (GroupBucket bucket : group.buckets().buckets()) {
+ print(GROUP_BUCKET_FORMAT, Integer.toHexString(group.id().id()), ++i,
+ bucket.bytes(), bucket.packets(),
+ bucket.treatment().allInstructions());
+ }
+ } else {
+ print(" groupId=%s", group.id());
}
- } else {
- print(" groupId=%s", group.id());
- }
- });
- print("Outgoing Packet %s", output.getFinalPacket());
- }
- });
+ });
+ print("Outgoing Packet %s", output.getFinalPacket());
+ }
+ });
+ }
}
private String printTreatment(TrafficTreatment treatment) {