* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributor: hema.gopalkrishnan@ericsson.com
*/
package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+import com.google.common.collect.Ordering;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
-
-import com.google.common.collect.Ordering;
-import org.opendaylight.openflowjava.util.ByteBufUtils;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.openflowplugin.extension.api.ConverterExtensionKey;
import org.opendaylight.openflowplugin.openflow.md.util.ActionUtil;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Dscp;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortNumberUni;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.action.container.action.choice.ExperimenterIdCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlInCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlOutCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecMplsTtlCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.dl.src._case.SetDlSrcActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.field._case.SetFieldActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.mpls.ttl._case.SetMplsTtlActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.nw.dst._case.SetNwDstActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.nw.tos._case.SetNwTosActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.nw.ttl._case.SetNwTtlAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.nw.ttl._case.SetNwTtlActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthDst;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthSrc;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Code;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Type;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Code;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Type;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPortCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpDstCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpSrcCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpDstCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpSrcCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.dst._case.EthDstBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.type._case.Icmpv6TypeBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.dst._case.TcpDstBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.src._case.TcpSrcBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.dst._case.UdpDstBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.src._case.UdpSrcBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.vid._case.VlanVidBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.ExtensionKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.collect.Ordering;
-
/**
* @author usha@ericsson Action List:This class takes data from SAL layer and
* converts into OF Data
*
* @param actions SAL actions
* @param version Openflow protocol version used
- * @param datapathid
+ * @param datapathid datapath id
* @param flow TODO
* @return OF Library actions
*/
public static List<Action> getActions(
- List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actions,
- short version, BigInteger datapathid, Flow flow) {
+ final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actions,
+ final short version, final BigInteger datapathid, final Flow flow) {
List<Action> actionsList = new ArrayList<>();
Action ofAction;
version);
ConvertorActionToOFJava<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, Action> convertor =
OFSessionUtil.getExtensionConvertorProvider().getConverter(key);
+ LOG.trace("OFP Extension action, key:{}, converter:{}", key, convertor);
if (convertor != null) {
ofAction = convertor.convert(action);
}
}
private static Action salToOFSetField(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version, BigInteger datapathid) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version, final BigInteger datapathid) {
SetFieldCase setFieldCase = (SetFieldCase) action;
org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match match =
}
}
- private static Action salToOFDecNwTtl(ActionBuilder actionBuilder) {
+ private static Action salToOFDecNwTtl(final ActionBuilder actionBuilder) {
actionBuilder.setActionChoice(new DecNwTtlCaseBuilder().build());
return emtpyAction(actionBuilder);
}
private static Action salToOFPushMplsAction(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder) {
PushMplsActionCase pushMplsActionCase = (PushMplsActionCase) action;
PushMplsCaseBuilder pushMplsCaseBuilder = new PushMplsCaseBuilder();
PushMplsActionBuilder pushMplsBuilder = new PushMplsActionBuilder();
}
private static Action salToOFPushPbbAction(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder) {
PushPbbActionCase pushPbbActionCase = (PushPbbActionCase) action;
PushPbbCaseBuilder pushPbbCaseBuilder = new PushPbbCaseBuilder();
PushPbbActionBuilder pushPbbBuilder = new PushPbbActionBuilder();
}
private static Action salToOFPushVlanAction(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version) {
if (version == OFConstants.OFP_VERSION_1_0) {
// if client configure openflow 1.0 switch as a openflow 1.3 switch using openflow 1.3 instructions
// then we can ignore PUSH_VLAN as set-vlan-id will push a vlan header if not present
}
private static Action salToOFSetNwTtl(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder) {
SetNwTtlActionCase nwTtlActionCase = (SetNwTtlActionCase) action;
SetNwTtlCaseBuilder nwTtlCaseBuilder = new SetNwTtlCaseBuilder();
}
private static Action salToOFSetQueue(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder) {
SetQueueActionCase setQueueActionCase = (SetQueueActionCase) action;
SetQueueAction setQueueAction = setQueueActionCase.getSetQueueAction();
}
private static Action salToOFPopMpls(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder) {
PopMplsActionCase popMplsActionCase = (PopMplsActionCase) action;
PopMplsCaseBuilder popMplsCaseBuilder = new PopMplsCaseBuilder();
return actionBuilder.build();
}
- private static Action salToOFPopVlan(ActionBuilder actionBuilder) {
+ private static Action salToOFPopVlan(final ActionBuilder actionBuilder) {
actionBuilder.setActionChoice(new PopVlanCaseBuilder().build());
return emtpyAction(actionBuilder);
}
- private static Action salToOFPopPBB(ActionBuilder actionBuilder) {
+ private static Action salToOFPopPBB(final ActionBuilder actionBuilder) {
actionBuilder.setActionChoice(new PopPbbCaseBuilder().build());
return emtpyAction(actionBuilder);
}
// set-vlan-id (1.0 feature) can be called on 1.3 switches as well using ADSAL apis
private static Action salToOFSetVlanId(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version) {
SetVlanIdActionCase setvlanidcase = (SetVlanIdActionCase) action;
SetVlanIdAction setvlanidaction = setvlanidcase.getSetVlanIdAction();
}
private static Action salToOFSetVlanpcp(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version) {
SetVlanPcpActionCase setvlanpcpcase = (SetVlanPcpActionCase) action;
SetVlanPcpAction setvlanpcpaction = setvlanpcpcase.getSetVlanPcpAction();
}
}
- private static Action salToOFStripVlan(ActionBuilder actionBuilder, short version) {
+ private static Action salToOFStripVlan(final ActionBuilder actionBuilder, final short version) {
if (version == OFConstants.OFP_VERSION_1_0) {
actionBuilder.setActionChoice(new StripVlanCaseBuilder().build());
return emtpyAction(actionBuilder);
}
private static Action salToOFSetDlSrc(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version) {
SetDlSrcActionCase setdlsrccase = (SetDlSrcActionCase) action;
SetDlSrcAction setdlsrcaction = setdlsrccase.getSetDlSrcAction();
}
private static Action salToOFSetDlDst(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version) {
SetDlDstActionCase setdldstcase = (SetDlDstActionCase) action;
SetDlDstAction setdldstaction = setdldstcase.getSetDlDstAction();
}
protected static Action salToOFSetNwSrc(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version) {
try {
ActionSetNwSrcReactor.getInstance().convert((SetNwSrcActionCase) action, version, actionBuilder, null);
}
protected static Action salToOFSetNwDst(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version) {
try {
ActionSetNwDstReactor.getInstance().convert((SetNwDstActionCase) action, version, actionBuilder, null);
}
private static Action salToOFSetNwTos(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version) {
SetNwTosActionCase setnwtoscase = (SetNwTosActionCase) action;
SetNwTosAction setnwtosaction = setnwtoscase.getSetNwTosAction();
}
private static Action salToOFSetTpSrc(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version, IPProtocols protocol) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version, final IPProtocols protocol) {
SetTpSrcActionCase settpsrccase = (SetTpSrcActionCase) action;
SetTpSrcAction settpsrcaction = settpsrccase.getSetTpSrcAction();
InPortCaseBuilder inPortCaseBuilder = new InPortCaseBuilder();
int port = settpsrcaction.getPort().getValue().intValue();
- int type = 0x0f & port;
+ int type = 0xff & port;
switch (protocol) {
case ICMP:
matchBuilder.setOxmMatchField(TcpSrc.class);
TcpSrcCaseBuilder tcpSrcCaseBuilder = new TcpSrcCaseBuilder();
TcpSrcBuilder tcpSrcBuilder = new TcpSrcBuilder();
- tcpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber(port));
+ tcpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(port));
tcpSrcCaseBuilder.setTcpSrc(tcpSrcBuilder.build());
matchBuilder.setMatchEntryValue(tcpSrcCaseBuilder.build());
break;
matchBuilder.setOxmMatchField(UdpSrc.class);
UdpSrcCaseBuilder udpSrcCaseBuilder = new UdpSrcCaseBuilder();
UdpSrcBuilder udpSrcBuilder = new UdpSrcBuilder();
- udpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber(port));
+ udpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(port));
udpSrcCaseBuilder.setUdpSrc(udpSrcBuilder.build());
matchBuilder.setMatchEntryValue(udpSrcCaseBuilder.build());
break;
}
private static Action salToOFSetTpDst(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder, short version, IPProtocols protocol) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder, final short version, final IPProtocols protocol) {
SetTpDstActionCase settpdstcase = (SetTpDstActionCase) action;
SetTpDstAction settpdstaction = settpdstcase.getSetTpDstAction();
matchBuilder.setOxmClass(OpenflowBasicClass.class);
matchBuilder.setHasMask(false);
int port = settpdstaction.getPort().getValue().intValue();
- int code = 0x0f & port;
+ int code = 0xff & port;
switch (protocol) {
case ICMP:
- matchBuilder.setOxmMatchField(Icmpv4Type.class);
+ matchBuilder.setOxmMatchField(Icmpv4Code.class);
Icmpv4CodeCaseBuilder icmpv4CodeCaseBuilder = new Icmpv4CodeCaseBuilder();
Icmpv4CodeBuilder icmpv4CodeBuilder = new Icmpv4CodeBuilder();
icmpv4CodeBuilder.setIcmpv4Code((short) code);
matchBuilder.setOxmMatchField(TcpDst.class);
TcpDstCaseBuilder tcpDstCaseBuilder = new TcpDstCaseBuilder();
TcpDstBuilder tcpDstBuilder = new TcpDstBuilder();
- tcpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber(port));
+ tcpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(port));
tcpDstCaseBuilder.setTcpDst(tcpDstBuilder.build());
matchBuilder.setMatchEntryValue(tcpDstCaseBuilder.build());
break;
case UDP:
matchBuilder.setOxmMatchField(UdpDst.class);
- UdpSrcCaseBuilder udpSrcCaseBuilder = new UdpSrcCaseBuilder();
- UdpSrcBuilder udpSrcBuilder = new UdpSrcBuilder();
- udpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber(port));
- udpSrcCaseBuilder.setUdpSrc(udpSrcBuilder.build());
- matchBuilder.setMatchEntryValue(udpSrcCaseBuilder.build());
+ UdpDstCaseBuilder udpDstCaseBuilder = new UdpDstCaseBuilder();
+ UdpDstBuilder udpDstBuilder = new UdpDstBuilder();
+ udpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber(port));
+ udpDstCaseBuilder.setUdpDst(udpDstBuilder.build());
+ matchBuilder.setMatchEntryValue(udpDstCaseBuilder.build());
break;
default:
LOG.warn("Unknown protocol with combination of SetSourcePort: {}", protocol);
}
private static Action salToOFGroupAction(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder) {
GroupActionCase groupActionCase = (GroupActionCase) action;
GroupAction groupAction = groupActionCase.getGroupAction();
GroupCaseBuilder groupCaseBuilder = new GroupCaseBuilder();
return actionBuilder.build();
}
- private static Action salToOFDecMplsTtl(ActionBuilder actionBuilder) {
+ private static Action salToOFDecMplsTtl(final ActionBuilder actionBuilder) {
actionBuilder.setActionChoice(new DecMplsTtlCaseBuilder().build());
return emtpyAction(actionBuilder);
}
private static Action salToOFSetMplsTtl(
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
- ActionBuilder actionBuilder) {
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+ final ActionBuilder actionBuilder) {
SetMplsTtlActionCase mplsTtlActionCase = (SetMplsTtlActionCase) action;
SetMplsTtlAction mplsTtlAction = mplsTtlActionCase.getSetMplsTtlAction();
SetMplsTtlCaseBuilder setMplsTtlCaseBuilder = new SetMplsTtlCaseBuilder();
return actionBuilder.build();
}
- private static Action salToOFCopyTTLIIn(ActionBuilder actionBuilder) {
+ private static Action salToOFCopyTTLIIn(final ActionBuilder actionBuilder) {
actionBuilder.setActionChoice(new CopyTtlInCaseBuilder().build());
return emtpyAction(actionBuilder);
}
- private static Action salToOFCopyTTLIOut(ActionBuilder actionBuilder) {
+ private static Action salToOFCopyTTLIOut(final ActionBuilder actionBuilder) {
actionBuilder.setActionChoice(new CopyTtlOutCaseBuilder().build());
return emtpyAction(actionBuilder);
}
- private static Action emtpyAction(ActionBuilder actionBuilder) {
+ private static Action emtpyAction(final ActionBuilder actionBuilder) {
return actionBuilder.build();
}
private static Action salToOFAction(
- OutputActionCase outputActionCase,
- ActionBuilder actionBuilder, short version) {
+ final OutputActionCase outputActionCase,
+ final ActionBuilder actionBuilder, final short version) {
OutputAction outputAction = outputActionCase.getOutputAction();
OutputActionCaseBuilder caseBuilder = new OutputActionCaseBuilder();
/**
* Method to convert OF actions associated with bucket to SAL Actions.
*
- * @param actionList
+ * @param actionList action list
* @param ofVersion current ofp version
* @param actionPath TODO
* @return List of converted SAL Actions.
*/
public static List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> toMDSalActions(
- List<Action> actionList, OpenflowVersion ofVersion, ActionPath actionPath) {
+ final List<Action> actionList, final OpenflowVersion ofVersion, final ActionPath actionPath) {
List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> bucketActions = new ArrayList<>();
- for (Action action : actionList) {
- if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.OutputActionCase) {
- bucketActions.add(ofToSALOutputAction(ofVersion, action));
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.GroupCase) {
- bucketActions.add(ofToSALGroupAction(action));
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlOutCase) {
- CopyTtlOutBuilder copyTtlOutaction = new CopyTtlOutBuilder();
- bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder().setCopyTtlOut(copyTtlOutaction.build()).build());
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlInCase) {
- CopyTtlInBuilder copyTtlInaction = new CopyTtlInBuilder();
- bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder().setCopyTtlIn(copyTtlInaction.build()).build());
-
- } else if (action.getActionChoice() instanceof SetMplsTtlCase) {
- bucketActions.add(ofToSALSetMplsTtl(action));
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecMplsTtlCase) {
- DecMplsTtlBuilder decMplsTtl = new DecMplsTtlBuilder();
- bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder().setDecMplsTtl(decMplsTtl.build()).build());
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushVlanCase) {
- bucketActions.add(ofToSALPushVlanAction(action));
- } else if ((action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopVlanCase)
- || (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.StripVlanCase)) {
- // OF1.0 nodes will emit StripVlan and OF1.3+ will emit StripVlan/PopVlan, convert both to PopVlan for SAL
- PopVlanActionBuilder popVlan = new PopVlanActionBuilder();
- bucketActions.add(new PopVlanActionCaseBuilder().setPopVlanAction(popVlan.build()).build());
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushMplsCase) {
- bucketActions.add(ofToSALPushMplsAction(action));
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopMplsCase) {
- bucketActions.add(ofToSALPopMplsAction(action));
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetQueueCase) {
- bucketActions.add(ofToSALSetQueue(action));
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTtlCase) {
- bucketActions.add(ofToSALSetNwTtl(action));
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecNwTtlCase) {
- DecNwTtlBuilder decNwTtl = new DecNwTtlBuilder();
- bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder()
- .setDecNwTtl(decNwTtl.build()).build());
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetFieldCase) {
- bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder()
- .setSetField(MatchConvertorImpl.fromOFSetFieldToSALSetFieldAction(action, ofVersion)).build());
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushPbbCase) {
- bucketActions.add(ofToSALPushPbbAction(action));
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopPbbCase) {
- PopPbbActionBuilder popPbb = new PopPbbActionBuilder();
- bucketActions.add(new PopPbbActionCaseBuilder().setPopPbbAction(popPbb.build()).build());
-
- } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwDstCase) {
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder setNwDstActionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder();
- bucketActions.add(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilder.build()).build());
-
- } else {
- /**
- * TODO: EXTENSION PROPOSAL (action, OFJava to MD-SAL)
- * - we might also need a way on how to identify exact type of augmentation to be
- * used as match can be bound to multiple models
- */
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action processedAction =
- ActionExtensionHelper.processAlienAction(action, ofVersion, actionPath);
- if (processedAction != null) {
- bucketActions.add(processedAction);
+ if(actionList != null){
+ for (Action action : actionList) {
+ if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.OutputActionCase) {
+ bucketActions.add(ofToSALOutputAction(ofVersion, action));
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.GroupCase) {
+ bucketActions.add(ofToSALGroupAction(action));
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlOutCase) {
+ CopyTtlOutBuilder copyTtlOutaction = new CopyTtlOutBuilder();
+ bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder().setCopyTtlOut(copyTtlOutaction.build()).build());
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlInCase) {
+ CopyTtlInBuilder copyTtlInaction = new CopyTtlInBuilder();
+ bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder().setCopyTtlIn(copyTtlInaction.build()).build());
+
+ } else if (action.getActionChoice() instanceof SetMplsTtlCase) {
+ bucketActions.add(ofToSALSetMplsTtl(action));
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecMplsTtlCase) {
+ DecMplsTtlBuilder decMplsTtl = new DecMplsTtlBuilder();
+ bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder().setDecMplsTtl(decMplsTtl.build()).build());
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushVlanCase) {
+ bucketActions.add(ofToSALPushVlanAction(action));
+ } else if ((action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopVlanCase)
+ || (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.StripVlanCase)) {
+ // OF1.0 nodes will emit StripVlan and OF1.3+ will emit StripVlan/PopVlan, convert both to PopVlan for SAL
+ PopVlanActionBuilder popVlan = new PopVlanActionBuilder();
+ bucketActions.add(new PopVlanActionCaseBuilder().setPopVlanAction(popVlan.build()).build());
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushMplsCase) {
+ bucketActions.add(ofToSALPushMplsAction(action));
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopMplsCase) {
+ bucketActions.add(ofToSALPopMplsAction(action));
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetQueueCase) {
+ bucketActions.add(ofToSALSetQueue(action));
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTtlCase) {
+ bucketActions.add(ofToSALSetNwTtl(action));
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecNwTtlCase) {
+ DecNwTtlBuilder decNwTtl = new DecNwTtlBuilder();
+ bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder()
+ .setDecNwTtl(decNwTtl.build()).build());
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetFieldCase) {
+ bucketActions.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder()
+ .setSetField(MatchConvertorImpl.fromOFSetFieldToSALSetFieldAction(action, ofVersion)).build());
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushPbbCase) {
+ bucketActions.add(ofToSALPushPbbAction(action));
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopPbbCase) {
+ PopPbbActionBuilder popPbb = new PopPbbActionBuilder();
+ bucketActions.add(new PopPbbActionCaseBuilder().setPopPbbAction(popPbb.build()).build());
+
+ } else if (action.getActionChoice() instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwDstCase) {
+ org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder setNwDstActionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder();
+ bucketActions.add(new SetNwDstActionCaseBuilder().setSetNwDstAction(setNwDstActionBuilder.build()).build());
+
+ } else {
+ /**
+ * TODO: EXTENSION PROPOSAL (action, OFJava to MD-SAL)
+ * - we might also need a way on how to identify exact type of augmentation to be
+ * used as match can be bound to multiple models
+ */
+ org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action processedAction =
+ ActionExtensionHelper.processAlienAction(action, ofVersion, actionPath);
+ if (processedAction != null) {
+ bucketActions.add(processedAction);
+ }
}
}
}
/**
* Method converts OF Output action object to SAL Output action object.
*
- * @param ofVersion
- * @param ofVersion
+ * @param ofVersion openflow version
* @param action org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.
* action.rev130731.actions.actions.list.Action
* @return OutputAction
*/
- public static OutputActionCase ofToSALOutputAction(OpenflowVersion ofVersion, Action action) {
+ public static OutputActionCase ofToSALOutputAction(final OpenflowVersion ofVersion, final Action action) {
org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder outputAction =
new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder();
/**
* Method converts OF GroupAction object to SAL GroupAction object
*
- * @param action
- * @return GroupAction
+ * @param action action
+ * @return GroupAction group action
*/
- public static GroupActionCase ofToSALGroupAction(Action action) {
+ public static GroupActionCase ofToSALGroupAction(final Action action) {
GroupCase actionCase = (GroupCase) action.getActionChoice();
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.group._case.GroupAction groupActionFromOF =
actionCase.getGroupAction();
* Method converts OF SetMplsTTL action object to SAL SetMplsTTL action
* object.
*
- * @param action
- * @return
+ * @param action action
+ * @return set-mpls ttl action
*/
- public static SetMplsTtlActionCase ofToSALSetMplsTtl(Action action) {
+ public static SetMplsTtlActionCase ofToSALSetMplsTtl(final Action action) {
SetMplsTtlCase actionCase = (SetMplsTtlCase) action.getActionChoice();
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action
.choice.set.mpls.ttl._case.SetMplsTtlAction setMplsTtlActionFromOF = actionCase.getSetMplsTtlAction();
/**
* Method converts OF Pushvlan action to SAL PushVlan action.
*
- * @param action
+ * @param action input actioj
* @return PushVlanAction
*/
- public static PushVlanActionCase ofToSALPushVlanAction(Action action) {
+ public static PushVlanActionCase ofToSALPushVlanAction(final Action action) {
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushVlanCase actionCase =
(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushVlanCase) action.getActionChoice();
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.push.vlan._case.PushVlanAction pushVlanActionFromOF =
/**
* Method converts OF PushMpls action to SAL PushMpls action.
*
- * @param action
+ * @param action action
* @return PushMplsAction
*/
- public static PushMplsActionCase ofToSALPushMplsAction(Action action) {
+ public static PushMplsActionCase ofToSALPushMplsAction(final Action action) {
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushMplsCase actionCase =
(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushMplsCase) action.getActionChoice();
PushMplsAction pushMplsActionFromOF = actionCase.getPushMplsAction();
/**
* Method converts OF PopMpls action to SAL PopMpls action.
*
- * @param action
+ * @param action action
* @return PopMplsActionCase
*/
- public static PopMplsActionCase ofToSALPopMplsAction(Action action) {
+ public static PopMplsActionCase ofToSALPopMplsAction(final Action action) {
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopMplsCase actionCase =
(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopMplsCase) action.getActionChoice();
PopMplsAction popMplsActionFromOF = actionCase.getPopMplsAction();
/**
* Method converts OF SetQueue action to SAL SetQueue action.
*
- * @param action
+ * @param action action
* @return SetQueueAction
*/
- public static SetQueueActionCase ofToSALSetQueue(Action action) {
+ public static SetQueueActionCase ofToSALSetQueue(final Action action) {
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetQueueCase actionCase =
(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetQueueCase) action.getActionChoice();
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.queue._case.SetQueueAction queueActionFromOF =
/**
* Method converts OF SetNwTtl action to SAL SetNwTtl action.
*
- * @param action
+ * @param action action
* @return SetNwTtlAction
*/
- public static SetNwTtlActionCase ofToSALSetNwTtl(Action action) {
+ public static SetNwTtlActionCase ofToSALSetNwTtl(final Action action) {
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTtlCase actionCase =
(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTtlCase) action.getActionChoice();
SetNwTtlAction setNwTtlActionFromOf = actionCase.getSetNwTtlAction();
/**
* Method converts OF Pushvlan action to SAL PushVlan action.
*
- * @param action
+ * @param action action
* @return PushVlanAction
*/
- public static PushPbbActionCase ofToSALPushPbbAction(Action action) {
+ public static PushPbbActionCase ofToSALPushPbbAction(final Action action) {
org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushPbbCase actionCase =
(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushPbbCase) action.getActionChoice();
PushPbbAction pushPbbActionFromOf = actionCase.getPushPbbAction();