Merge "Initial commit of the test-scripts"
authorAbhijit Kumbhare <abhijitk@us.ibm.com>
Wed, 8 Jan 2014 07:02:28 +0000 (07:02 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 8 Jan 2014 07:02:28 +0000 (07:02 +0000)
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/translator/FlowRemovedTranslator.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/util/ByteUtil.java

index 811dc5725d3847350b7b3e8ce489d3234ae3f80b..ca3da38b4c2de87b3da57ac271f4134bf4cb94c0 100644 (file)
@@ -99,6 +99,7 @@ public class MDController implements IMDController {
         //TODO: move registration to factory
         addMessageTranslator(ErrorMessage.class, OF10, new ErrorTranslator());
         addMessageTranslator(ErrorMessage.class, OF13, new ErrorTranslator());
+        addMessageTranslator(FlowRemovedMessage.class, OF10, new FlowRemovedTranslator());
         addMessageTranslator(FlowRemovedMessage.class, OF13, new FlowRemovedTranslator());
         addMessageTranslator(PacketInMessage.class,OF10, new PacketInTranslator());
         addMessageTranslator(PacketInMessage.class,OF13, new PacketInTranslator());
index b45edba0f154e228d045c3d2b0e9dbd6da2416e3..1a746accfd336db80c809e17c9a69cf6a2de0291 100644 (file)
@@ -10,12 +10,14 @@ import java.util.concurrent.CopyOnWriteArrayList;
 
 import org.opendaylight.openflowplugin.openflow.md.core.IMDMessageTranslator;
 import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchConvertorImpl;
 import org.opendaylight.openflowplugin.openflow.md.core.session.SessionContext;
 import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SwitchFlowRemovedBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.RemovedReasonFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.mod.removed.Match;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.mod.removed.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
@@ -68,6 +70,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.TcMatchEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.VlanPcpMatchEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.VlanVidMatchEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowRemovedReason;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Ipv6ExthdrFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpOp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSha;
@@ -145,11 +148,24 @@ public class FlowRemovedTranslator implements IMDMessageTranslator<OfHeader, Lis
             salFlowRemoved.setHardTimeout(ofFlow.getHardTimeout());
             salFlowRemoved.setPacketCount(ofFlow.getPacketCount());
             salFlowRemoved.setByteCount(ofFlow.getByteCount());
+            RemovedReasonFlags removeReasonFlag = new RemovedReasonFlags(
+                    FlowRemovedReason.OFPRRDELETE.equals(ofFlow.getReason()),
+                    FlowRemovedReason.OFPRRGROUPDELETE.equals(ofFlow.getReason()),
+                    FlowRemovedReason.OFPRRHARDTIMEOUT.equals(ofFlow.getReason()),
+                    FlowRemovedReason.OFPRRIDLETIMEOUT.equals(ofFlow.getReason())
+                    );
+            
+            salFlowRemoved.setRemovedReason(removeReasonFlag);
+            
             org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.match.grouping.Match ofMatch = ofFlow
                     .getMatch();
             if (ofMatch != null) {
                 salFlowRemoved.setMatch(fromMatch(ofMatch));
             }
+            else if(ofFlow.getMatchV10() != null){
+                MatchBuilder matchBuilder = new MatchBuilder(MatchConvertorImpl.fromOFMatchV10ToSALMatch(ofFlow.getMatchV10()));
+                salFlowRemoved.setMatch(matchBuilder.build());
+            }
             salFlowRemoved.setNode(new NodeRef(InventoryDataServiceUtil.identifierFromDatapathId(sc.getFeatures()
                     .getDatapathId())));
             list.add(salFlowRemoved.build());
@@ -159,7 +175,8 @@ public class FlowRemovedTranslator implements IMDMessageTranslator<OfHeader, Lis
             return Collections.emptyList();
         }
     }
-
+    
+    
     public Match fromMatch(
             org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.match.grouping.Match ofMatch) {
         MatchBuilder matchBuilder = new MatchBuilder();
index dc6d5b5078b3a0a872eeeab323ec835816ffee03..32a4a59d6fb3b06d665e946c6753eaa13f99949b 100644 (file)
@@ -47,7 +47,11 @@ public abstract class ByteUtil {
         } else {
             Arrays.fill(outputArray, (byte) 0);
         }
-        System.arraycopy(inputArray, 0, outputArray, outputArray.length - inputArray.length, inputArray.length);
+        System.arraycopy(inputArray,
+                         Math.max(0, inputArray.length - outputArray.length),
+                         outputArray,
+                         Math.max(0, outputArray.length - inputArray.length),
+                         Math.min(outputArray.length, inputArray.length));
         return outputArray;
     }
 }