updateports functional
diff --git a/net/api/src/main/java/org/onlab/onos/net/PortNumber.java b/net/api/src/main/java/org/onlab/onos/net/PortNumber.java
index 45ee9ee..d5fc5f2 100644
--- a/net/api/src/main/java/org/onlab/onos/net/PortNumber.java
+++ b/net/api/src/main/java/org/onlab/onos/net/PortNumber.java
@@ -1,10 +1,8 @@
package org.onlab.onos.net;
-import com.google.common.primitives.UnsignedLongs;
-
import java.util.Objects;
-import static com.google.common.base.Preconditions.checkArgument;
+import com.google.common.primitives.UnsignedLongs;
/**
* Representation of a port number.
@@ -17,9 +15,6 @@
// Public creation is prohibited
private PortNumber(long number) {
- checkArgument(number >= 0 && number < MAX_NUMBER,
- "Port number %d is outside the supported range [0, %d)",
- number, MAX_NUMBER);
this.number = number;
}
diff --git a/net/api/src/test/java/org/onlab/onos/net/PortNumberTest.java b/net/api/src/test/java/org/onlab/onos/net/PortNumberTest.java
index fced985..528ad09 100644
--- a/net/api/src/test/java/org/onlab/onos/net/PortNumberTest.java
+++ b/net/api/src/test/java/org/onlab/onos/net/PortNumberTest.java
@@ -1,21 +1,23 @@
package org.onlab.onos.net;
-import com.google.common.testing.EqualsTester;
-import org.junit.Test;
-
import static org.junit.Assert.assertEquals;
import static org.onlab.onos.net.PortNumber.portNumber;
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
/**
* Test of the port number.
*/
public class PortNumberTest extends ElementIdTest {
+ @Override
@Test
public void basics() {
new EqualsTester()
- .addEqualityGroup(portNumber(123),
- portNumber("123"))
+ .addEqualityGroup(portNumber(123),
+ portNumber("123"))
.addEqualityGroup(portNumber(321))
.testEquals();
}
@@ -25,13 +27,5 @@
assertEquals("incorrect long value", 12345, portNumber(12345).toLong());
}
- @Test(expected = IllegalArgumentException.class)
- public void negative() {
- portNumber(-1);
- }
- @Test(expected = IllegalArgumentException.class)
- public void tooBig() {
- portNumber((2L * Integer.MAX_VALUE) + 2);
- }
}
diff --git a/of/ctl/src/main/java/org/onlab/onos/of/drivers/impl/OFSwitchImplOVS10.java b/of/ctl/src/main/java/org/onlab/onos/of/drivers/impl/OFSwitchImplOVS10.java
index 0a311f3..b9ee4c9 100644
--- a/of/ctl/src/main/java/org/onlab/onos/of/drivers/impl/OFSwitchImplOVS10.java
+++ b/of/ctl/src/main/java/org/onlab/onos/of/drivers/impl/OFSwitchImplOVS10.java
@@ -1,11 +1,13 @@
package org.onlab.onos.of.drivers.impl;
+import java.util.Collections;
import java.util.List;
import org.onlab.onos.of.controller.Dpid;
import org.onlab.onos.of.controller.driver.AbstractOpenFlowSwitch;
import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
import org.projectfloodlight.openflow.protocol.OFMessage;
+import org.projectfloodlight.openflow.protocol.OFPortDesc;
/**
* OFDescriptionStatistics Vendor (Manufacturer Desc.): Nicira, Inc. Make
@@ -56,4 +58,11 @@
public void write(List<OFMessage> msgs) {
channel.write(msgs);
}
+
+ @Override
+ public List<OFPortDesc> getPorts() {
+ return Collections.unmodifiableList(features.getPorts());
+ }
+
+
}
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;
+ }
+
}
}