Prep-work to accept 32bit port number.
Change-Id: I6236d50c15a8728fb786837b9cfae8abde45b5d8
diff --git a/src/main/java/net/onrc/onos/core/util/PortNumber.java b/src/main/java/net/onrc/onos/core/util/PortNumber.java
index c4c7eed..09df247 100644
--- a/src/main/java/net/onrc/onos/core/util/PortNumber.java
+++ b/src/main/java/net/onrc/onos/core/util/PortNumber.java
@@ -39,6 +39,26 @@
}
/**
+ * Creates the unsigned 16 bit port number.
+ *
+ * @param number unsigned 16 bit port number.
+ * @return PortNumber instance
+ */
+ public static PortNumber uint16(final short number) {
+ return new PortNumber(number);
+ }
+
+ /**
+ * Creates the unsigned 32 bit port number.
+ *
+ * @param number unsigned 32 bit port number.
+ * @return PortNumber instance
+ */
+ public static PortNumber uint32(final int number) {
+ return new PortNumber(number);
+ }
+
+ /**
* Constructor from an int.
*
* @param value the value to use. (Value will not be validated in any way.)
@@ -95,8 +115,7 @@
*/
@JsonProperty("value")
public long value() {
- // TODO Will require masking when we start storing 32bit port number.
- return value;
+ return 0xffffffffL & value;
}
/**
diff --git a/src/test/java/net/onrc/onos/core/util/PortNumberTest.java b/src/test/java/net/onrc/onos/core/util/PortNumberTest.java
index eb9915a..d9fbddc 100644
--- a/src/test/java/net/onrc/onos/core/util/PortNumberTest.java
+++ b/src/test/java/net/onrc/onos/core/util/PortNumberTest.java
@@ -16,6 +16,30 @@
private static final PortNumber PORT_LOCAL = new PortNumber(0xfffe);
/**
+ * Test method for {@link PortNumber#uint16(short)}.
+ */
+ @Test
+ public void testPortNumberUint16() {
+ final PortNumber ref = new PortNumber(PORT_NONE);
+ PortNumber p = PortNumber.uint16((short) 0xffff);
+
+ assertEquals(ref, p);
+ assertEquals(0xFFFFL, p.value());
+ }
+
+ /**
+ * Test method for {@link PortNumber#uint32(int)}.
+ */
+ @Test
+ public void testPortNumberUint32() {
+ final PortNumber ref = new PortNumber("FFFFFFFF", 16);
+ PortNumber p = PortNumber.uint32(0xFFFFFFFF);
+
+ assertEquals(ref, p);
+ assertEquals(0xFFFFFFFFL, p.value());
+ }
+
+ /**
* Test method for {@link PortNumber#PortNumber(String)}.
*/
@Test