Adding default max Length for output Action
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / ActionConvertor.java
index ccd9d18f2b43b28a2d8541ae2bd6f85bafb750c7..49d4d4e1f71b5628e25b6d629206ebd1c7990127 100644 (file)
@@ -41,6 +41,7 @@ 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.SetMplsTtlActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCase;
@@ -71,6 +72,7 @@ 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.mpls.ttl.action._case.SetMplsTtlActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
@@ -78,6 +80,7 @@ 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.tp.src.action._case.SetTpSrcAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdAction;
 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.action.types.rev131112.address.address.Ipv4;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.DlAddressAction;
@@ -93,6 +96,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MaxLengthActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MplsTtlAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MplsTtlActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.NwTosAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.NwTosActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.NwTtlAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.NwTtlActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsAction;
@@ -211,6 +216,8 @@ public final class ActionConvertor {
                 actionsList.add(SalToOFSetTpSrc(action, actionsListBuilder, version));
             else if (action instanceof SetTpDstActionCase)
                 actionsList.add(SalToOFSetTpDst(action, actionsListBuilder, version));
+            else if (action instanceof SetNwTosActionCase)
+                actionsList.add(SalToOFSetNwTos(action, actionsListBuilder, version));
 
         }
         return actionsList;
@@ -478,7 +485,9 @@ public final class ActionConvertor {
             SetNwSrcAction setnwsrcaction = setnwsrccase.getSetNwSrcAction();
 
             IpAddressActionBuilder ipvaddress = new IpAddressActionBuilder();
-            ipvaddress.setIpAddress((Ipv4Address) setnwsrcaction.getAddress());
+            Ipv4 address_ipv4 = (Ipv4) setnwsrcaction.getAddress();
+            Ipv4Address address = new Ipv4Address(address_ipv4.getIpv4Address().getValue());
+            ipvaddress.setIpAddress(address);
             actionBuilder
                     .setType(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwSrc.class);
             actionBuilder.addAugmentation(
@@ -503,7 +512,9 @@ public final class ActionConvertor {
             SetNwDstAction setnwdstaction = setnwdstcase.getSetNwDstAction();
 
             IpAddressActionBuilder ipvaddress = new IpAddressActionBuilder();
-            ipvaddress.setIpAddress((Ipv4Address) setnwdstaction.getAddress());
+            Ipv4 address_ipv4 = (Ipv4) setnwdstaction.getAddress();
+            Ipv4Address address = new Ipv4Address(address_ipv4.getIpv4Address().getValue());
+            ipvaddress.setIpAddress(address);
             actionBuilder
                     .setType(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwDst.class);
             actionBuilder.addAugmentation(
@@ -519,6 +530,31 @@ public final class ActionConvertor {
 
     }
 
+    private static ActionsList SalToOFSetNwTos(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionsListBuilder actionsListBuilder, short version) {
+
+        if (version == OFConstants.OFP_VERSION_1_0) {
+            ActionBuilder actionBuilder = new ActionBuilder();
+            SetNwTosActionCase setnwtoscase = (SetNwTosActionCase) action;
+            SetNwTosAction setnwtosaction = setnwtoscase.getSetNwTosAction();
+
+            NwTosActionBuilder tosBuilder = new NwTosActionBuilder();
+            tosBuilder.setNwTos(setnwtosaction.getTos().shortValue());
+            actionBuilder.addAugmentation(NwTosAction.class, tosBuilder.build());
+            actionBuilder.setType(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwTos.class);
+
+            actionsListBuilder.setAction(actionBuilder.build());
+            return actionsListBuilder.build();
+
+        } else {
+            logger.error("Unknown Action Type for the Version", version);
+            return null;
+        }
+
+    }
+
+
     private static ActionsList SalToOFSetTpSrc(
             org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
             ActionsListBuilder actionsListBuilder, short version) {
@@ -650,7 +686,11 @@ public final class ActionConvertor {
         OutputAction outputAction = outputActionCase.getOutputAction();
         PortActionBuilder portAction = new PortActionBuilder();
         MaxLengthActionBuilder maxLenActionBuilder = new MaxLengthActionBuilder();
-        maxLenActionBuilder.setMaxLength(outputAction.getMaxLength());
+        if (outputAction.getMaxLength() != null) {
+            maxLenActionBuilder.setMaxLength(outputAction.getMaxLength());
+        } else {
+            maxLenActionBuilder.setMaxLength(new Integer(0));
+        }
         ActionBuilder actionBuilder = new ActionBuilder();
         actionBuilder.addAugmentation(MaxLengthAction.class, maxLenActionBuilder.build());
 
@@ -728,7 +768,7 @@ public final class ActionConvertor {
      * @param actionList
      * @return List of converted SAL Actions.
      */
-    public static List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> toSALBucketActions(
+    public static List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> toMDSalActions(
             List<ActionsList> actionList) {
 
         List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action> bucketActions = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action>();