tiny modifications to VLANID

Change-Id: Ib5b1adc2c147e23ce40ee35282c1fadc82d78111
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 68774e3..31cdecb 100644
--- a/utils/misc/src/main/java/org/onlab/packet/VLANID.java
+++ b/utils/misc/src/main/java/org/onlab/packet/VLANID.java
@@ -4,13 +4,28 @@
  * Representation of a VLAN ID.
  */
 public class VLANID {
-    // A VLAN ID is 12 bits, short is close
-    private final short value;
 
-    public VLANID(short value) {
+    private final short value;
+    private static final short NONE = 0;
+    // A VLAN ID is actually 12 bits of a VLAN tag.
+    private static final short MAX_VLAN = 4095;
+
+    protected VLANID(short value) {
         this.value = value;
     }
 
+    public static VLANID vlanId() {
+        return new VLANID(NONE);
+    }
+
+    public static VLANID vlanId(short value) {
+        if (value >= MAX_VLAN) {
+            throw new IllegalArgumentException(
+                    "value exceeds allowed maximum VLAN ID value (4095)");
+        }
+        return new VLANID(value);
+    }
+
     public short toShort() {
         return this.value;
     }
@@ -37,5 +52,10 @@
     public int hashCode() {
         return this.value;
     }
+
+    @Override
+    public String toString() {
+        return String.valueOf(this.value);
+    }
 }