OpenFlow Protocol_plugin changes to make use of the Connection Manager infrastructure...
[controller.git] / opendaylight / protocol_plugins / openflow / src / main / java / org / opendaylight / controller / protocol_plugin / openflow / internal / DataPacketServices.java
index adb9d20ef7d4338a287a6e721bbb23e9f034fca5..4c65645bfed8f98c53bc019e8351e7c2b09cec01 100644 (file)
@@ -12,6 +12,8 @@ package org.opendaylight.controller.protocol_plugin.openflow.internal;
 import org.opendaylight.controller.protocol_plugin.openflow.IDataPacketMux;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.opendaylight.controller.sal.connection.IPluginOutConnectionService;
+import org.opendaylight.controller.sal.core.NodeConnector;
 import org.opendaylight.controller.sal.packet.IPluginInDataPacketService;
 import org.opendaylight.controller.sal.packet.RawPacket;
 
@@ -19,6 +21,7 @@ public class DataPacketServices implements IPluginInDataPacketService {
     protected static final Logger logger = LoggerFactory
             .getLogger(DataPacketServices.class);
     private IDataPacketMux iDataPacketMux = null;
+    private IPluginOutConnectionService connectionOutService;
 
     void setIDataPacketMux(IDataPacketMux s) {
         this.iDataPacketMux = s;
@@ -30,8 +33,23 @@ public class DataPacketServices implements IPluginInDataPacketService {
         }
     }
 
+    void setIPluginOutConnectionService(IPluginOutConnectionService s) {
+        connectionOutService = s;
+    }
+
+    void unsetIPluginOutConnectionService(IPluginOutConnectionService s) {
+        if (connectionOutService == s) {
+            connectionOutService = null;
+        }
+    }
+
     @Override
     public void transmitDataPacket(RawPacket outPkt) {
-        this.iDataPacketMux.transmitDataPacket(outPkt);
+        NodeConnector nc = outPkt.getOutgoingNodeConnector();
+        if (connectionOutService != null && connectionOutService.isLocal(nc.getNode())) {
+            this.iDataPacketMux.transmitDataPacket(outPkt);
+        } else {
+            logger.debug("{} is dropped in the controller "+outPkt);
+        }
     }
 }