[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);
             }
         }