tunnel_id oxm location in spec file is adjusted, and loci files are updated according to the change.
diff --git a/c_gen/c_match.py b/c_gen/c_match.py
index 7fd6a21..aada0cd 100644
--- a/c_gen/c_match.py
+++ b/c_gen/c_match.py
@@ -290,6 +290,7 @@
     OF_OXM_INDEX_IPV6_ND_TLL    = 33, /* Target link-layer for ND. */
     OF_OXM_INDEX_MPLS_LABEL     = 34, /* MPLS label. */
     OF_OXM_INDEX_MPLS_TC        = 35, /* MPLS TC. */
+    OF_OXM_INDEX_TUNNEL_ID      = 38, /* Logical Port Metadata. */
 
     OF_OXM_INDEX_BSN_IN_PORTS_128 = 36,
     OF_OXM_INDEX_BSN_LAG_ID = 37,
diff --git a/c_gen/match.py b/c_gen/match.py
index d9fdee5..908a0e4 100644
--- a/c_gen/match.py
+++ b/c_gen/match.py
@@ -396,6 +396,15 @@
         order=601,
         ),
 
+    tunnel_id = dict(
+        name="tunnel_id",
+        m_type="uint64_t",
+        print_type="PRIu64",
+        conditions="",
+        takes_mask_in_spec=True,
+        order=700,
+        ),
+
     bsn_in_ports_128 = dict(
         name="bsn_in_ports_128",
         m_type="of_bitmap_128_t",
diff --git a/c_gen/templates/loci_show.h b/c_gen/templates/loci_show.h
index 909df71..c9c0705 100644
--- a/c_gen/templates/loci_show.h
+++ b/c_gen/templates/loci_show.h
@@ -386,6 +386,7 @@
 #define LOCI_SHOW_u32_entry_count(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
 #define LOCI_SHOW_u32_num_aux(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
 #define LOCI_SHOW_u64_checksum(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
+#define LOCI_SHOW_u64_tunnel_id(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
 #define LOCI_SHOW_u32_bsn_egr_port_group_id(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
 #define LOCI_SHOW_u32_bsn_udf0(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
 #define LOCI_SHOW_u32_bsn_udf1(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
diff --git a/openflow_input/oxm-1.2 b/openflow_input/oxm-1.2
index 4eed2ef..9ee3817 100644
--- a/openflow_input/oxm-1.2
+++ b/openflow_input/oxm-1.2
@@ -432,13 +432,3 @@
     uint16_t value_mask;
 };
 
-struct of_oxm_tunnel_id : of_oxm {
-    uint32_t type_len == 0x80004c08;
-    uint64_t value;
-};
-
-struct of_oxm_tunnel_id_masked : of_oxm {
-    uint32_t type_len == 0x80004d10;
-    uint64_t value;
-    uint64_t value_mask;
-};
diff --git a/openflow_input/standard-1.3 b/openflow_input/standard-1.3
index 19940ac..a94e16b 100644
--- a/openflow_input/standard-1.3
+++ b/openflow_input/standard-1.3
@@ -2119,3 +2119,18 @@
     uint32_t flow_removed_mask_equal_master;
     uint32_t flow_removed_mask_slave;
 };
+
+////////////////////////////////////////////////////////////////
+// OXMs introduced to 1.3
+////////////////////////////////////////////////////////////////
+
+struct of_oxm_tunnel_id : of_oxm {
+    uint32_t type_len == 0x80004c08;
+    uint64_t value;
+};
+
+struct of_oxm_tunnel_id_masked : of_oxm {
+    uint32_t type_len == 0x80004d10;
+    uint64_t value;
+    uint64_t value_mask;
+};