ONOS-1160: Bug fix for sending groups stats also for non OF1.3 switches.
Change-Id: I5dd75d23aaf2a22f084a8ad7d91b402a869da038
diff --git a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
index 0bd147d..a6ec780 100644
--- a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
+++ b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
@@ -54,6 +54,7 @@
import org.projectfloodlight.openflow.protocol.OFPortStatus;
import org.projectfloodlight.openflow.protocol.OFStatsReply;
import org.projectfloodlight.openflow.protocol.OFStatsType;
+import org.projectfloodlight.openflow.protocol.OFVersion;
import org.slf4j.Logger;
import java.util.Collection;
@@ -106,9 +107,11 @@
controller.addEventListener(listener);
for (OpenFlowSwitch sw : controller.getSwitches()) {
- GroupStatsCollector gsc = new GroupStatsCollector(sw, POLL_INTERVAL);
- gsc.start();
- collectors.put(new Dpid(sw.getId()), gsc);
+ if (isGroupSupported(sw)) {
+ GroupStatsCollector gsc = new GroupStatsCollector(sw, POLL_INTERVAL);
+ gsc.start();
+ collectors.put(new Dpid(sw.getId()), gsc);
+ }
}
log.info("Started");
@@ -257,6 +260,16 @@
return XID_COUNTER.getAndAdd(increase);
}
+ private boolean isGroupSupported(OpenFlowSwitch sw) {
+ if (sw.factory().getVersion() == OFVersion.OF_10 ||
+ sw.factory().getVersion() == OFVersion.OF_11 ||
+ sw.factory().getVersion() == OFVersion.OF_12) {
+ return false;
+ }
+
+ return true;
+ }
+
private class InternalGroupProvider
implements OpenFlowSwitchListener, OpenFlowEventListener {
@@ -303,10 +316,13 @@
@Override
public void switchAdded(Dpid dpid) {
- GroupStatsCollector gsc = new GroupStatsCollector(
- controller.getSwitch(dpid), POLL_INTERVAL);
- gsc.start();
- collectors.put(dpid, gsc);
+ OpenFlowSwitch sw = controller.getSwitch(dpid);
+ if (isGroupSupported(sw)) {
+ GroupStatsCollector gsc = new GroupStatsCollector(
+ controller.getSwitch(dpid), POLL_INTERVAL);
+ gsc.start();
+ collectors.put(dpid, gsc);
+ }
}
@Override