// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
// Copyright (c) 2011, 2012 Open Networking Foundation
// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
// This library was generated by the LoxiGen Compiler.
// See the file LICENSE.txt which should have been included in the source distribution

// Automatically generated by LOXI from template of_factory_interface.java
// Do not modify

package org.projectfloodlight.openflow.protocol.action;

import org.projectfloodlight.openflow.protocol.*;
import org.projectfloodlight.openflow.protocol.action.*;
import org.projectfloodlight.openflow.protocol.actionid.*;
import org.projectfloodlight.openflow.protocol.bsntlv.*;
import org.projectfloodlight.openflow.protocol.errormsg.*;
import org.projectfloodlight.openflow.protocol.meterband.*;
import org.projectfloodlight.openflow.protocol.instruction.*;
import org.projectfloodlight.openflow.protocol.instructionid.*;
import org.projectfloodlight.openflow.protocol.match.*;
import org.projectfloodlight.openflow.protocol.oxm.*;
import org.projectfloodlight.openflow.protocol.queueprop.*;
import org.projectfloodlight.openflow.types.*;
import org.projectfloodlight.openflow.util.*;
import org.projectfloodlight.openflow.exceptions.*;
import java.util.Set;

public interface OFActions {
    // Subfactories

    OFActionBsnMirror.Builder buildBsnMirror();
    OFActionBsnSetTunnelDst.Builder buildBsnSetTunnelDst();
    OFActionBsnSetTunnelDst bsnSetTunnelDst(long dst);
    OFActionEnqueue.Builder buildEnqueue() throws UnsupportedOperationException;
    OFActionEnqueue enqueue(OFPort port, long queueId);
    OFActionNiciraDecTtl niciraDecTtl();
    OFActionOutput.Builder buildOutput();
    OFActionOutput output(OFPort port, int maxLen);
    OFActionSetDlDst.Builder buildSetDlDst() throws UnsupportedOperationException;
    OFActionSetDlDst setDlDst(MacAddress dlAddr);
    OFActionSetDlSrc.Builder buildSetDlSrc() throws UnsupportedOperationException;
    OFActionSetDlSrc setDlSrc(MacAddress dlAddr);
    OFActionSetNwDst.Builder buildSetNwDst() throws UnsupportedOperationException;
    OFActionSetNwDst setNwDst(IPv4Address nwAddr);
    OFActionSetNwSrc.Builder buildSetNwSrc() throws UnsupportedOperationException;
    OFActionSetNwSrc setNwSrc(IPv4Address nwAddr);
    OFActionSetNwTos.Builder buildSetNwTos() throws UnsupportedOperationException;
    OFActionSetNwTos setNwTos(short nwTos);
    OFActionSetTpDst.Builder buildSetTpDst() throws UnsupportedOperationException;
    OFActionSetTpDst setTpDst(TransportPort tpPort);
    OFActionSetTpSrc.Builder buildSetTpSrc() throws UnsupportedOperationException;
    OFActionSetTpSrc setTpSrc(TransportPort tpPort);
    OFActionSetVlanPcp.Builder buildSetVlanPcp() throws UnsupportedOperationException;
    OFActionSetVlanPcp setVlanPcp(VlanPcp vlanPcp);
    OFActionSetVlanVid.Builder buildSetVlanVid() throws UnsupportedOperationException;
    OFActionSetVlanVid setVlanVid(VlanVid vlanVid);
    OFActionStripVlan stripVlan();
    OFActionCopyTtlIn copyTtlIn();
    OFActionCopyTtlOut copyTtlOut();
    OFActionDecMplsTtl decMplsTtl();
    OFActionDecNwTtl decNwTtl();
    OFActionGroup.Builder buildGroup() throws UnsupportedOperationException;
    OFActionGroup group(OFGroup group);
    OFActionPopMpls.Builder buildPopMpls() throws UnsupportedOperationException;
    OFActionPopMpls popMpls(EthType ethertype);
    OFActionPopVlan popVlan();
    OFActionPushMpls.Builder buildPushMpls() throws UnsupportedOperationException;
    OFActionPushMpls pushMpls(EthType ethertype);
    OFActionPushVlan.Builder buildPushVlan() throws UnsupportedOperationException;
    OFActionPushVlan pushVlan(EthType ethertype);
    OFActionSetMplsLabel.Builder buildSetMplsLabel() throws UnsupportedOperationException;
    OFActionSetMplsLabel setMplsLabel(long mplsLabel);
    OFActionSetMplsTc.Builder buildSetMplsTc() throws UnsupportedOperationException;
    OFActionSetMplsTc setMplsTc(short mplsTc);
    OFActionSetMplsTtl.Builder buildSetMplsTtl() throws UnsupportedOperationException;
    OFActionSetMplsTtl setMplsTtl(short mplsTtl);
    OFActionSetNwEcn.Builder buildSetNwEcn() throws UnsupportedOperationException;
    OFActionSetNwEcn setNwEcn(IpEcn nwEcn);
    OFActionSetNwTtl.Builder buildSetNwTtl() throws UnsupportedOperationException;
    OFActionSetNwTtl setNwTtl(short nwTtl);
    OFActionSetQueue.Builder buildSetQueue() throws UnsupportedOperationException;
    OFActionSetQueue setQueue(long queueId);
    OFActionSetField.Builder buildSetField() throws UnsupportedOperationException;
    OFActionSetField setField(OFOxm<?> field);
    OFActionPopPbb popPbb();
    OFActionPushPbb.Builder buildPushPbb() throws UnsupportedOperationException;
    OFActionPushPbb pushPbb(EthType ethertype);

    OFMessageReader<OFAction> getReader();
    OFVersion getVersion();
}
