when a switch vapourizes so must its ports
Change-Id: Ibcbcc47f691c24897985978a39da9dba6411ba2a
disable a port which is deleted
Change-Id: Ic6e0cb0a9901a6589b587aeb89bfc1b302d17516
diff --git a/providers/openflow/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
index 617b0ba..c44a4d4 100644
--- a/providers/openflow/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -46,6 +46,7 @@
import org.projectfloodlight.openflow.protocol.OFPortConfig;
import org.projectfloodlight.openflow.protocol.OFPortDesc;
import org.projectfloodlight.openflow.protocol.OFPortFeatures;
+import org.projectfloodlight.openflow.protocol.OFPortReason;
import org.projectfloodlight.openflow.protocol.OFPortState;
import org.projectfloodlight.openflow.protocol.OFPortStatus;
import org.projectfloodlight.openflow.protocol.OFVersion;
@@ -242,7 +243,7 @@
@Override
public void portChanged(Dpid dpid, OFPortStatus status) {
- PortDescription portDescription = buildPortDescription(status.getDesc());
+ PortDescription portDescription = buildPortDescription(status);
providerService.portStatusChanged(deviceId(uri(dpid)), portDescription);
}
@@ -303,6 +304,17 @@
return new DefaultPortDescription(portNo, enabled, type, portSpeed(port));
}
+ private PortDescription buildPortDescription(OFPortStatus status) {
+ OFPortDesc port = status.getDesc();
+ if (status.getReason() != OFPortReason.DELETE) {
+ return buildPortDescription(port);
+ } else {
+ PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
+ Port.Type type = port.getCurr().contains(OFPortFeatures.PF_FIBER) ? FIBER : COPPER;
+ return new DefaultPortDescription(portNo, false, type, portSpeed(port));
+ }
+ }
+
private long portSpeed(OFPortDesc port) {
if (port.getVersion() == OFVersion.OF_13) {
return port.getCurrSpeed() / MBPS;