updateports functional
diff --git a/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
index 71219b7..1740f4b 100644
--- a/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -30,7 +30,9 @@
 import org.onlab.onos.of.controller.OpenFlowSwitch;
 import org.onlab.onos.of.controller.OpenFlowSwitchListener;
 import org.onlab.onos.of.controller.RoleState;
+import org.projectfloodlight.openflow.protocol.OFPortConfig;
 import org.projectfloodlight.openflow.protocol.OFPortDesc;
+import org.projectfloodlight.openflow.protocol.OFPortState;
 import org.slf4j.Logger;
 
 /**
@@ -50,7 +52,7 @@
 
     private DeviceProviderService providerService;
 
-    private OpenFlowSwitchListener listener = new InternalDeviceProvider();
+    private final OpenFlowSwitchListener listener = new InternalDeviceProvider();
 
     /**
      * Creates an OpenFlow device provider.
@@ -119,17 +121,6 @@
             providerService.updatePorts(deviceId(uri), buildPortDescriptions(sw.getPorts()));
         }
 
-        private List<PortDescription> buildPortDescriptions(
-                List<OFPortDesc> ports) {
-            List<PortDescription> portDescs = new ArrayList<PortDescription>();
-            for (OFPortDesc port : ports) {
-                PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
-
-                portDescs.add(new DefaultPortDescription(portNo,
-                        port.getState()));
-            }
-        }
-
         @Override
         public void switchRemoved(Dpid dpid) {
             if (providerService == null) {
@@ -149,6 +140,21 @@
             return uri;
         }
 
+        private List<PortDescription> buildPortDescriptions(
+                List<OFPortDesc> ports) {
+            final List<PortDescription> portDescs = new ArrayList<PortDescription>();
+            PortNumber portNo;
+            boolean enabled;
+            for (OFPortDesc port : ports) {
+                portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
+                enabled = !port.getState().contains(OFPortState.LINK_DOWN) &&
+                        !port.getConfig().contains(OFPortConfig.PORT_DOWN);
+                portDescs.add(new DefaultPortDescription(portNo,
+                        enabled));
+            }
+            return portDescs;
+        }
+
     }
 
 }