[ONOS-5911] Port removal after receiving OFPR_DELETE port status reason.
Change-Id: I1f3f6c752da5f989a2d727f378e9f04fbbb71341
diff --git a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
index 6119a1f..0acd186 100644
--- a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -450,7 +450,11 @@
public void portChanged(Dpid dpid, OFPortStatus status) {
LOG.debug("portChanged({},{})", dpid, status);
PortDescription portDescription = buildPortDescription(status);
- providerService.portStatusChanged(deviceId(uri(dpid)), portDescription);
+ if (status.getReason() != OFPortReason.DELETE) {
+ providerService.portStatusChanged(deviceId(uri(dpid)), portDescription);
+ } else {
+ providerService.deletePort(deviceId(uri(dpid)), portDescription);
+ }
}
@Override
@@ -819,7 +823,7 @@
PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
Port.Type type = port.getCurr().contains(OFPortFeatures.PF_FIBER) ? FIBER : COPPER;
SparseAnnotations annotations = makePortAnnotation(port.getName(), port.getHwAddr().toString());
- return new DefaultPortDescription(portNo, false, type,
+ return new DefaultPortDescription(portNo, false, true, type,
portSpeed(port), annotations);
}
}