X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=openflowplugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fopenflowplugin%2Fopenflow%2Fmd%2Fcore%2FMDController.java;h=8988a1d4f3010a2adf971459b894e240bcb07302;hb=698a7d71c1baeebe9bc1b6c58708fa4d0f085b57;hp=25eb19aa17dff5b313086f48a7dbd55a88a371f3;hpb=3856bbd5053abb6596db60f5a9cd2e3faff07e7a;p=openflowplugin.git diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java index 25eb19aa17..8988a1d4f3 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/MDController.java @@ -20,11 +20,11 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.opendaylight.openflowjava.protocol.api.connection.ConnectionConfiguration; -import org.opendaylight.openflowjava.protocol.api.connection.SwitchConnectionHandler; import org.opendaylight.openflowjava.protocol.spi.connection.SwitchConnectionProvider; import org.opendaylight.openflowplugin.openflow.md.core.session.OFSessionUtil; import org.opendaylight.openflowplugin.openflow.md.core.translator.ErrorTranslator; import org.opendaylight.openflowplugin.openflow.md.core.translator.ExperimenterTranslator; +import org.opendaylight.openflowplugin.openflow.md.core.translator.FeaturesV10ToNodeConnectorUpdatedTranslator; import org.opendaylight.openflowplugin.openflow.md.core.translator.FlowRemovedTranslator; import org.opendaylight.openflowplugin.openflow.md.core.translator.MultiPartMessageDescToNodeUpdatedTranslator; import org.opendaylight.openflowplugin.openflow.md.core.translator.MultiPartReplyPortToNodeConnectorUpdatedTranslator; @@ -32,16 +32,18 @@ import org.opendaylight.openflowplugin.openflow.md.core.translator.MultipartRepl import org.opendaylight.openflowplugin.openflow.md.core.translator.MultipartReplyTranslator; import org.opendaylight.openflowplugin.openflow.md.core.translator.PacketInTranslator; import org.opendaylight.openflowplugin.openflow.md.core.translator.PortStatusMessageToNodeConnectorUpdatedTranslator; +import org.opendaylight.openflowplugin.openflow.md.lldp.LLDPSpeakerPopListener; +import org.opendaylight.openflowplugin.openflow.md.queue.MessageSpy; import org.opendaylight.openflowplugin.openflow.md.queue.PopListener; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SwitchFlowRemoved; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.NodeErrorNotification; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SwitchFlowRemoved; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.AggregateFlowStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.statistics.rev130819.FlowsStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupDescStatsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupFeaturesUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdated; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterConfigStatsUpdated; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterFeaturesUpdated; @@ -49,13 +51,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111. import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemovedMessage; +import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketInMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessage; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived; import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.PortStatisticsUpdate; +import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.NodeConnectorStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.QueueStatisticsUpdate; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.TableUpdated; import org.opendaylight.yangtools.yang.binding.DataObject; @@ -76,6 +79,7 @@ public class MDController implements IMDController { private ConcurrentMap>>> messageTranslators; private Map, Collection>> popListeners; + private MessageSpy messageSpyCounter; final private int OF10 = 1; final private int OF13 = 4; @@ -98,17 +102,20 @@ 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()); addMessageTranslator(PortStatusMessage.class,OF10, new PortStatusMessageToNodeConnectorUpdatedTranslator()); addMessageTranslator(PortStatusMessage.class,OF13, new PortStatusMessageToNodeConnectorUpdatedTranslator()); addMessageTranslator(MultipartReplyMessage.class,OF13,new MultiPartReplyPortToNodeConnectorUpdatedTranslator()); + addMessageTranslator(MultipartReplyMessage.class,OF10, new MultiPartMessageDescToNodeUpdatedTranslator()); addMessageTranslator(MultipartReplyMessage.class,OF13, new MultiPartMessageDescToNodeUpdatedTranslator()); addMessageTranslator(ExperimenterMessage.class, OF10, new ExperimenterTranslator()); addMessageTranslator(MultipartReplyMessage.class,OF10, new MultipartReplyTranslator()); addMessageTranslator(MultipartReplyMessage.class,OF13, new MultipartReplyTranslator()); addMessageTranslator(MultipartReplyMessage.class,OF13,new MultipartReplyTableFeaturesToTableUpdatedTranslator()); + addMessageTranslator(GetFeaturesOutput.class,OF10, new FeaturesV10ToNodeConnectorUpdatedTranslator()); //TODO: move registration to factory NotificationPopListener notificationPopListener = new NotificationPopListener(); @@ -136,7 +143,7 @@ public class MDController implements IMDController { addMessagePopListener(MeterFeaturesUpdated.class, notificationPopListener); //Notification registration for port-statistics - addMessagePopListener(PortStatisticsUpdate.class, notificationPopListener); + addMessagePopListener(NodeConnectorStatisticsUpdate.class, notificationPopListener); //Notification registration for flow-table statistics addMessagePopListener(FlowTableStatisticsUpdate.class, notificationPopListener); @@ -144,6 +151,10 @@ public class MDController implements IMDController { //Notification registration for queue-statistics addMessagePopListener(QueueStatisticsUpdate.class, notificationPopListener); + //Notification for LLDPSpeaker + LLDPSpeakerPopListener lldpPopListener = new LLDPSpeakerPopListener(); + addMessagePopListener(NodeConnectorUpdated.class,lldpPopListener); + // Push the updated Listeners to Session Manager which will be then picked up by ConnectionConductor eventually OFSessionUtil.getSessionManager().setTranslatorMapping(messageTranslators); OFSessionUtil.getSessionManager().setPopListenerMapping(popListeners); @@ -176,8 +187,12 @@ public class MDController implements IMDController { LOG.debug("starting .."); LOG.debug("switchConnectionProvider: " + switchConnectionProvider); // setup handler - SwitchConnectionHandler switchConnectionHandler = new SwitchConnectionHandlerImpl(); + SwitchConnectionHandlerImpl switchConnectionHandler = new SwitchConnectionHandlerImpl(); + switchConnectionHandler.setMessageSpy(messageSpyCounter); + switchConnectionHandler.init(); + switchConnectionProvider.setSwitchConnectionHandler(switchConnectionHandler); + // configure and startup library servers switchConnectionProvider.configure(getConnectionConfiguration()); Future> srvStarted = switchConnectionProvider.startup(); @@ -268,5 +283,12 @@ public class MDController implements IMDController { } } + /** + * @param messageSpyCounter the messageSpyCounter to set + */ + public void setMessageSpyCounter( + MessageSpy messageSpyCounter) { + this.messageSpyCounter = messageSpyCounter; + } }