diff --git a/utils/misc/src/main/java/org/onlab/packet/TCP.java b/utils/misc/src/main/java/org/onlab/packet/TCP.java
index b13b53c..8d45079 100644
--- a/utils/misc/src/main/java/org/onlab/packet/TCP.java
+++ b/utils/misc/src/main/java/org/onlab/packet/TCP.java
@@ -30,8 +30,8 @@
 
     private static final short TCP_HEADER_LENGTH = 20;
 
-    protected short sourcePort;
-    protected short destinationPort;
+    protected int sourcePort;
+    protected int destinationPort;
     protected int sequence;
     protected int acknowledge;
     protected byte dataOffset;
@@ -46,17 +46,17 @@
      *
      * @return TCP source port
      */
-    public short getSourcePort() {
+    public int getSourcePort() {
         return this.sourcePort;
     }
 
     /**
      * Sets TCP source port.
      *
-     * @param sourcePort the sourcePort to set
+     * @param sourcePort the sourcePort to set (unsigned 16 bits integer)
      * @return this
      */
-    public TCP setSourcePort(final short sourcePort) {
+    public TCP setSourcePort(final int sourcePort) {
         this.sourcePort = sourcePort;
         return this;
     }
@@ -66,17 +66,17 @@
      *
      * @return the destinationPort
      */
-    public short getDestinationPort() {
+    public int getDestinationPort() {
         return this.destinationPort;
     }
 
     /**
      * Sets TCP destination port.
      *
-     * @param destinationPort the destinationPort to set
+     * @param destinationPort the destinationPort to set (unsigned 16 bits integer)
      * @return this
      */
-    public TCP setDestinationPort(final short destinationPort) {
+    public TCP setDestinationPort(final int destinationPort) {
         this.destinationPort = destinationPort;
         return this;
     }
@@ -270,8 +270,8 @@
         final byte[] data = new byte[length];
         final ByteBuffer bb = ByteBuffer.wrap(data);
 
-        bb.putShort(this.sourcePort);
-        bb.putShort(this.destinationPort);
+        bb.putShort((short) (this.sourcePort & 0xffff));
+        bb.putShort((short) (this.destinationPort & 0xffff));
         bb.putInt(this.sequence);
         bb.putInt(this.acknowledge);
         bb.putShort((short) (this.flags | this.dataOffset << 12));
@@ -348,8 +348,8 @@
     public IPacket deserialize(final byte[] data, final int offset,
                                final int length) {
         final ByteBuffer bb = ByteBuffer.wrap(data, offset, length);
-        this.sourcePort = bb.getShort();
-        this.destinationPort = bb.getShort();
+        this.sourcePort = (bb.getShort() & 0xffff);
+        this.destinationPort = (bb.getShort() & 0xffff);
         this.sequence = bb.getInt();
         this.acknowledge = bb.getInt();
         this.flags = bb.getShort();
@@ -435,8 +435,8 @@
             TCP tcp = new TCP();
 
             final ByteBuffer bb = ByteBuffer.wrap(data, offset, length);
-            tcp.sourcePort = bb.getShort();
-            tcp.destinationPort = bb.getShort();
+            tcp.sourcePort = (bb.getShort() & 0xffff);
+            tcp.destinationPort = (bb.getShort() & 0xffff);
             tcp.sequence = bb.getInt();
             tcp.acknowledge = bb.getInt();
             tcp.flags = bb.getShort();
diff --git a/utils/misc/src/main/java/org/onlab/packet/UDP.java b/utils/misc/src/main/java/org/onlab/packet/UDP.java
index 32432e6..66534eb 100644
--- a/utils/misc/src/main/java/org/onlab/packet/UDP.java
+++ b/utils/misc/src/main/java/org/onlab/packet/UDP.java
@@ -46,24 +46,24 @@
 
     }
 
-    protected short sourcePort;
-    protected short destinationPort;
+    protected int sourcePort;
+    protected int destinationPort;
     protected short length;
     protected short checksum;
 
     /**
      * @return the sourcePort
      */
-    public short getSourcePort() {
+    public int getSourcePort() {
         return this.sourcePort;
     }
 
     /**
      * @param sourcePort
-     *            the sourcePort to set
+     *            the sourcePort to set (16 bits unsigned integer)
      * @return this
      */
-    public UDP setSourcePort(final short sourcePort) {
+    public UDP setSourcePort(final int sourcePort) {
         this.sourcePort = sourcePort;
         return this;
     }
@@ -71,16 +71,16 @@
     /**
      * @return the destinationPort
      */
-    public short getDestinationPort() {
+    public int getDestinationPort() {
         return this.destinationPort;
     }
 
     /**
      * @param destinationPort
-     *            the destinationPort to set
+     *            the destinationPort to set (16 bits unsigned integer)
      * @return this
      */
-    public UDP setDestinationPort(final short destinationPort) {
+    public UDP setDestinationPort(final int destinationPort) {
         this.destinationPort = destinationPort;
         return this;
     }
@@ -134,8 +134,8 @@
         final byte[] data = new byte[this.length];
         final ByteBuffer bb = ByteBuffer.wrap(data);
 
-        bb.putShort(this.sourcePort);
-        bb.putShort(this.destinationPort);
+        bb.putShort((short) (this.sourcePort & 0xffff));
+        bb.putShort((short) (this.destinationPort & 0xffff));
         bb.putShort(this.length);
         bb.putShort(this.checksum);
         if (payloadData != null) {
@@ -200,8 +200,8 @@
     public IPacket deserialize(final byte[] data, final int offset,
                                final int length) {
         final ByteBuffer bb = ByteBuffer.wrap(data, offset, length);
-        this.sourcePort = bb.getShort();
-        this.destinationPort = bb.getShort();
+        this.sourcePort = (bb.getShort() & 0xffff);
+        this.destinationPort = (bb.getShort() & 0xffff);
         this.length = bb.getShort();
         this.checksum = bb.getShort();
 
@@ -284,8 +284,8 @@
             UDP udp = new UDP();
 
             ByteBuffer bb = ByteBuffer.wrap(data, offset, length);
-            udp.sourcePort = bb.getShort();
-            udp.destinationPort = bb.getShort();
+            udp.sourcePort = (bb.getShort() & 0xffff);
+            udp.destinationPort = (bb.getShort() & 0xffff);
             udp.length = bb.getShort();
             udp.checksum = bb.getShort();
 
diff --git a/utils/misc/src/test/java/org/onlab/packet/TCPTest.java b/utils/misc/src/test/java/org/onlab/packet/TCPTest.java
index 18f532e..faab5c2 100644
--- a/utils/misc/src/test/java/org/onlab/packet/TCPTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/TCPTest.java
@@ -88,8 +88,8 @@
     @Test
     public void testSerialize() {
         TCP tcp = new TCP();
-        tcp.setSourcePort((short) 0x50);
-        tcp.setDestinationPort((short) 0x60);
+        tcp.setSourcePort(0x50);
+        tcp.setDestinationPort(0x60);
         tcp.setSequence(0x10);
         tcp.setAcknowledge(0x20);
         tcp.setDataOffset((byte) 0x5);
@@ -121,8 +121,8 @@
     public void testDeserialize() throws Exception {
         TCP tcp = deserializer.deserialize(bytePacketTCP4, 0, bytePacketTCP4.length);
 
-        assertThat(tcp.getSourcePort(), is((short) 0x50));
-        assertThat(tcp.getDestinationPort(), is((short) 0x60));
+        assertThat(tcp.getSourcePort(), is(0x50));
+        assertThat(tcp.getDestinationPort(), is(0x60));
         assertThat(tcp.getSequence(), is(0x10));
         assertThat(tcp.getAcknowledge(), is(0x20));
         assertThat(tcp.getDataOffset(), is((byte) 0x5));
@@ -138,8 +138,8 @@
     @Test
     public void testEqual() {
         TCP tcp1 = new TCP();
-        tcp1.setSourcePort((short) 0x50);
-        tcp1.setDestinationPort((short) 0x60);
+        tcp1.setSourcePort(0x50);
+        tcp1.setDestinationPort(0x60);
         tcp1.setSequence(0x10);
         tcp1.setAcknowledge(0x20);
         tcp1.setDataOffset((byte) 0x5);
@@ -148,8 +148,8 @@
         tcp1.setUrgentPointer((short) 0x1);
 
         TCP tcp2 = new TCP();
-        tcp2.setSourcePort((short) 0x70);
-        tcp2.setDestinationPort((short) 0x60);
+        tcp2.setSourcePort(0x70);
+        tcp2.setDestinationPort(0x60);
         tcp2.setSequence(0x10);
         tcp2.setAcknowledge(0x20);
         tcp2.setDataOffset((byte) 0x5);
diff --git a/utils/misc/src/test/java/org/onlab/packet/UDPTest.java b/utils/misc/src/test/java/org/onlab/packet/UDPTest.java
index 86363fa..ba453f6 100644
--- a/utils/misc/src/test/java/org/onlab/packet/UDPTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/UDPTest.java
@@ -82,8 +82,8 @@
     @Test
     public void testSerialize() {
         UDP udp = new UDP();
-        udp.setSourcePort((short) 0x50);
-        udp.setDestinationPort((short) 0x60);
+        udp.setSourcePort(0x50);
+        udp.setDestinationPort(0x60);
 
         udp.setParent(ipv4);
         assertArrayEquals(bytePacketUDP4, udp.serialize());
@@ -109,8 +109,8 @@
     public void testDeserialize() throws Exception {
         UDP udp = deserializer.deserialize(bytePacketUDP4, 0, bytePacketUDP4.length);
 
-        assertThat(udp.getSourcePort(), is((short) 0x50));
-        assertThat(udp.getDestinationPort(), is((short) 0x60));
+        assertThat(udp.getSourcePort(), is(0x50));
+        assertThat(udp.getDestinationPort(), is(0x60));
         assertThat(udp.getLength(), is((short) 8));
         assertThat(udp.getChecksum(), is((short) 0x7bda));
     }
@@ -121,12 +121,12 @@
     @Test
     public void testEqual() {
         UDP udp1 = new UDP();
-        udp1.setSourcePort((short) 0x50);
-        udp1.setDestinationPort((short) 0x60);
+        udp1.setSourcePort(0x50);
+        udp1.setDestinationPort(0x60);
 
         UDP udp2 = new UDP();
-        udp2.setSourcePort((short) 0x70);
-        udp2.setDestinationPort((short) 0x60);
+        udp2.setSourcePort(0x70);
+        udp2.setDestinationPort(0x60);
 
         assertTrue(udp1.equals(udp1));
         assertFalse(udp1.equals(udp2));
