Merge branch 'master' into funnel

Conflicts:
	java_gen/java_type.py
	java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/DatapathId.java
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/DatapathId.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/DatapathId.java
index 42f5c1c..1908d28 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/DatapathId.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/DatapathId.java
@@ -3,6 +3,7 @@
 import org.projectfloodlight.openflow.util.HexString;
 
 import com.google.common.hash.PrimitiveSink;
+import com.google.common.primitives.Longs;
 import com.google.common.primitives.UnsignedLongs;
 
 /**
@@ -29,6 +30,10 @@
         return new DatapathId(HexString.toLong(s));
     }
 
+    public static DatapathId of(byte[] bytes) {
+        return new DatapathId(Longs.fromByteArray(bytes));
+    }
+
     public long getLong() {
         return rawValue;
     }
@@ -37,6 +42,10 @@
         return U64.of(rawValue);
     }
 
+    public byte[] getBytes() {
+        return Longs.toByteArray(rawValue);
+    }
+
     @Override
     public String toString() {
         return HexString.toHexString(rawValue);
@@ -69,6 +78,7 @@
         sink.putLong(rawValue);
     }
 
+    @Override
     public int compareTo(DatapathId o) {
         return UnsignedLongs.compare(rawValue, o.rawValue);
     }