c_match.py is patched to name collision commented by @rlane
diff --git a/c_gen/match.py b/c_gen/match.py
index a7da751..59737a6 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 c10b08f..4179b13 100644
--- a/c_gen/templates/loci_show.h
+++ b/c_gen/templates/loci_show.h
@@ -85,6 +85,7 @@
#define LOCI_SHOW_mac_eth_dst(writer, cookie, val) LOCI_SHOW_mac(writer, cookie, val)
#define LOCI_SHOW_mac_ipv6_nd_sll(writer, cookie, val) LOCI_SHOW_mac(writer, cookie, val)
#define LOCI_SHOW_u8_mpls_tc(writer, cookie, val) LOCI_SHOW_x8(writer, cookie, val)
+#define LOCI_SHOW_u64_tunnel_id(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
#define LOCI_SHOW_u16_arp_op(writer, cookie, val) LOCI_SHOW_u16(writer, cookie, val)
#define LOCI_SHOW_u16_eth_type(writer, cookie, val) LOCI_SHOW_x16(writer, cookie, val)
#define LOCI_SHOW_ipv6_ipv6_nd_target(writer, cookie, val) LOCI_SHOW_ipv6(writer, cookie, val)
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
index 6753933..f103230 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
@@ -21,6 +21,7 @@
import org.projectfloodlight.openflow.types.OFVlanVidMatch;
import org.projectfloodlight.openflow.types.TransportPort;
import org.projectfloodlight.openflow.types.U16;
+import org.projectfloodlight.openflow.types.U64;
import org.projectfloodlight.openflow.types.U32;
import org.projectfloodlight.openflow.types.U8;
import org.projectfloodlight.openflow.types.UDF;
@@ -177,6 +178,9 @@
new MatchField<U8>("mpls_tc", MatchFields.MPLS_TC,
new Prerequisite<EthType>(MatchField.ETH_TYPE, EthType.MPLS_UNICAST, EthType.MPLS_MULTICAST));
+ public final static MatchField<U64> TUNNEL_ID =
+ new MatchField<U64>("tunnel_id", MatchFields.TUNNEL_ID);
+
public final static MatchField<OFBitMask128> BSN_IN_PORTS_128 =
new MatchField<OFBitMask128>("bsn_in_ports_128", MatchFields.BSN_IN_PORTS_128);
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
index b64b424..354a528 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
@@ -38,6 +38,7 @@
IPV6_ND_TLL,
MPLS_LABEL,
MPLS_TC,
+ TUNNEL_ID,
BSN_IN_PORTS_128,
BSN_LAG_ID,
BSN_VRF,
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/ICMPv4Code.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/ICMPv4Code.java
index 6466eee..ced5737 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/ICMPv4Code.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/ICMPv4Code.java
@@ -90,4 +90,9 @@
public void putTo(PrimitiveSink sink) {
sink.putShort(code);
}
+
+ @Override
+ public String toString() {
+ return String.valueOf(this.code);
+ }
}
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/ICMPv4Type.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/ICMPv4Type.java
index a0aa152..634bc03 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/ICMPv4Type.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/ICMPv4Type.java
@@ -200,4 +200,8 @@
sink.putShort(type);
}
+ @Override
+ public String toString() {
+ return String.valueOf(this.type);
+ }
}
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
index 6ca39fe..1c5be86 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/IPAddress.java
@@ -31,14 +31,14 @@
/**
* Perform a low level AND operation on the bits of two IPAddress<?> objects
- * @param IPAddress<?> other
+ * @param other IPAddress<?>
* @return new IPAddress<?> object after the AND oper
*/
public abstract F and(F other);
/**
* Perform a low level OR operation on the bits of two IPAddress<?> objects
- * @param IPAddress<?> other
+ * @param other IPAddress<?>
* @return new IPAddress<?> object after the AND oper
*/
public abstract F or(F other);
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U64.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U64.java
index dea6e6d..1353b42 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U64.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U64.java
@@ -32,6 +32,10 @@
private final static long ZERO_VAL = 0;
public final static U64 ZERO = new U64(ZERO_VAL);
+ private static final long NO_MASK_VAL = 0xFFffFFffFFffFFffL;
+ public final static U64 NO_MASK = new U64(NO_MASK_VAL);
+ public static final U64 FULL_MASK = ZERO;
+
private final long raw;
protected U64(final long raw) {
diff --git a/openflow_input/oxm-1.3 b/openflow_input/oxm-1.3
new file mode 100644
index 0000000..2dbab42
--- /dev/null
+++ b/openflow_input/oxm-1.3
@@ -0,0 +1,42 @@
+// Copyright 2014, Big Switch Networks, Inc.
+//
+// LoxiGen is licensed under the Eclipse Public License,
+// version 1.0 (EPL), with the following special exception:
+//
+// LOXI Exception
+//
+// As a special exception to the terms of the EPL, you may
+// distribute libraries generated by LoxiGen (LoxiGen Libraries)
+// under the terms of your choice, provided that copyright and
+// licensing notices generated by LoxiGen are not altered or removed
+// from the LoxiGen Libraries and the notice provided below is (i)
+// included in the LoxiGen Libraries, if distributed in source code
+// form and (ii) included in any documentation for the LoxiGen
+// Libraries, if distributed in binary form.
+//
+// Notice: "Copyright 2013, Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler."
+//
+// You may not use this file except in compliance with the EPL or
+// LOXI Exception. You may obtain a copy of the EPL at:
+//
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an "AS
+// IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+// express or implied. See the EPL for the specific language
+// governing permissions and limitations under the EPL.
+
+#version 4
+
+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;
+};