
org.projectfloodlight.openflow.util.MultiplePktInReasonUtil Maven / Gradle / Ivy
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 getOFBsnPktinFlags(OFPacketIn pktIn) {
if(pktIn.getVersion().compareTo(OFVersion.OF_13) < 0) {
throw new IllegalArgumentException("multiple pkt in reasons are "
+ "only supported by BVS using "
+ "openflow version >= 1.3");
}
Match match = pktIn.getMatch();
if(match == null) {
return ImmutableSet.of();
}
OFMetadata metaData = match.get(MatchField.METADATA);
if(metaData == null) {
return ImmutableSet.of();
}
U64 metaDataValue = metaData.getValue();
if(metaDataValue == null) {
return ImmutableSet.of();
}
return OFBsnPktinFlagSerializerVer13.ofWireValue(metaDataValue
.getValue());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy