| package net.onrc.onos.core.matchaction; |
| |
| import java.util.Arrays; |
| import java.util.List; |
| |
| import net.floodlightcontroller.util.MACAddress; |
| import net.onrc.onos.api.batchoperation.IBatchOperationTarget; |
| import net.onrc.onos.core.matchaction.action.IAction; |
| import net.onrc.onos.core.matchaction.action.OutputAction; |
| import net.onrc.onos.core.matchaction.match.IMatch; |
| import net.onrc.onos.core.matchaction.match.PacketMatch; |
| import net.onrc.onos.core.util.Dpid; |
| import net.onrc.onos.core.util.IPv4; |
| import net.onrc.onos.core.util.PortNumber; |
| import net.onrc.onos.core.util.SwitchPort; |
| |
| /** |
| * A filter and actions for traffic. |
| */ |
| public class MatchAction implements IBatchOperationTarget { |
| protected final MatchActionId id; |
| protected SwitchPort port; |
| protected List<IMatch> matches; |
| protected List<IAction> actions; |
| |
| /** |
| * Constructor. |
| * |
| * @param id ID for this MatchAction object. |
| * @param port Switch DPID |
| * @param matches The list of IMatch objects as match condition on the port. |
| * @param actions The list of IAction objects as actions on the switch. |
| */ |
| public MatchAction(String id, SwitchPort port, List<IMatch> matches, |
| List<IAction> actions) { |
| this.id = new MatchActionId(id); |
| this.port = port; |
| this.matches = matches; |
| this.actions = actions; |
| } |
| |
| /** |
| * Constructor. |
| * <p> |
| * MEMO: This is a sample constructor to create a packet layer match action. |
| * |
| * @param id ID for this MatchAction object. |
| * @param dpid Switch DPID |
| * @param srcPort Source Port |
| * @param srcMac Source Host MAC Address |
| * @param dstMac Destination Host MAC Address |
| * @param srcIp Source IP Address |
| * @param dstIp Destination IP Address |
| * @param dstPort Destination Port |
| */ |
| // CHECKSTYLE:OFF suppress the warning about too many parameters |
| public MatchAction(String id, Dpid dpid, PortNumber srcPort, |
| MACAddress srcMac, MACAddress dstMac, |
| IPv4 srcIp, IPv4 dstIp, PortNumber dstPort) { |
| // CHECKSTYLE:ON |
| this(id, new SwitchPort(dpid, srcPort), |
| Arrays.asList((IMatch) new PacketMatch(srcMac, dstMac, srcIp, dstIp)), |
| Arrays.asList((IAction) new OutputAction(dstPort))); |
| } |
| |
| @Override |
| public MatchActionId getId() { |
| return id; |
| } |
| |
| /** |
| * Gets the switch-port which is the target of this match-action. |
| * |
| * @return The target switch-port of this match-action. |
| */ |
| public SwitchPort getSwitchPort() { |
| return port; |
| } |
| |
| /** |
| * Gets the traffic filter of the match-action. |
| * |
| * @return The traffic filter. |
| */ |
| public List<IMatch> getMatches() { |
| return matches; |
| } |
| |
| /** |
| * Gets the list of actions of the match-action. |
| * |
| * @return The list of actions. |
| */ |
| public List<IAction> getActions() { |
| return actions; |
| } |
| } |