Merge branch 'master' into funnel

Conflicts:
	java_gen/java_type.py
	java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U16.java
	java_gen/templates/of_factory_interface.java
diff --git a/java_gen/java_type.py b/java_gen/java_type.py
index fbdb330..907e8c8 100644
--- a/java_gen/java_type.py
+++ b/java_gen/java_type.py
@@ -423,6 +423,10 @@
         .op(read='TableId.readByte(bb)',
             write='$name.writeByte(bb)',
             default='TableId.ALL')
+table_id_default_zero = JType("TableId") \
+        .op(read='TableId.readByte(bb)',
+            write='$name.writeByte(bb)',
+            default='TableId.ZERO')
 of_version = JType("OFVersion", 'byte') \
             .op(read='bb.readByte()', write='bb.writeByte($name)')
 
@@ -595,6 +599,8 @@
             .op(read='bb.readShort()', write='bb.writeShort($name)')
     elif field_name == "type" and re.match(r'of_instruction.*', obj_name):
         return instruction_type
+    elif obj_name in ("of_flow_add", "of_flow_modify", "of_flow_modify_strict", "of_delete_strict") and  field_name == "table_id" and c_type == "uint8_t":
+        return table_id_default_zero
     elif field_name == "table_id" and c_type == "uint8_t":
         return table_id
     elif field_name == "version" and c_type == "uint8_t":
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/TableId.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/TableId.java
index 33422d1..950087d 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/TableId.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/TableId.java
@@ -15,7 +15,9 @@
     private static final short ALL_VAL = 0x00FF;
     private static final short NONE_VAL = 0x0000;
     public static final TableId NONE = new TableId(NONE_VAL);
+
     public static final TableId ALL = new TableId(ALL_VAL);
+    public static final TableId ZERO = NONE;
 
     private final short id;
 
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U16.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U16.java
index bc66bd5..9de7e14 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U16.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U16.java
@@ -23,6 +23,7 @@
 import org.projectfloodlight.openflow.protocol.Writeable;
 
 import com.google.common.hash.PrimitiveSink;
+import com.google.common.primitives.Ints;
 
 public class U16 implements Writeable, OFValueType<U16> {
     private final static short ZERO_VAL = 0;
@@ -115,7 +116,7 @@
 
     @Override
     public int compareTo(U16 o) {
-        return Integer.compare(f(raw), f(o.raw));
+        return Ints.compare(f(raw), f(o.raw));
     }
 
     @Override
diff --git a/java_gen/templates/of_factory_class.java b/java_gen/templates/of_factory_class.java
index af0777d..eef1e04 100644
--- a/java_gen/templates/of_factory_class.java
+++ b/java_gen/templates/of_factory_class.java
@@ -45,10 +45,6 @@
     private final XidGenerator xidGenerator = XidGenerators.global();
     //:: #endif
 
-    public OFVersion getOFVersion() {
-        return OFVersion.OF_${factory.version.of_version};
-    }
-
     //:: for name, clazz in factory.interface.sub_factories.items():
     public ${clazz} ${name}() {
         return ${clazz}Ver${factory.version.of_version}.INSTANCE;
diff --git a/java_gen/templates/of_factory_interface.java b/java_gen/templates/of_factory_interface.java
index e10a83a..9a77aa7 100644
--- a/java_gen/templates/of_factory_interface.java
+++ b/java_gen/templates/of_factory_interface.java
@@ -58,10 +58,8 @@
     Match matchWildcardAll();
 //:: #endif
 
-    OFVersion getOFVersion();
     OFMessageReader<${factory.base_class}> getReader();
     OFVersion getVersion();
-
 //:: if factory.name == 'OFOxms':
 
     public <F extends OFValueType<F>> OFOxm<F> fromValue(F value, MatchField<F> field);