Merge into master from pull request #254:
add util function for multiple pkt in reasons (https://github.com/floodlight/loxigen/pull/254)
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/MultiplePktInReasonUtil.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/MultiplePktInReasonUtil.java
new file mode 100644
index 0000000..a919f62
--- /dev/null
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/util/MultiplePktInReasonUtil.java
@@ -0,0 +1,46 @@
+package org.projectfloodlight.openflow.util;
+
+import java.util.Set;
+
+import com.google.common.collect.ImmutableSet;
+
+import org.projectfloodlight.openflow.types.U64;
+import org.projectfloodlight.openflow.protocol.OFBsnPktinFlag;
+import org.projectfloodlight.openflow.protocol.OFPacketIn;
+import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.protocol.match.MatchField;
+import org.projectfloodlight.openflow.protocol.match.Match;
+import org.projectfloodlight.openflow.protocol.ver13.OFBsnPktinFlagSerializerVer13;
+import org.projectfloodlight.openflow.types.OFMetadata;
+
+
+public class MultiplePktInReasonUtil {
+ private MultiplePktInReasonUtil() {}
+
+ /**
+ * This function is used in BVS T5/6 to decode the multiple packet in
+ * reasons in Match.MetaData field.
+ * */
+ public static Set<OFBsnPktinFlag> getOFBsnPktinFlags(OFPacketIn pktIn) {
+ if(pktIn.getVersion() != OFVersion.OF_13) {
+ throw new IllegalArgumentException("multiple pkt in reasons are "
+ + "only supported by BVS using "
+ + "openflow 1.3");
+ }
+
+ Match match = pktIn.getMatch();
+ if(match == null) {
+ return ImmutableSet.<OFBsnPktinFlag>of();
+ }
+ OFMetadata metaData = match.get(MatchField.METADATA);
+ if(metaData == null) {
+ return ImmutableSet.<OFBsnPktinFlag>of();
+ }
+ U64 metaDataValue = metaData.getValue();
+ if(metaDataValue == null) {
+ return ImmutableSet.<OFBsnPktinFlag>of();
+ }
+ return OFBsnPktinFlagSerializerVer13.ofWireValue(metaDataValue
+ .getValue());
+ }
+}