package net.floodlightcontroller.staticentry;
import java.util.HashSet;
import java.util.Set;
import net.floodlightcontroller.util.MatchUtils;
import org.projectfloodlight.openflow.protocol.OFActionType;
import org.projectfloodlight.openflow.protocol.OFFactories;
import org.projectfloodlight.openflow.protocol.OFVersion;
import org.projectfloodlight.openflow.protocol.action.OFAction;
import org.projectfloodlight.openflow.protocol.action.OFActions;
import org.projectfloodlight.openflow.protocol.actionid.OFActionId;
import org.projectfloodlight.openflow.protocol.actionid.OFActionIdExperimenter;
import org.projectfloodlight.openflow.protocol.actionid.OFActionIds;
import org.projectfloodlight.openflow.protocol.match.MatchField;
import org.projectfloodlight.openflow.protocol.match.MatchFields;
import org.projectfloodlight.openflow.protocol.ver10.OFActionsVer10;
import org.projectfloodlight.openflow.types.OFValueType;
import com.google.common.collect.ImmutableSet;
public class FlowModInfo {
private static final Set<FlowMatchProperty> matches = new HashSet<FlowMatchProperty>();
private static final Set<FlowActionProperty> actions = new HashSet<FlowActionProperty>();
//private static final Set<FlowInstructionProperty> instructions = new HashSet<FlowInstructionProperty>();
private FlowModInfo() {}
private static volatile FlowModInfo instance = null;
public static synchronized FlowModInfo getInstance() {
if (instance == null) {
instance = new FlowModInfo();
}
for (MatchFields m : MatchFields.values()) {
FlowMatchProperty fp = new FlowMatchProperty();
fp.property = MatchUtils.getMatchField(m);
fp.supportedOFVersions = ImmutableSet.copyOf(MatchUtils.getSupportedOFVersions(m));
fp.usageNotes = ImmutableSet.of("add-in-usage-strings!");
matches.add(fp);
}
for (OFActionType a : OFActionType.values()) {
FlowActionProperty fp = new FlowActionProperty();
//fp.property = a.g
}
return instance;
}
public static String toJson() {
return "";
}
enum FP_VALUE_TYPE {
NONE,
NUMBER,
MAC_ADDR,
IPV4_ADDR,
IPV4_ADDR_W_MASK,
IPV6_ADDR,
IPV6_ADDR_W_MASK,
RESERVED_PORT,
}
private static class FlowMatchProperty {
private Set<String> usageNotes;
private MatchField<?> property;
private Set<OFVersion> supportedOFVersions;
}
private static class FlowActionProperty {
private Set<String> usageNotes;
private OFActionId property;
private Set<OFVersion> supportedOFVersions;
}
}