Bug 5895 - Support of Ext109 openflow tcp flag matching in openflowplugin
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / ActionConvertor.java
index 8f326563b339ec0ce86a0a3245490dc856a73feb..8d55f55dd874b8a1f11af7371c6eada3891decf4 100644 (file)
@@ -4,17 +4,13 @@
  * 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;
@@ -32,12 +28,13 @@ import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil;
 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.DecNwTtlCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DropActionCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCase;
@@ -91,7 +88,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 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;
@@ -131,7 +127,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
 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;
@@ -146,6 +141,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
 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;
@@ -166,6 +162,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.matc
 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;
@@ -176,6 +173,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.matc
 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;
@@ -184,8 +182,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ge
 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
@@ -195,6 +191,8 @@ import com.google.common.collect.Ordering;
 public final class ActionConvertor {
     private static final Logger LOG = LoggerFactory.getLogger(ActionConvertor.class);
     private static final String UNKNOWN_ACTION_TYPE_VERSION = "Unknown Action Type for the Version";
+    private static final Ordering<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> ACTION_ORDERING =
+            Ordering.from(OrderComparator.<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>build());
 
     private ActionConvertor() {
         // NOOP
@@ -205,19 +203,18 @@ public final class ActionConvertor {
      *
      * @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;
 
         final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> sortedActions =
-                Ordering.from(OrderComparator.<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>build())
-                        .sortedCopy(actions);
+                ACTION_ORDERING.sortedCopy(actions);
 
         for (int actionItem = 0; actionItem < sortedActions.size(); actionItem++) {
             ofAction = null;
@@ -226,8 +223,11 @@ public final class ActionConvertor {
             org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action = sortedActions.get(
                     actionItem).getAction();
 
+
             if (action instanceof OutputActionCase) {
                 ofAction = salToOFAction((OutputActionCase) action, actionBuilder, version);
+            } else if (action instanceof DropActionCase){
+                //noop
             } else if (action instanceof GroupActionCase) {
                 ofAction = salToOFGroupAction(action, actionBuilder);
             } else if (action instanceof CopyTtlOutCase) {
@@ -285,7 +285,6 @@ public final class ActionConvertor {
             } else if (action instanceof SetNwTosActionCase) {
                 ofAction = salToOFSetNwTos(action, actionBuilder, version);
             } else if (action instanceof GeneralExtensionGrouping) {
-
                 /**
                  * TODO: EXTENSION PROPOSAL (action, MD-SAL to OFJava)
                  * - we might need sessionContext as converter input
@@ -308,6 +307,7 @@ public final class ActionConvertor {
                                 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);
                 }
@@ -321,8 +321,8 @@ public final class ActionConvertor {
     }
 
     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 =
@@ -353,14 +353,14 @@ public final class ActionConvertor {
         }
     }
 
-    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();
@@ -371,8 +371,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -383,8 +383,8 @@ public final class ActionConvertor {
     }
 
     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
@@ -404,8 +404,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -417,8 +417,8 @@ public final class ActionConvertor {
     }
 
     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();
 
@@ -431,8 +431,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -443,20 +443,20 @@ public final class ActionConvertor {
         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();
@@ -498,8 +498,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -528,7 +528,7 @@ public final class ActionConvertor {
         }
     }
 
-    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);
@@ -559,8 +559,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -599,8 +599,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -639,8 +639,8 @@ public final class ActionConvertor {
     }
 
     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);
@@ -653,8 +653,8 @@ public final class ActionConvertor {
     }
 
     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);
@@ -667,8 +667,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -700,8 +700,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -724,7 +724,7 @@ public final class ActionConvertor {
 
             InPortCaseBuilder inPortCaseBuilder = new InPortCaseBuilder();
             int port = settpsrcaction.getPort().getValue().intValue();
-            int type = 0x0f & port;
+            int type = 0xff & port;
 
             switch (protocol) {
                 case ICMP:
@@ -747,7 +747,7 @@ public final class ActionConvertor {
                     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;
@@ -755,7 +755,7 @@ public final class ActionConvertor {
                     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;
@@ -775,8 +775,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -795,11 +795,11 @@ public final class ActionConvertor {
             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);
@@ -818,17 +818,17 @@ public final class ActionConvertor {
                     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);
@@ -846,8 +846,8 @@ public final class ActionConvertor {
     }
 
     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();
@@ -864,14 +864,14 @@ public final class ActionConvertor {
         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();
@@ -882,24 +882,24 @@ public final class ActionConvertor {
         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();
@@ -927,74 +927,76 @@ public final class ActionConvertor {
     /**
      * 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 if (action.getActionChoice() instanceof ExperimenterIdCase) {
-                /**
-                 * 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);
+                    }
                 }
             }
         }
@@ -1004,13 +1006,12 @@ public final class ActionConvertor {
     /**
      * 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();
 
@@ -1043,10 +1044,10 @@ public final class ActionConvertor {
     /**
      * 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();
@@ -1062,10 +1063,10 @@ public final class ActionConvertor {
      * 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();
@@ -1079,10 +1080,10 @@ public final class ActionConvertor {
     /**
      * 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 =
@@ -1098,10 +1099,10 @@ public final class ActionConvertor {
     /**
      * 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();
@@ -1114,10 +1115,10 @@ public final class ActionConvertor {
     /**
      * 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();
@@ -1130,10 +1131,10 @@ public final class ActionConvertor {
     /**
      * 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 =
@@ -1147,10 +1148,10 @@ public final class ActionConvertor {
     /**
      * 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();
@@ -1163,10 +1164,10 @@ public final class ActionConvertor {
     /**
      * 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();