diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java index b866c7069b336a58dbfedfc774387f7319d60a84..f47484054701f346fe68c12aebac5bcc91cda9c2 100644 --- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java +++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java @@ -937,15 +937,18 @@ public class Controller implements IFloodlightProviderService, if (log.isTraceEnabled()) log.trace("Features Reply from {}", sw); + sw.setFeaturesReply((OFFeaturesReply) m); if (state.hsState.equals(HandshakeState.HELLO)) { - sw.setFeaturesReply((OFFeaturesReply) m); sendFeatureReplyConfiguration(); state.hsState = HandshakeState.FEATURES_REPLY; // uncomment to enable "dumb" switches like cbench // state.hsState = HandshakeState.READY; // addSwitch(sw); } else { + // return results to rest api caller sw.deliverOFFeaturesReply(m); + // update database */ + updateActiveSwitchInfo(sw); } break; case GET_CONFIG_REPLY: diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java index 0d73de7f11515980d75558257823a7042c9f42d6..d0bf4949372032af38c03c099f7a733db7ab9bc7 100644 --- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java +++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java @@ -273,8 +273,13 @@ public class OFSwitchImpl implements IOFSwitch { @JsonIgnore public void setFeaturesReply(OFFeaturesReply featuresReply) { synchronized(portLock) { - for (OFPhysicalPort port : featuresReply.getPorts()) { - setPort(port); + if (stringId == null) { + /* ports are updated via port status message, so we + * only fill in ports on initial connection. + */ + for (OFPhysicalPort port : featuresReply.getPorts()) { + setPort(port); + } } this.datapathId = featuresReply.getDatapathId(); this.capabilities = featuresReply.getCapabilities();