Showing
4 changed files
with
33 additions
and
29 deletions
| 1 | package org.onlab.onos.net; | 1 | package org.onlab.onos.net; |
| 2 | 2 | ||
| 3 | -import com.google.common.primitives.UnsignedLongs; | ||
| 4 | - | ||
| 5 | import java.util.Objects; | 3 | import java.util.Objects; |
| 6 | 4 | ||
| 7 | -import static com.google.common.base.Preconditions.checkArgument; | 5 | +import com.google.common.primitives.UnsignedLongs; |
| 8 | 6 | ||
| 9 | /** | 7 | /** |
| 10 | * Representation of a port number. | 8 | * Representation of a port number. |
| ... | @@ -17,9 +15,6 @@ public final class PortNumber { | ... | @@ -17,9 +15,6 @@ public final class PortNumber { |
| 17 | 15 | ||
| 18 | // Public creation is prohibited | 16 | // Public creation is prohibited |
| 19 | private PortNumber(long number) { | 17 | private PortNumber(long number) { |
| 20 | - checkArgument(number >= 0 && number < MAX_NUMBER, | ||
| 21 | - "Port number %d is outside the supported range [0, %d)", | ||
| 22 | - number, MAX_NUMBER); | ||
| 23 | this.number = number; | 18 | this.number = number; |
| 24 | } | 19 | } |
| 25 | 20 | ... | ... |
| 1 | package org.onlab.onos.net; | 1 | package org.onlab.onos.net; |
| 2 | 2 | ||
| 3 | -import com.google.common.testing.EqualsTester; | ||
| 4 | -import org.junit.Test; | ||
| 5 | - | ||
| 6 | import static org.junit.Assert.assertEquals; | 3 | import static org.junit.Assert.assertEquals; |
| 7 | import static org.onlab.onos.net.PortNumber.portNumber; | 4 | import static org.onlab.onos.net.PortNumber.portNumber; |
| 8 | 5 | ||
| 6 | +import org.junit.Test; | ||
| 7 | + | ||
| 8 | +import com.google.common.testing.EqualsTester; | ||
| 9 | + | ||
| 9 | /** | 10 | /** |
| 10 | * Test of the port number. | 11 | * Test of the port number. |
| 11 | */ | 12 | */ |
| 12 | public class PortNumberTest extends ElementIdTest { | 13 | public class PortNumberTest extends ElementIdTest { |
| 13 | 14 | ||
| 15 | + @Override | ||
| 14 | @Test | 16 | @Test |
| 15 | public void basics() { | 17 | public void basics() { |
| 16 | new EqualsTester() | 18 | new EqualsTester() |
| ... | @@ -25,13 +27,5 @@ public class PortNumberTest extends ElementIdTest { | ... | @@ -25,13 +27,5 @@ public class PortNumberTest extends ElementIdTest { |
| 25 | assertEquals("incorrect long value", 12345, portNumber(12345).toLong()); | 27 | assertEquals("incorrect long value", 12345, portNumber(12345).toLong()); |
| 26 | } | 28 | } |
| 27 | 29 | ||
| 28 | - @Test(expected = IllegalArgumentException.class) | ||
| 29 | - public void negative() { | ||
| 30 | - portNumber(-1); | ||
| 31 | - } | ||
| 32 | 30 | ||
| 33 | - @Test(expected = IllegalArgumentException.class) | ||
| 34 | - public void tooBig() { | ||
| 35 | - portNumber((2L * Integer.MAX_VALUE) + 2); | ||
| 36 | - } | ||
| 37 | } | 31 | } | ... | ... |
| 1 | package org.onlab.onos.of.drivers.impl; | 1 | package org.onlab.onos.of.drivers.impl; |
| 2 | 2 | ||
| 3 | +import java.util.Collections; | ||
| 3 | import java.util.List; | 4 | import java.util.List; |
| 4 | 5 | ||
| 5 | import org.onlab.onos.of.controller.Dpid; | 6 | import org.onlab.onos.of.controller.Dpid; |
| 6 | import org.onlab.onos.of.controller.driver.AbstractOpenFlowSwitch; | 7 | import org.onlab.onos.of.controller.driver.AbstractOpenFlowSwitch; |
| 7 | import org.projectfloodlight.openflow.protocol.OFDescStatsReply; | 8 | import org.projectfloodlight.openflow.protocol.OFDescStatsReply; |
| 8 | import org.projectfloodlight.openflow.protocol.OFMessage; | 9 | import org.projectfloodlight.openflow.protocol.OFMessage; |
| 10 | +import org.projectfloodlight.openflow.protocol.OFPortDesc; | ||
| 9 | 11 | ||
| 10 | /** | 12 | /** |
| 11 | * OFDescriptionStatistics Vendor (Manufacturer Desc.): Nicira, Inc. Make | 13 | * OFDescriptionStatistics Vendor (Manufacturer Desc.): Nicira, Inc. Make |
| ... | @@ -56,4 +58,11 @@ public class OFSwitchImplOVS10 extends AbstractOpenFlowSwitch { | ... | @@ -56,4 +58,11 @@ public class OFSwitchImplOVS10 extends AbstractOpenFlowSwitch { |
| 56 | public void write(List<OFMessage> msgs) { | 58 | public void write(List<OFMessage> msgs) { |
| 57 | channel.write(msgs); | 59 | channel.write(msgs); |
| 58 | } | 60 | } |
| 61 | + | ||
| 62 | + @Override | ||
| 63 | + public List<OFPortDesc> getPorts() { | ||
| 64 | + return Collections.unmodifiableList(features.getPorts()); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + | ||
| 59 | } | 68 | } | ... | ... |
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.OpenFlowController; | ... | @@ -30,7 +30,9 @@ import org.onlab.onos.of.controller.OpenFlowController; |
| 30 | import org.onlab.onos.of.controller.OpenFlowSwitch; | 30 | import org.onlab.onos.of.controller.OpenFlowSwitch; |
| 31 | import org.onlab.onos.of.controller.OpenFlowSwitchListener; | 31 | import org.onlab.onos.of.controller.OpenFlowSwitchListener; |
| 32 | import org.onlab.onos.of.controller.RoleState; | 32 | import org.onlab.onos.of.controller.RoleState; |
| 33 | +import org.projectfloodlight.openflow.protocol.OFPortConfig; | ||
| 33 | import org.projectfloodlight.openflow.protocol.OFPortDesc; | 34 | import org.projectfloodlight.openflow.protocol.OFPortDesc; |
| 35 | +import org.projectfloodlight.openflow.protocol.OFPortState; | ||
| 34 | import org.slf4j.Logger; | 36 | import org.slf4j.Logger; |
| 35 | 37 | ||
| 36 | /** | 38 | /** |
| ... | @@ -50,7 +52,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr | ... | @@ -50,7 +52,7 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr |
| 50 | 52 | ||
| 51 | private DeviceProviderService providerService; | 53 | private DeviceProviderService providerService; |
| 52 | 54 | ||
| 53 | - private OpenFlowSwitchListener listener = new InternalDeviceProvider(); | 55 | + private final OpenFlowSwitchListener listener = new InternalDeviceProvider(); |
| 54 | 56 | ||
| 55 | /** | 57 | /** |
| 56 | * Creates an OpenFlow device provider. | 58 | * Creates an OpenFlow device provider. |
| ... | @@ -119,17 +121,6 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr | ... | @@ -119,17 +121,6 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr |
| 119 | providerService.updatePorts(deviceId(uri), buildPortDescriptions(sw.getPorts())); | 121 | providerService.updatePorts(deviceId(uri), buildPortDescriptions(sw.getPorts())); |
| 120 | } | 122 | } |
| 121 | 123 | ||
| 122 | - private List<PortDescription> buildPortDescriptions( | ||
| 123 | - List<OFPortDesc> ports) { | ||
| 124 | - List<PortDescription> portDescs = new ArrayList<PortDescription>(); | ||
| 125 | - for (OFPortDesc port : ports) { | ||
| 126 | - PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber()); | ||
| 127 | - | ||
| 128 | - portDescs.add(new DefaultPortDescription(portNo, | ||
| 129 | - port.getState())); | ||
| 130 | - } | ||
| 131 | - } | ||
| 132 | - | ||
| 133 | @Override | 124 | @Override |
| 134 | public void switchRemoved(Dpid dpid) { | 125 | public void switchRemoved(Dpid dpid) { |
| 135 | if (providerService == null) { | 126 | if (providerService == null) { |
| ... | @@ -149,6 +140,21 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr | ... | @@ -149,6 +140,21 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr |
| 149 | return uri; | 140 | return uri; |
| 150 | } | 141 | } |
| 151 | 142 | ||
| 143 | + private List<PortDescription> buildPortDescriptions( | ||
| 144 | + List<OFPortDesc> ports) { | ||
| 145 | + final List<PortDescription> portDescs = new ArrayList<PortDescription>(); | ||
| 146 | + PortNumber portNo; | ||
| 147 | + boolean enabled; | ||
| 148 | + for (OFPortDesc port : ports) { | ||
| 149 | + portNo = PortNumber.portNumber(port.getPortNo().getPortNumber()); | ||
| 150 | + enabled = !port.getState().contains(OFPortState.LINK_DOWN) && | ||
| 151 | + !port.getConfig().contains(OFPortConfig.PORT_DOWN); | ||
| 152 | + portDescs.add(new DefaultPortDescription(portNo, | ||
| 153 | + enabled)); | ||
| 154 | + } | ||
| 155 | + return portDescs; | ||
| 156 | + } | ||
| 157 | + | ||
| 152 | } | 158 | } |
| 153 | 159 | ||
| 154 | } | 160 | } | ... | ... |
-
Please register or login to post a comment