diff --git a/utils/misc/src/main/java/org/onlab/packet/IPAddress.java b/utils/misc/src/main/java/org/onlab/packet/IPAddress.java
index 5f4e174..1131ca4 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IPAddress.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IPAddress.java
@@ -40,12 +40,11 @@
      * @return an IP address
      */
     public static IPAddress valueOf(int address) {
-        byte [] bytes = new byte [] {
-                (byte) ((address >> 24) & 0xff),
-                (byte) ((address >> 16) & 0xff),
-                (byte) ((address >> 8) & 0xff),
-                (byte) ((address >> 0) & 0xff)
-        };
+        byte [] bytes = new byte [INET_LEN];
+        for (int i = 0; i < INET_LEN; i++) {
+            bytes[i] = (byte) ((address >> (INET_LEN - (i + 1)) * 8) & 0xff);
+        }
+
         return new IPAddress(Version.INET, bytes);
     }
 
@@ -87,12 +86,16 @@
         return Arrays.copyOf(this.octets, INET_LEN);
     }
 
+    /**
+     * Returns the integral value of this IP address.
+     *
+     * @return the IP address's value as an integer
+     */
     public int toInt() {
-        int address =
-                ((octets[0] << 24) |
-                (octets[1] << 16) |
-                (octets[2] << 8) |
-                (octets[3] << 0));
+        int address = 0;
+        for (int i = 0; i < INET_LEN; i++) {
+            address |= octets[i] << ((INET_LEN - (i + 1)) * 8);
+        }
         return address;
     }
 
diff --git a/utils/misc/src/main/java/org/onlab/packet/VLANID.java b/utils/misc/src/main/java/org/onlab/packet/VLANID.java
index c978e52..d2a09fa 100644
--- a/utils/misc/src/main/java/org/onlab/packet/VLANID.java
+++ b/utils/misc/src/main/java/org/onlab/packet/VLANID.java
@@ -7,9 +7,9 @@
 
     private final short value;
     // Based on convention used elsewhere? Check and change if needed
-    private static final short UNTAGGED = (short) 0xffff;
+    public static final short UNTAGGED = (short) 0xffff;
     // A VLAN ID is actually 12 bits of a VLAN tag.
-    private static final short MAX_VLAN = 4095;
+    public static final short MAX_VLAN = 4095;
 
     protected VLANID() {
         this.value = UNTAGGED;
