Committed by
Gerrit Code Review
ONOS-1160: Bug fix for sending groups stats also for non OF1.3 switches.
Change-Id: I5dd75d23aaf2a22f084a8ad7d91b402a869da038
Showing
1 changed file
with
16 additions
and
0 deletions
... | @@ -54,6 +54,7 @@ import org.projectfloodlight.openflow.protocol.OFMessage; | ... | @@ -54,6 +54,7 @@ import org.projectfloodlight.openflow.protocol.OFMessage; |
54 | import org.projectfloodlight.openflow.protocol.OFPortStatus; | 54 | import org.projectfloodlight.openflow.protocol.OFPortStatus; |
55 | import org.projectfloodlight.openflow.protocol.OFStatsReply; | 55 | import org.projectfloodlight.openflow.protocol.OFStatsReply; |
56 | import org.projectfloodlight.openflow.protocol.OFStatsType; | 56 | import org.projectfloodlight.openflow.protocol.OFStatsType; |
57 | +import org.projectfloodlight.openflow.protocol.OFVersion; | ||
57 | import org.slf4j.Logger; | 58 | import org.slf4j.Logger; |
58 | 59 | ||
59 | import java.util.Collection; | 60 | import java.util.Collection; |
... | @@ -106,10 +107,12 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv | ... | @@ -106,10 +107,12 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv |
106 | controller.addEventListener(listener); | 107 | controller.addEventListener(listener); |
107 | 108 | ||
108 | for (OpenFlowSwitch sw : controller.getSwitches()) { | 109 | for (OpenFlowSwitch sw : controller.getSwitches()) { |
110 | + if (isGroupSupported(sw)) { | ||
109 | GroupStatsCollector gsc = new GroupStatsCollector(sw, POLL_INTERVAL); | 111 | GroupStatsCollector gsc = new GroupStatsCollector(sw, POLL_INTERVAL); |
110 | gsc.start(); | 112 | gsc.start(); |
111 | collectors.put(new Dpid(sw.getId()), gsc); | 113 | collectors.put(new Dpid(sw.getId()), gsc); |
112 | } | 114 | } |
115 | + } | ||
113 | 116 | ||
114 | log.info("Started"); | 117 | log.info("Started"); |
115 | } | 118 | } |
... | @@ -257,6 +260,16 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv | ... | @@ -257,6 +260,16 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv |
257 | return XID_COUNTER.getAndAdd(increase); | 260 | return XID_COUNTER.getAndAdd(increase); |
258 | } | 261 | } |
259 | 262 | ||
263 | + private boolean isGroupSupported(OpenFlowSwitch sw) { | ||
264 | + if (sw.factory().getVersion() == OFVersion.OF_10 || | ||
265 | + sw.factory().getVersion() == OFVersion.OF_11 || | ||
266 | + sw.factory().getVersion() == OFVersion.OF_12) { | ||
267 | + return false; | ||
268 | + } | ||
269 | + | ||
270 | + return true; | ||
271 | + } | ||
272 | + | ||
260 | private class InternalGroupProvider | 273 | private class InternalGroupProvider |
261 | implements OpenFlowSwitchListener, OpenFlowEventListener { | 274 | implements OpenFlowSwitchListener, OpenFlowEventListener { |
262 | 275 | ||
... | @@ -303,11 +316,14 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv | ... | @@ -303,11 +316,14 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv |
303 | 316 | ||
304 | @Override | 317 | @Override |
305 | public void switchAdded(Dpid dpid) { | 318 | public void switchAdded(Dpid dpid) { |
319 | + OpenFlowSwitch sw = controller.getSwitch(dpid); | ||
320 | + if (isGroupSupported(sw)) { | ||
306 | GroupStatsCollector gsc = new GroupStatsCollector( | 321 | GroupStatsCollector gsc = new GroupStatsCollector( |
307 | controller.getSwitch(dpid), POLL_INTERVAL); | 322 | controller.getSwitch(dpid), POLL_INTERVAL); |
308 | gsc.start(); | 323 | gsc.start(); |
309 | collectors.put(dpid, gsc); | 324 | collectors.put(dpid, gsc); |
310 | } | 325 | } |
326 | + } | ||
311 | 327 | ||
312 | @Override | 328 | @Override |
313 | public void switchRemoved(Dpid dpid) { | 329 | public void switchRemoved(Dpid dpid) { | ... | ... |
-
Please register or login to post a comment