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
23 additions
and
7 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,9 +107,11 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv | ... | @@ -106,9 +107,11 @@ 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()) { |
| 109 | - GroupStatsCollector gsc = new GroupStatsCollector(sw, POLL_INTERVAL); | 110 | + if (isGroupSupported(sw)) { |
| 110 | - gsc.start(); | 111 | + GroupStatsCollector gsc = new GroupStatsCollector(sw, POLL_INTERVAL); |
| 111 | - collectors.put(new Dpid(sw.getId()), gsc); | 112 | + gsc.start(); |
| 113 | + collectors.put(new Dpid(sw.getId()), gsc); | ||
| 114 | + } | ||
| 112 | } | 115 | } |
| 113 | 116 | ||
| 114 | log.info("Started"); | 117 | log.info("Started"); |
| ... | @@ -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,10 +316,13 @@ public class OpenFlowGroupProvider extends AbstractProvider implements GroupProv | ... | @@ -303,10 +316,13 @@ 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) { |
| 306 | - GroupStatsCollector gsc = new GroupStatsCollector( | 319 | + OpenFlowSwitch sw = controller.getSwitch(dpid); |
| 307 | - controller.getSwitch(dpid), POLL_INTERVAL); | 320 | + if (isGroupSupported(sw)) { |
| 308 | - gsc.start(); | 321 | + GroupStatsCollector gsc = new GroupStatsCollector( |
| 309 | - collectors.put(dpid, gsc); | 322 | + controller.getSwitch(dpid), POLL_INTERVAL); |
| 323 | + gsc.start(); | ||
| 324 | + collectors.put(dpid, gsc); | ||
| 325 | + } | ||
| 310 | } | 326 | } |
| 311 | 327 | ||
| 312 | @Override | 328 | @Override | ... | ... |
-
Please register or login to post a comment